# This file was auto-generated by Fern from our API Definition.

import typing

import pydantic
import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from ..core.serialization import FieldMetadata
from .additional_data_string import AdditionalDataString
from .email import Email


class Owners(UniversalBaseModel):
    ownername: typing.Optional[str] = pydantic.Field(default=None)
    """
    Person who is registered as the beneficial owner of the business. This is a combination of first and last name.
    """

    ownertitle: typing.Optional[str] = pydantic.Field(default=None)
    """
    The job title of the person such as CEO or director.
    """

    ownerpercent: typing.Optional[int] = pydantic.Field(default=None)
    """
    Percentage of ownership the person holds, in integer format.
    """

    ownerssn: typing.Optional[str] = pydantic.Field(default=None)
    """
    The relevant identifier for the person such as a Social Security Number.
    """

    ownerdob: typing.Optional[str] = pydantic.Field(default=None)
    """
    Owner's date of birth.
    """

    ownerphone_1: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="ownerphone1")] = (
        pydantic.Field(default=None)
    )
    """
    Owner phone 1.
    """

    ownerphone_2: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="ownerphone2")] = (
        pydantic.Field(default=None)
    )
    """
    Owner phone 2.
    """

    owneremail: typing.Optional[Email] = pydantic.Field(default=None)
    """
    Owner email.
    """

    ownerdriver: typing.Optional[str] = pydantic.Field(default=None)
    """
    Owner driver's license ID number. Payabli strongly recommends including this.
    """

    oaddress: typing.Optional[str] = pydantic.Field(default=None)
    """
    Owner street address. This must be the physical address of the owner, not a P.O. box.
    """

    ocity: typing.Optional[str] = pydantic.Field(default=None)
    """
    Owner address city.
    """

    ocountry: typing.Optional[str] = pydantic.Field(default=None)
    """
    Owner address country in ISO-3166-1 alpha 2 format. Check out https://en.wikipedia.org/wiki/ISO_3166-1 for reference.
    """

    odriverstate: typing.Optional[str] = pydantic.Field(default=None)
    """
    Owner driver's license State. Payabli strongly recommends including this.
    """

    ostate: typing.Optional[str] = pydantic.Field(default=None)
    """
    Owner address state.
    """

    ozip: typing.Optional[str] = pydantic.Field(default=None)
    """
    Owner address ZIP.
    """

    additional_data: typing_extensions.Annotated[
        typing.Optional[AdditionalDataString], FieldMetadata(alias="additionalData")
    ] = None

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
