import dynamix_sdk.base as _base
import dynamix_sdk.api._nested as _nested


class CloudbrokerAccountGetResultModel(_base.BaseAPIResultModel):
    acc_lvl_vins_ids: list[int]
    acl: list[_nested.AccessAPIResultNM]
    company_url: str
    company: str
    cpu_allocation_parameter: str
    cpu_allocation_ratio: int
    created_by: str
    created_timestamp: int
    dc_location: str
    deactivation_timestamp: int
    default_zone_id: int
    deleted_by: str
    deleted_timestamp: int
    description: str
    display_name: str
    guid: int
    id: int
    name: str
    quotas: _nested.TenantQuotasAPIResultNM
    resource_types: list[_nested.AccountResourceType]
    send_access_emails: bool
    status: _nested.AccountStatus
    storage_policy_ids: list[int]
    sep_pools: list[str]
    updated_by: str
    updated_timestamp: int
    version: int
    vm_features: list[_nested.VMFeature]
    zones: list[_nested.ZoneAPIResultNM]

    @_base.computed_field
    def created_datetime(self) -> _base.datetime | None:
        return self._get_datetime_from_timestamp(self.created_timestamp)

    @_base.computed_field
    def deactivation_datetime(self) -> _base.datetime | None:
        return self._get_datetime_from_timestamp(self.deactivation_timestamp)

    @_base.computed_field
    def deleted_datetime(self) -> _base.datetime | None:
        return self._get_datetime_from_timestamp(self.deleted_timestamp)

    @_base.computed_field
    def updated_datetime(self) -> _base.datetime | None:
        return self._get_datetime_from_timestamp(self.updated_timestamp)


class CloudbrokerAccountGetProtocol(_base.BasePostAPIFunctionProtocol):
    def get(
        self,
        *,
        account_id: int,
    ) -> CloudbrokerAccountGetResultModel:
        ...
