# !!! THIS FILE IS AUTOGENERATED !!!
# For changes see scripts/generate_typehints.py

from __future__ import annotations

from typing import Any, Literal, overload

import dask.dataframe as _dd
import geopandas as _gpd
import pandas as _pd
import polars as _pl
import xarray as _xr

__version__: str
__all__: tuple[str, ...]

@overload
def penguins(
    engine: Literal["pandas"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pd.DataFrame: ...
@overload
def penguins(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pl.DataFrame: ...
@overload
def penguins(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _pl.LazyFrame: ...
@overload
def penguins(
    engine: Literal["dask"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _dd.DataFrame: ...
@overload
def earthquakes(
    engine: Literal["pandas"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pd.DataFrame: ...
@overload
def earthquakes(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pl.DataFrame: ...
@overload
def earthquakes(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _pl.LazyFrame: ...
@overload
def earthquakes(
    engine: Literal["dask"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _dd.DataFrame: ...
@overload
def apple_stocks(
    engine: Literal["pandas"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pd.DataFrame: ...
@overload
def apple_stocks(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pl.DataFrame: ...
@overload
def apple_stocks(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _pl.LazyFrame: ...
@overload
def apple_stocks(
    engine: Literal["dask"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _dd.DataFrame: ...
@overload
def stocks(
    engine: Literal["pandas"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pd.DataFrame: ...
@overload
def stocks(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pl.DataFrame: ...
@overload
def stocks(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _pl.LazyFrame: ...
@overload
def stocks(
    engine: Literal["dask"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _dd.DataFrame: ...
@overload
def nyc_taxi_remote(
    engine: Literal["pandas"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pd.DataFrame: ...
@overload
def nyc_taxi_remote(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[False] = False,
) -> _pl.DataFrame: ...
@overload
def nyc_taxi_remote(
    engine: Literal["polars"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _pl.LazyFrame: ...
@overload
def nyc_taxi_remote(
    engine: Literal["dask"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    lazy: Literal[True] = True,
) -> _dd.DataFrame: ...
@overload
def air_temperature(
    engine: Literal["xarray"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
    # lazy: Literal[False] = False,
) -> _xr.Dataset: ...
@overload
def synthetic_clusters(
    engine: Literal["pandas"],
    *,
    lazy: Literal[False] = False,
    total_points: int = 1_000_000,
) -> _pd.DataFrame: ...
@overload
def synthetic_clusters(
    engine: Literal["polars"],
    *,
    lazy: Literal[False] = False,
    total_points: int = 1_000_000,
) -> _pl.DataFrame: ...
@overload
def synthetic_clusters(
    engine: Literal["polars"],
    *,
    lazy: Literal[True] = True,
    total_points: int = 1_000_000,
) -> _pl.LazyFrame: ...
@overload
def synthetic_clusters(
    engine: Literal["dask"],
    *,
    lazy: bool = False,
    total_points: int = 1_000_000,
) -> _dd.DataFrame: ...
@overload
def landsat_rgb(
    engine: Literal["rioxarray"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
) -> _xr.Dataset: ...
@overload
def us_states(
    engine: Literal["geopandas"],
    *,
    engine_kwargs: dict[str, Any] | None = None,
) -> _gpd.GeoDataFrame: ...
