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

from __future__ import annotations
from moovio_sdk.models.components import (
    capability as components_capability,
    capabilityid as components_capabilityid,
)
from moovio_sdk.types import BaseModel
from moovio_sdk.utils import FieldMetadata, PathParamMetadata
import pydantic
from typing import Dict, List
from typing_extensions import Annotated, TypedDict


class GetCapabilityRequestTypedDict(TypedDict):
    account_id: str
    capability_id: components_capabilityid.CapabilityID
    r"""Moov account capabilities.

    The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
    """


class GetCapabilityRequest(BaseModel):
    account_id: Annotated[
        str,
        pydantic.Field(alias="accountID"),
        FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
    ]

    capability_id: Annotated[
        components_capabilityid.CapabilityID,
        pydantic.Field(alias="capabilityID"),
        FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
    ]
    r"""Moov account capabilities.

    The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
    """


class GetCapabilityResponseTypedDict(TypedDict):
    headers: Dict[str, List[str]]
    result: components_capability.CapabilityTypedDict


class GetCapabilityResponse(BaseModel):
    headers: Dict[str, List[str]]

    result: components_capability.Capability
