"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import cosmos.base.v1beta1.coin_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import sys

if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class PoolParams(google.protobuf.message.Message):
    """PoolParams defined the parameters that will be managed by the pool
    governance in the future. This params are not managed by the chain
    governance. Instead they will be managed by the token holders of the pool.
    The pool's token holders are specified in future_pool_governor.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SWAP_FEE_FIELD_NUMBER: builtins.int
    EXIT_FEE_FIELD_NUMBER: builtins.int
    swap_fee: builtins.str
    exit_fee: builtins.str
    def __init__(
        self,
        *,
        swap_fee: builtins.str = ...,
        exit_fee: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["exit_fee", b"exit_fee", "swap_fee", b"swap_fee"]) -> None: ...

global___PoolParams = PoolParams

@typing_extensions.final
class Pool(google.protobuf.message.Message):
    """Pool is the stableswap Pool struct"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ADDRESS_FIELD_NUMBER: builtins.int
    ID_FIELD_NUMBER: builtins.int
    POOL_PARAMS_FIELD_NUMBER: builtins.int
    FUTURE_POOL_GOVERNOR_FIELD_NUMBER: builtins.int
    TOTAL_SHARES_FIELD_NUMBER: builtins.int
    POOL_LIQUIDITY_FIELD_NUMBER: builtins.int
    SCALING_FACTORS_FIELD_NUMBER: builtins.int
    SCALING_FACTOR_CONTROLLER_FIELD_NUMBER: builtins.int
    address: builtins.str
    id: builtins.int
    @property
    def pool_params(self) -> global___PoolParams: ...
    future_pool_governor: builtins.str
    """This string specifies who will govern the pool in the future.
    Valid forms of this are:
    {token name},{duration}
    {duration}
    where {token name} if specified is the token which determines the
    governor, and if not specified is the LP token for this pool.duration is
    a time specified as 0w,1w,2w, etc. which specifies how long the token
    would need to be locked up to count in governance. 0w means no lockup.
    """
    @property
    def total_shares(self) -> cosmos.base.v1beta1.coin_pb2.Coin:
        """sum of all LP shares"""
    @property
    def pool_liquidity(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]:
        """assets in the pool"""
    @property
    def scaling_factors(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """for calculation amognst assets with different precisions"""
    scaling_factor_controller: builtins.str
    """scaling_factor_controller is the address can adjust pool scaling factors"""
    def __init__(
        self,
        *,
        address: builtins.str = ...,
        id: builtins.int = ...,
        pool_params: global___PoolParams | None = ...,
        future_pool_governor: builtins.str = ...,
        total_shares: cosmos.base.v1beta1.coin_pb2.Coin | None = ...,
        pool_liquidity: collections.abc.Iterable[cosmos.base.v1beta1.coin_pb2.Coin] | None = ...,
        scaling_factors: collections.abc.Iterable[builtins.int] | None = ...,
        scaling_factor_controller: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["pool_params", b"pool_params", "total_shares", b"total_shares"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["address", b"address", "future_pool_governor", b"future_pool_governor", "id", b"id", "pool_liquidity", b"pool_liquidity", "pool_params", b"pool_params", "scaling_factor_controller", b"scaling_factor_controller", "scaling_factors", b"scaling_factors", "total_shares", b"total_shares"]) -> None: ...

global___Pool = Pool
