"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from apideck_unify.types import BaseModel
from enum import Enum
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class PaginationCoverageMode(str, Enum):
    r"""How pagination is implemented on this connector. Native mode means Apideck is using the pagination parameters of the connector. With virtual pagination, the connector does not support pagination, but Apideck emulates it."""

    NATIVE = "native"
    VIRTUAL = "virtual"


class PaginationCoverageTypedDict(TypedDict):
    mode: NotRequired[PaginationCoverageMode]
    r"""How pagination is implemented on this connector. Native mode means Apideck is using the pagination parameters of the connector. With virtual pagination, the connector does not support pagination, but Apideck emulates it."""
    paging_support: NotRequired[bool]
    r"""Indicates whether the connector supports paging through results using the cursor parameter."""
    limit_support: NotRequired[bool]
    r"""Indicates whether the connector supports changing the page size by using the limit parameter."""


class PaginationCoverage(BaseModel):
    mode: Optional[PaginationCoverageMode] = None
    r"""How pagination is implemented on this connector. Native mode means Apideck is using the pagination parameters of the connector. With virtual pagination, the connector does not support pagination, but Apideck emulates it."""

    paging_support: Optional[bool] = None
    r"""Indicates whether the connector supports paging through results using the cursor parameter."""

    limit_support: Optional[bool] = None
    r"""Indicates whether the connector supports changing the page size by using the limit parameter."""
