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

from __future__ import annotations
from postivo_client.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class PredefinedConfigTypedDict(TypedDict):
    r"""Predefined configuration usable for dispatching shipments (referenced via `predefined_config_id`)."""

    id: NotRequired[int]
    r"""Unique predefined configuration ID."""
    name: NotRequired[str]
    r"""Predefined configuration name."""
    paper_name: NotRequired[str]
    r"""Paper type name."""
    color_print: NotRequired[bool]
    r"""Print documents in color (`true`) or grayscale (`false`)."""
    duplex_print: NotRequired[bool]
    r"""Print documents duplex (`true`) or single-sided (`false`)."""
    envelope_name: NotRequired[str]
    r"""Preferred envelope type name."""
    envelope_size: NotRequired[str]
    r"""Preferred envelope size."""
    envelope_group_name: NotRequired[str]
    r"""Envelope group name."""
    envelope_color_print: NotRequired[bool]
    r"""Print the envelope in color (`true`) or grayscale (`false`)."""


class PredefinedConfig(BaseModel):
    r"""Predefined configuration usable for dispatching shipments (referenced via `predefined_config_id`)."""

    id: Optional[int] = None
    r"""Unique predefined configuration ID."""

    name: Optional[str] = None
    r"""Predefined configuration name."""

    paper_name: Optional[str] = None
    r"""Paper type name."""

    color_print: Optional[bool] = None
    r"""Print documents in color (`true`) or grayscale (`false`)."""

    duplex_print: Optional[bool] = None
    r"""Print documents duplex (`true`) or single-sided (`false`)."""

    envelope_name: Optional[str] = None
    r"""Preferred envelope type name."""

    envelope_size: Optional[str] = None
    r"""Preferred envelope size."""

    envelope_group_name: Optional[str] = None
    r"""Envelope group name."""

    envelope_color_print: Optional[bool] = None
    r"""Print the envelope in color (`true`) or grayscale (`false`)."""
