"""EyeOnWater API integration."""

from __future__ import annotations

from .account import Account
from .client import Client
from .exceptions import (
    EyeOnWaterAPIError,
    EyeOnWaterAuthError,
    EyeOnWaterAuthExpired,
    EyeOnWaterException,
    EyeOnWaterRateLimitError,
    EyeOnWaterResponseIsEmpty,
    EyeOnWaterUnitError,
)
from .meter import Meter
from .meter_reader import MeterReader
from .models import (
    AccountInfo,
    ActiveFlags,
    AggregationLevel,
    Alerts,
    AtAGlanceData,
    Battery,
    Conditions,
    DataPoint,
    Encoder,
    EndpointTemperature,
    EOWUnits,
    Flags,
    Flow,
    Groups,
    HistoricalData,
    Hit,
    LatestRead,
    LeakAlert,
    Legend,
    Location,
    MeterData,
    MeterInfo,
    NativeUnits,
    Notes,
    Params,
    Pwr,
    Reading,
    Register0EncoderItem,
    RequestUnits,
    Sensors,
    SensorsAvailable,
    Series,
    Service,
    ServiceAgreement,
    TimeSerie,
    Timeslots,
    User,
    Utility,
)
from .series import enforce_monotonic_total, filter_points_after
from .units import convert_to_native, deduce_native_units

__all__ = [
    "Account",
    "AccountInfo",
    "ActiveFlags",
    "AggregationLevel",
    "Alerts",
    "AtAGlanceData",
    "Battery",
    "Client",
    "Conditions",
    "DataPoint",
    "EOWUnits",
    "Encoder",
    "EndpointTemperature",
    "EyeOnWaterAPIError",
    "EyeOnWaterAuthError",
    "EyeOnWaterAuthExpired",
    "EyeOnWaterException",
    "EyeOnWaterRateLimitError",
    "EyeOnWaterResponseIsEmpty",
    "EyeOnWaterUnitError",
    "Flags",
    "Flow",
    "Groups",
    "HistoricalData",
    "Hit",
    "LatestRead",
    "LeakAlert",
    "Legend",
    "Location",
    "Meter",
    "MeterData",
    "MeterInfo",
    "MeterReader",
    "NativeUnits",
    "Notes",
    "Params",
    "Pwr",
    "Reading",
    "Register0EncoderItem",
    "RequestUnits",
    "Sensors",
    "SensorsAvailable",
    "Series",
    "Service",
    "ServiceAgreement",
    "TimeSerie",
    "Timeslots",
    "User",
    "Utility",
    "convert_to_native",
    "deduce_native_units",
    "enforce_monotonic_total",
    "filter_points_after",
]
