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

import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .account import Account
from .campaign import Campaign
from .case import Case
from .contact import Contact
from .lead import Lead
from .opportunity import Opportunity


class SalesforceDataOutput(UniversalBaseModel):
    """
    Complete Salesforce sandbox data
    """

    accounts: typing.Optional[typing.List[Account]] = None
    contacts: typing.Optional[typing.List[Contact]] = None
    opportunities: typing.Optional[typing.List[Opportunity]] = None
    leads: typing.Optional[typing.List[Lead]] = None
    cases: typing.Optional[typing.List[Case]] = None
    campaigns: typing.Optional[typing.List[Campaign]] = 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
