from _typeshed import Incomplete

from google.auth import credentials as credentials
from google.oauth2 import sts as sts

class CredentialAccessBoundary:
    def __init__(self, rules=...) -> None: ...
    @property
    def rules(self): ...
    @rules.setter
    def rules(self, value) -> None: ...
    def add_rule(self, rule) -> None: ...
    def to_json(self): ...

class AccessBoundaryRule:
    def __init__(
        self,
        available_resource,
        available_permissions,
        availability_condition: Incomplete | None = ...,
    ) -> None: ...
    @property
    def available_resource(self): ...
    @available_resource.setter
    def available_resource(self, value) -> None: ...
    @property
    def available_permissions(self): ...
    @available_permissions.setter
    def available_permissions(self, value) -> None: ...
    @property
    def availability_condition(self): ...
    @availability_condition.setter
    def availability_condition(self, value) -> None: ...
    def to_json(self): ...

class AvailabilityCondition:
    def __init__(
        self,
        expression,
        title: Incomplete | None = ...,
        description: Incomplete | None = ...,
    ) -> None: ...
    @property
    def expression(self): ...
    @expression.setter
    def expression(self, value) -> None: ...
    @property
    def title(self): ...
    @title.setter
    def title(self, value) -> None: ...
    @property
    def description(self): ...
    @description.setter
    def description(self, value) -> None: ...
    def to_json(self): ...

class Credentials(credentials.CredentialsWithQuotaProject):
    def __init__(
        self,
        source_credentials,
        credential_access_boundary,
        quota_project_id: Incomplete | None = ...,
    ) -> None: ...
    token: Incomplete
    expiry: Incomplete
    def refresh(self, request) -> None: ...
    def with_quota_project(self, quota_project_id): ...
