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

import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel


class BillingLimits(UncheckedBaseModel):
    """
    The limits associated with the organizations billing plan.

    Default to free tier limits, while allowing the ability to override.
    In the checking of limits, for now we will only enforce the limits
    if the billing plan is of the "free" tier aka "plan_1".

    Eventually we might want to enforce limits on paid plans, where
    when we change the plan, we can update the limits in business logic.
    """

    seats: typing.Optional[int] = None
    agent_interactions: typing.Optional[int] = None
    integrations: typing.Optional[int] = None
    workflow_invocations: typing.Optional[int] = None
    active_workflows: typing.Optional[int] = 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
