From d6195a73fdcbd8af06babf0be88e3bcba863e00c Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 14 Oct 2024 23:40:11 -0300 Subject: [PATCH 1/7] (fix) Removed deprecated methods --- pyinjective/async_client.py | 1165 +---------- pyinjective/composer.py | 866 --------- pyinjective/core/network.py | 19 - .../core/test_network_deprecation_warnings.py | 56 - tests/test_async_client.py | 5 - .../test_async_client_deprecation_warnings.py | 1724 ----------------- tests/test_composer_deprecation_warnings.py | 551 ------ 7 files changed, 6 insertions(+), 4380 deletions(-) delete mode 100644 tests/core/test_network_deprecation_warnings.py delete mode 100644 tests/test_async_client_deprecation_warnings.py delete mode 100644 tests/test_composer_deprecation_warnings.py diff --git a/pyinjective/async_client.py b/pyinjective/async_client.py index 4239a5fa..23d2012e 100644 --- a/pyinjective/async_client.py +++ b/pyinjective/async_client.py @@ -1,11 +1,8 @@ import asyncio -import time from copy import deepcopy from decimal import Decimal -from typing import Any, Callable, Dict, List, Optional, Tuple, Union -from warnings import warn +from typing import Any, Callable, Dict, List, Optional, Tuple -import grpc from google.protobuf import json_format from pyinjective.client.chain.grpc.chain_grpc_auth_api import ChainGrpcAuthApi @@ -47,43 +44,16 @@ from pyinjective.core.tokens_file_loader import TokensFileLoader from pyinjective.core.tx.grpc.tx_grpc_api import TxGrpcApi from pyinjective.exceptions import NotFoundError -from pyinjective.proto.cosmos.auth.v1beta1 import query_pb2 as auth_query, query_pb2_grpc as auth_query_grpc -from pyinjective.proto.cosmos.authz.v1beta1 import query_pb2 as authz_query, query_pb2_grpc as authz_query_grpc -from pyinjective.proto.cosmos.bank.v1beta1 import query_pb2 as bank_query, query_pb2_grpc as bank_query_grpc -from pyinjective.proto.cosmos.base.abci.v1beta1 import abci_pb2 as abci_type -from pyinjective.proto.cosmos.base.tendermint.v1beta1 import ( - query_pb2 as tendermint_query, - query_pb2_grpc as tendermint_query_grpc, -) +from pyinjective.proto.cosmos.auth.v1beta1 import query_pb2_grpc as auth_query_grpc +from pyinjective.proto.cosmos.authz.v1beta1 import query_pb2_grpc as authz_query_grpc +from pyinjective.proto.cosmos.bank.v1beta1 import query_pb2_grpc as bank_query_grpc +from pyinjective.proto.cosmos.base.tendermint.v1beta1 import query_pb2_grpc as tendermint_query_grpc from pyinjective.proto.cosmos.crypto.ed25519 import keys_pb2 as ed25519_keys # noqa: F401 for validator set responses from pyinjective.proto.cosmos.tx.v1beta1 import service_pb2 as tx_service, service_pb2_grpc as tx_service_grpc -from pyinjective.proto.exchange import ( - injective_accounts_rpc_pb2 as exchange_accounts_rpc_pb, - injective_accounts_rpc_pb2_grpc as exchange_accounts_rpc_grpc, - injective_auction_rpc_pb2 as auction_rpc_pb, - injective_auction_rpc_pb2_grpc as auction_rpc_grpc, - injective_derivative_exchange_rpc_pb2 as derivative_exchange_rpc_pb, - injective_derivative_exchange_rpc_pb2_grpc as derivative_exchange_rpc_grpc, - injective_explorer_rpc_pb2 as explorer_rpc_pb, - injective_explorer_rpc_pb2_grpc as explorer_rpc_grpc, - injective_insurance_rpc_pb2 as insurance_rpc_pb, - injective_insurance_rpc_pb2_grpc as insurance_rpc_grpc, - injective_meta_rpc_pb2 as exchange_meta_rpc_pb, - injective_meta_rpc_pb2_grpc as exchange_meta_rpc_grpc, - injective_oracle_rpc_pb2 as oracle_rpc_pb, - injective_oracle_rpc_pb2_grpc as oracle_rpc_grpc, - injective_portfolio_rpc_pb2 as portfolio_rpc_pb, - injective_portfolio_rpc_pb2_grpc as portfolio_rpc_grpc, - injective_spot_exchange_rpc_pb2 as spot_exchange_rpc_pb, - injective_spot_exchange_rpc_pb2_grpc as spot_exchange_rpc_grpc, -) from pyinjective.proto.ibc.lightclients.tendermint.v1 import ( # noqa: F401 for validator set responses tendermint_pb2 as ibc_tendermint, ) -from pyinjective.proto.injective.stream.v1beta1 import ( - query_pb2 as chain_stream_query, - query_pb2_grpc as stream_rpc_grpc, -) +from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_query from pyinjective.proto.injective.types.v1beta1 import account_pb2 from pyinjective.utils.logger import LoggerProvider @@ -97,24 +67,7 @@ class AsyncClient: def __init__( self, network: Network, - insecure: Optional[bool] = None, - credentials=None, ): - # the `insecure` parameter is ignored and will be deprecated soon. The value is taken directly from `network` - if insecure is not None: - warn( - "insecure parameter in AsyncClient is no longer used and will be deprecated", - DeprecationWarning, - stacklevel=2, - ) - # the `credentials` parameter is ignored and will be deprecated soon. The value is taken directly from `network` - if credentials is not None: - warn( - "credentials parameter in AsyncClient is no longer used and will be deprecated", - DeprecationWarning, - stacklevel=2, - ) - self.addr = "" self.number = 0 self.sequence = 0 @@ -135,23 +88,9 @@ def __init__( # exchange stubs self.exchange_channel = self.network.create_exchange_grpc_channel() - self.stubMeta = exchange_meta_rpc_grpc.InjectiveMetaRPCStub(self.exchange_channel) - self.stubExchangeAccount = exchange_accounts_rpc_grpc.InjectiveAccountsRPCStub(self.exchange_channel) - self.stubOracle = oracle_rpc_grpc.InjectiveOracleRPCStub(self.exchange_channel) - self.stubInsurance = insurance_rpc_grpc.InjectiveInsuranceRPCStub(self.exchange_channel) - self.stubSpotExchange = spot_exchange_rpc_grpc.InjectiveSpotExchangeRPCStub(self.exchange_channel) - self.stubDerivativeExchange = derivative_exchange_rpc_grpc.InjectiveDerivativeExchangeRPCStub( - self.exchange_channel - ) - self.stubAuction = auction_rpc_grpc.InjectiveAuctionRPCStub(self.exchange_channel) - self.stubPortfolio = portfolio_rpc_grpc.InjectivePortfolioRPCStub(self.exchange_channel) - # explorer stubs self.explorer_channel = self.network.create_explorer_grpc_channel() - self.stubExplorer = explorer_rpc_grpc.InjectiveExplorerRPCStub(self.explorer_channel) - self.chain_stream_channel = self.network.create_chain_stream_grpc_channel() - self.chain_stream_stub = stream_rpc_grpc.StreamStub(channel=self.chain_stream_channel) self._timeout_height_sync_task = None self._initialize_timeout_height_sync_task() @@ -332,13 +271,6 @@ def get_sequence(self): def get_number(self): return self.number - async def get_tx(self, tx_hash): - """ - This method is deprecated and will be removed soon. Please use `fetch_tx` instead - """ - warn("This method is deprecated. Use fetch_tx instead", DeprecationWarning, stacklevel=2) - return await self.stubTx.GetTx(tx_service.GetTxRequest(hash=tx_hash)) - async def fetch_tx(self, hash: str) -> Dict[str, Any]: return await self.tx_api.fetch_tx(hash=hash) @@ -362,28 +294,6 @@ async def sync_timeout_height(self): # default client methods - async def get_account(self, address: str) -> Optional[account_pb2.EthAccount]: - """ - This method is deprecated and will be removed soon. Please use `fetch_account` instead - """ - warn("This method is deprecated. Use fetch_account instead", DeprecationWarning, stacklevel=2) - - try: - metadata = self.network.chain_cookie_assistant.metadata() - account_any = ( - await self.stubAuth.Account(auth_query.QueryAccountRequest(address=address), metadata=metadata) - ).account - account = account_pb2.EthAccount() - if account_any.Is(account.DESCRIPTOR): - account_any.Unpack(account) - self.number = int(account.base_account.account_number) - self.sequence = int(account.base_account.sequence) - except Exception as e: - LoggerProvider().logger_for_class(logging_class=self.__class__).debug( - f"error while fetching sequence and number {e}" - ) - return None - async def fetch_account(self, address: str) -> Optional[account_pb2.EthAccount]: result_account = None try: @@ -418,74 +328,19 @@ async def get_request_id_by_tx_hash(self, tx_hash: str) -> List[int]: raise NotFoundError("Request Id is not found") return request_ids - async def simulate_tx(self, tx_byte: bytes) -> Tuple[Union[abci_type.SimulationResponse, grpc.RpcError], bool]: - """ - This method is deprecated and will be removed soon. Please use `simulate` instead - """ - warn("This method is deprecated. Use simulate instead", DeprecationWarning, stacklevel=2) - try: - req = tx_service.SimulateRequest(tx_bytes=tx_byte) - metadata = self.network.chain_cookie_assistant.metadata() - return await self.stubTx.Simulate(request=req, metadata=metadata), True - except grpc.RpcError as err: - return err, False - async def simulate(self, tx_bytes: bytes) -> Dict[str, Any]: return await self.tx_api.simulate(tx_bytes=tx_bytes) - async def send_tx_sync_mode(self, tx_byte: bytes) -> abci_type.TxResponse: - """ - This method is deprecated and will be removed soon. Please use `broadcast_tx_sync_mode` instead - """ - warn("This method is deprecated. Use broadcast_tx_sync_mode instead", DeprecationWarning, stacklevel=2) - req = tx_service.BroadcastTxRequest(tx_bytes=tx_byte, mode=tx_service.BroadcastMode.BROADCAST_MODE_SYNC) - metadata = self.network.chain_cookie_assistant.metadata() - result = await self.stubTx.BroadcastTx(request=req, metadata=metadata) - return result.tx_response - async def broadcast_tx_sync_mode(self, tx_bytes: bytes) -> Dict[str, Any]: return await self.tx_api.broadcast(tx_bytes=tx_bytes, mode=tx_service.BroadcastMode.BROADCAST_MODE_SYNC) - async def send_tx_async_mode(self, tx_byte: bytes) -> abci_type.TxResponse: - """ - This method is deprecated and will be removed soon. Please use `broadcast_tx_async_mode` instead - """ - warn("This method is deprecated. Use broadcast_tx_async_mode instead", DeprecationWarning, stacklevel=2) - req = tx_service.BroadcastTxRequest(tx_bytes=tx_byte, mode=tx_service.BroadcastMode.BROADCAST_MODE_ASYNC) - metadata = self.network.chain_cookie_assistant.metadata() - result = await self.stubTx.BroadcastTx(request=req, metadata=metadata) - return result.tx_response - async def broadcast_tx_async_mode(self, tx_bytes: bytes) -> Dict[str, Any]: return await self.tx_api.broadcast(tx_bytes=tx_bytes, mode=tx_service.BroadcastMode.BROADCAST_MODE_ASYNC) - async def send_tx_block_mode(self, tx_byte: bytes) -> abci_type.TxResponse: - """ - This method is deprecated and will be removed soon. BLOCK broadcast mode should not be used - """ - warn("This method is deprecated. BLOCK broadcast mode should not be used", DeprecationWarning, stacklevel=2) - req = tx_service.BroadcastTxRequest(tx_bytes=tx_byte, mode=tx_service.BroadcastMode.BROADCAST_MODE_BLOCK) - metadata = self.network.chain_cookie_assistant.metadata() - result = await self.stubTx.BroadcastTx(request=req, metadata=metadata) - return result.tx_response - async def get_chain_id(self) -> str: latest_block = await self.fetch_latest_block() return latest_block["block"]["header"]["chainId"] - async def get_grants(self, granter: str, grantee: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_grants` instead - """ - warn("This method is deprecated. Use fetch_grants instead", DeprecationWarning, stacklevel=2) - return await self.stubAuthz.Grants( - authz_query.QueryGrantsRequest( - granter=granter, - grantee=grantee, - msg_type_url=kwargs.get("msg_type_url"), - ) - ) - async def fetch_grants( self, granter: str, @@ -500,23 +355,9 @@ async def fetch_grants( pagination=pagination, ) - async def get_bank_balances(self, address: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_balances` instead - """ - warn("This method is deprecated. Use fetch_bank_balances instead", DeprecationWarning, stacklevel=2) - return await self.stubBank.AllBalances(bank_query.QueryAllBalancesRequest(address=address)) - async def fetch_bank_balances(self, address: str) -> Dict[str, Any]: return await self.bank_api.fetch_balances(account_address=address) - async def get_bank_balance(self, address: str, denom: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_bank_balance` instead - """ - warn("This method is deprecated. Use fetch_bank_balance instead", DeprecationWarning, stacklevel=2) - return await self.stubBank.Balance(bank_query.QueryBalanceRequest(address=address, denom=denom)) - async def fetch_bank_balance(self, address: str, denom: str) -> Dict[str, Any]: return await self.bank_api.fetch_balance(account_address=address, denom=denom) @@ -1009,36 +850,12 @@ async def fetch_market_atomic_execution_fee_multiplier( # Auction RPC - async def get_auction(self, bid_round: int): - """ - This method is deprecated and will be removed soon. Please use `fetch_auction` instead - """ - warn("This method is deprecated. Use fetch_auction instead", DeprecationWarning, stacklevel=2) - req = auction_rpc_pb.AuctionEndpointRequest(round=bid_round) - return await self.stubAuction.AuctionEndpoint(req) - async def fetch_auction(self, round: int) -> Dict[str, Any]: return await self.exchange_auction_api.fetch_auction(round=round) - async def get_auctions(self): - """ - This method is deprecated and will be removed soon. Please use `fetch_auctions` instead - """ - warn("This method is deprecated. Use fetch_auctions instead", DeprecationWarning, stacklevel=2) - req = auction_rpc_pb.AuctionsRequest() - return await self.stubAuction.Auctions(req) - async def fetch_auctions(self) -> Dict[str, Any]: return await self.exchange_auction_api.fetch_auctions() - async def stream_bids(self): - """ - This method is deprecated and will be removed soon. Please use `listen_bids_updates` instead - """ - warn("This method is deprecated. Use listen_bids_updates instead", DeprecationWarning, stacklevel=2) - req = auction_rpc_pb.StreamBidsRequest() - return self.stubAuction.StreamBids(req) - async def listen_bids_updates( self, callback: Callable, @@ -1053,49 +870,15 @@ async def listen_bids_updates( # Meta RPC - async def ping(self): - """ - This method is deprecated and will be removed soon. Please use `fetch_ping` instead - """ - warn("This method is deprecated. Use fetch_ping instead", DeprecationWarning, stacklevel=2) - req = exchange_meta_rpc_pb.PingRequest() - return await self.stubMeta.Ping(req) - async def fetch_ping(self) -> Dict[str, Any]: return await self.exchange_meta_api.fetch_ping() - async def version(self): - """ - This method is deprecated and will be removed soon. Please use `fetch_version` instead - """ - warn("This method is deprecated. Use fetch_version instead", DeprecationWarning, stacklevel=2) - req = exchange_meta_rpc_pb.VersionRequest() - return await self.stubMeta.Version(req) - async def fetch_version(self) -> Dict[str, Any]: return await self.exchange_meta_api.fetch_version() - async def info(self): - """ - This method is deprecated and will be removed soon. Please use `fetch_info` instead - """ - warn("This method is deprecated. Use fetch_info instead", DeprecationWarning, stacklevel=2) - req = exchange_meta_rpc_pb.InfoRequest( - timestamp=int(time.time() * 1000), - ) - return await self.stubMeta.Info(req) - async def fetch_info(self) -> Dict[str, Any]: return await self.exchange_meta_api.fetch_info() - async def stream_keepalive(self): - """ - This method is deprecated and will be removed soon. Please use `listen_keepalive` instead - """ - warn("This method is deprecated. Use listen_keepalive instead", DeprecationWarning, stacklevel=2) - req = exchange_meta_rpc_pb.StreamKeepaliveRequest() - return self.stubMeta.StreamKeepalive(req) - async def listen_keepalive( self, callback: Callable, @@ -1203,14 +986,6 @@ async def fetch_node_info(self) -> Dict[str, Any]: async def fetch_syncing(self) -> Dict[str, Any]: return await self.tendermint_api.fetch_syncing() - async def get_latest_block(self) -> tendermint_query.GetLatestBlockResponse: - """ - This method is deprecated and will be removed soon. Please use `fetch_latest_block` instead - """ - warn("This method is deprecated. Use fetch_latest_block instead", DeprecationWarning, stacklevel=2) - req = tendermint_query.GetLatestBlockRequest() - return await self.stubCosmosTendermint.GetLatestBlock(req) - async def fetch_latest_block(self) -> Dict[str, Any]: return await self.tendermint_api.fetch_latest_block() @@ -1234,35 +1009,9 @@ async def abci_query( # ------------------------------ # Explorer RPC - - async def get_tx_by_hash(self, tx_hash: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_tx_by_tx_hash` instead - """ - warn("This method is deprecated. Use fetch_tx_by_tx_hash instead", DeprecationWarning, stacklevel=2) - - req = explorer_rpc_pb.GetTxByTxHashRequest(hash=tx_hash) - return await self.stubExplorer.GetTxByTxHash(req) - async def fetch_tx_by_tx_hash(self, tx_hash: str) -> Dict[str, Any]: return await self.exchange_explorer_api.fetch_tx_by_tx_hash(tx_hash=tx_hash) - async def get_account_txs(self, address: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_account_txs` instead - """ - warn("This method is deprecated. Use fetch_account_txs instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.GetAccountTxsRequest( - address=address, - before=kwargs.get("before"), - after=kwargs.get("after"), - limit=kwargs.get("limit"), - skip=kwargs.get("skip"), - type=kwargs.get("type"), - module=kwargs.get("module"), - ) - return await self.stubExplorer.GetAccountTxs(req) - async def fetch_account_txs( self, address: str, @@ -1287,52 +1036,9 @@ async def fetch_account_txs( pagination=pagination, ) - async def get_blocks(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_blocks` instead - """ - warn("This method is deprecated. Use fetch_blocks instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.GetBlocksRequest( - before=kwargs.get("before"), - after=kwargs.get("after"), - limit=kwargs.get("limit"), - ) - return await self.stubExplorer.GetBlocks(req) - - async def fetch_blocks( - self, - before: Optional[int] = None, - after: Optional[int] = None, - pagination: Optional[PaginationOption] = None, - ) -> Dict[str, Any]: - return await self.exchange_explorer_api.fetch_blocks(before=before, after=after, pagination=pagination) - - async def get_block(self, block_height: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_block` instead - """ - warn("This method is deprecated. Use fetch_block instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.GetBlockRequest(id=block_height) - return await self.stubExplorer.GetBlock(req) - async def fetch_block(self, block_id: str) -> Dict[str, Any]: return await self.exchange_explorer_api.fetch_block(block_id=block_id) - async def get_txs(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_txs` instead - """ - warn("This method is deprecated. Use fetch_txs instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.GetTxsRequest( - before=kwargs.get("before"), - after=kwargs.get("after"), - limit=kwargs.get("limit"), - skip=kwargs.get("skip"), - type=kwargs.get("type"), - module=kwargs.get("module"), - ) - return await self.stubExplorer.GetTxs(req) - async def fetch_txs( self, before: Optional[int] = None, @@ -1355,14 +1061,6 @@ async def fetch_txs( pagination=pagination, ) - async def stream_txs(self): - """ - This method is deprecated and will be removed soon. Please use `listen_txs_updates` instead - """ - warn("This method is deprecated. Use listen_txs_updates instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.StreamTxsRequest() - return self.stubExplorer.StreamTxs(req) - async def listen_txs_updates( self, callback: Callable, @@ -1375,14 +1073,6 @@ async def listen_txs_updates( on_status_callback=on_status_callback, ) - async def stream_blocks(self): - """ - This method is deprecated and will be removed soon. Please use `listen_blocks_updates` instead - """ - warn("This method is deprecated. Use listen_blocks_updates instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.StreamBlocksRequest() - return self.stubExplorer.StreamBlocks(req) - async def listen_blocks_updates( self, callback: Callable, @@ -1395,19 +1085,6 @@ async def listen_blocks_updates( on_status_callback=on_status_callback, ) - async def get_peggy_deposits(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_peggy_deposit_txs` instead - """ - warn("This method is deprecated. Use fetch_peggy_deposit_txs instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.GetPeggyDepositTxsRequest( - sender=kwargs.get("sender"), - receiver=kwargs.get("receiver"), - limit=kwargs.get("limit"), - skip=kwargs.get("skip"), - ) - return await self.stubExplorer.GetPeggyDepositTxs(req) - async def fetch_peggy_deposit_txs( self, sender: Optional[str] = None, @@ -1420,19 +1097,6 @@ async def fetch_peggy_deposit_txs( pagination=pagination, ) - async def get_peggy_withdrawals(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_peggy_withdrawal_txs` instead - """ - warn("This method is deprecated. Use fetch_peggy_withdrawal_txs instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.GetPeggyWithdrawalTxsRequest( - sender=kwargs.get("sender"), - receiver=kwargs.get("receiver"), - limit=kwargs.get("limit"), - skip=kwargs.get("skip"), - ) - return await self.stubExplorer.GetPeggyWithdrawalTxs(req) - async def fetch_peggy_withdrawal_txs( self, sender: Optional[str] = None, @@ -1445,23 +1109,6 @@ async def fetch_peggy_withdrawal_txs( pagination=pagination, ) - async def get_ibc_transfers(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_ibc_transfer_txs` instead - """ - warn("This method is deprecated. Use fetch_ibc_transfer_txs instead", DeprecationWarning, stacklevel=2) - req = explorer_rpc_pb.GetIBCTransferTxsRequest( - sender=kwargs.get("sender"), - receiver=kwargs.get("receiver"), - src_channel=kwargs.get("src_channel"), - src_port=kwargs.get("src_port"), - dest_channel=kwargs.get("dest_channel"), - dest_port=kwargs.get("dest_port"), - limit=kwargs.get("limit"), - skip=kwargs.get("skip"), - ) - return await self.stubExplorer.GetIBCTransferTxs(req) - async def fetch_ibc_transfer_txs( self, sender: Optional[str] = None, @@ -1484,18 +1131,6 @@ async def fetch_ibc_transfer_txs( # AccountsRPC - async def stream_subaccount_balance(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_subaccount_balance_updates` instead - """ - warn( - "This method is deprecated. Use listen_subaccount_balance_updates instead", DeprecationWarning, stacklevel=2 - ) - req = exchange_accounts_rpc_pb.StreamSubaccountBalanceRequest( - subaccount_id=subaccount_id, denoms=kwargs.get("denoms") - ) - return self.stubExchangeAccount.StreamSubaccountBalance(req) - async def listen_subaccount_balance_updates( self, subaccount_id: str, @@ -1512,38 +1147,12 @@ async def listen_subaccount_balance_updates( denoms=denoms, ) - async def get_subaccount_balance(self, subaccount_id: str, denom: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_subaccount_balance` instead - """ - warn("This method is deprecated. Use fetch_subaccount_balance instead", DeprecationWarning, stacklevel=2) - req = exchange_accounts_rpc_pb.SubaccountBalanceEndpointRequest(subaccount_id=subaccount_id, denom=denom) - return await self.stubExchangeAccount.SubaccountBalanceEndpoint(req) - async def fetch_subaccount_balance(self, subaccount_id: str, denom: str) -> Dict[str, Any]: return await self.exchange_account_api.fetch_subaccount_balance(subaccount_id=subaccount_id, denom=denom) - async def get_subaccount_list(self, account_address: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_subaccounts_list` instead - """ - warn("This method is deprecated. Use fetch_subaccounts_list instead", DeprecationWarning, stacklevel=2) - req = exchange_accounts_rpc_pb.SubaccountsListRequest(account_address=account_address) - return await self.stubExchangeAccount.SubaccountsList(req) - async def fetch_subaccounts_list(self, address: str) -> Dict[str, Any]: return await self.exchange_account_api.fetch_subaccounts_list(address=address) - async def get_subaccount_balances_list(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_subaccount_balances_list` instead - """ - warn("This method is deprecated. Use fetch_subaccount_balances_list instead", DeprecationWarning, stacklevel=2) - req = exchange_accounts_rpc_pb.SubaccountBalancesListRequest( - subaccount_id=subaccount_id, denoms=kwargs.get("denoms") - ) - return await self.stubExchangeAccount.SubaccountBalancesList(req) - async def fetch_subaccount_balances_list( self, subaccount_id: str, denoms: Optional[List[str]] = None ) -> Dict[str, Any]: @@ -1551,21 +1160,6 @@ async def fetch_subaccount_balances_list( subaccount_id=subaccount_id, denoms=denoms ) - async def get_subaccount_history(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_subaccount_history` instead - """ - warn("This method is deprecated. Use fetch_subaccount_history instead", DeprecationWarning, stacklevel=2) - req = exchange_accounts_rpc_pb.SubaccountHistoryRequest( - subaccount_id=subaccount_id, - denom=kwargs.get("denom"), - transfer_types=kwargs.get("transfer_types"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - end_time=kwargs.get("end_time"), - ) - return await self.stubExchangeAccount.SubaccountHistory(req) - async def fetch_subaccount_history( self, subaccount_id: str, @@ -1580,18 +1174,6 @@ async def fetch_subaccount_history( pagination=pagination, ) - async def get_subaccount_order_summary(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_subaccount_order_summary` instead - """ - warn("This method is deprecated. Use fetch_subaccount_order_summary instead", DeprecationWarning, stacklevel=2) - req = exchange_accounts_rpc_pb.SubaccountOrderSummaryRequest( - subaccount_id=subaccount_id, - order_direction=kwargs.get("order_direction"), - market_id=kwargs.get("market_id"), - ) - return await self.stubExchangeAccount.SubaccountOrderSummary(req) - async def fetch_subaccount_order_summary( self, subaccount_id: str, @@ -1604,17 +1186,6 @@ async def fetch_subaccount_order_summary( order_direction=order_direction, ) - async def get_order_states(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_order_states` instead - """ - warn("This method is deprecated. Use fetch_order_states instead", DeprecationWarning, stacklevel=2) - req = exchange_accounts_rpc_pb.OrderStatesRequest( - spot_order_hashes=kwargs.get("spot_order_hashes"), - derivative_order_hashes=kwargs.get("derivative_order_hashes"), - ) - return await self.stubExchangeAccount.OrderStates(req) - async def fetch_order_states( self, spot_order_hashes: Optional[List[str]] = None, @@ -1625,43 +1196,14 @@ async def fetch_order_states( derivative_order_hashes=derivative_order_hashes, ) - async def get_portfolio(self, account_address: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_portfolio` instead - """ - warn("This method is deprecated. Use fetch_portfolio instead", DeprecationWarning, stacklevel=2) - - req = exchange_accounts_rpc_pb.PortfolioRequest(account_address=account_address) - return await self.stubExchangeAccount.Portfolio(req) - async def fetch_portfolio(self, account_address: str) -> Dict[str, Any]: return await self.exchange_account_api.fetch_portfolio(account_address=account_address) - async def get_rewards(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_rewards` instead - """ - warn("This method is deprecated. Use fetch_rewards instead", DeprecationWarning, stacklevel=2) - req = exchange_accounts_rpc_pb.RewardsRequest( - account_address=kwargs.get("account_address"), epoch=kwargs.get("epoch") - ) - return await self.stubExchangeAccount.Rewards(req) - async def fetch_rewards(self, account_address: Optional[str] = None, epoch: Optional[int] = None) -> Dict[str, Any]: return await self.exchange_account_api.fetch_rewards(account_address=account_address, epoch=epoch) # OracleRPC - async def stream_oracle_prices(self, base_symbol: str, quote_symbol: str, oracle_type: str): - """ - This method is deprecated and will be removed soon. Please use `listen_subaccount_balance_updates` instead - """ - warn("This method is deprecated. Use listen_oracle_prices_updates instead", DeprecationWarning, stacklevel=2) - req = oracle_rpc_pb.StreamPricesRequest( - base_symbol=base_symbol, quote_symbol=quote_symbol, oracle_type=oracle_type - ) - return self.stubOracle.StreamPrices(req) - async def listen_oracle_prices_updates( self, callback: Callable, @@ -1680,25 +1222,6 @@ async def listen_oracle_prices_updates( oracle_type=oracle_type, ) - async def get_oracle_prices( - self, - base_symbol: str, - quote_symbol: str, - oracle_type: str, - oracle_scale_factor: int, - ): - """ - This method is deprecated and will be removed soon. Please use `fetch_oracle_price` instead - """ - warn("This method is deprecated. Use fetch_oracle_price instead", DeprecationWarning, stacklevel=2) - req = oracle_rpc_pb.PriceRequest( - base_symbol=base_symbol, - quote_symbol=quote_symbol, - oracle_type=oracle_type, - oracle_scale_factor=oracle_scale_factor, - ) - return await self.stubOracle.Price(req) - async def fetch_oracle_price( self, base_symbol: Optional[str] = None, @@ -1713,42 +1236,14 @@ async def fetch_oracle_price( oracle_scale_factor=oracle_scale_factor, ) - async def get_oracle_list(self): - """ - This method is deprecated and will be removed soon. Please use `fetch_oracle_list` instead - """ - warn("This method is deprecated. Use fetch_oracle_list instead", DeprecationWarning, stacklevel=2) - req = oracle_rpc_pb.OracleListRequest() - return await self.stubOracle.OracleList(req) - async def fetch_oracle_list(self) -> Dict[str, Any]: return await self.exchange_oracle_api.fetch_oracle_list() # InsuranceRPC - async def get_insurance_funds(self): - """ - This method is deprecated and will be removed soon. Please use `fetch_insurance_funds` instead - """ - warn("This method is deprecated. Use fetch_insurance_funds instead", DeprecationWarning, stacklevel=2) - req = insurance_rpc_pb.FundsRequest() - return await self.stubInsurance.Funds(req) - async def fetch_insurance_funds(self) -> Dict[str, Any]: return await self.exchange_insurance_api.fetch_insurance_funds() - async def get_redemptions(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_redemptions` instead - """ - warn("This method is deprecated. Use fetch_redemptions instead", DeprecationWarning, stacklevel=2) - req = insurance_rpc_pb.RedemptionsRequest( - redeemer=kwargs.get("redeemer"), - redemption_denom=kwargs.get("redemption_denom"), - status=kwargs.get("status"), - ) - return await self.stubInsurance.Redemptions(req) - async def fetch_redemptions( self, address: Optional[str] = None, @@ -1763,29 +1258,9 @@ async def fetch_redemptions( # SpotRPC - async def get_spot_market(self, market_id: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_market` instead - """ - warn("This method is deprecated. Use fetch_spot_market instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.MarketRequest(market_id=market_id) - return await self.stubSpotExchange.Market(req) - async def fetch_spot_market(self, market_id: str) -> Dict[str, Any]: return await self.exchange_spot_api.fetch_market(market_id=market_id) - async def get_spot_markets(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_markets` instead - """ - warn("This method is deprecated. Use fetch_spot_markets instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.MarketsRequest( - market_status=kwargs.get("market_status"), - base_denom=kwargs.get("base_denom"), - quote_denom=kwargs.get("quote_denom"), - ) - return await self.stubSpotExchange.Markets(req) - async def fetch_spot_markets( self, market_statuses: Optional[List[str]] = None, @@ -1796,16 +1271,6 @@ async def fetch_spot_markets( market_statuses=market_statuses, base_denom=base_denom, quote_denom=quote_denom ) - async def stream_spot_markets(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_spot_markets_updates` instead - """ - warn("This method is deprecated. Use listen_spot_markets_updates instead", DeprecationWarning, stacklevel=2) - - req = spot_exchange_rpc_pb.StreamMarketsRequest(market_ids=kwargs.get("market_ids")) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubSpotExchange.StreamMarkets(request=req, metadata=metadata) - async def listen_spot_markets_updates( self, callback: Callable, @@ -1820,49 +1285,12 @@ async def listen_spot_markets_updates( market_ids=market_ids, ) - async def get_spot_orderbookV2(self, market_id: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_orderbook_v2` instead - """ - warn("This method is deprecated. Use fetch_spot_orderbook_v2 instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.OrderbookV2Request(market_id=market_id) - return await self.stubSpotExchange.OrderbookV2(req) - async def fetch_spot_orderbook_v2(self, market_id: str) -> Dict[str, Any]: return await self.exchange_spot_api.fetch_orderbook_v2(market_id=market_id) - async def get_spot_orderbooksV2(self, market_ids: List): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_orderbooks_v2` instead - """ - warn("This method is deprecated. Use fetch_spot_orderbooks_v2 instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.OrderbooksV2Request(market_ids=market_ids) - return await self.stubSpotExchange.OrderbooksV2(req) - async def fetch_spot_orderbooks_v2(self, market_ids: List[str]) -> Dict[str, Any]: return await self.exchange_spot_api.fetch_orderbooks_v2(market_ids=market_ids) - async def get_spot_orders(self, market_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_orders` instead - """ - warn("This method is deprecated. Use fetch_spot_orders instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.OrdersRequest( - market_id=market_id, - order_side=kwargs.get("order_side"), - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - market_ids=kwargs.get("market_ids"), - include_inactive=kwargs.get("include_inactive"), - subaccount_total_orders=kwargs.get("subaccount_total_orders"), - trade_id=kwargs.get("trade_id"), - cid=kwargs.get("cid"), - ) - return await self.stubSpotExchange.Orders(req) - async def fetch_spot_orders( self, market_ids: Optional[List[str]] = None, @@ -1885,35 +1313,6 @@ async def fetch_spot_orders( pagination=pagination, ) - async def get_historical_spot_orders(self, market_id: Optional[str] = None, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_orders_history` instead - """ - warn("This method is deprecated. Use fetch_spot_orders_history instead", DeprecationWarning, stacklevel=2) - market_ids = kwargs.get("market_ids", []) - if market_id is not None: - market_ids.append(market_id) - order_types = kwargs.get("order_types", []) - order_type = kwargs.get("order_type") - if order_type is not None: - order_types.append(market_id) - req = spot_exchange_rpc_pb.OrdersHistoryRequest( - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - order_types=order_types, - direction=kwargs.get("direction"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - state=kwargs.get("state"), - execution_types=kwargs.get("execution_types", []), - market_ids=market_ids, - trade_id=kwargs.get("trade_id"), - active_markets_only=kwargs.get("active_markets_only"), - cid=kwargs.get("cid"), - ) - return await self.stubSpotExchange.OrdersHistory(req) - async def fetch_spot_orders_history( self, subaccount_id: Optional[str] = None, @@ -1940,29 +1339,6 @@ async def fetch_spot_orders_history( pagination=pagination, ) - async def get_spot_trades(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_trades` instead - """ - warn("This method is deprecated. Use fetch_spot_trades instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.TradesRequest( - market_id=kwargs.get("market_id"), - execution_side=kwargs.get("execution_side"), - direction=kwargs.get("direction"), - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - market_ids=kwargs.get("market_ids"), - subaccount_ids=kwargs.get("subaccount_ids"), - execution_types=kwargs.get("execution_types"), - trade_id=kwargs.get("trade_id"), - account_address=kwargs.get("account_address"), - cid=kwargs.get("cid"), - ) - return await self.stubSpotExchange.Trades(req) - async def fetch_spot_trades( self, market_ids: Optional[List[str]] = None, @@ -1987,15 +1363,6 @@ async def fetch_spot_trades( pagination=pagination, ) - async def stream_spot_orderbook_snapshot(self, market_ids: List[str]): - """ - This method is deprecated and will be removed soon. Please use `listen_spot_orderbook_snapshots` instead - """ - warn("This method is deprecated. Use listen_spot_orderbook_snapshots instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.StreamOrderbookV2Request(market_ids=market_ids) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubSpotExchange.StreamOrderbookV2(request=req, metadata=metadata) - async def listen_spot_orderbook_snapshots( self, market_ids: List[str], @@ -2010,15 +1377,6 @@ async def listen_spot_orderbook_snapshots( on_status_callback=on_status_callback, ) - async def stream_spot_orderbook_update(self, market_ids: List[str]): - """ - This method is deprecated and will be removed soon. Please use `listen_spot_orderbook_updates` instead - """ - warn("This method is deprecated. Use listen_spot_orderbook_updates instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.StreamOrderbookUpdateRequest(market_ids=market_ids) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubSpotExchange.StreamOrderbookUpdate(request=req, metadata=metadata) - async def listen_spot_orderbook_updates( self, market_ids: List[str], @@ -2033,28 +1391,6 @@ async def listen_spot_orderbook_updates( on_status_callback=on_status_callback, ) - async def stream_spot_orders(self, market_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_spot_orders_updates` instead - """ - warn("This method is deprecated. Use listen_spot_orders_updates instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.StreamOrdersRequest( - market_id=market_id, - order_side=kwargs.get("order_side"), - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - market_ids=kwargs.get("market_ids"), - include_inactive=kwargs.get("include_inactive"), - subaccount_total_orders=kwargs.get("subaccount_total_orders"), - trade_id=kwargs.get("trade_id"), - cid=kwargs.get("cid"), - ) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubSpotExchange.StreamOrders(request=req, metadata=metadata) - async def listen_spot_orders_updates( self, callback: Callable, @@ -2083,26 +1419,6 @@ async def listen_spot_orders_updates( pagination=pagination, ) - async def stream_historical_spot_orders(self, market_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_spot_orders_history_updates` instead - """ - warn( - "This method is deprecated. Use listen_spot_orders_history_updates instead", - DeprecationWarning, - stacklevel=2, - ) - req = spot_exchange_rpc_pb.StreamOrdersHistoryRequest( - market_id=market_id, - direction=kwargs.get("direction"), - subaccount_id=kwargs.get("subaccount_id"), - order_types=kwargs.get("order_types"), - state=kwargs.get("state"), - execution_types=kwargs.get("execution_types"), - ) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubSpotExchange.StreamOrdersHistory(request=req, metadata=metadata) - async def listen_spot_orders_history_updates( self, callback: Callable, @@ -2127,27 +1443,6 @@ async def listen_spot_orders_history_updates( execution_types=execution_types, ) - async def stream_historical_derivative_orders(self, market_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. - Please use `listen_derivative_orders_history_updates` instead - """ - warn( - "This method is deprecated. Use listen_derivative_orders_history_updates instead", - DeprecationWarning, - stacklevel=2, - ) - req = derivative_exchange_rpc_pb.StreamOrdersHistoryRequest( - market_id=market_id, - direction=kwargs.get("direction"), - subaccount_id=kwargs.get("subaccount_id"), - order_types=kwargs.get("order_types"), - state=kwargs.get("state"), - execution_types=kwargs.get("execution_types"), - ) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubDerivativeExchange.StreamOrdersHistory(request=req, metadata=metadata) - async def listen_derivative_orders_history_updates( self, callback: Callable, @@ -2172,30 +1467,6 @@ async def listen_derivative_orders_history_updates( execution_types=execution_types, ) - async def stream_spot_trades(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_spot_trades_updates` instead - """ - warn("This method is deprecated. Use listen_spot_trades_updates instead", DeprecationWarning, stacklevel=2) - req = spot_exchange_rpc_pb.StreamTradesRequest( - market_id=kwargs.get("market_id"), - execution_side=kwargs.get("execution_side"), - direction=kwargs.get("direction"), - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - market_ids=kwargs.get("market_ids"), - subaccount_ids=kwargs.get("subaccount_ids"), - execution_types=kwargs.get("execution_types"), - trade_id=kwargs.get("trade_id"), - account_address=kwargs.get("account_address"), - cid=kwargs.get("cid"), - ) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubSpotExchange.StreamTrades(request=req, metadata=metadata) - async def listen_spot_trades_updates( self, callback: Callable, @@ -2226,21 +1497,6 @@ async def listen_spot_trades_updates( pagination=pagination, ) - async def get_spot_subaccount_orders(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_subaccount_orders_list` instead - """ - warn( - "This method is deprecated. Use fetch_spot_subaccount_orders_list instead", DeprecationWarning, stacklevel=2 - ) - req = spot_exchange_rpc_pb.SubaccountOrdersListRequest( - subaccount_id=subaccount_id, - market_id=kwargs.get("market_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - ) - return await self.stubSpotExchange.SubaccountOrdersList(req) - async def fetch_spot_subaccount_orders_list( self, subaccount_id: str, @@ -2251,23 +1507,6 @@ async def fetch_spot_subaccount_orders_list( subaccount_id=subaccount_id, market_id=market_id, pagination=pagination ) - async def get_spot_subaccount_trades(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_spot_subaccount_trades_list` instead - """ - warn( - "This method is deprecated. Use fetch_spot_subaccount_trades_list instead", DeprecationWarning, stacklevel=2 - ) - req = spot_exchange_rpc_pb.SubaccountTradesListRequest( - subaccount_id=subaccount_id, - market_id=kwargs.get("market_id"), - execution_type=kwargs.get("execution_type"), - direction=kwargs.get("direction"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - ) - return await self.stubSpotExchange.SubaccountTradesList(req) - async def fetch_spot_subaccount_trades_list( self, subaccount_id: str, @@ -2285,29 +1524,9 @@ async def fetch_spot_subaccount_trades_list( ) # DerivativeRPC - - async def get_derivative_market(self, market_id: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_market` instead - """ - warn("This method is deprecated. Use fetch_derivative_market instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.MarketRequest(market_id=market_id) - return await self.stubDerivativeExchange.Market(req) - async def fetch_derivative_market(self, market_id: str) -> Dict[str, Any]: return await self.exchange_derivative_api.fetch_market(market_id=market_id) - async def get_derivative_markets(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_markets` instead - """ - warn("This method is deprecated. Use fetch_derivative_markets instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.MarketsRequest( - market_status=kwargs.get("market_status"), - quote_denom=kwargs.get("quote_denom"), - ) - return await self.stubDerivativeExchange.Markets(req) - async def fetch_derivative_markets( self, market_statuses: Optional[List[str]] = None, @@ -2318,17 +1537,6 @@ async def fetch_derivative_markets( quote_denom=quote_denom, ) - async def stream_derivative_markets(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_derivative_market_updates` instead - """ - warn( - "This method is deprecated. Use listen_derivative_market_updates instead", DeprecationWarning, stacklevel=2 - ) - req = derivative_exchange_rpc_pb.StreamMarketRequest(market_ids=kwargs.get("market_ids")) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubDerivativeExchange.StreamMarket(request=req, metadata=metadata) - async def listen_derivative_market_updates( self, callback: Callable, @@ -2343,51 +1551,12 @@ async def listen_derivative_market_updates( market_ids=market_ids, ) - async def get_derivative_orderbook(self, market_id: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_orderbook_v2` instead - """ - warn("This method is deprecated. Use fetch_derivative_orderbook_v2 instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.OrderbookV2Request(market_id=market_id) - return await self.stubDerivativeExchange.OrderbookV2(req) - async def fetch_derivative_orderbook_v2(self, market_id: str) -> Dict[str, Any]: return await self.exchange_derivative_api.fetch_orderbook_v2(market_id=market_id) - async def get_derivative_orderbooksV2(self, market_ids: List[str]): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_orderbooks_v2` instead - """ - warn("This method is deprecated. Use fetch_derivative_orderbooks_v2 instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.OrderbooksV2Request(market_ids=market_ids) - return await self.stubDerivativeExchange.OrderbooksV2(req) - async def fetch_derivative_orderbooks_v2(self, market_ids: List[str]) -> Dict[str, Any]: return await self.exchange_derivative_api.fetch_orderbooks_v2(market_ids=market_ids) - async def get_derivative_orders(self, market_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_orders` instead - """ - warn("This method is deprecated. Use fetch_derivative_orders instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.OrdersRequest( - market_id=market_id, - order_side=kwargs.get("order_side"), - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - market_ids=kwargs.get("market_ids"), - is_conditional=kwargs.get("is_conditional"), - order_type=kwargs.get("order_type"), - include_inactive=kwargs.get("include_inactive"), - subaccount_total_orders=kwargs.get("subaccount_total_orders"), - trade_id=kwargs.get("trade_id"), - cid=kwargs.get("cid"), - ) - return await self.stubDerivativeExchange.Orders(req) - async def fetch_derivative_orders( self, market_ids: Optional[List[str]] = None, @@ -2414,36 +1583,6 @@ async def fetch_derivative_orders( pagination=pagination, ) - async def get_historical_derivative_orders(self, market_id: Optional[str] = None, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_orders_history` instead - """ - warn("This method is deprecated. Use fetch_derivative_orders_history instead", DeprecationWarning, stacklevel=2) - market_ids = kwargs.get("market_ids", []) - if market_id is not None: - market_ids.append(market_id) - order_types = kwargs.get("order_types", []) - order_type = kwargs.get("order_type") - if order_type is not None: - order_types.append(market_id) - req = derivative_exchange_rpc_pb.OrdersHistoryRequest( - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - order_types=order_types, - direction=kwargs.get("direction"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - is_conditional=kwargs.get("is_conditional"), - state=kwargs.get("state"), - execution_types=kwargs.get("execution_types", []), - market_ids=market_ids, - trade_id=kwargs.get("trade_id"), - active_markets_only=kwargs.get("active_markets_only"), - cid=kwargs.get("cid"), - ) - return await self.stubDerivativeExchange.OrdersHistory(req) - async def fetch_derivative_orders_history( self, subaccount_id: Optional[str] = None, @@ -2472,29 +1611,6 @@ async def fetch_derivative_orders_history( pagination=pagination, ) - async def get_derivative_trades(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_trades` instead - """ - warn("This method is deprecated. Use fetch_derivative_trades instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.TradesRequest( - market_id=kwargs.get("market_id"), - execution_side=kwargs.get("execution_side"), - direction=kwargs.get("direction"), - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - market_ids=kwargs.get("market_ids"), - subaccount_ids=kwargs.get("subaccount_ids"), - execution_types=kwargs.get("execution_types"), - trade_id=kwargs.get("trade_id"), - account_address=kwargs.get("account_address"), - cid=kwargs.get("cid"), - ) - return await self.stubDerivativeExchange.Trades(req) - async def fetch_derivative_trades( self, market_ids: Optional[List[str]] = None, @@ -2519,19 +1635,6 @@ async def fetch_derivative_trades( pagination=pagination, ) - async def stream_derivative_orderbook_snapshot(self, market_ids: List[str]): - """ - This method is deprecated and will be removed soon. Please use `listen_derivative_orderbook_snapshots` instead - """ - warn( - "This method is deprecated. Use listen_derivative_orderbook_snapshots instead", - DeprecationWarning, - stacklevel=2, - ) - req = derivative_exchange_rpc_pb.StreamOrderbookV2Request(market_ids=market_ids) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubDerivativeExchange.StreamOrderbookV2(request=req, metadata=metadata) - async def listen_derivative_orderbook_snapshots( self, market_ids: List[str], @@ -2546,19 +1649,6 @@ async def listen_derivative_orderbook_snapshots( on_status_callback=on_status_callback, ) - async def stream_derivative_orderbook_update(self, market_ids: List[str]): - """ - This method is deprecated and will be removed soon. Please use `listen_derivative_orderbook_updates` instead - """ - warn( - "This method is deprecated. Use listen_derivative_orderbook_updates instead", - DeprecationWarning, - stacklevel=2, - ) - req = derivative_exchange_rpc_pb.StreamOrderbookUpdateRequest(market_ids=market_ids) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubDerivativeExchange.StreamOrderbookUpdate(request=req, metadata=metadata) - async def listen_derivative_orderbook_updates( self, market_ids: List[str], @@ -2573,32 +1663,6 @@ async def listen_derivative_orderbook_updates( on_status_callback=on_status_callback, ) - async def stream_derivative_orders(self, market_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_derivative_orders_updates` instead - """ - warn( - "This method is deprecated. Use listen_derivative_orders_updates instead", DeprecationWarning, stacklevel=2 - ) - req = derivative_exchange_rpc_pb.StreamOrdersRequest( - market_id=market_id, - order_side=kwargs.get("order_side"), - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - market_ids=kwargs.get("market_ids"), - is_conditional=kwargs.get("is_conditional"), - order_type=kwargs.get("order_type"), - include_inactive=kwargs.get("include_inactive"), - subaccount_total_orders=kwargs.get("subaccount_total_orders"), - trade_id=kwargs.get("trade_id"), - cid=kwargs.get("cid"), - ) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubDerivativeExchange.StreamOrders(request=req, metadata=metadata) - async def listen_derivative_orders_updates( self, callback: Callable, @@ -2631,32 +1695,6 @@ async def listen_derivative_orders_updates( pagination=pagination, ) - async def stream_derivative_trades(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_derivative_trades_updates` instead - """ - warn( - "This method is deprecated. Use listen_derivative_trades_updates instead", DeprecationWarning, stacklevel=2 - ) - req = derivative_exchange_rpc_pb.StreamTradesRequest( - market_id=kwargs.get("market_id"), - execution_side=kwargs.get("execution_side"), - direction=kwargs.get("direction"), - subaccount_id=kwargs.get("subaccount_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - start_time=kwargs.get("start_time"), - end_time=kwargs.get("end_time"), - market_ids=kwargs.get("market_ids"), - subaccount_ids=kwargs.get("subaccount_ids"), - execution_types=kwargs.get("execution_types"), - trade_id=kwargs.get("trade_id"), - account_address=kwargs.get("account_address"), - cid=kwargs.get("cid"), - ) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubDerivativeExchange.StreamTrades(request=req, metadata=metadata) - async def listen_derivative_trades_updates( self, callback: Callable, @@ -2687,22 +1725,6 @@ async def listen_derivative_trades_updates( pagination=pagination, ) - async def get_derivative_positions(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_positions_v2` instead - """ - warn("This method is deprecated. Use fetch_derivative_positions_v2 instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.PositionsRequest( - market_id=kwargs.get("market_id"), - market_ids=kwargs.get("market_ids"), - subaccount_id=kwargs.get("subaccount_id"), - direction=kwargs.get("direction"), - subaccount_total_positions=kwargs.get("subaccount_total_positions"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - ) - return await self.stubDerivativeExchange.Positions(req) - async def fetch_derivative_positions_v2( self, market_ids: Optional[List[str]] = None, @@ -2719,24 +1741,6 @@ async def fetch_derivative_positions_v2( pagination=pagination, ) - async def stream_derivative_positions(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_derivative_positions_updates` instead - """ - warn( - "This method is deprecated. Use listen_derivative_positions_updates instead", - DeprecationWarning, - stacklevel=2, - ) - req = derivative_exchange_rpc_pb.StreamPositionsRequest( - market_id=kwargs.get("market_id"), - market_ids=kwargs.get("market_ids"), - subaccount_id=kwargs.get("subaccount_id"), - subaccount_ids=kwargs.get("subaccount_ids"), - ) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubDerivativeExchange.StreamPositions(request=req, metadata=metadata) - async def listen_derivative_positions_updates( self, callback: Callable, @@ -2753,22 +1757,6 @@ async def listen_derivative_positions_updates( subaccount_ids=subaccount_ids, ) - async def get_derivative_liquidable_positions(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_liquidable_positions` instead - """ - warn( - "This method is deprecated. Use fetch_derivative_liquidable_positions instead", - DeprecationWarning, - stacklevel=2, - ) - req = derivative_exchange_rpc_pb.LiquidablePositionsRequest( - market_id=kwargs.get("market_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - ) - return await self.stubDerivativeExchange.LiquidablePositions(req) - async def fetch_derivative_liquidable_positions( self, market_id: Optional[str] = None, @@ -2779,23 +1767,6 @@ async def fetch_derivative_liquidable_positions( pagination=pagination, ) - async def get_derivative_subaccount_orders(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_subaccount_orders` instead - """ - warn( - "This method is deprecated. Use fetch_derivative_subaccount_orders instead", - DeprecationWarning, - stacklevel=2, - ) - req = derivative_exchange_rpc_pb.SubaccountOrdersListRequest( - subaccount_id=subaccount_id, - market_id=kwargs.get("market_id"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - ) - return await self.stubDerivativeExchange.SubaccountOrdersList(req) - async def fetch_subaccount_orders_list( self, subaccount_id: str, @@ -2806,25 +1777,6 @@ async def fetch_subaccount_orders_list( subaccount_id=subaccount_id, market_id=market_id, pagination=pagination ) - async def get_derivative_subaccount_trades(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_derivative_subaccount_trades` instead - """ - warn( - "This method is deprecated. Use fetch_derivative_subaccount_trades instead", - DeprecationWarning, - stacklevel=2, - ) - req = derivative_exchange_rpc_pb.SubaccountTradesListRequest( - subaccount_id=subaccount_id, - market_id=kwargs.get("market_id"), - execution_type=kwargs.get("execution_type"), - direction=kwargs.get("direction"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - ) - return await self.stubDerivativeExchange.SubaccountTradesList(req) - async def fetch_derivative_subaccount_trades_list( self, subaccount_id: str, @@ -2841,21 +1793,6 @@ async def fetch_derivative_subaccount_trades_list( pagination=pagination, ) - async def get_funding_payments(self, subaccount_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_funding_payments` instead - """ - warn("This method is deprecated. Use fetch_funding_payments instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.FundingPaymentsRequest( - subaccount_id=subaccount_id, - market_id=kwargs.get("market_id"), - market_ids=kwargs.get("market_ids"), - skip=kwargs.get("skip"), - end_time=kwargs.get("end_time"), - limit=kwargs.get("limit"), - ) - return await self.stubDerivativeExchange.FundingPayments(req) - async def fetch_funding_payments( self, market_ids: Optional[List[str]] = None, @@ -2866,19 +1803,6 @@ async def fetch_funding_payments( market_ids=market_ids, subaccount_id=subaccount_id, pagination=pagination ) - async def get_funding_rates(self, market_id: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_funding_rates` instead - """ - warn("This method is deprecated. Use fetch_funding_rates instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.FundingRatesRequest( - market_id=market_id, - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - end_time=kwargs.get("end_time"), - ) - return await self.stubDerivativeExchange.FundingRates(req) - async def fetch_funding_rates( self, market_id: str, @@ -2886,19 +1810,6 @@ async def fetch_funding_rates( ) -> Dict[str, Any]: return await self.exchange_derivative_api.fetch_funding_rates(market_id=market_id, pagination=pagination) - async def get_binary_options_markets(self, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `fetch_binary_options_markets` instead - """ - warn("This method is deprecated. Use fetch_binary_options_markets instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.BinaryOptionsMarketsRequest( - market_status=kwargs.get("market_status"), - quote_denom=kwargs.get("quote_denom"), - skip=kwargs.get("skip"), - limit=kwargs.get("limit"), - ) - return await self.stubDerivativeExchange.BinaryOptionsMarkets(req) - async def fetch_binary_options_markets( self, market_status: Optional[str] = None, @@ -2911,45 +1822,13 @@ async def fetch_binary_options_markets( pagination=pagination, ) - async def get_binary_options_market(self, market_id: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_binary_options_market` instead - """ - warn("This method is deprecated. Use fetch_binary_options_market instead", DeprecationWarning, stacklevel=2) - req = derivative_exchange_rpc_pb.BinaryOptionsMarketRequest(market_id=market_id) - return await self.stubDerivativeExchange.BinaryOptionsMarket(req) - async def fetch_binary_options_market(self, market_id: str) -> Dict[str, Any]: return await self.exchange_derivative_api.fetch_binary_options_market(market_id=market_id) # PortfolioRPC - - async def get_account_portfolio(self, account_address: str): - """ - This method is deprecated and will be removed soon. Please use `fetch_account_portfolio_balances` instead - """ - warn( - "This method is deprecated. Use fetch_account_portfolio_balances instead", DeprecationWarning, stacklevel=2 - ) - req = portfolio_rpc_pb.AccountPortfolioRequest(account_address=account_address) - return await self.stubPortfolio.AccountPortfolio(req) - async def fetch_account_portfolio_balances(self, account_address: str) -> Dict[str, Any]: return await self.exchange_portfolio_api.fetch_account_portfolio_balances(account_address=account_address) - async def stream_account_portfolio(self, account_address: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `listen_account_portfolio_updates` instead - """ - warn( - "This method is deprecated. Use listen_account_portfolio_updates instead", DeprecationWarning, stacklevel=2 - ) - req = portfolio_rpc_pb.StreamAccountPortfolioRequest( - account_address=account_address, subaccount_id=kwargs.get("subaccount_id"), type=kwargs.get("type") - ) - metadata = self.network.exchange_cookie_assistant.metadata() - return self.stubPortfolio.StreamAccountPortfolio(request=req, metadata=metadata) - async def listen_account_portfolio_updates( self, account_address: str, @@ -2968,38 +1847,6 @@ async def listen_account_portfolio_updates( update_type=update_type, ) - async def chain_stream( - self, - bank_balances_filter: Optional[chain_stream_query.BankBalancesFilter] = None, - subaccount_deposits_filter: Optional[chain_stream_query.SubaccountDepositsFilter] = None, - spot_trades_filter: Optional[chain_stream_query.TradesFilter] = None, - derivative_trades_filter: Optional[chain_stream_query.TradesFilter] = None, - spot_orders_filter: Optional[chain_stream_query.OrdersFilter] = None, - derivative_orders_filter: Optional[chain_stream_query.OrdersFilter] = None, - spot_orderbooks_filter: Optional[chain_stream_query.OrderbookFilter] = None, - derivative_orderbooks_filter: Optional[chain_stream_query.OrderbookFilter] = None, - positions_filter: Optional[chain_stream_query.PositionsFilter] = None, - oracle_price_filter: Optional[chain_stream_query.OraclePriceFilter] = None, - ): - """ - This method is deprecated and will be removed soon. Please use `listen_chain_stream_updates` instead - """ - warn("This method is deprecated. Use listen_chain_stream_updates instead", DeprecationWarning, stacklevel=2) - request = chain_stream_query.StreamRequest( - bank_balances_filter=bank_balances_filter, - subaccount_deposits_filter=subaccount_deposits_filter, - spot_trades_filter=spot_trades_filter, - derivative_trades_filter=derivative_trades_filter, - spot_orders_filter=spot_orders_filter, - derivative_orders_filter=derivative_orders_filter, - spot_orderbooks_filter=spot_orderbooks_filter, - derivative_orderbooks_filter=derivative_orderbooks_filter, - positions_filter=positions_filter, - oracle_price_filter=oracle_price_filter, - ) - metadata = self.network.chain_cookie_assistant.metadata() - return self.chain_stream_stub.Stream(request=request, metadata=metadata) - async def listen_chain_stream_updates( self, callback: Callable, diff --git a/pyinjective/composer.py b/pyinjective/composer.py index 720cfb7c..5605e7af 100644 --- a/pyinjective/composer.py +++ b/pyinjective/composer.py @@ -3,7 +3,6 @@ from decimal import Decimal from time import time from typing import Any, Dict, List, Optional -from warnings import warn from google.protobuf import any_pb2, json_format, timestamp_pb2 @@ -150,13 +149,6 @@ def __init__( self.tokens = tokens self._ofac_checker = OfacChecker() - def Coin(self, amount: int, denom: str): - """ - This method is deprecated and will be removed soon. Please use `coin` instead - """ - warn("This method is deprecated. Use coin instead", DeprecationWarning, stacklevel=2) - return base_coin_pb.Coin(amount=str(amount), denom=denom) - def coin(self, amount: int, denom: str) -> base_coin_pb.Coin: """ This method create an instance of Coin gRPC type, considering the amount is already expressed in chain format @@ -172,27 +164,6 @@ def create_coin_amount(self, amount: Decimal, token_name: str) -> base_coin_pb.C chain_amount = token.chain_formatted_value(human_readable_value=amount) return self.coin(amount=int(chain_amount), denom=token.denom) - def OrderData( - self, market_id: str, subaccount_id: str, order_hash: Optional[str] = None, cid: Optional[str] = None, **kwargs - ): - """ - This method is deprecated and will be removed soon. Please use `order_data` instead - """ - warn("This method is deprecated. Use order_data instead", DeprecationWarning, stacklevel=2) - - is_conditional = kwargs.get("is_conditional", False) - is_buy = kwargs.get("order_direction", "buy") == "buy" - is_market_order = kwargs.get("order_type", "limit") == "market" - order_mask = self._order_mask(is_conditional=is_conditional, is_buy=is_buy, is_market_order=is_market_order) - - return injective_exchange_tx_pb.OrderData( - market_id=market_id, - subaccount_id=subaccount_id, - order_hash=order_hash, - order_mask=order_mask, - cid=cid, - ) - def order_data( self, market_id: str, @@ -228,53 +199,6 @@ def order_data_without_mask( cid=cid, ) - def SpotOrder( - self, - market_id: str, - subaccount_id: str, - fee_recipient: str, - price: float, - quantity: float, - cid: Optional[str] = None, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `spot_order` instead - """ - warn("This method is deprecated. Use spot_order instead", DeprecationWarning, stacklevel=2) - - market = self.spot_markets[market_id] - - # prepare values - quantity = market.quantity_to_chain_format(human_readable_value=Decimal(str(quantity))) - price = market.price_to_chain_format(human_readable_value=Decimal(str(price))) - trigger_price = market.price_to_chain_format(human_readable_value=Decimal(0)) - - if kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.BUY - - elif not kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.SELL - - elif kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.BUY_PO - - elif not kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.SELL_PO - - return injective_exchange_pb.SpotOrder( - market_id=market_id, - order_info=injective_exchange_pb.OrderInfo( - subaccount_id=subaccount_id, - fee_recipient=fee_recipient, - price=str(int(price)), - quantity=str(int(quantity)), - cid=cid, - ), - order_type=order_type, - trigger_price=str(int(trigger_price)), - ) - def spot_order( self, market_id: str, @@ -319,75 +243,6 @@ def calculate_margin( return margin - def DerivativeOrder( - self, - market_id: str, - subaccount_id: str, - fee_recipient: str, - price: float, - quantity: float, - trigger_price: float = 0, - cid: Optional[str] = None, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `derivative_order` instead - """ - warn("This method is deprecated. Use derivative_order instead", DeprecationWarning, stacklevel=2) - market = self.derivative_markets[market_id] - - if kwargs.get("is_reduce_only", False): - margin = 0 - else: - margin = market.calculate_margin_in_chain_format( - human_readable_quantity=Decimal(str(quantity)), - human_readable_price=Decimal(str(price)), - leverage=Decimal(str(kwargs["leverage"])), - ) - - # prepare values - quantity = market.quantity_to_chain_format(human_readable_value=Decimal(str(quantity))) - price = market.price_to_chain_format(human_readable_value=Decimal(str(price))) - trigger_price = market.price_to_chain_format(human_readable_value=Decimal(str(trigger_price))) - - if kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.BUY - - elif not kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.SELL - - elif kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.BUY_PO - - elif not kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.SELL_PO - - elif kwargs.get("stop_buy"): - order_type = injective_exchange_pb.OrderType.STOP_BUY - - elif kwargs.get("stop_sell"): - order_type = injective_exchange_pb.OrderType.STOP_SEll - - elif kwargs.get("take_buy"): - order_type = injective_exchange_pb.OrderType.TAKE_BUY - - elif kwargs.get("take_sell"): - order_type = injective_exchange_pb.OrderType.TAKE_SELL - - return injective_exchange_pb.DerivativeOrder( - market_id=market_id, - order_info=injective_exchange_pb.OrderInfo( - subaccount_id=subaccount_id, - fee_recipient=fee_recipient, - price=str(int(price)), - quantity=str(int(quantity)), - cid=cid, - ), - margin=str(int(margin)), - order_type=order_type, - trigger_price=str(int(trigger_price)), - ) - def derivative_order( self, market_id: str, @@ -521,19 +376,6 @@ def MsgSend(self, from_address: str, to_address: str, amount: float, denom: str) # endregion # region Chain Exchange module - def MsgDeposit(self, sender: str, subaccount_id: str, amount: float, denom: str): - """ - This method is deprecated and will be removed soon. Please use `msg_deposit` instead - """ - warn("This method is deprecated. Use msg_deposit instead", DeprecationWarning, stacklevel=2) - coin = self.create_coin_amount(amount=Decimal(str(amount)), token_name=denom) - - return injective_exchange_tx_pb.MsgDeposit( - sender=sender, - subaccount_id=subaccount_id, - amount=coin, - ) - def msg_deposit(self, sender: str, subaccount_id: str, amount: Decimal, denom: str): coin = self.create_coin_amount(amount=amount, token_name=denom) @@ -543,19 +385,6 @@ def msg_deposit(self, sender: str, subaccount_id: str, amount: Decimal, denom: s amount=coin, ) - def MsgWithdraw(self, sender: str, subaccount_id: str, amount: float, denom: str): - """ - This method is deprecated and will be removed soon. Please use `msg_withdraw` instead - """ - warn("This method is deprecated. Use msg_withdraw instead", DeprecationWarning, stacklevel=2) - be_amount = self.create_coin_amount(amount=Decimal(str(amount)), token_name=denom) - - return injective_exchange_tx_pb.MsgWithdraw( - sender=sender, - subaccount_id=subaccount_id, - amount=be_amount, - ) - def msg_withdraw(self, sender: str, subaccount_id: str, amount: Decimal, denom: str): be_amount = self.create_coin_amount(amount=amount, token_name=denom) @@ -696,48 +525,6 @@ def msg_instant_expiry_futures_market_launch( min_notional=f"{chain_min_notional.normalize():f}", ) - def MsgCreateSpotLimitOrder( - self, - market_id: str, - sender: str, - subaccount_id: str, - fee_recipient: str, - price: float, - quantity: float, - cid: Optional[str] = None, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_create_spot_limit_order` instead - """ - warn("This method is deprecated. Use msg_create_spot_limit_order instead", DeprecationWarning, stacklevel=2) - - order_type_name = "BUY" - if kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type_name = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY) - - elif not kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type_name = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL) - - elif kwargs.get("is_buy") and kwargs.get("is_po"): - order_type_name = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY_PO) - - elif not kwargs.get("is_buy") and kwargs.get("is_po"): - order_type_name = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL_PO) - - return injective_exchange_tx_pb.MsgCreateSpotLimitOrder( - sender=sender, - order=self.spot_order( - market_id=market_id, - subaccount_id=subaccount_id, - fee_recipient=fee_recipient, - price=Decimal(str(price)), - quantity=Decimal(str(quantity)), - order_type=order_type_name, - cid=cid, - ), - ) - def msg_create_spot_limit_order( self, market_id: str, @@ -764,55 +551,11 @@ def msg_create_spot_limit_order( ), ) - def MsgBatchCreateSpotLimitOrders(self, sender: str, orders: List): - """ - This method is deprecated and will be removed soon. Please use `msg_batch_create_spot_limit_orders` instead - """ - warn( - "This method is deprecated. Use msg_batch_create_spot_limit_orders instead", - DeprecationWarning, - stacklevel=2, - ) - return injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders(sender=sender, orders=orders) - def msg_batch_create_spot_limit_orders( self, sender: str, orders: List[injective_exchange_pb.SpotOrder] ) -> injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders: return injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders(sender=sender, orders=orders) - def MsgCreateSpotMarketOrder( - self, - market_id: str, - sender: str, - subaccount_id: str, - fee_recipient: str, - price: float, - quantity: float, - is_buy: bool, - cid: Optional[str] = None, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_create_spot_market_order` instead - """ - warn("This method is deprecated. Use msg_create_spot_market_order instead", DeprecationWarning, stacklevel=2) - - order_type_name = "BUY" - if not is_buy: - order_type_name = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL) - - return injective_exchange_tx_pb.MsgCreateSpotMarketOrder( - sender=sender, - order=self.spot_order( - market_id=market_id, - subaccount_id=subaccount_id, - fee_recipient=fee_recipient, - price=Decimal(str(price)), - quantity=Decimal(str(quantity)), - order_type=order_type_name, - cid=cid, - ), - ) - def msg_create_spot_market_order( self, market_id: str, @@ -839,26 +582,6 @@ def msg_create_spot_market_order( ), ) - def MsgCancelSpotOrder( - self, - market_id: str, - sender: str, - subaccount_id: str, - order_hash: Optional[str] = None, - cid: Optional[str] = None, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_cancel_spot_order` instead - """ - warn("This method is deprecated. Use msg_cancel_spot_order instead", DeprecationWarning, stacklevel=2) - return injective_exchange_tx_pb.MsgCancelSpotOrder( - sender=sender, - market_id=market_id, - subaccount_id=subaccount_id, - order_hash=order_hash, - cid=cid, - ) - def msg_cancel_spot_order( self, market_id: str, @@ -875,37 +598,11 @@ def msg_cancel_spot_order( cid=cid, ) - def MsgBatchCancelSpotOrders(self, sender: str, data: List): - """ - This method is deprecated and will be removed soon. Please use `msg_batch_cancel_spot_orders` instead - """ - warn("This method is deprecated. Use msg_batch_cancel_spot_orders instead", DeprecationWarning, stacklevel=2) - return injective_exchange_tx_pb.MsgBatchCancelSpotOrders(sender=sender, data=data) - def msg_batch_cancel_spot_orders( self, sender: str, orders_data: List[injective_exchange_tx_pb.OrderData] ) -> injective_exchange_tx_pb.MsgBatchCancelSpotOrders: return injective_exchange_tx_pb.MsgBatchCancelSpotOrders(sender=sender, data=orders_data) - def MsgBatchUpdateOrders(self, sender: str, **kwargs): - """ - This method is deprecated and will be removed soon. Please use `msg_batch_update_orders` instead - """ - warn("This method is deprecated. Use msg_batch_update_orders instead", DeprecationWarning, stacklevel=2) - return injective_exchange_tx_pb.MsgBatchUpdateOrders( - sender=sender, - subaccount_id=kwargs.get("subaccount_id"), - spot_market_ids_to_cancel_all=kwargs.get("spot_market_ids_to_cancel_all"), - derivative_market_ids_to_cancel_all=kwargs.get("derivative_market_ids_to_cancel_all"), - spot_orders_to_cancel=kwargs.get("spot_orders_to_cancel"), - derivative_orders_to_cancel=kwargs.get("derivative_orders_to_cancel"), - spot_orders_to_create=kwargs.get("spot_orders_to_create"), - derivative_orders_to_create=kwargs.get("derivative_orders_to_create"), - binary_options_orders_to_cancel=kwargs.get("binary_options_orders_to_cancel"), - binary_options_market_ids_to_cancel_all=kwargs.get("binary_options_market_ids_to_cancel_all"), - binary_options_orders_to_create=kwargs.get("binary_options_orders_to_create"), - ) - def msg_batch_update_orders( self, sender: str, @@ -934,22 +631,6 @@ def msg_batch_update_orders( binary_options_orders_to_create=binary_options_orders_to_create, ) - def MsgPrivilegedExecuteContract( - self, sender: str, contract: str, msg: str, **kwargs - ) -> injective_exchange_tx_pb.MsgPrivilegedExecuteContract: - """ - This method is deprecated and will be removed soon. Please use `msg_privileged_execute_contract` instead - """ - warn("This method is deprecated. Use msg_privileged_execute_contract instead", DeprecationWarning, stacklevel=2) - - return injective_exchange_tx_pb.MsgPrivilegedExecuteContract( - sender=sender, - contract_address=contract, - data=msg, - funds=kwargs.get("funds") # funds is a string of Coin strings, comma separated, - # e.g. 100000inj,20000000000usdt - ) - def msg_privileged_execute_contract( self, sender: str, @@ -965,68 +646,6 @@ def msg_privileged_execute_contract( funds=funds, ) - def MsgCreateDerivativeLimitOrder( - self, - market_id: str, - sender: str, - subaccount_id: str, - fee_recipient: str, - price: float, - quantity: float, - cid: Optional[str] = None, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_create_derivative_limit_order` instead - """ - warn( - "This method is deprecated. Use msg_create_derivative_limit_order instead", DeprecationWarning, stacklevel=2 - ) - - if kwargs.get("is_reduce_only", False): - margin = Decimal(0) - else: - margin = Decimal(str(price)) * Decimal(str(quantity)) / Decimal(str(kwargs["leverage"])) - - if kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY) - - elif not kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL) - - elif kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY_PO) - - elif not kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL_PO) - - elif kwargs.get("stop_buy"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.STOP_BUY) - - elif kwargs.get("stop_sell"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.STOP_SEll) - - elif kwargs.get("take_buy"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.TAKE_BUY) - - elif kwargs.get("take_sell"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.TAKE_SELL) - - return injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder( - sender=sender, - order=self.derivative_order( - market_id=market_id, - subaccount_id=subaccount_id, - fee_recipient=fee_recipient, - price=Decimal(str(price)), - quantity=Decimal(str(quantity)), - margin=margin, - order_type=order_type, - cid=cid, - trigger_price=Decimal(str(kwargs["trigger_price"])) if "trigger_price" in kwargs else None, - ), - ) - def msg_create_derivative_limit_order( self, market_id: str, @@ -1055,18 +674,6 @@ def msg_create_derivative_limit_order( ), ) - def MsgBatchCreateDerivativeLimitOrders(self, sender: str, orders: List): - """ - This method is deprecated and will be removed soon. - Please use `msg_batch_create_derivative_limit_orders` instead - """ - warn( - "This method is deprecated. Use msg_batch_create_derivative_limit_orders instead", - DeprecationWarning, - stacklevel=2, - ) - return injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders(sender=sender, orders=orders) - def msg_batch_create_derivative_limit_orders( self, sender: str, @@ -1074,70 +681,6 @@ def msg_batch_create_derivative_limit_orders( ) -> injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders: return injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders(sender=sender, orders=orders) - def MsgCreateDerivativeMarketOrder( - self, - market_id: str, - sender: str, - subaccount_id: str, - fee_recipient: str, - price: float, - quantity: float, - cid: Optional[str] = None, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_create_derivative_market_order` instead - """ - warn( - "This method is deprecated. Use msg_create_derivative_market_order instead", - DeprecationWarning, - stacklevel=2, - ) - - if kwargs.get("is_reduce_only", False): - margin = Decimal(0) - else: - margin = Decimal(str(price)) * Decimal(str(quantity)) / Decimal(str(kwargs["leverage"])) - - if kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY) - - elif not kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL) - - elif kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY_PO) - - elif not kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL_PO) - - elif kwargs.get("stop_buy"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.STOP_BUY) - - elif kwargs.get("stop_sell"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.STOP_SEll) - - elif kwargs.get("take_buy"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.TAKE_BUY) - - elif kwargs.get("take_sell"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.TAKE_SELL) - - return injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder( - sender=sender, - order=self.derivative_order( - market_id=market_id, - subaccount_id=subaccount_id, - fee_recipient=fee_recipient, - price=Decimal(str(price)), - quantity=Decimal(str(quantity)), - margin=margin, - order_type=order_type, - cid=cid, - trigger_price=Decimal(str(kwargs["trigger_price"])) if "trigger_price" in kwargs else None, - ), - ) - def msg_create_derivative_market_order( self, market_id: str, @@ -1166,38 +709,6 @@ def msg_create_derivative_market_order( ), ) - def MsgCancelDerivativeOrder( - self, - market_id: str, - sender: str, - subaccount_id: str, - order_hash: Optional[str] = None, - cid: Optional[str] = None, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_cancel_derivative_order` instead - """ - warn( - "This method is deprecated. Use msg_cancel_derivative_order instead", - DeprecationWarning, - stacklevel=2, - ) - - is_conditional = kwargs.get("is_conditional", False) - is_buy = kwargs.get("order_direction", "buy") == "buy" - is_market_order = kwargs.get("order_type", "limit") == "market" - order_mask = self._order_mask(is_conditional=is_conditional, is_buy=is_buy, is_market_order=is_market_order) - - return injective_exchange_tx_pb.MsgCancelDerivativeOrder( - sender=sender, - market_id=market_id, - subaccount_id=subaccount_id, - order_hash=order_hash, - order_mask=order_mask, - cid=cid, - ) - def msg_cancel_derivative_order( self, market_id: str, @@ -1220,78 +731,11 @@ def msg_cancel_derivative_order( cid=cid, ) - def MsgBatchCancelDerivativeOrders(self, sender: str, data: List): - """ - This method is deprecated and will be removed soon. Please use `msg_batch_cancel_derivative_orders` instead - """ - warn( - "This method is deprecated. Use msg_batch_cancel_derivative_orders instead", - DeprecationWarning, - stacklevel=2, - ) - return injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders(sender=sender, data=data) - def msg_batch_cancel_derivative_orders( self, sender: str, orders_data: List[injective_exchange_tx_pb.OrderData] ) -> injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders: return injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders(sender=sender, data=orders_data) - def MsgInstantBinaryOptionsMarketLaunch( - self, - sender: str, - ticker: str, - oracle_symbol: str, - oracle_provider: str, - oracle_type: str, - oracle_scale_factor: int, - maker_fee_rate: float, - taker_fee_rate: float, - expiration_timestamp: int, - settlement_timestamp: int, - quote_denom: str, - quote_decimals: int, - min_price_tick_size: float, - min_quantity_tick_size: float, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. - Please use `msg_instant_binary_options_market_launch` instead - """ - warn( - "This method is deprecated. Use msg_instant_binary_options_market_launch instead", - DeprecationWarning, - stacklevel=2, - ) - scaled_maker_fee_rate = Decimal((maker_fee_rate * pow(10, 18))) - maker_fee_to_bytes = bytes(str(scaled_maker_fee_rate), "utf-8") - - scaled_taker_fee_rate = Decimal((taker_fee_rate * pow(10, 18))) - taker_fee_to_bytes = bytes(str(scaled_taker_fee_rate), "utf-8") - - scaled_min_price_tick_size = Decimal((min_price_tick_size * pow(10, quote_decimals + 18))) - min_price_to_bytes = bytes(str(scaled_min_price_tick_size), "utf-8") - - scaled_min_quantity_tick_size = Decimal((min_quantity_tick_size * pow(10, 18))) - min_quantity_to_bytes = bytes(str(scaled_min_quantity_tick_size), "utf-8") - - return injective_exchange_tx_pb.MsgInstantBinaryOptionsMarketLaunch( - sender=sender, - ticker=ticker, - oracle_symbol=oracle_symbol, - oracle_provider=oracle_provider, - oracle_type=oracle_type, - oracle_scale_factor=oracle_scale_factor, - maker_fee_rate=maker_fee_to_bytes, - taker_fee_rate=taker_fee_to_bytes, - expiration_timestamp=expiration_timestamp, - settlement_timestamp=settlement_timestamp, - quote_denom=quote_denom, - min_price_tick_size=min_price_to_bytes, - min_quantity_tick_size=min_quantity_to_bytes, - admin=kwargs.get("admin"), - ) - def msg_instant_binary_options_market_launch( self, sender: str, @@ -1340,70 +784,6 @@ def msg_instant_binary_options_market_launch( min_notional=f"{chain_min_notional.normalize():f}", ) - def MsgCreateBinaryOptionsLimitOrder( - self, - market_id: str, - sender: str, - subaccount_id: str, - fee_recipient: str, - price: float, - quantity: float, - cid: Optional[str] = None, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_create_binary_options_limit_order` instead - """ - warn( - "This method is deprecated. Use msg_create_binary_options_limit_order instead", - DeprecationWarning, - stacklevel=2, - ) - if kwargs.get("is_reduce_only", False): - margin = Decimal(0) - else: - margin = Decimal(str(price)) * Decimal(str(quantity)) - - if kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY) - - elif not kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL) - - elif kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY_PO) - - elif not kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL_PO) - - elif kwargs.get("stop_buy"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.STOP_BUY) - - elif kwargs.get("stop_sell"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.STOP_SEll) - - elif kwargs.get("take_buy"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.TAKE_BUY) - - elif kwargs.get("take_sell"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.TAKE_SELL) - - return injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrder( - sender=sender, - order=self.binary_options_order( - market_id=market_id, - subaccount_id=subaccount_id, - fee_recipient=fee_recipient, - price=Decimal(str(price)), - quantity=Decimal(str(quantity)), - margin=margin, - order_type=order_type, - cid=cid, - trigger_price=Decimal(str(kwargs["trigger_price"])) if "trigger_price" in kwargs else None, - denom=kwargs.get("denom"), - ), - ) - def msg_create_binary_options_limit_order( self, market_id: str, @@ -1434,70 +814,6 @@ def msg_create_binary_options_limit_order( ), ) - def MsgCreateBinaryOptionsMarketOrder( - self, - market_id: str, - sender: str, - subaccount_id: str, - fee_recipient: str, - price: float, - quantity: float, - cid: Optional[str] = None, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_create_binary_options_market_order` instead - """ - warn( - "This method is deprecated. Use msg_create_binary_options_market_order instead", - DeprecationWarning, - stacklevel=2, - ) - if kwargs.get("is_reduce_only", False): - margin = Decimal(0) - else: - margin = Decimal(str(price)) * Decimal(str(quantity)) - - if kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY) - - elif not kwargs.get("is_buy") and not kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL) - - elif kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.BUY_PO) - - elif not kwargs.get("is_buy") and kwargs.get("is_po"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.SELL_PO) - - elif kwargs.get("stop_buy"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.STOP_BUY) - - elif kwargs.get("stop_sell"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.STOP_SEll) - - elif kwargs.get("take_buy"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.TAKE_BUY) - - elif kwargs.get("take_sell"): - order_type = injective_exchange_pb.OrderType.Name(injective_exchange_pb.OrderType.TAKE_SELL) - - return injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder( - sender=sender, - order=self.binary_options_order( - market_id=market_id, - subaccount_id=subaccount_id, - fee_recipient=fee_recipient, - price=Decimal(str(price)), - quantity=Decimal(str(quantity)), - margin=margin, - order_type=order_type, - cid=cid, - trigger_price=Decimal(str(kwargs["trigger_price"])) if "trigger_price" in kwargs else None, - denom=kwargs.get("denom"), - ), - ) - def msg_create_binary_options_market_order( self, market_id: str, @@ -1528,30 +844,6 @@ def msg_create_binary_options_market_order( ), ) - def MsgCancelBinaryOptionsOrder( - self, - sender: str, - market_id: str, - subaccount_id: str, - order_hash: Optional[str] = None, - cid: Optional[str] = None, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_cancel_binary_options_order` instead - """ - warn( - "This method is deprecated. Use msg_cancel_binary_options_order instead", - DeprecationWarning, - stacklevel=2, - ) - return injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder( - sender=sender, - market_id=market_id, - subaccount_id=subaccount_id, - order_hash=order_hash, - cid=cid, - ) - def msg_cancel_binary_options_order( self, market_id: str, @@ -1574,31 +866,6 @@ def msg_cancel_binary_options_order( cid=cid, ) - def MsgSubaccountTransfer( - self, - sender: str, - source_subaccount_id: str, - destination_subaccount_id: str, - amount: int, - denom: str, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_subaccount_transfer` instead - """ - warn( - "This method is deprecated. Use msg_subaccount_transfer instead", - DeprecationWarning, - stacklevel=2, - ) - be_amount = self.create_coin_amount(amount=Decimal(str(amount)), token_name=denom) - - return injective_exchange_tx_pb.MsgSubaccountTransfer( - sender=sender, - source_subaccount_id=source_subaccount_id, - destination_subaccount_id=destination_subaccount_id, - amount=be_amount, - ) - def msg_subaccount_transfer( self, sender: str, @@ -1616,31 +883,6 @@ def msg_subaccount_transfer( amount=be_amount, ) - def MsgExternalTransfer( - self, - sender: str, - source_subaccount_id: str, - destination_subaccount_id: str, - amount: int, - denom: str, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_external_transfer` instead - """ - warn( - "This method is deprecated. Use msg_external_transfer instead", - DeprecationWarning, - stacklevel=2, - ) - coin = self.create_coin_amount(amount=Decimal(str(amount)), token_name=denom) - - return injective_exchange_tx_pb.MsgExternalTransfer( - sender=sender, - source_subaccount_id=source_subaccount_id, - destination_subaccount_id=destination_subaccount_id, - amount=coin, - ) - def msg_external_transfer( self, sender: str, @@ -1658,25 +900,6 @@ def msg_external_transfer( amount=coin, ) - def MsgLiquidatePosition( - self, - sender: str, - subaccount_id: str, - market_id: str, - order: Optional[injective_exchange_pb.DerivativeOrder] = None, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_liquidate_position` instead - """ - warn( - "This method is deprecated. Use msg_liquidate_position instead", - DeprecationWarning, - stacklevel=2, - ) - return injective_exchange_tx_pb.MsgLiquidatePosition( - sender=sender, subaccount_id=subaccount_id, market_id=market_id, order=order - ) - def msg_liquidate_position( self, sender: str, @@ -1698,33 +921,6 @@ def msg_emergency_settle_market( sender=sender, subaccount_id=subaccount_id, market_id=market_id ) - def MsgIncreasePositionMargin( - self, - sender: str, - source_subaccount_id: str, - destination_subaccount_id: str, - market_id: str, - amount: float, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_increase_position_margin` instead - """ - warn( - "This method is deprecated. Use msg_increase_position_margin instead", - DeprecationWarning, - stacklevel=2, - ) - market = self.derivative_markets[market_id] - - additional_margin = market.margin_to_chain_format(human_readable_value=Decimal(str(amount))) - return injective_exchange_tx_pb.MsgIncreasePositionMargin( - sender=sender, - source_subaccount_id=source_subaccount_id, - destination_subaccount_id=destination_subaccount_id, - market_id=market_id, - amount=str(int(additional_margin)), - ) - def msg_increase_position_margin( self, sender: str, @@ -1744,52 +940,9 @@ def msg_increase_position_margin( amount=str(int(additional_margin)), ) - def MsgRewardsOptOut(self, sender: str): - """ - This method is deprecated and will be removed soon. Please use `msg_rewards_opt_out` instead - """ - warn( - "This method is deprecated. Use msg_rewards_opt_out instead", - DeprecationWarning, - stacklevel=2, - ) - return injective_exchange_tx_pb.MsgRewardsOptOut(sender=sender) - def msg_rewards_opt_out(self, sender: str) -> injective_exchange_tx_pb.MsgRewardsOptOut: return injective_exchange_tx_pb.MsgRewardsOptOut(sender=sender) - def MsgAdminUpdateBinaryOptionsMarket( - self, - sender: str, - market_id: str, - status: str, - **kwargs, - ): - """ - This method is deprecated and will be removed soon. Please use `msg_admin_update_binary_options_market` instead - """ - warn( - "This method is deprecated. Use msg_admin_update_binary_options_market instead", - DeprecationWarning, - stacklevel=2, - ) - - if kwargs.get("settlement_price") is not None: - scale_price = Decimal((kwargs.get("settlement_price") * pow(10, 18))) - price_to_bytes = bytes(str(scale_price), "utf-8") - - else: - price_to_bytes = "" - - return injective_exchange_tx_pb.MsgAdminUpdateBinaryOptionsMarket( - sender=sender, - market_id=market_id, - settlement_price=price_to_bytes, - expiration_timestamp=kwargs.get("expiration_timestamp"), - settlement_timestamp=kwargs.get("settlement_timestamp"), - status=status, - ) - def msg_admin_update_binary_options_market( self, sender: str, @@ -2260,30 +1413,11 @@ def msg_set_withdraw_address(self, delegator_address: str, withdraw_address: str delegator_address=delegator_address, withdraw_address=withdraw_address ) - # Deprecated - def MsgWithdrawDelegatorReward(self, delegator_address: str, validator_address: str): - """ - This method is deprecated and will be removed soon. Please use `msg_withdraw_delegator_reward` instead - """ - warn("This method is deprecated. Use msg_withdraw_delegator_reward instead", DeprecationWarning, stacklevel=2) - return cosmos_distribution_tx_pb.MsgWithdrawDelegatorReward( - delegator_address=delegator_address, validator_address=validator_address - ) - def msg_withdraw_delegator_reward(self, delegator_address: str, validator_address: str): return cosmos_distribution_tx_pb.MsgWithdrawDelegatorReward( delegator_address=delegator_address, validator_address=validator_address ) - def MsgWithdrawValidatorCommission(self, validator_address: str): - """ - This method is deprecated and will be removed soon. Please use `msg_withdraw_validator_commission` instead - """ - warn( - "This method is deprecated. Use msg_withdraw_validator_commission instead", DeprecationWarning, stacklevel=2 - ) - return cosmos_distribution_tx_pb.MsgWithdrawValidatorCommission(validator_address=validator_address) - def msg_withdraw_validator_commission(self, validator_address: str): return cosmos_distribution_tx_pb.MsgWithdrawValidatorCommission(validator_address=validator_address) diff --git a/pyinjective/core/network.py b/pyinjective/core/network.py index 2fdf91fe..f83c3e4a 100644 --- a/pyinjective/core/network.py +++ b/pyinjective/core/network.py @@ -2,7 +2,6 @@ from abc import ABC, abstractmethod from http.cookies import SimpleCookie from typing import List, Optional -from warnings import warn import grpc from grpc import ChannelCredentials @@ -119,20 +118,11 @@ def __init__( exchange_cookie_assistant: CookieAssistant, explorer_cookie_assistant: CookieAssistant, official_tokens_list_url: str, - use_secure_connection: Optional[bool] = None, grpc_channel_credentials: Optional[ChannelCredentials] = None, grpc_exchange_channel_credentials: Optional[ChannelCredentials] = None, grpc_explorer_channel_credentials: Optional[ChannelCredentials] = None, chain_stream_channel_credentials: Optional[ChannelCredentials] = None, ): - # the `use_secure_connection` parameter is ignored and will be deprecated soon. - if use_secure_connection is not None: - warn( - "use_secure_connection parameter in Network is no longer used and will be deprecated", - DeprecationWarning, - stacklevel=2, - ) - self.lcd_endpoint = lcd_endpoint self.tm_websocket_endpoint = tm_websocket_endpoint self.grpc_endpoint = grpc_endpoint @@ -299,20 +289,11 @@ def custom( chain_cookie_assistant: Optional[CookieAssistant] = None, exchange_cookie_assistant: Optional[CookieAssistant] = None, explorer_cookie_assistant: Optional[CookieAssistant] = None, - use_secure_connection: Optional[bool] = None, grpc_channel_credentials: Optional[ChannelCredentials] = None, grpc_exchange_channel_credentials: Optional[ChannelCredentials] = None, grpc_explorer_channel_credentials: Optional[ChannelCredentials] = None, chain_stream_channel_credentials: Optional[ChannelCredentials] = None, ): - # the `use_secure_connection` parameter is ignored and will be deprecated soon. - if use_secure_connection is not None: - warn( - "use_secure_connection parameter in Network is no longer used and will be deprecated", - DeprecationWarning, - stacklevel=2, - ) - chain_assistant = chain_cookie_assistant or DisabledCookieAssistant() exchange_assistant = exchange_cookie_assistant or DisabledCookieAssistant() explorer_assistant = explorer_cookie_assistant or DisabledCookieAssistant() diff --git a/tests/core/test_network_deprecation_warnings.py b/tests/core/test_network_deprecation_warnings.py deleted file mode 100644 index 1764576c..00000000 --- a/tests/core/test_network_deprecation_warnings.py +++ /dev/null @@ -1,56 +0,0 @@ -from warnings import catch_warnings - -from pyinjective.core.network import DisabledCookieAssistant, Network - - -class TestNetworkDeprecationWarnings: - def test_use_secure_connection_parameter_deprecation_warning(self): - with catch_warnings(record=True) as all_warnings: - Network( - lcd_endpoint="lcd_endpoint", - tm_websocket_endpoint="tm_websocket_endpoint", - grpc_endpoint="grpc_endpoint", - grpc_exchange_endpoint="grpc_exchange_endpoint", - grpc_explorer_endpoint="grpc_explorer_endpoint", - chain_stream_endpoint="chain_stream_endpoint", - chain_id="chain_id", - fee_denom="fee_denom", - env="env", - official_tokens_list_url="https://tokens.url", - chain_cookie_assistant=DisabledCookieAssistant(), - exchange_cookie_assistant=DisabledCookieAssistant(), - explorer_cookie_assistant=DisabledCookieAssistant(), - use_secure_connection=True, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "use_secure_connection parameter in Network is no longer used and will be deprecated" - ) - - def test_use_secure_connection_parameter_in_custom_network_deprecation_warning(self): - with catch_warnings(record=True) as all_warnings: - Network.custom( - lcd_endpoint="lcd_endpoint", - tm_websocket_endpoint="tm_websocket_endpoint", - grpc_endpoint="grpc_endpoint", - grpc_exchange_endpoint="grpc_exchange_endpoint", - grpc_explorer_endpoint="grpc_explorer_endpoint", - chain_stream_endpoint="chain_stream_endpoint", - chain_id="chain_id", - env="env", - official_tokens_list_url="https://tokens.url", - chain_cookie_assistant=DisabledCookieAssistant(), - exchange_cookie_assistant=DisabledCookieAssistant(), - explorer_cookie_assistant=DisabledCookieAssistant(), - use_secure_connection=True, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "use_secure_connection parameter in Network is no longer used and will be deprecated" - ) diff --git a/tests/test_async_client.py b/tests/test_async_client.py index 3181d15a..b67ed799 100644 --- a/tests/test_async_client.py +++ b/tests/test_async_client.py @@ -47,7 +47,6 @@ class TestAsyncClient: async def test_sync_timeout_height_logs_exception(self, caplog): client = AsyncClient( network=Network.local(), - insecure=False, ) with caplog.at_level(logging.DEBUG): @@ -66,7 +65,6 @@ async def test_sync_timeout_height_logs_exception(self, caplog): async def test_get_account_logs_exception(self, caplog): client = AsyncClient( network=Network.local(), - insecure=False, ) with caplog.at_level(logging.DEBUG): @@ -107,7 +105,6 @@ async def test_initialize_tokens_and_markets( client = AsyncClient( network=test_network, - insecure=False, ) client.exchange_spot_api._stub = spot_servicer @@ -198,7 +195,6 @@ async def test_tokens_and_markets_initialization_read_tokens_from_official_list( client = AsyncClient( network=test_network, - insecure=False, ) client.exchange_spot_api._stub = spot_servicer @@ -241,7 +237,6 @@ async def test_initialize_tokens_from_chain_denoms( client = AsyncClient( network=test_network, - insecure=False, ) client.bank_api._stub = bank_servicer diff --git a/tests/test_async_client_deprecation_warnings.py b/tests/test_async_client_deprecation_warnings.py deleted file mode 100644 index 3d8954ca..00000000 --- a/tests/test_async_client_deprecation_warnings.py +++ /dev/null @@ -1,1724 +0,0 @@ -from warnings import catch_warnings - -import grpc -import pytest - -from pyinjective.async_client import AsyncClient -from pyinjective.core.network import Network -from pyinjective.proto.cosmos.authz.v1beta1 import query_pb2 as authz_query -from pyinjective.proto.cosmos.bank.v1beta1 import query_pb2 as bank_query_pb -from pyinjective.proto.cosmos.base.tendermint.v1beta1 import query_pb2 as tendermint_query -from pyinjective.proto.cosmos.tx.v1beta1 import service_pb2 as tx_service -from pyinjective.proto.exchange import ( - injective_accounts_rpc_pb2 as exchange_accounts_pb, - injective_auction_rpc_pb2 as exchange_auction_pb, - injective_derivative_exchange_rpc_pb2 as exchange_derivative_pb, - injective_explorer_rpc_pb2 as exchange_explorer_pb, - injective_insurance_rpc_pb2 as exchange_insurance_pb, - injective_meta_rpc_pb2 as exchange_meta_pb, - injective_oracle_rpc_pb2 as exchange_oracle_pb, - injective_portfolio_rpc_pb2 as exchange_portfolio_pb, - injective_spot_exchange_rpc_pb2 as exchange_spot_pb, -) -from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_pb -from pyinjective.proto.injective.types.v1beta1 import account_pb2 as account_pb -from tests.client.chain.grpc.configurable_auth_query_servicer import ConfigurableAuthQueryServicer -from tests.client.chain.grpc.configurable_authz_query_servicer import ConfigurableAuthZQueryServicer -from tests.client.chain.grpc.configurable_bank_query_servicer import ConfigurableBankQueryServicer -from tests.client.chain.stream_grpc.configurable_chain_stream_query_servicer import ConfigurableChainStreamQueryServicer -from tests.client.indexer.configurable_account_query_servicer import ConfigurableAccountQueryServicer -from tests.client.indexer.configurable_auction_query_servicer import ConfigurableAuctionQueryServicer -from tests.client.indexer.configurable_derivative_query_servicer import ConfigurableDerivativeQueryServicer -from tests.client.indexer.configurable_explorer_query_servicer import ConfigurableExplorerQueryServicer -from tests.client.indexer.configurable_insurance_query_servicer import ConfigurableInsuranceQueryServicer -from tests.client.indexer.configurable_meta_query_servicer import ConfigurableMetaQueryServicer -from tests.client.indexer.configurable_oracle_query_servicer import ConfigurableOracleQueryServicer -from tests.client.indexer.configurable_portfolio_query_servicer import ConfigurablePortfolioQueryServicer -from tests.client.indexer.configurable_spot_query_servicer import ConfigurableSpotQueryServicer -from tests.core.tendermint.grpc.configurable_tendermint_query_servicer import ConfigurableTendermintQueryServicer -from tests.core.tx.grpc.configurable_tx_query_servicer import ConfigurableTxQueryServicer - - -@pytest.fixture -def account_servicer(): - return ConfigurableAccountQueryServicer() - - -@pytest.fixture -def auction_servicer(): - return ConfigurableAuctionQueryServicer() - - -@pytest.fixture -def auth_servicer(): - return ConfigurableAuthQueryServicer() - - -@pytest.fixture -def authz_servicer(): - return ConfigurableAuthZQueryServicer() - - -@pytest.fixture -def bank_servicer(): - return ConfigurableBankQueryServicer() - - -@pytest.fixture -def chain_stream_servicer(): - return ConfigurableChainStreamQueryServicer() - - -@pytest.fixture -def derivative_servicer(): - return ConfigurableDerivativeQueryServicer() - - -@pytest.fixture -def explorer_servicer(): - return ConfigurableExplorerQueryServicer() - - -@pytest.fixture -def insurance_servicer(): - return ConfigurableInsuranceQueryServicer() - - -@pytest.fixture -def meta_servicer(): - return ConfigurableMetaQueryServicer() - - -@pytest.fixture -def oracle_servicer(): - return ConfigurableOracleQueryServicer() - - -@pytest.fixture -def portfolio_servicer(): - return ConfigurablePortfolioQueryServicer() - - -@pytest.fixture -def spot_servicer(): - return ConfigurableSpotQueryServicer() - - -@pytest.fixture -def tx_servicer(): - return ConfigurableTxQueryServicer() - - -@pytest.fixture -def tendermint_servicer(): - return ConfigurableTendermintQueryServicer() - - -class TestAsyncClientDeprecationWarnings: - def test_insecure_parameter_deprecation_warning( - self, - auth_servicer, - ): - with catch_warnings(record=True) as all_warnings: - AsyncClient( - network=Network.local(), - insecure=False, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "insecure parameter in AsyncClient is no longer used and will be deprecated" - ) - - @pytest.mark.asyncio - async def test_get_account_deprecation_warning( - self, - auth_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubAuth = auth_servicer - auth_servicer.account_responses.append(account_pb.EthAccount()) - - with catch_warnings(record=True) as all_warnings: - await client.get_account(address="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_account instead" - - @pytest.mark.asyncio - async def test_get_bank_balance_deprecation_warning( - self, - bank_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubBank = bank_servicer - bank_servicer.balance_responses.append(bank_query_pb.QueryBalanceResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_bank_balance(address="", denom="inj") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_bank_balance instead" - - @pytest.mark.asyncio - async def test_get_bank_balances_deprecation_warning( - self, - bank_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubBank = bank_servicer - bank_servicer.balances_responses.append(bank_query_pb.QueryAllBalancesResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_bank_balances(address="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_bank_balances instead" - - @pytest.mark.asyncio - async def test_get_order_states_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.order_states_responses.append(exchange_accounts_pb.OrderStatesResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_order_states(spot_order_hashes=["hash1"], derivative_order_hashes=["hash2"]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_order_states instead" - - @pytest.mark.asyncio - async def test_get_subaccount_list_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.subaccounts_list_responses.append(exchange_accounts_pb.SubaccountsListResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_subaccount_list(account_address="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_subaccounts_list instead" - - @pytest.mark.asyncio - async def test_get_subaccount_balances_list_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.subaccount_balances_list_responses.append( - exchange_accounts_pb.SubaccountBalancesListResponse() - ) - - with catch_warnings(record=True) as all_warnings: - await client.get_subaccount_balances_list(subaccount_id="", denoms=[]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_subaccount_balances_list instead" - ) - - @pytest.mark.asyncio - async def test_get_subaccount_balance_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.subaccount_balance_responses.append(exchange_accounts_pb.SubaccountBalanceEndpointResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_subaccount_balance(subaccount_id="", denom="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_subaccount_balance instead" - - @pytest.mark.asyncio - async def test_get_subaccount_history_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.subaccount_history_responses.append(exchange_accounts_pb.SubaccountHistoryResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_subaccount_history(subaccount_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_subaccount_history instead" - - @pytest.mark.asyncio - async def test_get_subaccount_order_summary_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.subaccount_order_summary_responses.append( - exchange_accounts_pb.SubaccountOrderSummaryResponse() - ) - - with catch_warnings(record=True) as all_warnings: - await client.get_subaccount_order_summary(subaccount_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_subaccount_order_summary instead" - ) - - @pytest.mark.asyncio - async def test_get_portfolio_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.portfolio_responses.append(exchange_accounts_pb.PortfolioResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_portfolio(account_address="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_portfolio instead" - - @pytest.mark.asyncio - async def test_get_rewards_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.rewards_responses.append(exchange_accounts_pb.RewardsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_rewards(account_address="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_rewards instead" - - @pytest.mark.asyncio - async def test_stream_subaccount_balance_deprecation_warning( - self, - account_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - account_servicer.stream_subaccount_balance_responses.append( - exchange_accounts_pb.StreamSubaccountBalanceResponse() - ) - - with catch_warnings(record=True) as all_warnings: - await client.stream_subaccount_balance(subaccount_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_subaccount_balance_updates instead" - ) - - @pytest.mark.asyncio - async def test_get_grants_deprecation_warning( - self, - authz_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubAuthz = authz_servicer - authz_servicer.grants_responses.append(authz_query.QueryGrantsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_grants(granter="granter", grantee="grantee") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_grants instead" - - @pytest.mark.asyncio - async def test_simulate_deprecation_warning( - self, - tx_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubTx = tx_servicer - tx_servicer.simulate_responses.append(tx_service.SimulateResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.simulate_tx(tx_byte="".encode()) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use simulate instead" - - @pytest.mark.asyncio - async def test_get_tx_deprecation_warning( - self, - tx_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubTx = tx_servicer - tx_servicer.get_tx_responses.append(tx_service.GetTxResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_tx(tx_hash="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_tx instead" - - @pytest.mark.asyncio - async def test_send_tx_sync_mode_deprecation_warning( - self, - tx_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubTx = tx_servicer - tx_servicer.broadcast_responses.append(tx_service.BroadcastTxResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.send_tx_sync_mode(tx_byte="".encode()) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use broadcast_tx_sync_mode instead" - - @pytest.mark.asyncio - async def test_send_tx_async_mode_deprecation_warning( - self, - tx_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubTx = tx_servicer - tx_servicer.broadcast_responses.append(tx_service.BroadcastTxResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.send_tx_async_mode(tx_byte="".encode()) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use broadcast_tx_async_mode instead" - - @pytest.mark.asyncio - async def test_send_tx_block_mode_deprecation_warning( - self, - tx_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubTx = tx_servicer - tx_servicer.broadcast_responses.append(tx_service.BroadcastTxResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.send_tx_block_mode(tx_byte="".encode()) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. BLOCK broadcast mode should not be used" - ) - - @pytest.mark.asyncio - async def test_ping_deprecation_warning( - self, - meta_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubMeta = meta_servicer - meta_servicer.ping_responses.append(exchange_meta_pb.PingResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.ping() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_ping instead" - - @pytest.mark.asyncio - async def test_version_deprecation_warning( - self, - meta_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubMeta = meta_servicer - meta_servicer.version_responses.append(exchange_meta_pb.VersionResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.version() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_version instead" - - @pytest.mark.asyncio - async def test_info_deprecation_warning( - self, - meta_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubMeta = meta_servicer - meta_servicer.info_responses.append(exchange_meta_pb.InfoResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.info() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_info instead" - - @pytest.mark.asyncio - async def test_stream_keepalive_deprecation_warning( - self, - meta_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExchangeAccount = account_servicer - meta_servicer.stream_keepalive_responses.append(exchange_meta_pb.StreamKeepaliveResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_keepalive() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use listen_keepalive instead" - - @pytest.mark.asyncio - async def test_get_oracle_list_deprecation_warning( - self, - oracle_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubOracle = oracle_servicer - oracle_servicer.oracle_list_responses.append(exchange_oracle_pb.OracleListResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_oracle_list() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_oracle_list instead" - - @pytest.mark.asyncio - async def test_get_oracle_prices_deprecation_warning( - self, - oracle_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubOracle = oracle_servicer - oracle_servicer.price_responses.append(exchange_oracle_pb.PriceResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_oracle_prices( - base_symbol="Gold", - quote_symbol="USDT", - oracle_type="pricefeed", - oracle_scale_factor=6, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_oracle_price instead" - - @pytest.mark.asyncio - async def test_stream_oracle_prices_deprecation_warning( - self, - oracle_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubOracle = oracle_servicer - oracle_servicer.stream_prices_responses.append(exchange_oracle_pb.StreamPricesResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_oracle_prices( - base_symbol="Gold", - quote_symbol="USDT", - oracle_type="pricefeed", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_oracle_prices_updates instead" - ) - - @pytest.mark.asyncio - async def test_get_insurance_funds_deprecation_warning( - self, - insurance_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubInsurance = insurance_servicer - insurance_servicer.funds_responses.append(exchange_insurance_pb.FundsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_insurance_funds() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_insurance_funds instead" - - @pytest.mark.asyncio - async def test_get_redemptions_deprecation_warning( - self, - insurance_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubInsurance = insurance_servicer - insurance_servicer.redemptions_responses.append(exchange_insurance_pb.RedemptionsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_redemptions() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_redemptions instead" - - @pytest.mark.asyncio - async def test_get_auction_deprecation_warning( - self, - auction_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubAuction = auction_servicer - auction_servicer.auction_endpoint_responses.append(exchange_auction_pb.AuctionEndpointResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_auction(bid_round=1) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_auction instead" - - @pytest.mark.asyncio - async def test_get_auctions_deprecation_warning( - self, - auction_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubAuction = auction_servicer - auction_servicer.auctions_responses.append(exchange_auction_pb.AuctionsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_auctions() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_auctions instead" - - @pytest.mark.asyncio - async def test_stream_bids_deprecation_warning( - self, - auction_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubAuction = auction_servicer - auction_servicer.stream_bids_responses.append(exchange_auction_pb.StreamBidsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_bids() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use listen_bids_updates instead" - - @pytest.mark.asyncio - async def test_get_spot_markets_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.markets_responses.append(exchange_spot_pb.MarketsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_spot_markets() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_spot_markets instead" - - @pytest.mark.asyncio - async def test_get_spot_market_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.market_responses.append(exchange_spot_pb.MarketResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_spot_market(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_spot_market instead" - - @pytest.mark.asyncio - async def test_get_spot_orderbookV2_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.orderbook_v2_responses.append(exchange_spot_pb.OrderbookV2Response()) - - with catch_warnings(record=True) as all_warnings: - await client.get_spot_orderbookV2(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_spot_orderbook_v2 instead" - - @pytest.mark.asyncio - async def test_get_spot_orderbooksV2_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.orderbooks_v2_responses.append(exchange_spot_pb.OrderbooksV2Response()) - - with catch_warnings(record=True) as all_warnings: - await client.get_spot_orderbooksV2(market_ids=[]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_spot_orderbooks_v2 instead" - - @pytest.mark.asyncio - async def test_get_spot_orders_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.orders_responses.append(exchange_spot_pb.OrdersResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_spot_orders(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_spot_orders instead" - - @pytest.mark.asyncio - async def test_get_spot_trades_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.trades_responses.append(exchange_spot_pb.TradesResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_spot_trades() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_spot_trades instead" - - @pytest.mark.asyncio - async def test_get_spot_subaccount_orders_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.subaccount_orders_list_responses.append(exchange_spot_pb.SubaccountOrdersListResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_spot_subaccount_orders(subaccount_id="", market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_spot_subaccount_orders_list instead" - ) - - @pytest.mark.asyncio - async def test_get_spot_subaccount_trades_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.subaccount_trades_list_responses.append(exchange_spot_pb.SubaccountTradesListResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_spot_subaccount_trades(subaccount_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_spot_subaccount_trades_list instead" - ) - - @pytest.mark.asyncio - async def test_get_historical_spot_orders_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.orders_history_responses.append(exchange_spot_pb.SubaccountTradesListResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_historical_spot_orders() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_spot_orders_history instead" - ) - - @pytest.mark.asyncio - async def test_stream_spot_markets_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.stream_markets_responses.append(exchange_spot_pb.StreamMarketsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_spot_markets() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use listen_spot_markets_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_spot_orderbook_snapshot_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.stream_orderbook_v2_responses.append(exchange_spot_pb.StreamOrderbookV2Response()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_spot_orderbook_snapshot(market_ids=[]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_spot_orderbook_snapshots instead" - ) - - @pytest.mark.asyncio - async def test_stream_spot_orderbook_update_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.stream_orderbook_update_responses.append(exchange_spot_pb.StreamOrderbookUpdateRequest()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_spot_orderbook_update(market_ids=[]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_spot_orderbook_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_spot_orders_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.stream_orders_responses.append(exchange_spot_pb.StreamOrdersRequest()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_spot_orders(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use listen_spot_orders_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_spot_trades_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.stream_orders_responses.append(exchange_spot_pb.StreamTradesResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_spot_trades() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use listen_spot_trades_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_historical_spot_orders_deprecation_warning( - self, - spot_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - spot_servicer.stream_orders_history_responses.append(exchange_spot_pb.StreamOrdersHistoryRequest()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_historical_spot_orders(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_spot_orders_history_updates instead" - ) - - @pytest.mark.asyncio - async def test_get_derivative_markets_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.markets_responses.append(exchange_derivative_pb.MarketsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_markets() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_derivative_markets instead" - - @pytest.mark.asyncio - async def test_get_derivative_market_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.market_responses.append(exchange_derivative_pb.MarketResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_market(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_derivative_market instead" - - @pytest.mark.asyncio - async def test_get_binary_options_markets_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.binary_options_markets_responses.append( - exchange_derivative_pb.BinaryOptionsMarketsResponse() - ) - - with catch_warnings(record=True) as all_warnings: - await client.get_binary_options_markets() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_binary_options_markets instead" - ) - - @pytest.mark.asyncio - async def test_get_binary_options_market_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.binary_options_market_responses.append(exchange_derivative_pb.BinaryOptionsMarketResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_binary_options_market(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_binary_options_market instead" - ) - - @pytest.mark.asyncio - async def test_get_derivative_orderbook_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.orderbook_v2_responses.append(exchange_derivative_pb.OrderbookV2Request()) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_orderbook(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_derivative_orderbook_v2 instead" - ) - - @pytest.mark.asyncio - async def test_get_derivative_orderbooksV2_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.orderbooks_v2_responses.append(exchange_derivative_pb.OrderbooksV2Request()) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_orderbooksV2(market_ids=[]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_derivative_orderbooks_v2 instead" - ) - - @pytest.mark.asyncio - async def test_get_derivative_orders_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.orders_responses.append(exchange_derivative_pb.OrdersResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_orders(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_derivative_orders instead" - - @pytest.mark.asyncio - async def test_get_derivative_positions_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.positions_responses.append(exchange_derivative_pb.PositionsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_positions() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_derivative_positions_v2 instead" - ) - - @pytest.mark.asyncio - async def test_get_derivative_liquidable_positions_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.liquidable_positions_responses.append(exchange_derivative_pb.LiquidablePositionsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_liquidable_positions() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_derivative_liquidable_positions instead" - ) - - @pytest.mark.asyncio - async def test_get_funding_payments_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.funding_payments_responses.append(exchange_derivative_pb.FundingPaymentsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_funding_payments(subaccount_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_funding_payments instead" - - @pytest.mark.asyncio - async def test_get_funding_rates_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.funding_rates_responses.append(exchange_derivative_pb.FundingRatesResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_funding_rates(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_funding_rates instead" - - @pytest.mark.asyncio - async def test_get_derivative_trades_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.trades_responses.append(exchange_derivative_pb.TradesResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_trades() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_derivative_trades instead" - - @pytest.mark.asyncio - async def test_get_derivative_subaccount_orders_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.subaccount_orders_list_responses.append( - exchange_derivative_pb.SubaccountOrdersListResponse() - ) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_subaccount_orders(subaccount_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_derivative_subaccount_orders instead" - ) - - @pytest.mark.asyncio - async def test_get_derivative_subaccount_trades_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.subaccount_trades_list_responses.append( - exchange_derivative_pb.SubaccountTradesListResponse() - ) - - with catch_warnings(record=True) as all_warnings: - await client.get_derivative_subaccount_trades(subaccount_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_derivative_subaccount_trades instead" - ) - - @pytest.mark.asyncio - async def test_get_historical_derivative_orders_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.orders_history_responses.append(exchange_derivative_pb.OrdersHistoryResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_historical_derivative_orders() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_derivative_orders_history instead" - ) - - @pytest.mark.asyncio - async def test_stream_derivative_markets_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.stream_market_responses.append(exchange_derivative_pb.StreamMarketResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_derivative_markets() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_derivative_market_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_derivative_orderbook_snapshot_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = spot_servicer - derivative_servicer.stream_orderbook_v2_responses.append(exchange_derivative_pb.StreamOrderbookV2Response()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_derivative_orderbook_snapshot(market_ids=[]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_derivative_orderbook_snapshots instead" - ) - - @pytest.mark.asyncio - async def test_stream_derivative_orderbook_update_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.stream_orderbook_update_responses.append( - exchange_derivative_pb.StreamOrderbookUpdateRequest() - ) - - with catch_warnings(record=True) as all_warnings: - await client.stream_derivative_orderbook_update(market_ids=[]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_derivative_orderbook_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_derivative_positions_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubDerivativeExchange = derivative_servicer - derivative_servicer.stream_positions_responses.append(exchange_derivative_pb.StreamPositionsRequest()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_derivative_positions() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_derivative_positions_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_derivative_orders_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = derivative_servicer - derivative_servicer.stream_orders_responses.append(exchange_derivative_pb.StreamOrdersRequest()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_derivative_orders(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_derivative_orders_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_derivative_trades_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = derivative_servicer - derivative_servicer.stream_orders_responses.append(exchange_derivative_pb.StreamTradesResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_derivative_trades() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_derivative_trades_updates instead" - ) - - @pytest.mark.asyncio - async def test_stream_historical_derivative_orders_deprecation_warning( - self, - derivative_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubSpotExchange = derivative_servicer - derivative_servicer.stream_orders_history_responses.append(exchange_spot_pb.StreamOrdersHistoryRequest()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_historical_derivative_orders(market_id="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_derivative_orders_history_updates instead" - ) - - @pytest.mark.asyncio - async def test_get_account_portfolio_deprecation_warning( - self, - portfolio_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubPortfolio = portfolio_servicer - portfolio_servicer.account_portfolio_responses.append(exchange_portfolio_pb.AccountPortfolioResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_account_portfolio(account_address="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use fetch_account_portfolio_balances instead" - ) - - @pytest.mark.asyncio - async def test_stream_account_portfolio_deprecation_warning( - self, - portfolio_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubPortfolio = portfolio_servicer - portfolio_servicer.stream_account_portfolio_responses.append( - exchange_portfolio_pb.StreamAccountPortfolioResponse() - ) - - with catch_warnings(record=True) as all_warnings: - await client.stream_account_portfolio(account_address="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use listen_account_portfolio_updates instead" - ) - - @pytest.mark.asyncio - async def test_get_account_txs_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExplorer = explorer_servicer - explorer_servicer.account_txs_responses.append(exchange_explorer_pb.GetAccountTxsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_account_txs(address="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_account_txs instead" - - @pytest.mark.asyncio - async def test_get_blocks_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExplorer = explorer_servicer - explorer_servicer.blocks_responses.append(exchange_explorer_pb.GetBlocksResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_blocks() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_blocks instead" - - @pytest.mark.asyncio - async def test_get_block_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExplorer = explorer_servicer - explorer_servicer.block_responses.append(exchange_explorer_pb.GetBlockResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_block(block_height="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_block instead" - - @pytest.mark.asyncio - async def test_get_txs_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExplorer = explorer_servicer - explorer_servicer.txs_responses.append(exchange_explorer_pb.GetTxsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_txs() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_txs instead" - - @pytest.mark.asyncio - async def test_get_tx_by_hash_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExplorer = explorer_servicer - explorer_servicer.tx_by_tx_hash_responses.append(exchange_explorer_pb.GetTxByTxHashResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_tx_by_hash(tx_hash="") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_tx_by_tx_hash instead" - - @pytest.mark.asyncio - async def test_get_peggy_deposits_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExplorer = explorer_servicer - explorer_servicer.peggy_deposit_txs_responses.append(exchange_explorer_pb.GetPeggyDepositTxsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_peggy_deposits() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_peggy_deposit_txs instead" - - @pytest.mark.asyncio - async def test_get_peggy_withdrawals_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExplorer = explorer_servicer - explorer_servicer.peggy_withdrawal_txs_responses.append(exchange_explorer_pb.GetPeggyWithdrawalTxsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_peggy_withdrawals() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_peggy_withdrawal_txs instead" - ) - - @pytest.mark.asyncio - async def test_get_ibc_transfers_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubExplorer = explorer_servicer - explorer_servicer.ibc_transfer_txs_responses.append(exchange_explorer_pb.GetIBCTransferTxsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_ibc_transfers() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_ibc_transfer_txs instead" - - @pytest.mark.asyncio - async def test_stream_txs_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubPortfolio = explorer_servicer - explorer_servicer.stream_txs_responses.append(exchange_explorer_pb.StreamTxsResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_txs() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use listen_txs_updates instead" - - @pytest.mark.asyncio - async def test_stream_blocks_deprecation_warning( - self, - explorer_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubPortfolio = explorer_servicer - explorer_servicer.stream_blocks_responses.append(exchange_explorer_pb.StreamBlocksResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.stream_blocks() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use listen_blocks_updates instead" - - @pytest.mark.asyncio - async def test_chain_stream_deprecation_warning( - self, - chain_stream_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.chain_stream_stub = chain_stream_servicer - chain_stream_servicer.stream_responses.append(chain_stream_pb.StreamRequest()) - - with catch_warnings(record=True) as all_warnings: - await client.chain_stream() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use listen_chain_stream_updates instead" - ) - - @pytest.mark.asyncio - async def test_get_latest_block_deprecation_warning( - self, - tendermint_servicer, - ): - client = AsyncClient( - network=Network.local(), - ) - client.stubCosmosTendermint = tendermint_servicer - tendermint_servicer.get_latest_block_responses.append(tendermint_query.GetLatestBlockResponse()) - - with catch_warnings(record=True) as all_warnings: - await client.get_latest_block() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_latest_block instead" - - def test_credentials_parameter_deprecation_warning( - self, - auth_servicer, - ): - with catch_warnings(record=True) as all_warnings: - AsyncClient(network=Network.local(), credentials=grpc.ssl_channel_credentials()) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "credentials parameter in AsyncClient is no longer used and will be deprecated" - ) diff --git a/tests/test_composer_deprecation_warnings.py b/tests/test_composer_deprecation_warnings.py deleted file mode 100644 index a2891299..00000000 --- a/tests/test_composer_deprecation_warnings.py +++ /dev/null @@ -1,551 +0,0 @@ -import warnings -from decimal import Decimal - -import pytest - -from pyinjective.composer import Composer -from pyinjective.core.network import Network -from tests.model_fixtures.markets_fixtures import btc_usdt_perp_market # noqa: F401 -from tests.model_fixtures.markets_fixtures import first_match_bet_market # noqa: F401 -from tests.model_fixtures.markets_fixtures import inj_token # noqa: F401 -from tests.model_fixtures.markets_fixtures import inj_usdt_spot_market # noqa: F401 -from tests.model_fixtures.markets_fixtures import usdt_perp_token # noqa: F401 -from tests.model_fixtures.markets_fixtures import usdt_token # noqa: F401 - - -class TestComposerDeprecationWarnings: - @pytest.fixture - def basic_composer(self, inj_usdt_spot_market, btc_usdt_perp_market, first_match_bet_market): - composer = Composer( - network=Network.devnet().string(), - spot_markets={inj_usdt_spot_market.id: inj_usdt_spot_market}, - derivative_markets={btc_usdt_perp_market.id: btc_usdt_perp_market}, - binary_option_markets={first_match_bet_market.id: first_match_bet_market}, - tokens={ - inj_usdt_spot_market.base_token.symbol: inj_usdt_spot_market.base_token, - inj_usdt_spot_market.quote_token.symbol: inj_usdt_spot_market.quote_token, - btc_usdt_perp_market.quote_token.symbol: btc_usdt_perp_market.quote_token, - }, - ) - - return composer - - def test_msg_deposit_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgDeposit(sender="sender", subaccount_id="subaccount id", amount=1, denom="INJ") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_deposit instead" - - def test_msg_withdraw_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgWithdraw(sender="sender", subaccount_id="subaccount id", amount=1, denom="USDT") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_withdraw instead" - - def test_coin_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.Coin( - amount=1, - denom="INJ", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use coin instead" - - def test_order_data_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.OrderData( - market_id="market id", - subaccount_id="subaccount id", - order_hash="order hash", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use order_data instead" - - def test_spot_order_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.SpotOrder( - market_id="0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=1, - quantity=1, - is_buy=True, - cid="cid", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use spot_order instead" - - def test_derivative_order_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.DerivativeOrder( - market_id="0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=1, - quantity=1, - is_buy=True, - cid="cid", - leverage=1, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use derivative_order instead" - - def test_msg_create_spot_limit_order_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgCreateSpotLimitOrder( - market_id="0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0", - sender="sender", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=1, - quantity=1, - cid="cid", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_create_spot_limit_order instead" - ) - - def test_msg_batch_create_spot_limit_orders_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - order = composer.spot_order( - market_id="0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=Decimal(1), - quantity=Decimal(1), - order_type="BUY", - ) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgBatchCreateSpotLimitOrders( - sender="sender", - orders=[order], - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_batch_create_spot_limit_orders instead" - ) - - def test_msg_create_spot_market_order_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgCreateSpotMarketOrder( - market_id="0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0", - sender="sender", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=1, - quantity=1, - is_buy=True, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_create_spot_market_order instead" - ) - - def test_msg_cancel_spot_order_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgCancelSpotOrder( - market_id="0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0", - sender="sender", - subaccount_id="subaccount id", - order_hash="order hash", - cid="cid", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_cancel_spot_order instead" - - def test_msg_batch_cancel_spot_orders_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - orders = [ - composer.order_data( - market_id="0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0", - subaccount_id="subaccount_id", - order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", - ), - ] - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgBatchCancelSpotOrders(sender="sender", data=orders) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_batch_cancel_spot_orders instead" - ) - - def test_msg_batch_update_orders_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgBatchUpdateOrders(sender="sender") - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_batch_update_orders instead" - - def test_msg_privileged_execute_contract_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgPrivilegedExecuteContract( - sender="sender", - contract="contract", - msg="msg", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_privileged_execute_contract instead" - ) - - def test_msg_create_derivative_limit_order_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgCreateDerivativeLimitOrder( - market_id="0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4", - sender="sender", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=1, - quantity=1, - cid="cid", - leverage=1, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_create_derivative_limit_order instead" - ) - - def test_msg_batch_create_derivative_limit_orders_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - order = composer.derivative_order( - market_id="0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=Decimal(1), - quantity=Decimal(1), - margin=Decimal(1), - order_type="BUY", - ) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgBatchCreateDerivativeLimitOrders( - sender="sender", - orders=[order], - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_batch_create_derivative_limit_orders instead" - ) - - def test_msg_create_derivative_market_order_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgCreateDerivativeMarketOrder( - market_id="0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4", - sender="sender", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=1, - quantity=1, - cid="cid", - leverage=1, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_create_derivative_market_order instead" - ) - - def test_msg_cancel_derivative_order_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgCancelDerivativeOrder( - market_id="0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4", - sender="sender", - subaccount_id="subaccount id", - order_hash="order hash", - cid="cid", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_cancel_derivative_order instead" - ) - - def test_msg_batch_cancel_derivative_orders_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - orders = [ - composer.order_data( - market_id="0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4", - subaccount_id="subaccount_id", - order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", - ), - ] - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgBatchCancelDerivativeOrders(sender="sender", data=orders) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_batch_cancel_derivative_orders instead" - ) - - def test_msg_instant_binary_options_market_launch_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgInstantBinaryOptionsMarketLaunch( - sender="sender", - ticker="B2400/INJ", - oracle_symbol="B2400/INJ", - oracle_provider="injective", - oracle_type="Band", - oracle_scale_factor=6, - maker_fee_rate=0.001, - taker_fee_rate=0.001, - expiration_timestamp=1630000000, - settlement_timestamp=1630000000, - quote_denom="inj", - quote_decimals=18, - min_price_tick_size=0.01, - min_quantity_tick_size=0.01, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_instant_binary_options_market_launch instead" - ) - - def test_msg_create_binary_options_limit_order_deprecation_warning(self, basic_composer): - market = list(basic_composer.binary_option_markets.values())[0] - - with warnings.catch_warnings(record=True) as all_warnings: - basic_composer.MsgCreateBinaryOptionsLimitOrder( - market_id=market.id, - sender="sender", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=1, - quantity=1, - cid="cid", - is_buy=True, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_create_binary_options_limit_order instead" - ) - - def test_msg_create_binary_options_market_order_deprecation_warning(self, basic_composer): - market = list(basic_composer.binary_option_markets.values())[0] - - with warnings.catch_warnings(record=True) as all_warnings: - basic_composer.MsgCreateBinaryOptionsMarketOrder( - market_id=market.id, - sender="sender", - subaccount_id="subaccount id", - fee_recipient="fee recipient", - price=1, - quantity=1, - cid="cid", - is_buy=True, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_create_binary_options_market_order instead" - ) - - def test_msg_cancel_binary_options_order_deprecation_warning(self, basic_composer): - market = list(basic_composer.binary_option_markets.values())[0] - - with warnings.catch_warnings(record=True) as all_warnings: - basic_composer.MsgCancelBinaryOptionsOrder( - market_id=market.id, - sender="sender", - subaccount_id="subaccount id", - order_hash="order hash", - cid="cid", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_cancel_binary_options_order instead" - ) - - def test_msg_subaccount_transfer_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgSubaccountTransfer( - sender="sender", - source_subaccount_id="source subaccount id", - destination_subaccount_id="destination subaccount id", - amount=1, - denom="INJ", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_subaccount_transfer instead" - - def test_msg_external_transfer_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgExternalTransfer( - sender="sender", - source_subaccount_id="source subaccount id", - destination_subaccount_id="destination subaccount id", - amount=1, - denom="INJ", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_external_transfer instead" - - def test_msg_liquidate_position_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgLiquidatePosition( - sender="sender", - subaccount_id="subaccount id", - market_id="0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_liquidate_position instead" - - def test_msg_increase_position_margin_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgIncreasePositionMargin( - sender="sender", - source_subaccount_id="source_subaccount id", - destination_subaccount_id="destination_subaccount id", - market_id="0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4", - amount=1, - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_increase_position_margin instead" - ) - - def test_msg_rewards_opt_out_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgRewardsOptOut( - sender="sender", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_rewards_opt_out instead" - - def test_msg_admin_update_binary_options_market_deprecation_warning(self, basic_composer): - market = list(basic_composer.binary_option_markets.values())[0] - - with warnings.catch_warnings(record=True) as all_warnings: - basic_composer.MsgAdminUpdateBinaryOptionsMarket( - sender="sender", - market_id=market.id, - status="Paused", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_admin_update_binary_options_market instead" - ) - - def test_msg_withdraw_delegator_reward_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.MsgWithdrawDelegatorReward( - delegator_address="delegator address", - validator_address="validator address", - ) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use msg_withdraw_delegator_reward instead" - ) From efc9ec6f71c0caf49d5f5b81a26281cdc925be17 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Thu, 17 Oct 2024 16:45:59 -0300 Subject: [PATCH 2/7] (feat) Updated proto definitions with exchange V2 from chain core. Fixed all failing tests --- buf.gen.yaml | 12 +- .../exchange/3_MsgInstantSpotMarketLaunch.py | 2 + pyinjective/composer.py | 4 + pyinjective/ofac.json | 124 +- pyinjective/proto/cosmwasm/wasm/v1/ibc_pb2.py | 8 +- .../proto/cosmwasm/wasm/v1/query_pb2.py | 131 +- .../injective/auction/v1beta1/auction_pb2.py | 26 +- .../injective/auction/v1beta1/query_pb2.py | 2 +- .../exchange/v1beta1/exchange_pb2.py | 216 +- .../exchange/v1beta1/proposal_pb2.py | 88 +- .../injective/exchange/v1beta1/query_pb2.py | 64 +- .../exchange/v1beta1/query_pb2_grpc.py | 86 + .../injective/exchange/v1beta1/tx_pb2.py | 314 +- .../proto/injective/exchange/v2/authz_pb2.py | 71 + .../injective/exchange/v2/authz_pb2_grpc.py | 4 + .../proto/injective/exchange/v2/events_pb2.py | 159 + .../injective/exchange/v2/events_pb2_grpc.py | 4 + .../injective/exchange/v2/exchange_pb2.py | 225 ++ .../exchange/v2/exchange_pb2_grpc.py | 4 + .../injective/exchange/v2/genesis_pb2.py | 82 + .../injective/exchange/v2/genesis_pb2_grpc.py | 4 + .../proto/injective/exchange/v2/market_pb2.py | 123 + .../injective/exchange/v2/market_pb2_grpc.py | 4 + .../proto/injective/exchange/v2/order_pb2.py | 126 + .../injective/exchange/v2/order_pb2_grpc.py | 4 + .../injective/exchange/v2/orderbook_pb2.py | 45 + .../exchange/v2/orderbook_pb2_grpc.py | 4 + .../injective/exchange/v2/proposal_pb2.py | 222 ++ .../exchange/v2/proposal_pb2_grpc.py | 4 + .../proto/injective/exchange/v2/query_pb2.py | 568 ++++ .../injective/exchange/v2/query_pb2_grpc.py | 2767 +++++++++++++++++ .../proto/injective/exchange/v2/tx_pb2.py | 441 +++ .../injective/exchange/v2/tx_pb2_grpc.py | 1595 ++++++++++ .../chain/grpc/test_chain_grpc_auction_api.py | 36 +- .../grpc/test_chain_grpc_exchange_api.py | 22 + tests/test_composer.py | 6 + 36 files changed, 7163 insertions(+), 434 deletions(-) create mode 100644 pyinjective/proto/injective/exchange/v2/authz_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/authz_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/events_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/events_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/exchange_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/exchange_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/genesis_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/genesis_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/market_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/market_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/order_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/order_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/orderbook_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/orderbook_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/proposal_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/proposal_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/query_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/query_pb2_grpc.py create mode 100644 pyinjective/proto/injective/exchange/v2/tx_pb2.py create mode 100644 pyinjective/proto/injective/exchange/v2/tx_pb2_grpc.py diff --git a/buf.gen.yaml b/buf.gen.yaml index 1cb56c02..1fe323f2 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -12,18 +12,18 @@ inputs: - module: buf.build/googleapis/googleapis - module: buf.build/cosmos/ics23 - git_repo: https://github.com/InjectiveLabs/cosmos-sdk - tag: v0.50.8-inj-0 + tag: v0.50.9-inj-2 - git_repo: https://github.com/InjectiveLabs/ibc-go tag: v8.3.2-inj-0 - git_repo: https://github.com/InjectiveLabs/wasmd - tag: v0.51.0-inj-0 + tag: v0.52.0-inj-0 # - git_repo: https://github.com/InjectiveLabs/wasmd # branch: v0.51.x-inj # subdir: proto - - git_repo: https://github.com/InjectiveLabs/injective-core - tag: v1.13.0 - subdir: proto # - git_repo: https://github.com/InjectiveLabs/injective-core -# branch: master +# tag: v1.13.0 # subdir: proto + - git_repo: https://github.com/InjectiveLabs/injective-core + branch: feat/add_derivative_v2_upgrade_handler_logic + subdir: proto - directory: proto diff --git a/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py b/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py index fe7c5ad4..53459eeb 100644 --- a/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py +++ b/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py @@ -43,6 +43,8 @@ async def main() -> None: min_price_tick_size=Decimal("0.001"), min_quantity_tick_size=Decimal("0.01"), min_notional=Decimal("1"), + base_decimals=18, + quote_decimals=6, ) # broadcast the transaction diff --git a/pyinjective/composer.py b/pyinjective/composer.py index 5605e7af..9bdcaf5a 100644 --- a/pyinjective/composer.py +++ b/pyinjective/composer.py @@ -403,6 +403,8 @@ def msg_instant_spot_market_launch( min_price_tick_size: Decimal, min_quantity_tick_size: Decimal, min_notional: Decimal, + base_decimals: int, + quote_decimals: int, ) -> injective_exchange_tx_pb.MsgInstantSpotMarketLaunch: base_token = self.tokens[base_denom] quote_token = self.tokens[quote_denom] @@ -425,6 +427,8 @@ def msg_instant_spot_market_launch( min_price_tick_size=f"{chain_min_price_tick_size.normalize():f}", min_quantity_tick_size=f"{chain_min_quantity_tick_size.normalize():f}", min_notional=f"{chain_min_notional.normalize():f}", + base_decimals=base_decimals, + quote_decimals=quote_decimals, ) def msg_instant_perpetual_market_launch( diff --git a/pyinjective/ofac.json b/pyinjective/ofac.json index 59b4160e..553224bd 100644 --- a/pyinjective/ofac.json +++ b/pyinjective/ofac.json @@ -1,48 +1,158 @@ [ + "0x01e2919679362dfbc9ee1644ba9c6da6d6245bb1", + "0x03893a7c7463ae47d46bc7f091665f1893656003", + "0x04dba1194ee10112fe6c3207c0687def0e78bacf", + "0x05e0b5b40b7b66098c2161a5ee11c5740a3a7c45", + "0x07687e702b410fa43f4cb4af7fa097918ffd2730", + "0x0836222f2b2b24a3f36f98668ed8f0b38d1a872f", + "0x08723392ed15743cc38513c4925f5e6be5c17243", + "0x08b2efdcdb8822efe5ad0eae55517cf5dc544251", + "0x09193888b3f38c82dedfda55259a82c0e7de875e", + "0x0931ca4d13bb4ba75d9b7132ab690265d749a5e7", + "0x098b716b8aaf21512996dc57eb0615e2383e2f96", + "0x0e3a09dda6b20afbb34ac7cd4a6881493f3e7bf7", + "0x0ee5067b06776a89ccc7dc8ee369984ad7db5e06", + "0x12d66f87a04a9e220743712ce6d9bb1b5616b8fc", + "0x1356c899d8c9467c7f71c195612f8a395abf2f0a", + "0x169ad27a470d064dede56a2d3ff727986b15d52b", + "0x175d44451403edf28469df03a9280c1197adb92c", + "0x178169b423a011fff22b9e3f3abea13414ddd0f1", "0x179f48c78f57a3a78f0608cc9197b8972921d1d2", "0x1967d8af5bd86a497fb3dd7899a020e47560daaf", "0x19aa5fe80d33a56d56c78e82ea5e50e5d80b4dff", - "0x19aa5fe80d33a56d56c78e82ea5e50e5d80b4dff", + "0x19f8f2b0915daa12a3f5c9cf01df9e24d53794f7", "0x1da5821544e25c636c1417ba96ade4cf6d2f9b5a", - "0x2f389ce8bd8ff92de3402ffce4691d17fc4f6535", + "0x1e34a77868e19a6647b1f2f47b51ed72dede95dd", + "0x21b8d56bda776bbe68655a16895afd96f5534fed", + "0x22aaa7720ddd5388a3c0a3333430953c68f1849b", + "0x23173fe8b96a4ad8d2e17fb83ea5dcccdca1ae52", + "0x23773e65ed146a459791799d01336db287f25334", + "0x242654336ca2205714071898f67e254eb49acdce", + "0x2573bac39ebe2901b4389cd468f2872cf7767faf", + "0x26903a5a198d571422b2b4ea08b56a37cbd68c89", + "0x2717c5e28cf931547b621a5dddb772ab6a35b701", "0x2f389ce8bd8ff92de3402ffce4691d17fc4f6535", "0x2f50508a8a3d323b91336fa3ea6ae50e55f32185", + "0x2fc93484614a34f26f7970cbb94615ba109bb4bf", "0x308ed4b7b49797e1a98d3818bff6fe5385410370", + "0x330bdfade01ee9bf63c209ee33102dd334618e0a", + "0x35fb6f6db4fb05e6a4ce86f2c93691425626d4b1", + "0x38735f03b30fbc022ddd06abed01f0ca823c6a94", + "0x39d908dac893cbcb53cc86e0ecc369aa4def1a29", + "0x3aac1cc67c2ec5db4ea850957b967ba153ad6279", + "0x3ad9db589d201a710ed237c829c7860ba86510fc", "0x3cbded43efdaf0fc77b9c55f6fc9988fcc9b757d", + "0x3cffd56b47b7b41c56258d9c7731abadc360e073", + "0x3e37627deaa754090fbfbb8bd226c1ce66d255e9", "0x3efa30704d2b8bbac821307230376556cf8cc39e", + "0x407cceeaa7c95d2fe2250bf9f2c105aa7aafb512", + "0x43fa21d92141ba9db43052492e0deee5aa5f0a93", + "0x4736dcf1b7a3d580672cce6e7c65cd5cc9cfba9d", + "0x47ce0c6ed5b0ce3d3a51fdb1c52dc66a7c3c2936", "0x48549a34ae37b12f6a30566245176994e17c6b4a", "0x4f47bc496083c727c5fbe3ce9cdf2b0f6496270c", - "0x4f47bc496083c727c5fbe3ce9cdf2b0f6496270c", - "0x4f47bc496083c727c5fbe3ce9cdf2b0f6496270c", + "0x502371699497d08d5339c870851898d6d72521dd", + "0x527653ea119f3e6a1f5bd18fbf4714081d7b31ce", "0x530a64c0ce595026a4a556b703644228179e2d57", + "0x538ab61e8a9fc1b2f93b3dd9011d662d89be6fe6", + "0x53b6936513e738f44fb50d2b9476730c0ab3bfc1", "0x5512d943ed1f7c8a43f3435c85f7ab68b30121b0", + "0x57b2b8c82f065de8ef5573f9730fc1449b403c9f", + "0x58e8dcc13be9780fc42e8723d8ead4cf46943df2", + "0x5a14e72060c11313e38738009254a90968f58f51", "0x5a7a51bfb49f190e5a6060a5bc6052ac14a3b59f", + "0x5cab7692d4e94096462119ab7bf57319726eed2a", + "0x5efda50f22d34f262c29268506c5fa42cb56a1ce", "0x5f48c2a71b2cc96e3f0ccae4e39318ff0dc375b2", + "0x5f6c97c6ad7bdd0ae7e0dd4ca33a4ed3fdabd4d7", + "0x610b717796ad172b316836ac95a2ffad065ceab4", + "0x653477c392c16b0765603074f157314cc4f40c32", + "0x67d40ee1a85bf4a4bb7ffae16de985e8427b6b45", "0x6be0ae71e6c41f2f9d0d1a3b8d0f75e6f6a0b46e", + "0x6bf694a291df3fec1f7e69701e3ab6c592435ae7", "0x6f1ca141a28907f78ebaa64fb83a9088b02a8352", + "0x722122df12d4e14e13ac3b6895a86e84145b6967", + "0x723b78e67497e85279cb204544566f4dc5d2aca0", + "0x72a5843cc08275c8171e582972aa4fda8c397b2a", + "0x743494b60097a2230018079c02fe21a7b687eaa5", "0x746aebc06d2ae31b71ac51429a19d54e797878e9", + "0x756c4628e57f7e7f8a459ec2752968360cf4d1aa", + "0x76d85b4c0fc497eecc38902397ac608000a06607", + "0x776198ccf446dfa168347089d7338879273172cf", "0x77777feddddffc19ff86db637967013e6c6a116c", "0x797d7ae72ebddcdea2a346c1834e04d1f8df102b", + "0x7db418b5d567a4e0e8c59ad71be1fce48f3e6107", + "0x7f19720a857f834887fc9a7bc0a0fbe7fc7f8102", + "0x7f367cc41522ce07553e823bf3be79a889debe1b", + "0x7ff9cfad3877f21d41da833e2f775db0569ee3d9", + "0x8281aa6795ade17c8973e1aedca380258bc124f9", + "0x833481186f16cece3f1eeea1a694c42034c3a0db", + "0x83e5bc4ffa856bb84bb88581f5dd62a433a25e0d", + "0x84443cfd09a48af6ef360c6976c5392ac5023a1f", "0x8576acc5c05d6ce88f4e49bf65bdf0c62f91353c", + "0x8589427373d6d84e98730d7795d8f6f8731fda16", + "0x88fd245fedec4a936e700f9173454d1931b4c307", "0x901bb9583b24d97e995513c6778dc6888ab6870e", + "0x910cbd523d972eb0a6f4cae4618ad62622b39dbf", + "0x931546d9e66836abf687d2bc64b30407bac8c568", + "0x94a1b5cdb22c43faab4abeb5c74999895464ddaf", + "0x94be88213a387e992dd87de56950a9aef34b9448", + "0x94c92f096437ab9958fc0a37f09348f30389ae79", "0x961c5be54a2ffc17cf4cb021d863c42dacd47fc1", "0x97b1043abd9e6fc31681635166d430a458d14f9c", + "0x983a81ca6fb1e441266d2fbcb7d8e530ac2e05a2", + "0x9ad122c22b14202b4490edaf288fdb3c7cb3ff5e", "0x9c2bc757b66f24d60f016b6237f8cdd414a879fa", "0x9f4cda013e354b8fc285bf4b9a60460cee7f7ea9", + "0xa0e1c89ef1a489c9c7de96311ed5ce5d32c20e4b", + "0xa160cdab225685da1d56aa342ad8841c3b53f291", + "0xa5c2254e4253490c54cef0a4347fddb8f75a4998", + "0xa60c772958a3ed56c1f15dd055ba37ac8e523a0d", "0xa7e5d5a720f06526557c513402f2e6b5fa20b008", + "0xaeaac358560e11f52454d997aaff2c5731b6f8a6", + "0xaf4c0b70b2ea9fb7487c7cbb37ada259579fe040", + "0xaf8d1839c3c67cf571aa74b5c12398d4901147b3", + "0xb04e030140b30c27bcdfaafffa98c57d80eda7b4", + "0xb1c8094b234dce6e03f10a5b673c1d8c69739a00", + "0xb20c66c4de72433f3ce747b58b86830c459ca911", + "0xb541fc07bc7619fd4062a54d96268525cbc6ffef", "0xb6f5ec1a0a9cd1526536d3f0426c429529471f40", - "0xb6f5ec1a0a9cd1526536d3f0426c429529471f40", - "0xb6f5ec1a0a9cd1526536d3f0426c429529471f40", + "0xba214c1c1928a32bffe790263e38b4af9bfcd659", + "0xbb93e510bbcd0b7beb5a853875f9ec60275cf498", + "0xc2a3829f459b3edd87791c74cd45402ba0a20be3", "0xc455f7fd3e0e12afd51fba5c106909934d8a0e4a", "0xca0840578f57fe71599d29375e16783424023357", + "0xcc84179ffd19a1627e79f8648d09e095252bc418", + "0xcee71753c9820f063b38fdbe4cfdaf1d3d928a80", "0xd0975b32cea532eadddfc9c60481976e39db3472", + "0xd21be7248e0197ee08e0c20d4a96debdac3d20af", + "0xd47438c816c9e7f2e2888e060936a499af9582b3", + "0xd4b88df4d29f5cedd6857912842cff3b20c8cfa3", + "0xd5d6f8d9e784d0e26222ad3834500801a68d027d", + "0xd691f27f38b395864ea86cfc7253969b409c362d", + "0xd692fd2d0b2fbd2e52cfa5b5b9424bc981c30696", + "0xd82ed8786d7c69dc7e052f7a542ab047971e73d2", "0xd882cfc20f52f2599d84b8e8d58c7fb62cfe344b", - "0xd882cfc20f52f2599d84b8e8d58c7fb62cfe344b", + "0xd8d7de3349ccaa0fde6298fe6d7b7d0d34586193", + "0xd90e2f925da726b50c4ed8d0fb90ad053324f31b", + "0xd96f2b1c14db8458374d9aca76e26c3d18364307", + "0xdcbeffbecce100cce9e4b153c4e15cb885643193", + "0xdd4c48c0b24039969fc16d1cdf626eab821d3384", + "0xdf231d99ff8b6c6cbf4e9b9a945cbacef9339178", + "0xdf3a408c53e5078af6e8fb2a85088d46ee09a61b", "0xe1d865c3d669dcc8c57c8d023140cb204e672ee4", "0xe7aa314c77f4233c18c6cc84384a9247c0cf367b", + "0xe950dc316b836e4eefb8308bf32bf7c72a1358ff", "0xed6e0a7e4ac94d976eebfb82ccf777a3c6bad921", + "0xedc5d01286f99a066559f60a585406f3878a033e", + "0xefe301d259f525ca1ba74a7977b80d5b060b3cca", "0xf3701f445b6bdafedbca97d1e477357839e4120d", + "0xf4b067dd14e95bab89be928c07cb22e3c94e0daa", + "0xf60dd140cff0706bae9cd734ac3ae76ad9ebc32a", + "0xf67721a2d8f736e75a49fdd7fad2e31d8676542a", + "0xf7b31119c2682c88d88d455dbb9d5932c65cf1be", "0xfac583c0cf07ea434052c49115a4682172ab6b4f", + "0xfd8610d20aa15b7b2e3be39b396a1bc3516c7144", "0xfec8a60023265364d066a1212fde3930f6ae8da7", "0xffbac21a641dcfe4552920138d90f3638b3c9fba" ] diff --git a/pyinjective/proto/cosmwasm/wasm/v1/ibc_pb2.py b/pyinjective/proto/cosmwasm/wasm/v1/ibc_pb2.py index a0548a24..3a33a9c2 100644 --- a/pyinjective/proto/cosmwasm/wasm/v1/ibc_pb2.py +++ b/pyinjective/proto/cosmwasm/wasm/v1/ibc_pb2.py @@ -15,7 +15,7 @@ from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x63osmwasm/wasm/v1/ibc.proto\x12\x10\x63osmwasm.wasm.v1\x1a\x14gogoproto/gogo.proto\"\xe2\x01\n\nMsgIBCSend\x12\x33\n\x07\x63hannel\x18\x02 \x01(\tB\x19\xf2\xde\x1f\x15yaml:\"source_channel\"R\x07\x63hannel\x12@\n\x0etimeout_height\x18\x04 \x01(\x04\x42\x19\xf2\xde\x1f\x15yaml:\"timeout_height\"R\rtimeoutHeight\x12I\n\x11timeout_timestamp\x18\x05 \x01(\x04\x42\x1c\xf2\xde\x1f\x18yaml:\"timeout_timestamp\"R\x10timeoutTimestamp\x12\x12\n\x04\x64\x61ta\x18\x06 \x01(\x0cR\x04\x64\x61ta\"0\n\x12MsgIBCSendResponse\x12\x1a\n\x08sequence\x18\x01 \x01(\x04R\x08sequence\"I\n\x12MsgIBCCloseChannel\x12\x33\n\x07\x63hannel\x18\x02 \x01(\tB\x19\xf2\xde\x1f\x15yaml:\"source_channel\"R\x07\x63hannelB\xae\x01\n\x14\x63om.cosmwasm.wasm.v1B\x08IbcProtoP\x01Z&github.com/CosmWasm/wasmd/x/wasm/types\xa2\x02\x03\x43WX\xaa\x02\x10\x43osmwasm.Wasm.V1\xca\x02\x10\x43osmwasm\\Wasm\\V1\xe2\x02\x1c\x43osmwasm\\Wasm\\V1\\GPBMetadata\xea\x02\x12\x43osmwasm::Wasm::V1\xc8\xe1\x1e\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x63osmwasm/wasm/v1/ibc.proto\x12\x10\x63osmwasm.wasm.v1\x1a\x14gogoproto/gogo.proto\"\xe2\x01\n\nMsgIBCSend\x12\x33\n\x07\x63hannel\x18\x02 \x01(\tB\x19\xf2\xde\x1f\x15yaml:\"source_channel\"R\x07\x63hannel\x12@\n\x0etimeout_height\x18\x04 \x01(\x04\x42\x19\xf2\xde\x1f\x15yaml:\"timeout_height\"R\rtimeoutHeight\x12I\n\x11timeout_timestamp\x18\x05 \x01(\x04\x42\x1c\xf2\xde\x1f\x18yaml:\"timeout_timestamp\"R\x10timeoutTimestamp\x12\x12\n\x04\x64\x61ta\x18\x06 \x01(\x0cR\x04\x64\x61ta\"0\n\x12MsgIBCSendResponse\x12\x1a\n\x08sequence\x18\x01 \x01(\x04R\x08sequence\"$\n\"MsgIBCWriteAcknowledgementResponse\"I\n\x12MsgIBCCloseChannel\x12\x33\n\x07\x63hannel\x18\x02 \x01(\tB\x19\xf2\xde\x1f\x15yaml:\"source_channel\"R\x07\x63hannelB\xae\x01\n\x14\x63om.cosmwasm.wasm.v1B\x08IbcProtoP\x01Z&github.com/CosmWasm/wasmd/x/wasm/types\xa2\x02\x03\x43WX\xaa\x02\x10\x43osmwasm.Wasm.V1\xca\x02\x10\x43osmwasm\\Wasm\\V1\xe2\x02\x1c\x43osmwasm\\Wasm\\V1\\GPBMetadata\xea\x02\x12\x43osmwasm::Wasm::V1\xc8\xe1\x1e\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -35,6 +35,8 @@ _globals['_MSGIBCSEND']._serialized_end=297 _globals['_MSGIBCSENDRESPONSE']._serialized_start=299 _globals['_MSGIBCSENDRESPONSE']._serialized_end=347 - _globals['_MSGIBCCLOSECHANNEL']._serialized_start=349 - _globals['_MSGIBCCLOSECHANNEL']._serialized_end=422 + _globals['_MSGIBCWRITEACKNOWLEDGEMENTRESPONSE']._serialized_start=349 + _globals['_MSGIBCWRITEACKNOWLEDGEMENTRESPONSE']._serialized_end=385 + _globals['_MSGIBCCLOSECHANNEL']._serialized_start=387 + _globals['_MSGIBCCLOSECHANNEL']._serialized_end=460 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/cosmwasm/wasm/v1/query_pb2.py b/pyinjective/proto/cosmwasm/wasm/v1/query_pb2.py index 6defc46e..2eddc270 100644 --- a/pyinjective/proto/cosmwasm/wasm/v1/query_pb2.py +++ b/pyinjective/proto/cosmwasm/wasm/v1/query_pb2.py @@ -16,11 +16,12 @@ from pyinjective.proto.cosmwasm.wasm.v1 import types_pb2 as cosmwasm_dot_wasm_dot_v1_dot_types__pb2 from pyinjective.proto.google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from pyinjective.proto.cosmos.base.query.v1beta1 import pagination_pb2 as cosmos_dot_base_dot_query_dot_v1beta1_dot_pagination__pb2 +from pyinjective.proto.cosmos.query.v1 import query_pb2 as cosmos_dot_query_dot_v1_dot_query__pb2 from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 from pyinjective.proto.cosmos_proto import cosmos_pb2 as cosmos__proto_dot_cosmos__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x63osmwasm/wasm/v1/query.proto\x12\x10\x63osmwasm.wasm.v1\x1a\x14gogoproto/gogo.proto\x1a\x1c\x63osmwasm/wasm/v1/types.proto\x1a\x1cgoogle/api/annotations.proto\x1a*cosmos/base/query/v1beta1/pagination.proto\x1a\x11\x61mino/amino.proto\x1a\x19\x63osmos_proto/cosmos.proto\"N\n\x18QueryContractInfoRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\"\xad\x01\n\x19QueryContractInfoResponse\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12V\n\rcontract_info\x18\x02 \x01(\x0b\x32\x1e.cosmwasm.wasm.v1.ContractInfoB\x11\xc8\xde\x1f\x00\xd0\xde\x1f\x01\xea\xde\x1f\x00\xa8\xe7\xb0*\x01R\x0c\x63ontractInfo:\x04\xe8\xa0\x1f\x01\"\x99\x01\n\x1bQueryContractHistoryRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\xb8\x01\n\x1cQueryContractHistoryResponse\x12O\n\x07\x65ntries\x18\x01 \x03(\x0b\x32*.cosmwasm.wasm.v1.ContractCodeHistoryEntryB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\x07\x65ntries\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"~\n\x1bQueryContractsByCodeRequest\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\x9f\x01\n\x1cQueryContractsByCodeResponse\x12\x36\n\tcontracts\x18\x01 \x03(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\tcontracts\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"\x9a\x01\n\x1cQueryAllContractStateRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\xa4\x01\n\x1dQueryAllContractStateResponse\x12:\n\x06models\x18\x01 \x03(\x0b\x32\x17.cosmwasm.wasm.v1.ModelB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\x06models\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"q\n\x1cQueryRawContractStateRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12\x1d\n\nquery_data\x18\x02 \x01(\x0cR\tqueryData\"3\n\x1dQueryRawContractStateResponse\x12\x12\n\x04\x64\x61ta\x18\x01 \x01(\x0cR\x04\x64\x61ta\"\x9b\x01\n\x1eQuerySmartContractStateRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12\x45\n\nquery_data\x18\x02 \x01(\x0c\x42&\xfa\xde\x1f\x12RawContractMessage\x9a\xe7\xb0*\x0binline_jsonR\tqueryData\"]\n\x1fQuerySmartContractStateResponse\x12:\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x42&\xfa\xde\x1f\x12RawContractMessage\x9a\xe7\xb0*\x0binline_jsonR\x04\x64\x61ta\"+\n\x10QueryCodeRequest\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\"\xb8\x02\n\x10\x43odeInfoResponse\x12)\n\x07\x63ode_id\x18\x01 \x01(\x04\x42\x10\xe2\xde\x1f\x06\x43odeID\xea\xde\x1f\x02idR\x06\x63odeId\x12\x32\n\x07\x63reator\x18\x02 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x63reator\x12Q\n\tdata_hash\x18\x03 \x01(\x0c\x42\x34\xfa\xde\x1f\x30github.com/cometbft/cometbft/libs/bytes.HexBytesR\x08\x64\x61taHash\x12`\n\x16instantiate_permission\x18\x06 \x01(\x0b\x32\x1e.cosmwasm.wasm.v1.AccessConfigB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\x15instantiatePermission:\x04\xe8\xa0\x1f\x01J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06\"\x82\x01\n\x11QueryCodeResponse\x12I\n\tcode_info\x18\x01 \x01(\x0b\x32\".cosmwasm.wasm.v1.CodeInfoResponseB\x08\xd0\xde\x1f\x01\xea\xde\x1f\x00R\x08\x63odeInfo\x12\x1c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x42\x08\xea\xde\x1f\x04\x64\x61taR\x04\x64\x61ta:\x04\xe8\xa0\x1f\x01\"[\n\x11QueryCodesRequest\x12\x46\n\npagination\x18\x01 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\xab\x01\n\x12QueryCodesResponse\x12L\n\ncode_infos\x18\x01 \x03(\x0b\x32\".cosmwasm.wasm.v1.CodeInfoResponseB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\tcodeInfos\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"a\n\x17QueryPinnedCodesRequest\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\x8b\x01\n\x18QueryPinnedCodesResponse\x12&\n\x08\x63ode_ids\x18\x01 \x03(\x04\x42\x0b\xe2\xde\x1f\x07\x43odeIDsR\x07\x63odeIds\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"\x14\n\x12QueryParamsRequest\"R\n\x13QueryParamsResponse\x12;\n\x06params\x18\x01 \x01(\x0b\x32\x18.cosmwasm.wasm.v1.ParamsB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\x06params\"\xab\x01\n\x1eQueryContractsByCreatorRequest\x12\x41\n\x0f\x63reator_address\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x0e\x63reatorAddress\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\xb3\x01\n\x1fQueryContractsByCreatorResponse\x12G\n\x12\x63ontract_addresses\x18\x01 \x03(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x11\x63ontractAddresses\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"\xab\x01\n\x18QueryBuildAddressRequest\x12\x1b\n\tcode_hash\x18\x01 \x01(\tR\x08\x63odeHash\x12\x41\n\x0f\x63reator_address\x18\x02 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x0e\x63reatorAddress\x12\x12\n\x04salt\x18\x03 \x01(\tR\x04salt\x12\x1b\n\tinit_args\x18\x04 \x01(\x0cR\x08initArgs\"O\n\x19QueryBuildAddressResponse\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress2\xdf\x0e\n\x05Query\x12\x95\x01\n\x0c\x43ontractInfo\x12*.cosmwasm.wasm.v1.QueryContractInfoRequest\x1a+.cosmwasm.wasm.v1.QueryContractInfoResponse\",\x82\xd3\xe4\x93\x02&\x12$/cosmwasm/wasm/v1/contract/{address}\x12\xa6\x01\n\x0f\x43ontractHistory\x12-.cosmwasm.wasm.v1.QueryContractHistoryRequest\x1a..cosmwasm.wasm.v1.QueryContractHistoryResponse\"4\x82\xd3\xe4\x93\x02.\x12,/cosmwasm/wasm/v1/contract/{address}/history\x12\xa4\x01\n\x0f\x43ontractsByCode\x12-.cosmwasm.wasm.v1.QueryContractsByCodeRequest\x1a..cosmwasm.wasm.v1.QueryContractsByCodeResponse\"2\x82\xd3\xe4\x93\x02,\x12*/cosmwasm/wasm/v1/code/{code_id}/contracts\x12\xa7\x01\n\x10\x41llContractState\x12..cosmwasm.wasm.v1.QueryAllContractStateRequest\x1a/.cosmwasm.wasm.v1.QueryAllContractStateResponse\"2\x82\xd3\xe4\x93\x02,\x12*/cosmwasm/wasm/v1/contract/{address}/state\x12\xb2\x01\n\x10RawContractState\x12..cosmwasm.wasm.v1.QueryRawContractStateRequest\x1a/.cosmwasm.wasm.v1.QueryRawContractStateResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/cosmwasm/wasm/v1/contract/{address}/raw/{query_data}\x12\xba\x01\n\x12SmartContractState\x12\x30.cosmwasm.wasm.v1.QuerySmartContractStateRequest\x1a\x31.cosmwasm.wasm.v1.QuerySmartContractStateResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/cosmwasm/wasm/v1/contract/{address}/smart/{query_data}\x12y\n\x04\x43ode\x12\".cosmwasm.wasm.v1.QueryCodeRequest\x1a#.cosmwasm.wasm.v1.QueryCodeResponse\"(\x82\xd3\xe4\x93\x02\"\x12 /cosmwasm/wasm/v1/code/{code_id}\x12r\n\x05\x43odes\x12#.cosmwasm.wasm.v1.QueryCodesRequest\x1a$.cosmwasm.wasm.v1.QueryCodesResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/cosmwasm/wasm/v1/code\x12\x8c\x01\n\x0bPinnedCodes\x12).cosmwasm.wasm.v1.QueryPinnedCodesRequest\x1a*.cosmwasm.wasm.v1.QueryPinnedCodesResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/cosmwasm/wasm/v1/codes/pinned\x12}\n\x06Params\x12$.cosmwasm.wasm.v1.QueryParamsRequest\x1a%.cosmwasm.wasm.v1.QueryParamsResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/cosmwasm/wasm/v1/codes/params\x12\xb8\x01\n\x12\x43ontractsByCreator\x12\x30.cosmwasm.wasm.v1.QueryContractsByCreatorRequest\x1a\x31.cosmwasm.wasm.v1.QueryContractsByCreatorResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/cosmwasm/wasm/v1/contracts/creator/{creator_address}\x12\x99\x01\n\x0c\x42uildAddress\x12*.cosmwasm.wasm.v1.QueryBuildAddressRequest\x1a+.cosmwasm.wasm.v1.QueryBuildAddressResponse\"0\x82\xd3\xe4\x93\x02*\x12(/cosmwasm/wasm/v1/contract/build_addressB\xb4\x01\n\x14\x63om.cosmwasm.wasm.v1B\nQueryProtoP\x01Z&github.com/CosmWasm/wasmd/x/wasm/types\xa2\x02\x03\x43WX\xaa\x02\x10\x43osmwasm.Wasm.V1\xca\x02\x10\x43osmwasm\\Wasm\\V1\xe2\x02\x1c\x43osmwasm\\Wasm\\V1\\GPBMetadata\xea\x02\x12\x43osmwasm::Wasm::V1\xc8\xe1\x1e\x00\xa8\xe2\x1e\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x63osmwasm/wasm/v1/query.proto\x12\x10\x63osmwasm.wasm.v1\x1a\x14gogoproto/gogo.proto\x1a\x1c\x63osmwasm/wasm/v1/types.proto\x1a\x1cgoogle/api/annotations.proto\x1a*cosmos/base/query/v1beta1/pagination.proto\x1a\x1b\x63osmos/query/v1/query.proto\x1a\x11\x61mino/amino.proto\x1a\x19\x63osmos_proto/cosmos.proto\"N\n\x18QueryContractInfoRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\"\xad\x01\n\x19QueryContractInfoResponse\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12V\n\rcontract_info\x18\x02 \x01(\x0b\x32\x1e.cosmwasm.wasm.v1.ContractInfoB\x11\xc8\xde\x1f\x00\xd0\xde\x1f\x01\xea\xde\x1f\x00\xa8\xe7\xb0*\x01R\x0c\x63ontractInfo:\x04\xe8\xa0\x1f\x01\"\x99\x01\n\x1bQueryContractHistoryRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\xb8\x01\n\x1cQueryContractHistoryResponse\x12O\n\x07\x65ntries\x18\x01 \x03(\x0b\x32*.cosmwasm.wasm.v1.ContractCodeHistoryEntryB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\x07\x65ntries\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"~\n\x1bQueryContractsByCodeRequest\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\x9f\x01\n\x1cQueryContractsByCodeResponse\x12\x36\n\tcontracts\x18\x01 \x03(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\tcontracts\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"\x9a\x01\n\x1cQueryAllContractStateRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\xa4\x01\n\x1dQueryAllContractStateResponse\x12:\n\x06models\x18\x01 \x03(\x0b\x32\x17.cosmwasm.wasm.v1.ModelB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\x06models\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"q\n\x1cQueryRawContractStateRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12\x1d\n\nquery_data\x18\x02 \x01(\x0cR\tqueryData\"3\n\x1dQueryRawContractStateResponse\x12\x12\n\x04\x64\x61ta\x18\x01 \x01(\x0cR\x04\x64\x61ta\"\x9b\x01\n\x1eQuerySmartContractStateRequest\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress\x12\x45\n\nquery_data\x18\x02 \x01(\x0c\x42&\xfa\xde\x1f\x12RawContractMessage\x9a\xe7\xb0*\x0binline_jsonR\tqueryData\"]\n\x1fQuerySmartContractStateResponse\x12:\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x42&\xfa\xde\x1f\x12RawContractMessage\x9a\xe7\xb0*\x0binline_jsonR\x04\x64\x61ta\"+\n\x10QueryCodeRequest\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\"\xb8\x02\n\x10\x43odeInfoResponse\x12)\n\x07\x63ode_id\x18\x01 \x01(\x04\x42\x10\xe2\xde\x1f\x06\x43odeID\xea\xde\x1f\x02idR\x06\x63odeId\x12\x32\n\x07\x63reator\x18\x02 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x63reator\x12Q\n\tdata_hash\x18\x03 \x01(\x0c\x42\x34\xfa\xde\x1f\x30github.com/cometbft/cometbft/libs/bytes.HexBytesR\x08\x64\x61taHash\x12`\n\x16instantiate_permission\x18\x06 \x01(\x0b\x32\x1e.cosmwasm.wasm.v1.AccessConfigB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\x15instantiatePermission:\x04\xe8\xa0\x1f\x01J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06\"\x82\x01\n\x11QueryCodeResponse\x12I\n\tcode_info\x18\x01 \x01(\x0b\x32\".cosmwasm.wasm.v1.CodeInfoResponseB\x08\xd0\xde\x1f\x01\xea\xde\x1f\x00R\x08\x63odeInfo\x12\x1c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x42\x08\xea\xde\x1f\x04\x64\x61taR\x04\x64\x61ta:\x04\xe8\xa0\x1f\x01\"[\n\x11QueryCodesRequest\x12\x46\n\npagination\x18\x01 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\xab\x01\n\x12QueryCodesResponse\x12L\n\ncode_infos\x18\x01 \x03(\x0b\x32\".cosmwasm.wasm.v1.CodeInfoResponseB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\tcodeInfos\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"a\n\x17QueryPinnedCodesRequest\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\x8b\x01\n\x18QueryPinnedCodesResponse\x12&\n\x08\x63ode_ids\x18\x01 \x03(\x04\x42\x0b\xe2\xde\x1f\x07\x43odeIDsR\x07\x63odeIds\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"\x14\n\x12QueryParamsRequest\"R\n\x13QueryParamsResponse\x12;\n\x06params\x18\x01 \x01(\x0b\x32\x18.cosmwasm.wasm.v1.ParamsB\t\xc8\xde\x1f\x00\xa8\xe7\xb0*\x01R\x06params\"\xab\x01\n\x1eQueryContractsByCreatorRequest\x12\x41\n\x0f\x63reator_address\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x0e\x63reatorAddress\x12\x46\n\npagination\x18\x02 \x01(\x0b\x32&.cosmos.base.query.v1beta1.PageRequestR\npagination\"\xb3\x01\n\x1fQueryContractsByCreatorResponse\x12G\n\x12\x63ontract_addresses\x18\x01 \x03(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x11\x63ontractAddresses\x12G\n\npagination\x18\x02 \x01(\x0b\x32\'.cosmos.base.query.v1beta1.PageResponseR\npagination\"\xab\x01\n\x18QueryBuildAddressRequest\x12\x1b\n\tcode_hash\x18\x01 \x01(\tR\x08\x63odeHash\x12\x41\n\x0f\x63reator_address\x18\x02 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x0e\x63reatorAddress\x12\x12\n\x04salt\x18\x03 \x01(\tR\x04salt\x12\x1b\n\tinit_args\x18\x04 \x01(\x0cR\x08initArgs\"O\n\x19QueryBuildAddressResponse\x12\x32\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\x07\x61\x64\x64ress2\x9c\x0f\n\x05Query\x12\x9a\x01\n\x0c\x43ontractInfo\x12*.cosmwasm.wasm.v1.QueryContractInfoRequest\x1a+.cosmwasm.wasm.v1.QueryContractInfoResponse\"1\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02&\x12$/cosmwasm/wasm/v1/contract/{address}\x12\xab\x01\n\x0f\x43ontractHistory\x12-.cosmwasm.wasm.v1.QueryContractHistoryRequest\x1a..cosmwasm.wasm.v1.QueryContractHistoryResponse\"9\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02.\x12,/cosmwasm/wasm/v1/contract/{address}/history\x12\xa9\x01\n\x0f\x43ontractsByCode\x12-.cosmwasm.wasm.v1.QueryContractsByCodeRequest\x1a..cosmwasm.wasm.v1.QueryContractsByCodeResponse\"7\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02,\x12*/cosmwasm/wasm/v1/code/{code_id}/contracts\x12\xac\x01\n\x10\x41llContractState\x12..cosmwasm.wasm.v1.QueryAllContractStateRequest\x1a/.cosmwasm.wasm.v1.QueryAllContractStateResponse\"7\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02,\x12*/cosmwasm/wasm/v1/contract/{address}/state\x12\xb7\x01\n\x10RawContractState\x12..cosmwasm.wasm.v1.QueryRawContractStateRequest\x1a/.cosmwasm.wasm.v1.QueryRawContractStateResponse\"B\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02\x37\x12\x35/cosmwasm/wasm/v1/contract/{address}/raw/{query_data}\x12\xbf\x01\n\x12SmartContractState\x12\x30.cosmwasm.wasm.v1.QuerySmartContractStateRequest\x1a\x31.cosmwasm.wasm.v1.QuerySmartContractStateResponse\"D\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02\x39\x12\x37/cosmwasm/wasm/v1/contract/{address}/smart/{query_data}\x12~\n\x04\x43ode\x12\".cosmwasm.wasm.v1.QueryCodeRequest\x1a#.cosmwasm.wasm.v1.QueryCodeResponse\"-\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02\"\x12 /cosmwasm/wasm/v1/code/{code_id}\x12w\n\x05\x43odes\x12#.cosmwasm.wasm.v1.QueryCodesRequest\x1a$.cosmwasm.wasm.v1.QueryCodesResponse\"#\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02\x18\x12\x16/cosmwasm/wasm/v1/code\x12\x91\x01\n\x0bPinnedCodes\x12).cosmwasm.wasm.v1.QueryPinnedCodesRequest\x1a*.cosmwasm.wasm.v1.QueryPinnedCodesResponse\"+\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02 \x12\x1e/cosmwasm/wasm/v1/codes/pinned\x12\x82\x01\n\x06Params\x12$.cosmwasm.wasm.v1.QueryParamsRequest\x1a%.cosmwasm.wasm.v1.QueryParamsResponse\"+\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02 \x12\x1e/cosmwasm/wasm/v1/codes/params\x12\xbd\x01\n\x12\x43ontractsByCreator\x12\x30.cosmwasm.wasm.v1.QueryContractsByCreatorRequest\x1a\x31.cosmwasm.wasm.v1.QueryContractsByCreatorResponse\"B\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02\x37\x12\x35/cosmwasm/wasm/v1/contracts/creator/{creator_address}\x12\x9e\x01\n\x0c\x42uildAddress\x12*.cosmwasm.wasm.v1.QueryBuildAddressRequest\x1a+.cosmwasm.wasm.v1.QueryBuildAddressResponse\"5\x88\xe7\xb0*\x01\x82\xd3\xe4\x93\x02*\x12(/cosmwasm/wasm/v1/contract/build_addressB\xb4\x01\n\x14\x63om.cosmwasm.wasm.v1B\nQueryProtoP\x01Z&github.com/CosmWasm/wasmd/x/wasm/types\xa2\x02\x03\x43WX\xaa\x02\x10\x43osmwasm.Wasm.V1\xca\x02\x10\x43osmwasm\\Wasm\\V1\xe2\x02\x1c\x43osmwasm\\Wasm\\V1\\GPBMetadata\xea\x02\x12\x43osmwasm::Wasm::V1\xc8\xe1\x1e\x00\xa8\xe2\x1e\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -85,79 +86,79 @@ _globals['_QUERYBUILDADDRESSRESPONSE'].fields_by_name['address']._loaded_options = None _globals['_QUERYBUILDADDRESSRESPONSE'].fields_by_name['address']._serialized_options = b'\322\264-\024cosmos.AddressString' _globals['_QUERY'].methods_by_name['ContractInfo']._loaded_options = None - _globals['_QUERY'].methods_by_name['ContractInfo']._serialized_options = b'\202\323\344\223\002&\022$/cosmwasm/wasm/v1/contract/{address}' + _globals['_QUERY'].methods_by_name['ContractInfo']._serialized_options = b'\210\347\260*\001\202\323\344\223\002&\022$/cosmwasm/wasm/v1/contract/{address}' _globals['_QUERY'].methods_by_name['ContractHistory']._loaded_options = None - _globals['_QUERY'].methods_by_name['ContractHistory']._serialized_options = b'\202\323\344\223\002.\022,/cosmwasm/wasm/v1/contract/{address}/history' + _globals['_QUERY'].methods_by_name['ContractHistory']._serialized_options = b'\210\347\260*\001\202\323\344\223\002.\022,/cosmwasm/wasm/v1/contract/{address}/history' _globals['_QUERY'].methods_by_name['ContractsByCode']._loaded_options = None - _globals['_QUERY'].methods_by_name['ContractsByCode']._serialized_options = b'\202\323\344\223\002,\022*/cosmwasm/wasm/v1/code/{code_id}/contracts' + _globals['_QUERY'].methods_by_name['ContractsByCode']._serialized_options = b'\210\347\260*\001\202\323\344\223\002,\022*/cosmwasm/wasm/v1/code/{code_id}/contracts' _globals['_QUERY'].methods_by_name['AllContractState']._loaded_options = None - _globals['_QUERY'].methods_by_name['AllContractState']._serialized_options = b'\202\323\344\223\002,\022*/cosmwasm/wasm/v1/contract/{address}/state' + _globals['_QUERY'].methods_by_name['AllContractState']._serialized_options = b'\210\347\260*\001\202\323\344\223\002,\022*/cosmwasm/wasm/v1/contract/{address}/state' _globals['_QUERY'].methods_by_name['RawContractState']._loaded_options = None - _globals['_QUERY'].methods_by_name['RawContractState']._serialized_options = b'\202\323\344\223\0027\0225/cosmwasm/wasm/v1/contract/{address}/raw/{query_data}' + _globals['_QUERY'].methods_by_name['RawContractState']._serialized_options = b'\210\347\260*\001\202\323\344\223\0027\0225/cosmwasm/wasm/v1/contract/{address}/raw/{query_data}' _globals['_QUERY'].methods_by_name['SmartContractState']._loaded_options = None - _globals['_QUERY'].methods_by_name['SmartContractState']._serialized_options = b'\202\323\344\223\0029\0227/cosmwasm/wasm/v1/contract/{address}/smart/{query_data}' + _globals['_QUERY'].methods_by_name['SmartContractState']._serialized_options = b'\210\347\260*\001\202\323\344\223\0029\0227/cosmwasm/wasm/v1/contract/{address}/smart/{query_data}' _globals['_QUERY'].methods_by_name['Code']._loaded_options = None - _globals['_QUERY'].methods_by_name['Code']._serialized_options = b'\202\323\344\223\002\"\022 /cosmwasm/wasm/v1/code/{code_id}' + _globals['_QUERY'].methods_by_name['Code']._serialized_options = b'\210\347\260*\001\202\323\344\223\002\"\022 /cosmwasm/wasm/v1/code/{code_id}' _globals['_QUERY'].methods_by_name['Codes']._loaded_options = None - _globals['_QUERY'].methods_by_name['Codes']._serialized_options = b'\202\323\344\223\002\030\022\026/cosmwasm/wasm/v1/code' + _globals['_QUERY'].methods_by_name['Codes']._serialized_options = b'\210\347\260*\001\202\323\344\223\002\030\022\026/cosmwasm/wasm/v1/code' _globals['_QUERY'].methods_by_name['PinnedCodes']._loaded_options = None - _globals['_QUERY'].methods_by_name['PinnedCodes']._serialized_options = b'\202\323\344\223\002 \022\036/cosmwasm/wasm/v1/codes/pinned' + _globals['_QUERY'].methods_by_name['PinnedCodes']._serialized_options = b'\210\347\260*\001\202\323\344\223\002 \022\036/cosmwasm/wasm/v1/codes/pinned' _globals['_QUERY'].methods_by_name['Params']._loaded_options = None - _globals['_QUERY'].methods_by_name['Params']._serialized_options = b'\202\323\344\223\002 \022\036/cosmwasm/wasm/v1/codes/params' + _globals['_QUERY'].methods_by_name['Params']._serialized_options = b'\210\347\260*\001\202\323\344\223\002 \022\036/cosmwasm/wasm/v1/codes/params' _globals['_QUERY'].methods_by_name['ContractsByCreator']._loaded_options = None - _globals['_QUERY'].methods_by_name['ContractsByCreator']._serialized_options = b'\202\323\344\223\0027\0225/cosmwasm/wasm/v1/contracts/creator/{creator_address}' + _globals['_QUERY'].methods_by_name['ContractsByCreator']._serialized_options = b'\210\347\260*\001\202\323\344\223\0027\0225/cosmwasm/wasm/v1/contracts/creator/{creator_address}' _globals['_QUERY'].methods_by_name['BuildAddress']._loaded_options = None - _globals['_QUERY'].methods_by_name['BuildAddress']._serialized_options = b'\202\323\344\223\002*\022(/cosmwasm/wasm/v1/contract/build_address' - _globals['_QUERYCONTRACTINFOREQUEST']._serialized_start=222 - _globals['_QUERYCONTRACTINFOREQUEST']._serialized_end=300 - _globals['_QUERYCONTRACTINFORESPONSE']._serialized_start=303 - _globals['_QUERYCONTRACTINFORESPONSE']._serialized_end=476 - _globals['_QUERYCONTRACTHISTORYREQUEST']._serialized_start=479 - _globals['_QUERYCONTRACTHISTORYREQUEST']._serialized_end=632 - _globals['_QUERYCONTRACTHISTORYRESPONSE']._serialized_start=635 - _globals['_QUERYCONTRACTHISTORYRESPONSE']._serialized_end=819 - _globals['_QUERYCONTRACTSBYCODEREQUEST']._serialized_start=821 - _globals['_QUERYCONTRACTSBYCODEREQUEST']._serialized_end=947 - _globals['_QUERYCONTRACTSBYCODERESPONSE']._serialized_start=950 - _globals['_QUERYCONTRACTSBYCODERESPONSE']._serialized_end=1109 - _globals['_QUERYALLCONTRACTSTATEREQUEST']._serialized_start=1112 - _globals['_QUERYALLCONTRACTSTATEREQUEST']._serialized_end=1266 - _globals['_QUERYALLCONTRACTSTATERESPONSE']._serialized_start=1269 - _globals['_QUERYALLCONTRACTSTATERESPONSE']._serialized_end=1433 - _globals['_QUERYRAWCONTRACTSTATEREQUEST']._serialized_start=1435 - _globals['_QUERYRAWCONTRACTSTATEREQUEST']._serialized_end=1548 - _globals['_QUERYRAWCONTRACTSTATERESPONSE']._serialized_start=1550 - _globals['_QUERYRAWCONTRACTSTATERESPONSE']._serialized_end=1601 - _globals['_QUERYSMARTCONTRACTSTATEREQUEST']._serialized_start=1604 - _globals['_QUERYSMARTCONTRACTSTATEREQUEST']._serialized_end=1759 - _globals['_QUERYSMARTCONTRACTSTATERESPONSE']._serialized_start=1761 - _globals['_QUERYSMARTCONTRACTSTATERESPONSE']._serialized_end=1854 - _globals['_QUERYCODEREQUEST']._serialized_start=1856 - _globals['_QUERYCODEREQUEST']._serialized_end=1899 - _globals['_CODEINFORESPONSE']._serialized_start=1902 - _globals['_CODEINFORESPONSE']._serialized_end=2214 - _globals['_QUERYCODERESPONSE']._serialized_start=2217 - _globals['_QUERYCODERESPONSE']._serialized_end=2347 - _globals['_QUERYCODESREQUEST']._serialized_start=2349 - _globals['_QUERYCODESREQUEST']._serialized_end=2440 - _globals['_QUERYCODESRESPONSE']._serialized_start=2443 - _globals['_QUERYCODESRESPONSE']._serialized_end=2614 - _globals['_QUERYPINNEDCODESREQUEST']._serialized_start=2616 - _globals['_QUERYPINNEDCODESREQUEST']._serialized_end=2713 - _globals['_QUERYPINNEDCODESRESPONSE']._serialized_start=2716 - _globals['_QUERYPINNEDCODESRESPONSE']._serialized_end=2855 - _globals['_QUERYPARAMSREQUEST']._serialized_start=2857 - _globals['_QUERYPARAMSREQUEST']._serialized_end=2877 - _globals['_QUERYPARAMSRESPONSE']._serialized_start=2879 - _globals['_QUERYPARAMSRESPONSE']._serialized_end=2961 - _globals['_QUERYCONTRACTSBYCREATORREQUEST']._serialized_start=2964 - _globals['_QUERYCONTRACTSBYCREATORREQUEST']._serialized_end=3135 - _globals['_QUERYCONTRACTSBYCREATORRESPONSE']._serialized_start=3138 - _globals['_QUERYCONTRACTSBYCREATORRESPONSE']._serialized_end=3317 - _globals['_QUERYBUILDADDRESSREQUEST']._serialized_start=3320 - _globals['_QUERYBUILDADDRESSREQUEST']._serialized_end=3491 - _globals['_QUERYBUILDADDRESSRESPONSE']._serialized_start=3493 - _globals['_QUERYBUILDADDRESSRESPONSE']._serialized_end=3572 - _globals['_QUERY']._serialized_start=3575 - _globals['_QUERY']._serialized_end=5462 + _globals['_QUERY'].methods_by_name['BuildAddress']._serialized_options = b'\210\347\260*\001\202\323\344\223\002*\022(/cosmwasm/wasm/v1/contract/build_address' + _globals['_QUERYCONTRACTINFOREQUEST']._serialized_start=251 + _globals['_QUERYCONTRACTINFOREQUEST']._serialized_end=329 + _globals['_QUERYCONTRACTINFORESPONSE']._serialized_start=332 + _globals['_QUERYCONTRACTINFORESPONSE']._serialized_end=505 + _globals['_QUERYCONTRACTHISTORYREQUEST']._serialized_start=508 + _globals['_QUERYCONTRACTHISTORYREQUEST']._serialized_end=661 + _globals['_QUERYCONTRACTHISTORYRESPONSE']._serialized_start=664 + _globals['_QUERYCONTRACTHISTORYRESPONSE']._serialized_end=848 + _globals['_QUERYCONTRACTSBYCODEREQUEST']._serialized_start=850 + _globals['_QUERYCONTRACTSBYCODEREQUEST']._serialized_end=976 + _globals['_QUERYCONTRACTSBYCODERESPONSE']._serialized_start=979 + _globals['_QUERYCONTRACTSBYCODERESPONSE']._serialized_end=1138 + _globals['_QUERYALLCONTRACTSTATEREQUEST']._serialized_start=1141 + _globals['_QUERYALLCONTRACTSTATEREQUEST']._serialized_end=1295 + _globals['_QUERYALLCONTRACTSTATERESPONSE']._serialized_start=1298 + _globals['_QUERYALLCONTRACTSTATERESPONSE']._serialized_end=1462 + _globals['_QUERYRAWCONTRACTSTATEREQUEST']._serialized_start=1464 + _globals['_QUERYRAWCONTRACTSTATEREQUEST']._serialized_end=1577 + _globals['_QUERYRAWCONTRACTSTATERESPONSE']._serialized_start=1579 + _globals['_QUERYRAWCONTRACTSTATERESPONSE']._serialized_end=1630 + _globals['_QUERYSMARTCONTRACTSTATEREQUEST']._serialized_start=1633 + _globals['_QUERYSMARTCONTRACTSTATEREQUEST']._serialized_end=1788 + _globals['_QUERYSMARTCONTRACTSTATERESPONSE']._serialized_start=1790 + _globals['_QUERYSMARTCONTRACTSTATERESPONSE']._serialized_end=1883 + _globals['_QUERYCODEREQUEST']._serialized_start=1885 + _globals['_QUERYCODEREQUEST']._serialized_end=1928 + _globals['_CODEINFORESPONSE']._serialized_start=1931 + _globals['_CODEINFORESPONSE']._serialized_end=2243 + _globals['_QUERYCODERESPONSE']._serialized_start=2246 + _globals['_QUERYCODERESPONSE']._serialized_end=2376 + _globals['_QUERYCODESREQUEST']._serialized_start=2378 + _globals['_QUERYCODESREQUEST']._serialized_end=2469 + _globals['_QUERYCODESRESPONSE']._serialized_start=2472 + _globals['_QUERYCODESRESPONSE']._serialized_end=2643 + _globals['_QUERYPINNEDCODESREQUEST']._serialized_start=2645 + _globals['_QUERYPINNEDCODESREQUEST']._serialized_end=2742 + _globals['_QUERYPINNEDCODESRESPONSE']._serialized_start=2745 + _globals['_QUERYPINNEDCODESRESPONSE']._serialized_end=2884 + _globals['_QUERYPARAMSREQUEST']._serialized_start=2886 + _globals['_QUERYPARAMSREQUEST']._serialized_end=2906 + _globals['_QUERYPARAMSRESPONSE']._serialized_start=2908 + _globals['_QUERYPARAMSRESPONSE']._serialized_end=2990 + _globals['_QUERYCONTRACTSBYCREATORREQUEST']._serialized_start=2993 + _globals['_QUERYCONTRACTSBYCREATORREQUEST']._serialized_end=3164 + _globals['_QUERYCONTRACTSBYCREATORRESPONSE']._serialized_start=3167 + _globals['_QUERYCONTRACTSBYCREATORRESPONSE']._serialized_end=3346 + _globals['_QUERYBUILDADDRESSREQUEST']._serialized_start=3349 + _globals['_QUERYBUILDADDRESSREQUEST']._serialized_end=3520 + _globals['_QUERYBUILDADDRESSRESPONSE']._serialized_start=3522 + _globals['_QUERYBUILDADDRESSRESPONSE']._serialized_end=3601 + _globals['_QUERY']._serialized_start=3604 + _globals['_QUERY']._serialized_end=5552 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/auction/v1beta1/auction_pb2.py b/pyinjective/proto/injective/auction/v1beta1/auction_pb2.py index efdcbff9..394d1e17 100644 --- a/pyinjective/proto/injective/auction/v1beta1/auction_pb2.py +++ b/pyinjective/proto/injective/auction/v1beta1/auction_pb2.py @@ -17,7 +17,7 @@ from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'injective/auction/v1beta1/auction.proto\x12\x19injective.auction.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x11\x61mino/amino.proto\"\xab\x01\n\x06Params\x12%\n\x0e\x61uction_period\x18\x01 \x01(\x03R\rauctionPeriod\x12\x61\n\x1bmin_next_bid_increment_rate\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17minNextBidIncrementRate:\x17\xe8\xa0\x1f\x01\x8a\xe7\xb0*\x0e\x61uction/Params\"\x83\x01\n\x03\x42id\x12\x33\n\x06\x62idder\x18\x01 \x01(\tB\x1b\xea\xde\x1f\x06\x62idder\xf2\xde\x1f\ryaml:\"bidder\"R\x06\x62idder\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\"\x8a\x01\n\x11LastAuctionResult\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\x81\x01\n\x08\x45ventBid\x12\x16\n\x06\x62idder\x18\x01 \x01(\tR\x06\x62idder\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\x8b\x01\n\x12\x45ventAuctionResult\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\xc0\x01\n\x11\x45ventAuctionStart\x12\x14\n\x05round\x18\x01 \x01(\x04R\x05round\x12)\n\x10\x65nding_timestamp\x18\x02 \x01(\x03R\x0f\x65ndingTimestamp\x12j\n\nnew_basket\x18\x03 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\tnewBasketB\x82\x02\n\x1d\x63om.injective.auction.v1beta1B\x0c\x41uctionProtoP\x01ZMgithub.com/InjectiveLabs/injective-core/injective-chain/modules/auction/types\xa2\x02\x03IAX\xaa\x02\x19Injective.Auction.V1beta1\xca\x02\x19Injective\\Auction\\V1beta1\xe2\x02%Injective\\Auction\\V1beta1\\GPBMetadata\xea\x02\x1bInjective::Auction::V1beta1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'injective/auction/v1beta1/auction.proto\x12\x19injective.auction.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x11\x61mino/amino.proto\"\xf7\x01\n\x06Params\x12%\n\x0e\x61uction_period\x18\x01 \x01(\x03R\rauctionPeriod\x12\x61\n\x1bmin_next_bid_increment_rate\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17minNextBidIncrementRate\x12J\n\x12inj_basket_max_cap\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0finjBasketMaxCap:\x17\xe8\xa0\x1f\x01\x8a\xe7\xb0*\x0e\x61uction/Params\"\x83\x01\n\x03\x42id\x12\x33\n\x06\x62idder\x18\x01 \x01(\tB\x1b\xea\xde\x1f\x06\x62idder\xf2\xde\x1f\ryaml:\"bidder\"R\x06\x62idder\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\"\x8a\x01\n\x11LastAuctionResult\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\x81\x01\n\x08\x45ventBid\x12\x16\n\x06\x62idder\x18\x01 \x01(\tR\x06\x62idder\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\x8b\x01\n\x12\x45ventAuctionResult\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\xc0\x01\n\x11\x45ventAuctionStart\x12\x14\n\x05round\x18\x01 \x01(\x04R\x05round\x12)\n\x10\x65nding_timestamp\x18\x02 \x01(\x03R\x0f\x65ndingTimestamp\x12j\n\nnew_basket\x18\x03 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\tnewBasketB\x82\x02\n\x1d\x63om.injective.auction.v1beta1B\x0c\x41uctionProtoP\x01ZMgithub.com/InjectiveLabs/injective-core/injective-chain/modules/auction/types\xa2\x02\x03IAX\xaa\x02\x19Injective.Auction.V1beta1\xca\x02\x19Injective\\Auction\\V1beta1\xe2\x02%Injective\\Auction\\V1beta1\\GPBMetadata\xea\x02\x1bInjective::Auction::V1beta1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -27,6 +27,8 @@ _globals['DESCRIPTOR']._serialized_options = b'\n\035com.injective.auction.v1beta1B\014AuctionProtoP\001ZMgithub.com/InjectiveLabs/injective-core/injective-chain/modules/auction/types\242\002\003IAX\252\002\031Injective.Auction.V1beta1\312\002\031Injective\\Auction\\V1beta1\342\002%Injective\\Auction\\V1beta1\\GPBMetadata\352\002\033Injective::Auction::V1beta1' _globals['_PARAMS'].fields_by_name['min_next_bid_increment_rate']._loaded_options = None _globals['_PARAMS'].fields_by_name['min_next_bid_increment_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['inj_basket_max_cap']._loaded_options = None + _globals['_PARAMS'].fields_by_name['inj_basket_max_cap']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' _globals['_PARAMS']._loaded_options = None _globals['_PARAMS']._serialized_options = b'\350\240\037\001\212\347\260*\016auction/Params' _globals['_BID'].fields_by_name['bidder']._loaded_options = None @@ -42,15 +44,15 @@ _globals['_EVENTAUCTIONSTART'].fields_by_name['new_basket']._loaded_options = None _globals['_EVENTAUCTIONSTART'].fields_by_name['new_basket']._serialized_options = b'\310\336\037\000\252\337\037(github.com/cosmos/cosmos-sdk/types.Coins' _globals['_PARAMS']._serialized_start=144 - _globals['_PARAMS']._serialized_end=315 - _globals['_BID']._serialized_start=318 - _globals['_BID']._serialized_end=449 - _globals['_LASTAUCTIONRESULT']._serialized_start=452 - _globals['_LASTAUCTIONRESULT']._serialized_end=590 - _globals['_EVENTBID']._serialized_start=593 - _globals['_EVENTBID']._serialized_end=722 - _globals['_EVENTAUCTIONRESULT']._serialized_start=725 - _globals['_EVENTAUCTIONRESULT']._serialized_end=864 - _globals['_EVENTAUCTIONSTART']._serialized_start=867 - _globals['_EVENTAUCTIONSTART']._serialized_end=1059 + _globals['_PARAMS']._serialized_end=391 + _globals['_BID']._serialized_start=394 + _globals['_BID']._serialized_end=525 + _globals['_LASTAUCTIONRESULT']._serialized_start=528 + _globals['_LASTAUCTIONRESULT']._serialized_end=666 + _globals['_EVENTBID']._serialized_start=669 + _globals['_EVENTBID']._serialized_end=798 + _globals['_EVENTAUCTIONRESULT']._serialized_start=801 + _globals['_EVENTAUCTIONRESULT']._serialized_end=940 + _globals['_EVENTAUCTIONSTART']._serialized_start=943 + _globals['_EVENTAUCTIONSTART']._serialized_end=1135 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/auction/v1beta1/query_pb2.py b/pyinjective/proto/injective/auction/v1beta1/query_pb2.py index 32f38d46..c8f87434 100644 --- a/pyinjective/proto/injective/auction/v1beta1/query_pb2.py +++ b/pyinjective/proto/injective/auction/v1beta1/query_pb2.py @@ -19,7 +19,7 @@ from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as cosmos_dot_base_dot_v1beta1_dot_coin__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%injective/auction/v1beta1/query.proto\x12\x19injective.auction.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a\'injective/auction/v1beta1/auction.proto\x1a\'injective/auction/v1beta1/genesis.proto\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\"\x1b\n\x19QueryAuctionParamsRequest\"]\n\x1aQueryAuctionParamsResponse\x12?\n\x06params\x18\x01 \x01(\x0b\x32!.injective.auction.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06params\"\"\n QueryCurrentAuctionBasketRequest\"\xcd\x02\n!QueryCurrentAuctionBasketResponse\x12\x63\n\x06\x61mount\x18\x01 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x06\x61mount\x12\"\n\x0c\x61uctionRound\x18\x02 \x01(\x04R\x0c\x61uctionRound\x12.\n\x12\x61uctionClosingTime\x18\x03 \x01(\x03R\x12\x61uctionClosingTime\x12$\n\rhighestBidder\x18\x04 \x01(\tR\rhighestBidder\x12I\n\x10highestBidAmount\x18\x05 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10highestBidAmount\"\x19\n\x17QueryModuleStateRequest\"Y\n\x18QueryModuleStateResponse\x12=\n\x05state\x18\x01 \x01(\x0b\x32\'.injective.auction.v1beta1.GenesisStateR\x05state\"\x1f\n\x1dQueryLastAuctionResultRequest\"~\n\x1eQueryLastAuctionResultResponse\x12\\\n\x13last_auction_result\x18\x01 \x01(\x0b\x32,.injective.auction.v1beta1.LastAuctionResultR\x11lastAuctionResult2\xe4\x05\n\x05Query\x12\xa7\x01\n\rAuctionParams\x12\x34.injective.auction.v1beta1.QueryAuctionParamsRequest\x1a\x35.injective.auction.v1beta1.QueryAuctionParamsResponse\")\x82\xd3\xe4\x93\x02#\x12!/injective/auction/v1beta1/params\x12\xbc\x01\n\x14\x43urrentAuctionBasket\x12;.injective.auction.v1beta1.QueryCurrentAuctionBasketRequest\x1a<.injective.auction.v1beta1.QueryCurrentAuctionBasketResponse\")\x82\xd3\xe4\x93\x02#\x12!/injective/auction/v1beta1/basket\x12\xae\x01\n\x12\x41uctionModuleState\x12\x32.injective.auction.v1beta1.QueryModuleStateRequest\x1a\x33.injective.auction.v1beta1.QueryModuleStateResponse\"/\x82\xd3\xe4\x93\x02)\x12\'/injective/auction/v1beta1/module_state\x12\xc0\x01\n\x11LastAuctionResult\x12\x38.injective.auction.v1beta1.QueryLastAuctionResultRequest\x1a\x39.injective.auction.v1beta1.QueryLastAuctionResultResponse\"6\x82\xd3\xe4\x93\x02\x30\x12./injective/auction/v1beta1/last_auction_resultB\x80\x02\n\x1d\x63om.injective.auction.v1beta1B\nQueryProtoP\x01ZMgithub.com/InjectiveLabs/injective-core/injective-chain/modules/auction/types\xa2\x02\x03IAX\xaa\x02\x19Injective.Auction.V1beta1\xca\x02\x19Injective\\Auction\\V1beta1\xe2\x02%Injective\\Auction\\V1beta1\\GPBMetadata\xea\x02\x1bInjective::Auction::V1beta1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%injective/auction/v1beta1/query.proto\x12\x19injective.auction.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a\'injective/auction/v1beta1/auction.proto\x1a\'injective/auction/v1beta1/genesis.proto\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\"\x1b\n\x19QueryAuctionParamsRequest\"]\n\x1aQueryAuctionParamsResponse\x12?\n\x06params\x18\x01 \x01(\x0b\x32!.injective.auction.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06params\"\"\n QueryCurrentAuctionBasketRequest\"\xcd\x02\n!QueryCurrentAuctionBasketResponse\x12\x63\n\x06\x61mount\x18\x01 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x06\x61mount\x12\"\n\x0c\x61uctionRound\x18\x02 \x01(\x04R\x0c\x61uctionRound\x12.\n\x12\x61uctionClosingTime\x18\x03 \x01(\x04R\x12\x61uctionClosingTime\x12$\n\rhighestBidder\x18\x04 \x01(\tR\rhighestBidder\x12I\n\x10highestBidAmount\x18\x05 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10highestBidAmount\"\x19\n\x17QueryModuleStateRequest\"Y\n\x18QueryModuleStateResponse\x12=\n\x05state\x18\x01 \x01(\x0b\x32\'.injective.auction.v1beta1.GenesisStateR\x05state\"\x1f\n\x1dQueryLastAuctionResultRequest\"~\n\x1eQueryLastAuctionResultResponse\x12\\\n\x13last_auction_result\x18\x01 \x01(\x0b\x32,.injective.auction.v1beta1.LastAuctionResultR\x11lastAuctionResult2\xe4\x05\n\x05Query\x12\xa7\x01\n\rAuctionParams\x12\x34.injective.auction.v1beta1.QueryAuctionParamsRequest\x1a\x35.injective.auction.v1beta1.QueryAuctionParamsResponse\")\x82\xd3\xe4\x93\x02#\x12!/injective/auction/v1beta1/params\x12\xbc\x01\n\x14\x43urrentAuctionBasket\x12;.injective.auction.v1beta1.QueryCurrentAuctionBasketRequest\x1a<.injective.auction.v1beta1.QueryCurrentAuctionBasketResponse\")\x82\xd3\xe4\x93\x02#\x12!/injective/auction/v1beta1/basket\x12\xae\x01\n\x12\x41uctionModuleState\x12\x32.injective.auction.v1beta1.QueryModuleStateRequest\x1a\x33.injective.auction.v1beta1.QueryModuleStateResponse\"/\x82\xd3\xe4\x93\x02)\x12\'/injective/auction/v1beta1/module_state\x12\xc0\x01\n\x11LastAuctionResult\x12\x38.injective.auction.v1beta1.QueryLastAuctionResultRequest\x1a\x39.injective.auction.v1beta1.QueryLastAuctionResultResponse\"6\x82\xd3\xe4\x93\x02\x30\x12./injective/auction/v1beta1/last_auction_resultB\x80\x02\n\x1d\x63om.injective.auction.v1beta1B\nQueryProtoP\x01ZMgithub.com/InjectiveLabs/injective-core/injective-chain/modules/auction/types\xa2\x02\x03IAX\xaa\x02\x19Injective.Auction.V1beta1\xca\x02\x19Injective\\Auction\\V1beta1\xe2\x02%Injective\\Auction\\V1beta1\\GPBMetadata\xea\x02\x1bInjective::Auction::V1beta1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/pyinjective/proto/injective/exchange/v1beta1/exchange_pb2.py b/pyinjective/proto/injective/exchange/v1beta1/exchange_pb2.py index f837770f..de0fe292 100644 --- a/pyinjective/proto/injective/exchange/v1beta1/exchange_pb2.py +++ b/pyinjective/proto/injective/exchange/v1beta1/exchange_pb2.py @@ -18,7 +18,7 @@ from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)injective/exchange/v1beta1/exchange.proto\x12\x1ainjective.exchange.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x11\x61mino/amino.proto\"\xdd\x15\n\x06Params\x12\x65\n\x1fspot_market_instant_listing_fee\x18\x01 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x1bspotMarketInstantListingFee\x12q\n%derivative_market_instant_listing_fee\x18\x02 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R!derivativeMarketInstantListingFee\x12\x61\n\x1b\x64\x65\x66\x61ult_spot_maker_fee_rate\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17\x64\x65\x66\x61ultSpotMakerFeeRate\x12\x61\n\x1b\x64\x65\x66\x61ult_spot_taker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17\x64\x65\x66\x61ultSpotTakerFeeRate\x12m\n!default_derivative_maker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultDerivativeMakerFeeRate\x12m\n!default_derivative_taker_fee_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultDerivativeTakerFeeRate\x12\x64\n\x1c\x64\x65\x66\x61ult_initial_margin_ratio\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19\x64\x65\x66\x61ultInitialMarginRatio\x12l\n default_maintenance_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultMaintenanceMarginRatio\x12\x38\n\x18\x64\x65\x66\x61ult_funding_interval\x18\t \x01(\x03R\x16\x64\x65\x66\x61ultFundingInterval\x12)\n\x10\x66unding_multiple\x18\n \x01(\x03R\x0f\x66undingMultiple\x12X\n\x16relayer_fee_share_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12i\n\x1f\x64\x65\x66\x61ult_hourly_funding_rate_cap\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1b\x64\x65\x66\x61ultHourlyFundingRateCap\x12\x64\n\x1c\x64\x65\x66\x61ult_hourly_interest_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19\x64\x65\x66\x61ultHourlyInterestRate\x12\x44\n\x1fmax_derivative_order_side_count\x18\x0e \x01(\rR\x1bmaxDerivativeOrderSideCount\x12s\n\'inj_reward_staked_requirement_threshold\x18\x0f \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR#injRewardStakedRequirementThreshold\x12G\n trading_rewards_vesting_duration\x18\x10 \x01(\x03R\x1dtradingRewardsVestingDuration\x12\x64\n\x1cliquidator_reward_share_rate\x18\x11 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19liquidatorRewardShareRate\x12x\n)binary_options_market_instant_listing_fee\x18\x12 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R$binaryOptionsMarketInstantListingFee\x12\x80\x01\n atomic_market_order_access_level\x18\x13 \x01(\x0e\x32\x38.injective.exchange.v1beta1.AtomicMarketOrderAccessLevelR\x1c\x61tomicMarketOrderAccessLevel\x12x\n\'spot_atomic_market_order_fee_multiplier\x18\x14 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"spotAtomicMarketOrderFeeMultiplier\x12\x84\x01\n-derivative_atomic_market_order_fee_multiplier\x18\x15 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR(derivativeAtomicMarketOrderFeeMultiplier\x12\x8b\x01\n1binary_options_atomic_market_order_fee_multiplier\x18\x16 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR+binaryOptionsAtomicMarketOrderFeeMultiplier\x12^\n\x19minimal_protocol_fee_rate\x18\x17 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16minimalProtocolFeeRate\x12[\n+is_instant_derivative_market_launch_enabled\x18\x18 \x01(\x08R&isInstantDerivativeMarketLaunchEnabled\x12\x44\n\x1fpost_only_mode_height_threshold\x18\x19 \x01(\x03R\x1bpostOnlyModeHeightThreshold\x12g\n1margin_decrease_price_timestamp_threshold_seconds\x18\x1a \x01(\x03R,marginDecreasePriceTimestampThresholdSeconds\x12\'\n\x0f\x65xchange_admins\x18\x1b \x03(\tR\x0e\x65xchangeAdmins\x12L\n\x13inj_auction_max_cap\x18\x1c \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10injAuctionMaxCap:\x18\xe8\xa0\x1f\x01\x8a\xe7\xb0*\x0f\x65xchange/Params\"\x84\x01\n\x13MarketFeeMultiplier\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\x0e\x66\x65\x65_multiplier\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rfeeMultiplier:\x04\x88\xa0\x1f\x00\"\xec\x08\n\x10\x44\x65rivativeMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1f\n\x0boracle_base\x18\x02 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x03 \x01(\tR\x0boracleQuote\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x05 \x01(\rR\x11oracleScaleFactor\x12\x1f\n\x0bquote_denom\x18\x06 \x01(\tR\nquoteDenom\x12\x1b\n\tmarket_id\x18\x07 \x01(\tR\x08marketId\x12U\n\x14initial_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12 \n\x0bisPerpetual\x18\r \x01(\x08R\x0bisPerpetual\x12@\n\x06status\x18\x0e \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x11 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x14\n\x05\x61\x64min\x18\x12 \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\x13 \x01(\rR\x10\x61\x64minPermissions:\x04\x88\xa0\x1f\x00\"\xd7\x08\n\x13\x42inaryOptionsMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x02 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x03 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x05 \x01(\rR\x11oracleScaleFactor\x12\x31\n\x14\x65xpiration_timestamp\x18\x06 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\x07 \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\x08 \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\t \x01(\tR\nquoteDenom\x12\x1b\n\tmarket_id\x18\n \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12@\n\x06status\x18\x0e \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12N\n\x10settlement_price\x18\x11 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x46\n\x0cmin_notional\x18\x12 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12+\n\x11\x61\x64min_permissions\x18\x13 \x01(\rR\x10\x61\x64minPermissions:\x04\x88\xa0\x1f\x00\"\xe4\x02\n\x17\x45xpiryFuturesMarketInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x31\n\x14\x65xpiration_timestamp\x18\x02 \x01(\x03R\x13\x65xpirationTimestamp\x12\x30\n\x14twap_start_timestamp\x18\x03 \x01(\x03R\x12twapStartTimestamp\x12w\n&expiration_twap_start_price_cumulative\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"expirationTwapStartPriceCumulative\x12N\n\x10settlement_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\"\xc6\x02\n\x13PerpetualMarketInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12Z\n\x17hourly_funding_rate_cap\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x14hourlyFundingRateCap\x12U\n\x14hourly_interest_rate\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12hourlyInterestRate\x12\x34\n\x16next_funding_timestamp\x18\x04 \x01(\x03R\x14nextFundingTimestamp\x12)\n\x10\x66unding_interval\x18\x05 \x01(\x03R\x0f\x66undingInterval\"\xe3\x01\n\x16PerpetualMarketFunding\x12R\n\x12\x63umulative_funding\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x63umulativeFunding\x12N\n\x10\x63umulative_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x63umulativePrice\x12%\n\x0elast_timestamp\x18\x03 \x01(\x03R\rlastTimestamp\"\x8d\x01\n\x1e\x44\x65rivativeMarketSettlementInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\"=\n\x14NextFundingTimestamp\x12%\n\x0enext_timestamp\x18\x01 \x01(\x03R\rnextTimestamp\"\xea\x01\n\x0eMidPriceAndTOB\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"\xec\x05\n\nSpotMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x02 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12\x1b\n\tmarket_id\x18\x07 \x01(\tR\x08marketId\x12@\n\x06status\x18\x08 \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x14\n\x05\x61\x64min\x18\x0c \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\r \x01(\rR\x10\x61\x64minPermissions\"\xa5\x01\n\x07\x44\x65posit\x12P\n\x11\x61vailable_balance\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10\x61vailableBalance\x12H\n\rtotal_balance\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctotalBalance\",\n\x14SubaccountTradeNonce\x12\x14\n\x05nonce\x18\x01 \x01(\rR\x05nonce\"\xe3\x01\n\tOrderInfo\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12#\n\rfee_recipient\x18\x02 \x01(\tR\x0c\x66\x65\x65Recipient\x12\x39\n\x05price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id\"\x84\x02\n\tSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\norder_info\x18\x02 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x03 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12H\n\rtrigger_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\xcc\x02\n\x0eSpotLimitOrder\x12J\n\norder_info\x18\x01 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x02 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12?\n\x08\x66illable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12H\n\rtrigger_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\"\xd4\x02\n\x0fSpotMarketOrder\x12J\n\norder_info\x18\x01 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x46\n\x0c\x62\x61lance_hold\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\x12\x1d\n\norder_hash\x18\x03 \x01(\x0cR\torderHash\x12\x44\n\norder_type\x18\x04 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\xc7\x02\n\x0f\x44\x65rivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\norder_info\x18\x02 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x03 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12;\n\x06margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\xfc\x03\n\x1bSubaccountOrderbookMetadata\x12\x39\n\x19vanilla_limit_order_count\x18\x01 \x01(\rR\x16vanillaLimitOrderCount\x12@\n\x1dreduce_only_limit_order_count\x18\x02 \x01(\rR\x19reduceOnlyLimitOrderCount\x12h\n\x1e\x61ggregate_reduce_only_quantity\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1b\x61ggregateReduceOnlyQuantity\x12\x61\n\x1a\x61ggregate_vanilla_quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x18\x61ggregateVanillaQuantity\x12\x45\n\x1fvanilla_conditional_order_count\x18\x05 \x01(\rR\x1cvanillaConditionalOrderCount\x12L\n#reduce_only_conditional_order_count\x18\x06 \x01(\rR\x1freduceOnlyConditionalOrderCount\"\xc3\x01\n\x0fSubaccountOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\"\n\x0cisReduceOnly\x18\x03 \x01(\x08R\x0cisReduceOnly\x12\x10\n\x03\x63id\x18\x04 \x01(\tR\x03\x63id\"w\n\x13SubaccountOrderData\x12\x41\n\x05order\x18\x01 \x01(\x0b\x32+.injective.exchange.v1beta1.SubaccountOrderR\x05order\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\"\x8f\x03\n\x14\x44\x65rivativeLimitOrder\x12J\n\norder_info\x18\x01 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x02 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12?\n\x08\x66illable\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x06 \x01(\x0cR\torderHash\"\x95\x03\n\x15\x44\x65rivativeMarketOrder\x12J\n\norder_info\x18\x01 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x02 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12\x44\n\x0bmargin_hold\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nmarginHold\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x06 \x01(\x0cR\torderHash\"\xc5\x02\n\x08Position\x12\x16\n\x06isLong\x18\x01 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12;\n\x06margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12]\n\x18\x63umulative_funding_entry\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16\x63umulativeFundingEntry\"I\n\x14MarketOrderIndicator\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05isBuy\x18\x02 \x01(\x08R\x05isBuy\"\xcd\x02\n\x08TradeLog\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12#\n\rsubaccount_id\x18\x03 \x01(\x0cR\x0csubaccountId\x12\x35\n\x03\x66\x65\x65\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\x06 \x01(\x0c\x42\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\"\x9a\x02\n\rPositionDelta\x12\x17\n\x07is_long\x18\x01 \x01(\x08R\x06isLong\x12R\n\x12\x65xecution_quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x65xecutionQuantity\x12N\n\x10\x65xecution_margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x65xecutionMargin\x12L\n\x0f\x65xecution_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0e\x65xecutionPrice\"\xa1\x03\n\x12\x44\x65rivativeTradeLog\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12P\n\x0eposition_delta\x18\x02 \x01(\x0b\x32).injective.exchange.v1beta1.PositionDeltaR\rpositionDelta\x12;\n\x06payout\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout\x12\x35\n\x03\x66\x65\x65\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\x06 \x01(\x0c\x42\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\x12\x35\n\x03pnl\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03pnl\"{\n\x12SubaccountPosition\x12@\n\x08position\x18\x01 \x01(\x0b\x32$.injective.exchange.v1beta1.PositionR\x08position\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\"w\n\x11SubaccountDeposit\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12=\n\x07\x64\x65posit\x18\x02 \x01(\x0b\x32#.injective.exchange.v1beta1.DepositR\x07\x64\x65posit\"p\n\rDepositUpdate\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12I\n\x08\x64\x65posits\x18\x02 \x03(\x0b\x32-.injective.exchange.v1beta1.SubaccountDepositR\x08\x64\x65posits\"\xcc\x01\n\x10PointsMultiplier\x12[\n\x17maker_points_multiplier\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15makerPointsMultiplier\x12[\n\x17taker_points_multiplier\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15takerPointsMultiplier\"\xfe\x02\n\x1eTradingRewardCampaignBoostInfo\x12\x35\n\x17\x62oosted_spot_market_ids\x18\x01 \x03(\tR\x14\x62oostedSpotMarketIds\x12j\n\x17spot_market_multipliers\x18\x02 \x03(\x0b\x32,.injective.exchange.v1beta1.PointsMultiplierB\x04\xc8\xde\x1f\x00R\x15spotMarketMultipliers\x12\x41\n\x1d\x62oosted_derivative_market_ids\x18\x03 \x03(\tR\x1a\x62oostedDerivativeMarketIds\x12v\n\x1d\x64\x65rivative_market_multipliers\x18\x04 \x03(\x0b\x32,.injective.exchange.v1beta1.PointsMultiplierB\x04\xc8\xde\x1f\x00R\x1b\x64\x65rivativeMarketMultipliers\"\xbc\x01\n\x12\x43\x61mpaignRewardPool\x12\'\n\x0fstart_timestamp\x18\x01 \x01(\x03R\x0estartTimestamp\x12}\n\x14max_campaign_rewards\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x12maxCampaignRewards\"\xa9\x02\n\x19TradingRewardCampaignInfo\x12:\n\x19\x63\x61mpaign_duration_seconds\x18\x01 \x01(\x03R\x17\x63\x61mpaignDurationSeconds\x12!\n\x0cquote_denoms\x18\x02 \x03(\tR\x0bquoteDenoms\x12u\n\x19trading_reward_boost_info\x18\x03 \x01(\x0b\x32:.injective.exchange.v1beta1.TradingRewardCampaignBoostInfoR\x16tradingRewardBoostInfo\x12\x36\n\x17\x64isqualified_market_ids\x18\x04 \x03(\tR\x15\x64isqualifiedMarketIds\"\xc0\x02\n\x13\x46\x65\x65\x44iscountTierInfo\x12S\n\x13maker_discount_rate\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11makerDiscountRate\x12S\n\x13taker_discount_rate\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11takerDiscountRate\x12\x42\n\rstaked_amount\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0cstakedAmount\x12;\n\x06volume\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06volume\"\x8c\x02\n\x13\x46\x65\x65\x44iscountSchedule\x12!\n\x0c\x62ucket_count\x18\x01 \x01(\x04R\x0b\x62ucketCount\x12\'\n\x0f\x62ucket_duration\x18\x02 \x01(\x03R\x0e\x62ucketDuration\x12!\n\x0cquote_denoms\x18\x03 \x03(\tR\x0bquoteDenoms\x12N\n\ntier_infos\x18\x04 \x03(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountTierInfoR\ttierInfos\x12\x36\n\x17\x64isqualified_market_ids\x18\x05 \x03(\tR\x15\x64isqualifiedMarketIds\"M\n\x12\x46\x65\x65\x44iscountTierTTL\x12\x12\n\x04tier\x18\x01 \x01(\x04R\x04tier\x12#\n\rttl_timestamp\x18\x02 \x01(\x03R\x0cttlTimestamp\"\x9e\x01\n\x0cVolumeRecord\x12\x46\n\x0cmaker_volume\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bmakerVolume\x12\x46\n\x0ctaker_volume\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0btakerVolume\"\x91\x01\n\x0e\x41\x63\x63ountRewards\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x65\n\x07rewards\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x07rewards\"\x86\x01\n\x0cTradeRecords\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12Y\n\x14latest_trade_records\x18\x02 \x03(\x0b\x32\'.injective.exchange.v1beta1.TradeRecordR\x12latestTradeRecords\"6\n\rSubaccountIDs\x12%\n\x0esubaccount_ids\x18\x01 \x03(\x0cR\rsubaccountIds\"\xa7\x01\n\x0bTradeRecord\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\"m\n\x05Level\x12\x31\n\x01p\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01p\x12\x31\n\x01q\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01q\"\x97\x01\n\x1f\x41ggregateSubaccountVolumeRecord\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12O\n\x0emarket_volumes\x18\x02 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\rmarketVolumes\"\x89\x01\n\x1c\x41ggregateAccountVolumeRecord\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12O\n\x0emarket_volumes\x18\x02 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\rmarketVolumes\"s\n\x0cMarketVolume\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x46\n\x06volume\x18\x02 \x01(\x0b\x32(.injective.exchange.v1beta1.VolumeRecordB\x04\xc8\xde\x1f\x00R\x06volume\"A\n\rDenomDecimals\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x1a\n\x08\x64\x65\x63imals\x18\x02 \x01(\x04R\x08\x64\x65\x63imals\"e\n\x12GrantAuthorization\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x35\n\x06\x61mount\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"^\n\x0b\x41\x63tiveGrant\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x35\n\x06\x61mount\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"\x90\x01\n\x0e\x45\x66\x66\x65\x63tiveGrant\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12I\n\x11net_granted_stake\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0fnetGrantedStake\x12\x19\n\x08is_valid\x18\x03 \x01(\x08R\x07isValid*t\n\x1c\x41tomicMarketOrderAccessLevel\x12\n\n\x06Nobody\x10\x00\x12\"\n\x1e\x42\x65ginBlockerSmartContractsOnly\x10\x01\x12\x16\n\x12SmartContractsOnly\x10\x02\x12\x0c\n\x08\x45veryone\x10\x03*T\n\x0cMarketStatus\x12\x0f\n\x0bUnspecified\x10\x00\x12\n\n\x06\x41\x63tive\x10\x01\x12\n\n\x06Paused\x10\x02\x12\x0e\n\nDemolished\x10\x03\x12\x0b\n\x07\x45xpired\x10\x04*\xbb\x02\n\tOrderType\x12 \n\x0bUNSPECIFIED\x10\x00\x1a\x0f\x8a\x9d \x0bUNSPECIFIED\x12\x10\n\x03\x42UY\x10\x01\x1a\x07\x8a\x9d \x03\x42UY\x12\x12\n\x04SELL\x10\x02\x1a\x08\x8a\x9d \x04SELL\x12\x1a\n\x08STOP_BUY\x10\x03\x1a\x0c\x8a\x9d \x08STOP_BUY\x12\x1c\n\tSTOP_SELL\x10\x04\x1a\r\x8a\x9d \tSTOP_SELL\x12\x1a\n\x08TAKE_BUY\x10\x05\x1a\x0c\x8a\x9d \x08TAKE_BUY\x12\x1c\n\tTAKE_SELL\x10\x06\x1a\r\x8a\x9d \tTAKE_SELL\x12\x16\n\x06\x42UY_PO\x10\x07\x1a\n\x8a\x9d \x06\x42UY_PO\x12\x18\n\x07SELL_PO\x10\x08\x1a\x0b\x8a\x9d \x07SELL_PO\x12\x1e\n\nBUY_ATOMIC\x10\t\x1a\x0e\x8a\x9d \nBUY_ATOMIC\x12 \n\x0bSELL_ATOMIC\x10\n\x1a\x0f\x8a\x9d \x0bSELL_ATOMIC*\xaf\x01\n\rExecutionType\x12\x1c\n\x18UnspecifiedExecutionType\x10\x00\x12\n\n\x06Market\x10\x01\x12\r\n\tLimitFill\x10\x02\x12\x1a\n\x16LimitMatchRestingOrder\x10\x03\x12\x16\n\x12LimitMatchNewOrder\x10\x04\x12\x15\n\x11MarketLiquidation\x10\x05\x12\x1a\n\x16\x45xpiryMarketSettlement\x10\x06*\x89\x02\n\tOrderMask\x12\x16\n\x06UNUSED\x10\x00\x1a\n\x8a\x9d \x06UNUSED\x12\x10\n\x03\x41NY\x10\x01\x1a\x07\x8a\x9d \x03\x41NY\x12\x18\n\x07REGULAR\x10\x02\x1a\x0b\x8a\x9d \x07REGULAR\x12 \n\x0b\x43ONDITIONAL\x10\x04\x1a\x0f\x8a\x9d \x0b\x43ONDITIONAL\x12.\n\x17\x44IRECTION_BUY_OR_HIGHER\x10\x08\x1a\x11\x8a\x9d \rBUY_OR_HIGHER\x12.\n\x17\x44IRECTION_SELL_OR_LOWER\x10\x10\x1a\x11\x8a\x9d \rSELL_OR_LOWER\x12\x1b\n\x0bTYPE_MARKET\x10 \x1a\n\x8a\x9d \x06MARKET\x12\x19\n\nTYPE_LIMIT\x10@\x1a\t\x8a\x9d \x05LIMITB\x89\x02\n\x1e\x63om.injective.exchange.v1beta1B\rExchangeProtoP\x01ZNgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types\xa2\x02\x03IEX\xaa\x02\x1aInjective.Exchange.V1beta1\xca\x02\x1aInjective\\Exchange\\V1beta1\xe2\x02&Injective\\Exchange\\V1beta1\\GPBMetadata\xea\x02\x1cInjective::Exchange::V1beta1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)injective/exchange/v1beta1/exchange.proto\x12\x1ainjective.exchange.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x11\x61mino/amino.proto\"\xdd\x15\n\x06Params\x12\x65\n\x1fspot_market_instant_listing_fee\x18\x01 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x1bspotMarketInstantListingFee\x12q\n%derivative_market_instant_listing_fee\x18\x02 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R!derivativeMarketInstantListingFee\x12\x61\n\x1b\x64\x65\x66\x61ult_spot_maker_fee_rate\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17\x64\x65\x66\x61ultSpotMakerFeeRate\x12\x61\n\x1b\x64\x65\x66\x61ult_spot_taker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17\x64\x65\x66\x61ultSpotTakerFeeRate\x12m\n!default_derivative_maker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultDerivativeMakerFeeRate\x12m\n!default_derivative_taker_fee_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultDerivativeTakerFeeRate\x12\x64\n\x1c\x64\x65\x66\x61ult_initial_margin_ratio\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19\x64\x65\x66\x61ultInitialMarginRatio\x12l\n default_maintenance_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultMaintenanceMarginRatio\x12\x38\n\x18\x64\x65\x66\x61ult_funding_interval\x18\t \x01(\x03R\x16\x64\x65\x66\x61ultFundingInterval\x12)\n\x10\x66unding_multiple\x18\n \x01(\x03R\x0f\x66undingMultiple\x12X\n\x16relayer_fee_share_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12i\n\x1f\x64\x65\x66\x61ult_hourly_funding_rate_cap\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1b\x64\x65\x66\x61ultHourlyFundingRateCap\x12\x64\n\x1c\x64\x65\x66\x61ult_hourly_interest_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19\x64\x65\x66\x61ultHourlyInterestRate\x12\x44\n\x1fmax_derivative_order_side_count\x18\x0e \x01(\rR\x1bmaxDerivativeOrderSideCount\x12s\n\'inj_reward_staked_requirement_threshold\x18\x0f \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR#injRewardStakedRequirementThreshold\x12G\n trading_rewards_vesting_duration\x18\x10 \x01(\x03R\x1dtradingRewardsVestingDuration\x12\x64\n\x1cliquidator_reward_share_rate\x18\x11 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19liquidatorRewardShareRate\x12x\n)binary_options_market_instant_listing_fee\x18\x12 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R$binaryOptionsMarketInstantListingFee\x12\x80\x01\n atomic_market_order_access_level\x18\x13 \x01(\x0e\x32\x38.injective.exchange.v1beta1.AtomicMarketOrderAccessLevelR\x1c\x61tomicMarketOrderAccessLevel\x12x\n\'spot_atomic_market_order_fee_multiplier\x18\x14 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"spotAtomicMarketOrderFeeMultiplier\x12\x84\x01\n-derivative_atomic_market_order_fee_multiplier\x18\x15 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR(derivativeAtomicMarketOrderFeeMultiplier\x12\x8b\x01\n1binary_options_atomic_market_order_fee_multiplier\x18\x16 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR+binaryOptionsAtomicMarketOrderFeeMultiplier\x12^\n\x19minimal_protocol_fee_rate\x18\x17 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16minimalProtocolFeeRate\x12[\n+is_instant_derivative_market_launch_enabled\x18\x18 \x01(\x08R&isInstantDerivativeMarketLaunchEnabled\x12\x44\n\x1fpost_only_mode_height_threshold\x18\x19 \x01(\x03R\x1bpostOnlyModeHeightThreshold\x12g\n1margin_decrease_price_timestamp_threshold_seconds\x18\x1a \x01(\x03R,marginDecreasePriceTimestampThresholdSeconds\x12\'\n\x0f\x65xchange_admins\x18\x1b \x03(\tR\x0e\x65xchangeAdmins\x12L\n\x13inj_auction_max_cap\x18\x1c \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10injAuctionMaxCap:\x18\xe8\xa0\x1f\x01\x8a\xe7\xb0*\x0f\x65xchange/Params\"\x84\x01\n\x13MarketFeeMultiplier\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\x0e\x66\x65\x65_multiplier\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rfeeMultiplier:\x04\x88\xa0\x1f\x00\"\x93\t\n\x10\x44\x65rivativeMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1f\n\x0boracle_base\x18\x02 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x03 \x01(\tR\x0boracleQuote\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x05 \x01(\rR\x11oracleScaleFactor\x12\x1f\n\x0bquote_denom\x18\x06 \x01(\tR\nquoteDenom\x12\x1b\n\tmarket_id\x18\x07 \x01(\tR\x08marketId\x12U\n\x14initial_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12 \n\x0bisPerpetual\x18\r \x01(\x08R\x0bisPerpetual\x12@\n\x06status\x18\x0e \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x11 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x14\n\x05\x61\x64min\x18\x12 \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\x13 \x01(\rR\x10\x61\x64minPermissions\x12%\n\x0equote_decimals\x18\x14 \x01(\rR\rquoteDecimals:\x04\x88\xa0\x1f\x00\"\xfe\x08\n\x13\x42inaryOptionsMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x02 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x03 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x05 \x01(\rR\x11oracleScaleFactor\x12\x31\n\x14\x65xpiration_timestamp\x18\x06 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\x07 \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\x08 \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\t \x01(\tR\nquoteDenom\x12\x1b\n\tmarket_id\x18\n \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12@\n\x06status\x18\x0e \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12N\n\x10settlement_price\x18\x11 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x46\n\x0cmin_notional\x18\x12 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12+\n\x11\x61\x64min_permissions\x18\x13 \x01(\rR\x10\x61\x64minPermissions\x12%\n\x0equote_decimals\x18\x14 \x01(\rR\rquoteDecimals:\x04\x88\xa0\x1f\x00\"\xe4\x02\n\x17\x45xpiryFuturesMarketInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x31\n\x14\x65xpiration_timestamp\x18\x02 \x01(\x03R\x13\x65xpirationTimestamp\x12\x30\n\x14twap_start_timestamp\x18\x03 \x01(\x03R\x12twapStartTimestamp\x12w\n&expiration_twap_start_price_cumulative\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"expirationTwapStartPriceCumulative\x12N\n\x10settlement_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\"\xc6\x02\n\x13PerpetualMarketInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12Z\n\x17hourly_funding_rate_cap\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x14hourlyFundingRateCap\x12U\n\x14hourly_interest_rate\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12hourlyInterestRate\x12\x34\n\x16next_funding_timestamp\x18\x04 \x01(\x03R\x14nextFundingTimestamp\x12)\n\x10\x66unding_interval\x18\x05 \x01(\x03R\x0f\x66undingInterval\"\xe3\x01\n\x16PerpetualMarketFunding\x12R\n\x12\x63umulative_funding\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x63umulativeFunding\x12N\n\x10\x63umulative_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x63umulativePrice\x12%\n\x0elast_timestamp\x18\x03 \x01(\x03R\rlastTimestamp\"\x8d\x01\n\x1e\x44\x65rivativeMarketSettlementInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\"=\n\x14NextFundingTimestamp\x12%\n\x0enext_timestamp\x18\x01 \x01(\x03R\rnextTimestamp\"\xea\x01\n\x0eMidPriceAndTOB\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"\xb8\x06\n\nSpotMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x02 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12\x1b\n\tmarket_id\x18\x07 \x01(\tR\x08marketId\x12@\n\x06status\x18\x08 \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x14\n\x05\x61\x64min\x18\x0c \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\r \x01(\rR\x10\x61\x64minPermissions\x12#\n\rbase_decimals\x18\x0e \x01(\rR\x0c\x62\x61seDecimals\x12%\n\x0equote_decimals\x18\x0f \x01(\rR\rquoteDecimals\"\xa5\x01\n\x07\x44\x65posit\x12P\n\x11\x61vailable_balance\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10\x61vailableBalance\x12H\n\rtotal_balance\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctotalBalance\",\n\x14SubaccountTradeNonce\x12\x14\n\x05nonce\x18\x01 \x01(\rR\x05nonce\"\xe3\x01\n\tOrderInfo\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12#\n\rfee_recipient\x18\x02 \x01(\tR\x0c\x66\x65\x65Recipient\x12\x39\n\x05price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id\"\x84\x02\n\tSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\norder_info\x18\x02 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x03 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12H\n\rtrigger_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\xcc\x02\n\x0eSpotLimitOrder\x12J\n\norder_info\x18\x01 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x02 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12?\n\x08\x66illable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12H\n\rtrigger_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\"\xd4\x02\n\x0fSpotMarketOrder\x12J\n\norder_info\x18\x01 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x46\n\x0c\x62\x61lance_hold\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\x12\x1d\n\norder_hash\x18\x03 \x01(\x0cR\torderHash\x12\x44\n\norder_type\x18\x04 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\xc7\x02\n\x0f\x44\x65rivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\norder_info\x18\x02 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x03 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12;\n\x06margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\xfc\x03\n\x1bSubaccountOrderbookMetadata\x12\x39\n\x19vanilla_limit_order_count\x18\x01 \x01(\rR\x16vanillaLimitOrderCount\x12@\n\x1dreduce_only_limit_order_count\x18\x02 \x01(\rR\x19reduceOnlyLimitOrderCount\x12h\n\x1e\x61ggregate_reduce_only_quantity\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1b\x61ggregateReduceOnlyQuantity\x12\x61\n\x1a\x61ggregate_vanilla_quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x18\x61ggregateVanillaQuantity\x12\x45\n\x1fvanilla_conditional_order_count\x18\x05 \x01(\rR\x1cvanillaConditionalOrderCount\x12L\n#reduce_only_conditional_order_count\x18\x06 \x01(\rR\x1freduceOnlyConditionalOrderCount\"\xc3\x01\n\x0fSubaccountOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\"\n\x0cisReduceOnly\x18\x03 \x01(\x08R\x0cisReduceOnly\x12\x10\n\x03\x63id\x18\x04 \x01(\tR\x03\x63id\"w\n\x13SubaccountOrderData\x12\x41\n\x05order\x18\x01 \x01(\x0b\x32+.injective.exchange.v1beta1.SubaccountOrderR\x05order\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\"\x8f\x03\n\x14\x44\x65rivativeLimitOrder\x12J\n\norder_info\x18\x01 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x02 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12?\n\x08\x66illable\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x06 \x01(\x0cR\torderHash\"\x95\x03\n\x15\x44\x65rivativeMarketOrder\x12J\n\norder_info\x18\x01 \x01(\x0b\x32%.injective.exchange.v1beta1.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x44\n\norder_type\x18\x02 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderTypeR\torderType\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12\x44\n\x0bmargin_hold\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nmarginHold\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x06 \x01(\x0cR\torderHash\"\xc5\x02\n\x08Position\x12\x16\n\x06isLong\x18\x01 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12;\n\x06margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12]\n\x18\x63umulative_funding_entry\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16\x63umulativeFundingEntry\"I\n\x14MarketOrderIndicator\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05isBuy\x18\x02 \x01(\x08R\x05isBuy\"\xcd\x02\n\x08TradeLog\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12#\n\rsubaccount_id\x18\x03 \x01(\x0cR\x0csubaccountId\x12\x35\n\x03\x66\x65\x65\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\x06 \x01(\x0c\x42\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\"\x9a\x02\n\rPositionDelta\x12\x17\n\x07is_long\x18\x01 \x01(\x08R\x06isLong\x12R\n\x12\x65xecution_quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x65xecutionQuantity\x12N\n\x10\x65xecution_margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x65xecutionMargin\x12L\n\x0f\x65xecution_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0e\x65xecutionPrice\"\xa1\x03\n\x12\x44\x65rivativeTradeLog\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12P\n\x0eposition_delta\x18\x02 \x01(\x0b\x32).injective.exchange.v1beta1.PositionDeltaR\rpositionDelta\x12;\n\x06payout\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout\x12\x35\n\x03\x66\x65\x65\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\x06 \x01(\x0c\x42\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\x12\x35\n\x03pnl\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03pnl\"{\n\x12SubaccountPosition\x12@\n\x08position\x18\x01 \x01(\x0b\x32$.injective.exchange.v1beta1.PositionR\x08position\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\"w\n\x11SubaccountDeposit\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12=\n\x07\x64\x65posit\x18\x02 \x01(\x0b\x32#.injective.exchange.v1beta1.DepositR\x07\x64\x65posit\"p\n\rDepositUpdate\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12I\n\x08\x64\x65posits\x18\x02 \x03(\x0b\x32-.injective.exchange.v1beta1.SubaccountDepositR\x08\x64\x65posits\"\xcc\x01\n\x10PointsMultiplier\x12[\n\x17maker_points_multiplier\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15makerPointsMultiplier\x12[\n\x17taker_points_multiplier\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15takerPointsMultiplier\"\xfe\x02\n\x1eTradingRewardCampaignBoostInfo\x12\x35\n\x17\x62oosted_spot_market_ids\x18\x01 \x03(\tR\x14\x62oostedSpotMarketIds\x12j\n\x17spot_market_multipliers\x18\x02 \x03(\x0b\x32,.injective.exchange.v1beta1.PointsMultiplierB\x04\xc8\xde\x1f\x00R\x15spotMarketMultipliers\x12\x41\n\x1d\x62oosted_derivative_market_ids\x18\x03 \x03(\tR\x1a\x62oostedDerivativeMarketIds\x12v\n\x1d\x64\x65rivative_market_multipliers\x18\x04 \x03(\x0b\x32,.injective.exchange.v1beta1.PointsMultiplierB\x04\xc8\xde\x1f\x00R\x1b\x64\x65rivativeMarketMultipliers\"\xbc\x01\n\x12\x43\x61mpaignRewardPool\x12\'\n\x0fstart_timestamp\x18\x01 \x01(\x03R\x0estartTimestamp\x12}\n\x14max_campaign_rewards\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x12maxCampaignRewards\"\xa9\x02\n\x19TradingRewardCampaignInfo\x12:\n\x19\x63\x61mpaign_duration_seconds\x18\x01 \x01(\x03R\x17\x63\x61mpaignDurationSeconds\x12!\n\x0cquote_denoms\x18\x02 \x03(\tR\x0bquoteDenoms\x12u\n\x19trading_reward_boost_info\x18\x03 \x01(\x0b\x32:.injective.exchange.v1beta1.TradingRewardCampaignBoostInfoR\x16tradingRewardBoostInfo\x12\x36\n\x17\x64isqualified_market_ids\x18\x04 \x03(\tR\x15\x64isqualifiedMarketIds\"\xc0\x02\n\x13\x46\x65\x65\x44iscountTierInfo\x12S\n\x13maker_discount_rate\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11makerDiscountRate\x12S\n\x13taker_discount_rate\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11takerDiscountRate\x12\x42\n\rstaked_amount\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0cstakedAmount\x12;\n\x06volume\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06volume\"\x8c\x02\n\x13\x46\x65\x65\x44iscountSchedule\x12!\n\x0c\x62ucket_count\x18\x01 \x01(\x04R\x0b\x62ucketCount\x12\'\n\x0f\x62ucket_duration\x18\x02 \x01(\x03R\x0e\x62ucketDuration\x12!\n\x0cquote_denoms\x18\x03 \x03(\tR\x0bquoteDenoms\x12N\n\ntier_infos\x18\x04 \x03(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountTierInfoR\ttierInfos\x12\x36\n\x17\x64isqualified_market_ids\x18\x05 \x03(\tR\x15\x64isqualifiedMarketIds\"M\n\x12\x46\x65\x65\x44iscountTierTTL\x12\x12\n\x04tier\x18\x01 \x01(\x04R\x04tier\x12#\n\rttl_timestamp\x18\x02 \x01(\x03R\x0cttlTimestamp\"\x9e\x01\n\x0cVolumeRecord\x12\x46\n\x0cmaker_volume\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bmakerVolume\x12\x46\n\x0ctaker_volume\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0btakerVolume\"\x91\x01\n\x0e\x41\x63\x63ountRewards\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x65\n\x07rewards\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x07rewards\"\x86\x01\n\x0cTradeRecords\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12Y\n\x14latest_trade_records\x18\x02 \x03(\x0b\x32\'.injective.exchange.v1beta1.TradeRecordR\x12latestTradeRecords\"6\n\rSubaccountIDs\x12%\n\x0esubaccount_ids\x18\x01 \x03(\x0cR\rsubaccountIds\"\xa7\x01\n\x0bTradeRecord\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\"m\n\x05Level\x12\x31\n\x01p\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01p\x12\x31\n\x01q\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01q\"\x97\x01\n\x1f\x41ggregateSubaccountVolumeRecord\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12O\n\x0emarket_volumes\x18\x02 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\rmarketVolumes\"\x89\x01\n\x1c\x41ggregateAccountVolumeRecord\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12O\n\x0emarket_volumes\x18\x02 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\rmarketVolumes\"s\n\x0cMarketVolume\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x46\n\x06volume\x18\x02 \x01(\x0b\x32(.injective.exchange.v1beta1.VolumeRecordB\x04\xc8\xde\x1f\x00R\x06volume\"A\n\rDenomDecimals\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x1a\n\x08\x64\x65\x63imals\x18\x02 \x01(\x04R\x08\x64\x65\x63imals\"e\n\x12GrantAuthorization\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x35\n\x06\x61mount\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"^\n\x0b\x41\x63tiveGrant\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x35\n\x06\x61mount\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"\x90\x01\n\x0e\x45\x66\x66\x65\x63tiveGrant\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12I\n\x11net_granted_stake\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0fnetGrantedStake\x12\x19\n\x08is_valid\x18\x03 \x01(\x08R\x07isValid*t\n\x1c\x41tomicMarketOrderAccessLevel\x12\n\n\x06Nobody\x10\x00\x12\"\n\x1e\x42\x65ginBlockerSmartContractsOnly\x10\x01\x12\x16\n\x12SmartContractsOnly\x10\x02\x12\x0c\n\x08\x45veryone\x10\x03*T\n\x0cMarketStatus\x12\x0f\n\x0bUnspecified\x10\x00\x12\n\n\x06\x41\x63tive\x10\x01\x12\n\n\x06Paused\x10\x02\x12\x0e\n\nDemolished\x10\x03\x12\x0b\n\x07\x45xpired\x10\x04*\xbb\x02\n\tOrderType\x12 \n\x0bUNSPECIFIED\x10\x00\x1a\x0f\x8a\x9d \x0bUNSPECIFIED\x12\x10\n\x03\x42UY\x10\x01\x1a\x07\x8a\x9d \x03\x42UY\x12\x12\n\x04SELL\x10\x02\x1a\x08\x8a\x9d \x04SELL\x12\x1a\n\x08STOP_BUY\x10\x03\x1a\x0c\x8a\x9d \x08STOP_BUY\x12\x1c\n\tSTOP_SELL\x10\x04\x1a\r\x8a\x9d \tSTOP_SELL\x12\x1a\n\x08TAKE_BUY\x10\x05\x1a\x0c\x8a\x9d \x08TAKE_BUY\x12\x1c\n\tTAKE_SELL\x10\x06\x1a\r\x8a\x9d \tTAKE_SELL\x12\x16\n\x06\x42UY_PO\x10\x07\x1a\n\x8a\x9d \x06\x42UY_PO\x12\x18\n\x07SELL_PO\x10\x08\x1a\x0b\x8a\x9d \x07SELL_PO\x12\x1e\n\nBUY_ATOMIC\x10\t\x1a\x0e\x8a\x9d \nBUY_ATOMIC\x12 \n\x0bSELL_ATOMIC\x10\n\x1a\x0f\x8a\x9d \x0bSELL_ATOMIC*\xaf\x01\n\rExecutionType\x12\x1c\n\x18UnspecifiedExecutionType\x10\x00\x12\n\n\x06Market\x10\x01\x12\r\n\tLimitFill\x10\x02\x12\x1a\n\x16LimitMatchRestingOrder\x10\x03\x12\x16\n\x12LimitMatchNewOrder\x10\x04\x12\x15\n\x11MarketLiquidation\x10\x05\x12\x1a\n\x16\x45xpiryMarketSettlement\x10\x06*\x89\x02\n\tOrderMask\x12\x16\n\x06UNUSED\x10\x00\x1a\n\x8a\x9d \x06UNUSED\x12\x10\n\x03\x41NY\x10\x01\x1a\x07\x8a\x9d \x03\x41NY\x12\x18\n\x07REGULAR\x10\x02\x1a\x0b\x8a\x9d \x07REGULAR\x12 \n\x0b\x43ONDITIONAL\x10\x04\x1a\x0f\x8a\x9d \x0b\x43ONDITIONAL\x12.\n\x17\x44IRECTION_BUY_OR_HIGHER\x10\x08\x1a\x11\x8a\x9d \rBUY_OR_HIGHER\x12.\n\x17\x44IRECTION_SELL_OR_LOWER\x10\x10\x1a\x11\x8a\x9d \rSELL_OR_LOWER\x12\x1b\n\x0bTYPE_MARKET\x10 \x1a\n\x8a\x9d \x06MARKET\x12\x19\n\nTYPE_LIMIT\x10@\x1a\t\x8a\x9d \x05LIMITB\x89\x02\n\x1e\x63om.injective.exchange.v1beta1B\rExchangeProtoP\x01ZNgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types\xa2\x02\x03IEX\xaa\x02\x1aInjective.Exchange.V1beta1\xca\x02\x1aInjective\\Exchange\\V1beta1\xe2\x02&Injective\\Exchange\\V1beta1\\GPBMetadata\xea\x02\x1cInjective::Exchange::V1beta1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -298,116 +298,116 @@ _globals['_ACTIVEGRANT'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' _globals['_EFFECTIVEGRANT'].fields_by_name['net_granted_stake']._loaded_options = None _globals['_EFFECTIVEGRANT'].fields_by_name['net_granted_stake']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' - _globals['_ATOMICMARKETORDERACCESSLEVEL']._serialized_start=15988 - _globals['_ATOMICMARKETORDERACCESSLEVEL']._serialized_end=16104 - _globals['_MARKETSTATUS']._serialized_start=16106 - _globals['_MARKETSTATUS']._serialized_end=16190 - _globals['_ORDERTYPE']._serialized_start=16193 - _globals['_ORDERTYPE']._serialized_end=16508 - _globals['_EXECUTIONTYPE']._serialized_start=16511 - _globals['_EXECUTIONTYPE']._serialized_end=16686 - _globals['_ORDERMASK']._serialized_start=16689 - _globals['_ORDERMASK']._serialized_end=16954 + _globals['_ATOMICMARKETORDERACCESSLEVEL']._serialized_start=16142 + _globals['_ATOMICMARKETORDERACCESSLEVEL']._serialized_end=16258 + _globals['_MARKETSTATUS']._serialized_start=16260 + _globals['_MARKETSTATUS']._serialized_end=16344 + _globals['_ORDERTYPE']._serialized_start=16347 + _globals['_ORDERTYPE']._serialized_end=16662 + _globals['_EXECUTIONTYPE']._serialized_start=16665 + _globals['_EXECUTIONTYPE']._serialized_end=16840 + _globals['_ORDERMASK']._serialized_start=16843 + _globals['_ORDERMASK']._serialized_end=17108 _globals['_PARAMS']._serialized_start=186 _globals['_PARAMS']._serialized_end=2967 _globals['_MARKETFEEMULTIPLIER']._serialized_start=2970 _globals['_MARKETFEEMULTIPLIER']._serialized_end=3102 _globals['_DERIVATIVEMARKET']._serialized_start=3105 - _globals['_DERIVATIVEMARKET']._serialized_end=4237 - _globals['_BINARYOPTIONSMARKET']._serialized_start=4240 - _globals['_BINARYOPTIONSMARKET']._serialized_end=5351 - _globals['_EXPIRYFUTURESMARKETINFO']._serialized_start=5354 - _globals['_EXPIRYFUTURESMARKETINFO']._serialized_end=5710 - _globals['_PERPETUALMARKETINFO']._serialized_start=5713 - _globals['_PERPETUALMARKETINFO']._serialized_end=6039 - _globals['_PERPETUALMARKETFUNDING']._serialized_start=6042 - _globals['_PERPETUALMARKETFUNDING']._serialized_end=6269 - _globals['_DERIVATIVEMARKETSETTLEMENTINFO']._serialized_start=6272 - _globals['_DERIVATIVEMARKETSETTLEMENTINFO']._serialized_end=6413 - _globals['_NEXTFUNDINGTIMESTAMP']._serialized_start=6415 - _globals['_NEXTFUNDINGTIMESTAMP']._serialized_end=6476 - _globals['_MIDPRICEANDTOB']._serialized_start=6479 - _globals['_MIDPRICEANDTOB']._serialized_end=6713 - _globals['_SPOTMARKET']._serialized_start=6716 - _globals['_SPOTMARKET']._serialized_end=7464 - _globals['_DEPOSIT']._serialized_start=7467 - _globals['_DEPOSIT']._serialized_end=7632 - _globals['_SUBACCOUNTTRADENONCE']._serialized_start=7634 - _globals['_SUBACCOUNTTRADENONCE']._serialized_end=7678 - _globals['_ORDERINFO']._serialized_start=7681 - _globals['_ORDERINFO']._serialized_end=7908 - _globals['_SPOTORDER']._serialized_start=7911 - _globals['_SPOTORDER']._serialized_end=8171 - _globals['_SPOTLIMITORDER']._serialized_start=8174 - _globals['_SPOTLIMITORDER']._serialized_end=8506 - _globals['_SPOTMARKETORDER']._serialized_start=8509 - _globals['_SPOTMARKETORDER']._serialized_end=8849 - _globals['_DERIVATIVEORDER']._serialized_start=8852 - _globals['_DERIVATIVEORDER']._serialized_end=9179 - _globals['_SUBACCOUNTORDERBOOKMETADATA']._serialized_start=9182 - _globals['_SUBACCOUNTORDERBOOKMETADATA']._serialized_end=9690 - _globals['_SUBACCOUNTORDER']._serialized_start=9693 - _globals['_SUBACCOUNTORDER']._serialized_end=9888 - _globals['_SUBACCOUNTORDERDATA']._serialized_start=9890 - _globals['_SUBACCOUNTORDERDATA']._serialized_end=10009 - _globals['_DERIVATIVELIMITORDER']._serialized_start=10012 - _globals['_DERIVATIVELIMITORDER']._serialized_end=10411 - _globals['_DERIVATIVEMARKETORDER']._serialized_start=10414 - _globals['_DERIVATIVEMARKETORDER']._serialized_end=10819 - _globals['_POSITION']._serialized_start=10822 - _globals['_POSITION']._serialized_end=11147 - _globals['_MARKETORDERINDICATOR']._serialized_start=11149 - _globals['_MARKETORDERINDICATOR']._serialized_end=11222 - _globals['_TRADELOG']._serialized_start=11225 - _globals['_TRADELOG']._serialized_end=11558 - _globals['_POSITIONDELTA']._serialized_start=11561 - _globals['_POSITIONDELTA']._serialized_end=11843 - _globals['_DERIVATIVETRADELOG']._serialized_start=11846 - _globals['_DERIVATIVETRADELOG']._serialized_end=12263 - _globals['_SUBACCOUNTPOSITION']._serialized_start=12265 - _globals['_SUBACCOUNTPOSITION']._serialized_end=12388 - _globals['_SUBACCOUNTDEPOSIT']._serialized_start=12390 - _globals['_SUBACCOUNTDEPOSIT']._serialized_end=12509 - _globals['_DEPOSITUPDATE']._serialized_start=12511 - _globals['_DEPOSITUPDATE']._serialized_end=12623 - _globals['_POINTSMULTIPLIER']._serialized_start=12626 - _globals['_POINTSMULTIPLIER']._serialized_end=12830 - _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO']._serialized_start=12833 - _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO']._serialized_end=13215 - _globals['_CAMPAIGNREWARDPOOL']._serialized_start=13218 - _globals['_CAMPAIGNREWARDPOOL']._serialized_end=13406 - _globals['_TRADINGREWARDCAMPAIGNINFO']._serialized_start=13409 - _globals['_TRADINGREWARDCAMPAIGNINFO']._serialized_end=13706 - _globals['_FEEDISCOUNTTIERINFO']._serialized_start=13709 - _globals['_FEEDISCOUNTTIERINFO']._serialized_end=14029 - _globals['_FEEDISCOUNTSCHEDULE']._serialized_start=14032 - _globals['_FEEDISCOUNTSCHEDULE']._serialized_end=14300 - _globals['_FEEDISCOUNTTIERTTL']._serialized_start=14302 - _globals['_FEEDISCOUNTTIERTTL']._serialized_end=14379 - _globals['_VOLUMERECORD']._serialized_start=14382 - _globals['_VOLUMERECORD']._serialized_end=14540 - _globals['_ACCOUNTREWARDS']._serialized_start=14543 - _globals['_ACCOUNTREWARDS']._serialized_end=14688 - _globals['_TRADERECORDS']._serialized_start=14691 - _globals['_TRADERECORDS']._serialized_end=14825 - _globals['_SUBACCOUNTIDS']._serialized_start=14827 - _globals['_SUBACCOUNTIDS']._serialized_end=14881 - _globals['_TRADERECORD']._serialized_start=14884 - _globals['_TRADERECORD']._serialized_end=15051 - _globals['_LEVEL']._serialized_start=15053 - _globals['_LEVEL']._serialized_end=15162 - _globals['_AGGREGATESUBACCOUNTVOLUMERECORD']._serialized_start=15165 - _globals['_AGGREGATESUBACCOUNTVOLUMERECORD']._serialized_end=15316 - _globals['_AGGREGATEACCOUNTVOLUMERECORD']._serialized_start=15319 - _globals['_AGGREGATEACCOUNTVOLUMERECORD']._serialized_end=15456 - _globals['_MARKETVOLUME']._serialized_start=15458 - _globals['_MARKETVOLUME']._serialized_end=15573 - _globals['_DENOMDECIMALS']._serialized_start=15575 - _globals['_DENOMDECIMALS']._serialized_end=15640 - _globals['_GRANTAUTHORIZATION']._serialized_start=15642 - _globals['_GRANTAUTHORIZATION']._serialized_end=15743 - _globals['_ACTIVEGRANT']._serialized_start=15745 - _globals['_ACTIVEGRANT']._serialized_end=15839 - _globals['_EFFECTIVEGRANT']._serialized_start=15842 - _globals['_EFFECTIVEGRANT']._serialized_end=15986 + _globals['_DERIVATIVEMARKET']._serialized_end=4276 + _globals['_BINARYOPTIONSMARKET']._serialized_start=4279 + _globals['_BINARYOPTIONSMARKET']._serialized_end=5429 + _globals['_EXPIRYFUTURESMARKETINFO']._serialized_start=5432 + _globals['_EXPIRYFUTURESMARKETINFO']._serialized_end=5788 + _globals['_PERPETUALMARKETINFO']._serialized_start=5791 + _globals['_PERPETUALMARKETINFO']._serialized_end=6117 + _globals['_PERPETUALMARKETFUNDING']._serialized_start=6120 + _globals['_PERPETUALMARKETFUNDING']._serialized_end=6347 + _globals['_DERIVATIVEMARKETSETTLEMENTINFO']._serialized_start=6350 + _globals['_DERIVATIVEMARKETSETTLEMENTINFO']._serialized_end=6491 + _globals['_NEXTFUNDINGTIMESTAMP']._serialized_start=6493 + _globals['_NEXTFUNDINGTIMESTAMP']._serialized_end=6554 + _globals['_MIDPRICEANDTOB']._serialized_start=6557 + _globals['_MIDPRICEANDTOB']._serialized_end=6791 + _globals['_SPOTMARKET']._serialized_start=6794 + _globals['_SPOTMARKET']._serialized_end=7618 + _globals['_DEPOSIT']._serialized_start=7621 + _globals['_DEPOSIT']._serialized_end=7786 + _globals['_SUBACCOUNTTRADENONCE']._serialized_start=7788 + _globals['_SUBACCOUNTTRADENONCE']._serialized_end=7832 + _globals['_ORDERINFO']._serialized_start=7835 + _globals['_ORDERINFO']._serialized_end=8062 + _globals['_SPOTORDER']._serialized_start=8065 + _globals['_SPOTORDER']._serialized_end=8325 + _globals['_SPOTLIMITORDER']._serialized_start=8328 + _globals['_SPOTLIMITORDER']._serialized_end=8660 + _globals['_SPOTMARKETORDER']._serialized_start=8663 + _globals['_SPOTMARKETORDER']._serialized_end=9003 + _globals['_DERIVATIVEORDER']._serialized_start=9006 + _globals['_DERIVATIVEORDER']._serialized_end=9333 + _globals['_SUBACCOUNTORDERBOOKMETADATA']._serialized_start=9336 + _globals['_SUBACCOUNTORDERBOOKMETADATA']._serialized_end=9844 + _globals['_SUBACCOUNTORDER']._serialized_start=9847 + _globals['_SUBACCOUNTORDER']._serialized_end=10042 + _globals['_SUBACCOUNTORDERDATA']._serialized_start=10044 + _globals['_SUBACCOUNTORDERDATA']._serialized_end=10163 + _globals['_DERIVATIVELIMITORDER']._serialized_start=10166 + _globals['_DERIVATIVELIMITORDER']._serialized_end=10565 + _globals['_DERIVATIVEMARKETORDER']._serialized_start=10568 + _globals['_DERIVATIVEMARKETORDER']._serialized_end=10973 + _globals['_POSITION']._serialized_start=10976 + _globals['_POSITION']._serialized_end=11301 + _globals['_MARKETORDERINDICATOR']._serialized_start=11303 + _globals['_MARKETORDERINDICATOR']._serialized_end=11376 + _globals['_TRADELOG']._serialized_start=11379 + _globals['_TRADELOG']._serialized_end=11712 + _globals['_POSITIONDELTA']._serialized_start=11715 + _globals['_POSITIONDELTA']._serialized_end=11997 + _globals['_DERIVATIVETRADELOG']._serialized_start=12000 + _globals['_DERIVATIVETRADELOG']._serialized_end=12417 + _globals['_SUBACCOUNTPOSITION']._serialized_start=12419 + _globals['_SUBACCOUNTPOSITION']._serialized_end=12542 + _globals['_SUBACCOUNTDEPOSIT']._serialized_start=12544 + _globals['_SUBACCOUNTDEPOSIT']._serialized_end=12663 + _globals['_DEPOSITUPDATE']._serialized_start=12665 + _globals['_DEPOSITUPDATE']._serialized_end=12777 + _globals['_POINTSMULTIPLIER']._serialized_start=12780 + _globals['_POINTSMULTIPLIER']._serialized_end=12984 + _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO']._serialized_start=12987 + _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO']._serialized_end=13369 + _globals['_CAMPAIGNREWARDPOOL']._serialized_start=13372 + _globals['_CAMPAIGNREWARDPOOL']._serialized_end=13560 + _globals['_TRADINGREWARDCAMPAIGNINFO']._serialized_start=13563 + _globals['_TRADINGREWARDCAMPAIGNINFO']._serialized_end=13860 + _globals['_FEEDISCOUNTTIERINFO']._serialized_start=13863 + _globals['_FEEDISCOUNTTIERINFO']._serialized_end=14183 + _globals['_FEEDISCOUNTSCHEDULE']._serialized_start=14186 + _globals['_FEEDISCOUNTSCHEDULE']._serialized_end=14454 + _globals['_FEEDISCOUNTTIERTTL']._serialized_start=14456 + _globals['_FEEDISCOUNTTIERTTL']._serialized_end=14533 + _globals['_VOLUMERECORD']._serialized_start=14536 + _globals['_VOLUMERECORD']._serialized_end=14694 + _globals['_ACCOUNTREWARDS']._serialized_start=14697 + _globals['_ACCOUNTREWARDS']._serialized_end=14842 + _globals['_TRADERECORDS']._serialized_start=14845 + _globals['_TRADERECORDS']._serialized_end=14979 + _globals['_SUBACCOUNTIDS']._serialized_start=14981 + _globals['_SUBACCOUNTIDS']._serialized_end=15035 + _globals['_TRADERECORD']._serialized_start=15038 + _globals['_TRADERECORD']._serialized_end=15205 + _globals['_LEVEL']._serialized_start=15207 + _globals['_LEVEL']._serialized_end=15316 + _globals['_AGGREGATESUBACCOUNTVOLUMERECORD']._serialized_start=15319 + _globals['_AGGREGATESUBACCOUNTVOLUMERECORD']._serialized_end=15470 + _globals['_AGGREGATEACCOUNTVOLUMERECORD']._serialized_start=15473 + _globals['_AGGREGATEACCOUNTVOLUMERECORD']._serialized_end=15610 + _globals['_MARKETVOLUME']._serialized_start=15612 + _globals['_MARKETVOLUME']._serialized_end=15727 + _globals['_DENOMDECIMALS']._serialized_start=15729 + _globals['_DENOMDECIMALS']._serialized_end=15794 + _globals['_GRANTAUTHORIZATION']._serialized_start=15796 + _globals['_GRANTAUTHORIZATION']._serialized_end=15897 + _globals['_ACTIVEGRANT']._serialized_start=15899 + _globals['_ACTIVEGRANT']._serialized_end=15993 + _globals['_EFFECTIVEGRANT']._serialized_start=15996 + _globals['_EFFECTIVEGRANT']._serialized_end=16140 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v1beta1/proposal_pb2.py b/pyinjective/proto/injective/exchange/v1beta1/proposal_pb2.py index 962502a2..6d44d878 100644 --- a/pyinjective/proto/injective/exchange/v1beta1/proposal_pb2.py +++ b/pyinjective/proto/injective/exchange/v1beta1/proposal_pb2.py @@ -22,7 +22,7 @@ from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)injective/exchange/v1beta1/proposal.proto\x12\x1ainjective.exchange.v1beta1\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a.cosmos/distribution/v1beta1/distribution.proto\x1a\x17\x63osmos/msg/v1/msg.proto\x1a\x19\x63osmos_proto/cosmos.proto\x1a\x14gogoproto/gogo.proto\x1a)injective/exchange/v1beta1/exchange.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x11\x61mino/amino.proto\"\xd3\x06\n\x1dSpotMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12@\n\x06status\x18\t \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12\x1c\n\x06ticker\x18\n \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x0c \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo:Q\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*&exchange/SpotMarketParamUpdateProposal\"\xcc\x01\n\x16\x45xchangeEnableProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12L\n\x0c\x65xchangeType\x18\x03 \x01(\x0e\x32(.injective.exchange.v1beta1.ExchangeTypeR\x0c\x65xchangeType:,\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x8a\xe7\xb0*\x1f\x65xchange/ExchangeEnableProposal\"\x96\r\n!BatchExchangeModificationProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x85\x01\n\"spot_market_param_update_proposals\x18\x03 \x03(\x0b\x32\x39.injective.exchange.v1beta1.SpotMarketParamUpdateProposalR\x1espotMarketParamUpdateProposals\x12\x97\x01\n(derivative_market_param_update_proposals\x18\x04 \x03(\x0b\x32?.injective.exchange.v1beta1.DerivativeMarketParamUpdateProposalR$derivativeMarketParamUpdateProposals\x12u\n\x1cspot_market_launch_proposals\x18\x05 \x03(\x0b\x32\x34.injective.exchange.v1beta1.SpotMarketLaunchProposalR\x19spotMarketLaunchProposals\x12\x84\x01\n!perpetual_market_launch_proposals\x18\x06 \x03(\x0b\x32\x39.injective.exchange.v1beta1.PerpetualMarketLaunchProposalR\x1eperpetualMarketLaunchProposals\x12\x91\x01\n&expiry_futures_market_launch_proposals\x18\x07 \x03(\x0b\x32=.injective.exchange.v1beta1.ExpiryFuturesMarketLaunchProposalR\"expiryFuturesMarketLaunchProposals\x12\x95\x01\n\'trading_reward_campaign_update_proposal\x18\x08 \x01(\x0b\x32?.injective.exchange.v1beta1.TradingRewardCampaignUpdateProposalR#tradingRewardCampaignUpdateProposal\x12\x91\x01\n&binary_options_market_launch_proposals\x18\t \x03(\x0b\x32=.injective.exchange.v1beta1.BinaryOptionsMarketLaunchProposalR\"binaryOptionsMarketLaunchProposals\x12\x94\x01\n%binary_options_param_update_proposals\x18\n \x03(\x0b\x32\x42.injective.exchange.v1beta1.BinaryOptionsMarketParamUpdateProposalR!binaryOptionsParamUpdateProposals\x12|\n\x1e\x64\x65nom_decimals_update_proposal\x18\x0b \x01(\x0b\x32\x37.injective.exchange.v1beta1.UpdateDenomDecimalsProposalR\x1b\x64\x65nomDecimalsUpdateProposal\x12\x63\n\x15\x66\x65\x65_discount_proposal\x18\x0c \x01(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountProposalR\x13\x66\x65\x65\x44iscountProposal\x12\x87\x01\n\"market_forced_settlement_proposals\x18\r \x03(\x0b\x32:.injective.exchange.v1beta1.MarketForcedSettlementProposalR\x1fmarketForcedSettlementProposals:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/BatchExchangeModificationProposal\"\xca\x05\n\x18SpotMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x04 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x05 \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12I\n\x0emaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12\x46\n\x0cmin_notional\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x0b \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo:L\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*!exchange/SpotMarketLaunchProposal\"\xa6\x08\n\x1dPerpetualMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x05 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x06 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x08 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12U\n\x14initial_margin_ratio\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x10 \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo:Q\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*&exchange/PerpetualMarketLaunchProposal\"\xe5\x07\n!BinaryOptionsMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x04 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x05 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x06 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x31\n\x14\x65xpiration_timestamp\x18\x08 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\t \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\n \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\x0b \x01(\tR\nquoteDenom\x12I\n\x0emaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12+\n\x11\x61\x64min_permissions\x18\x11 \x01(\rR\x10\x61\x64minPermissions:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/BinaryOptionsMarketLaunchProposal\"\xc6\x08\n!ExpiryFuturesMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x05 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x06 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x08 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12\x16\n\x06\x65xpiry\x18\t \x01(\x03R\x06\x65xpiry\x12U\n\x14initial_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x11 \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/ExpiryFuturesMarketLaunchProposal\"\x92\n\n#DerivativeMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12U\n\x14initial_margin_ratio\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\t \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\n \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12S\n\x12HourlyInterestRate\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12HourlyInterestRate\x12W\n\x14HourlyFundingRateCap\x18\x0c \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x14HourlyFundingRateCap\x12@\n\x06status\x18\r \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12M\n\roracle_params\x18\x0e \x01(\x0b\x32(.injective.exchange.v1beta1.OracleParamsR\x0coracleParams\x12\x1c\n\x06ticker\x18\x0f \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x11 \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/DerivativeMarketParamUpdateProposal\"N\n\tAdminInfo\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\x02 \x01(\rR\x10\x61\x64minPermissions\"\x99\x02\n\x1eMarketForcedSettlementProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice:R\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*\'exchange/MarketForcedSettlementProposal\"\xf8\x01\n\x1bUpdateDenomDecimalsProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12P\n\x0e\x64\x65nom_decimals\x18\x03 \x03(\x0b\x32).injective.exchange.v1beta1.DenomDecimalsR\rdenomDecimals:O\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*$exchange/UpdateDenomDecimalsProposal\"\xc2\x08\n&BinaryOptionsMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x31\n\x14\x65xpiration_timestamp\x18\t \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\n \x01(\x03R\x13settlementTimestamp\x12N\n\x10settlement_price\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x14\n\x05\x61\x64min\x18\x0c \x01(\tR\x05\x61\x64min\x12@\n\x06status\x18\r \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12U\n\roracle_params\x18\x0e \x01(\x0b\x32\x30.injective.exchange.v1beta1.ProviderOracleParamsR\x0coracleParams\x12\x1c\n\x06ticker\x18\x0f \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:Z\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*/exchange/BinaryOptionsMarketParamUpdateProposal\"\xc1\x01\n\x14ProviderOracleParams\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1a\n\x08provider\x18\x02 \x01(\tR\x08provider\x12.\n\x13oracle_scale_factor\x18\x03 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\"\xc9\x01\n\x0cOracleParams\x12\x1f\n\x0boracle_base\x18\x01 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x02 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x03 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\"\xf6\x02\n#TradingRewardCampaignLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12Z\n\rcampaign_info\x18\x03 \x01(\x0b\x32\x35.injective.exchange.v1beta1.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12\x62\n\x15\x63\x61mpaign_reward_pools\x18\x04 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR\x13\x63\x61mpaignRewardPools:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/TradingRewardCampaignLaunchProposal\"\xfc\x03\n#TradingRewardCampaignUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12Z\n\rcampaign_info\x18\x03 \x01(\x0b\x32\x35.injective.exchange.v1beta1.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12u\n\x1f\x63\x61mpaign_reward_pools_additions\x18\x04 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR\x1c\x63\x61mpaignRewardPoolsAdditions\x12q\n\x1d\x63\x61mpaign_reward_pools_updates\x18\x05 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR\x1a\x63\x61mpaignRewardPoolsUpdates:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/TradingRewardCampaignUpdateProposal\"\x80\x01\n\x11RewardPointUpdate\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x42\n\nnew_points\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tnewPoints\"\xd7\x02\n(TradingRewardPendingPointsUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x34\n\x16pending_pool_timestamp\x18\x03 \x01(\x03R\x14pendingPoolTimestamp\x12_\n\x14reward_point_updates\x18\x04 \x03(\x0b\x32-.injective.exchange.v1beta1.RewardPointUpdateR\x12rewardPointUpdates:\\\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*1exchange/TradingRewardPendingPointsUpdateProposal\"\xe3\x01\n\x13\x46\x65\x65\x44iscountProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12K\n\x08schedule\x18\x03 \x01(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountScheduleR\x08schedule:G\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*\x1c\x65xchange/FeeDiscountProposal\"\x85\x02\n\x1f\x42\x61tchCommunityPoolSpendProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12U\n\tproposals\x18\x03 \x03(\x0b\x32\x37.cosmos.distribution.v1beta1.CommunityPoolSpendProposalR\tproposals:S\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*(exchange/BatchCommunityPoolSpendProposal\"\xb3\x02\n.AtomicMarketOrderFeeMultiplierScheduleProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x65\n\x16market_fee_multipliers\x18\x03 \x03(\x0b\x32/.injective.exchange.v1beta1.MarketFeeMultiplierR\x14marketFeeMultipliers:b\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*7exchange/AtomicMarketOrderFeeMultiplierScheduleProposal*x\n\x0c\x45xchangeType\x12\x32\n\x14\x45XCHANGE_UNSPECIFIED\x10\x00\x1a\x18\x8a\x9d \x14\x45XCHANGE_UNSPECIFIED\x12\x12\n\x04SPOT\x10\x01\x1a\x08\x8a\x9d \x04SPOT\x12 \n\x0b\x44\x45RIVATIVES\x10\x02\x1a\x0f\x8a\x9d \x0b\x44\x45RIVATIVESB\x89\x02\n\x1e\x63om.injective.exchange.v1beta1B\rProposalProtoP\x01ZNgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types\xa2\x02\x03IEX\xaa\x02\x1aInjective.Exchange.V1beta1\xca\x02\x1aInjective\\Exchange\\V1beta1\xe2\x02&Injective\\Exchange\\V1beta1\\GPBMetadata\xea\x02\x1cInjective::Exchange::V1beta1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)injective/exchange/v1beta1/proposal.proto\x12\x1ainjective.exchange.v1beta1\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a.cosmos/distribution/v1beta1/distribution.proto\x1a\x17\x63osmos/msg/v1/msg.proto\x1a\x19\x63osmos_proto/cosmos.proto\x1a\x14gogoproto/gogo.proto\x1a)injective/exchange/v1beta1/exchange.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x11\x61mino/amino.proto\"\x9f\x07\n\x1dSpotMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12@\n\x06status\x18\t \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12\x1c\n\x06ticker\x18\n \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x0c \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo\x12#\n\rbase_decimals\x18\r \x01(\rR\x0c\x62\x61seDecimals\x12%\n\x0equote_decimals\x18\x0e \x01(\rR\rquoteDecimals:Q\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*&exchange/SpotMarketParamUpdateProposal\"\xcc\x01\n\x16\x45xchangeEnableProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12L\n\x0c\x65xchangeType\x18\x03 \x01(\x0e\x32(.injective.exchange.v1beta1.ExchangeTypeR\x0c\x65xchangeType:,\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x8a\xe7\xb0*\x1f\x65xchange/ExchangeEnableProposal\"\x96\r\n!BatchExchangeModificationProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x85\x01\n\"spot_market_param_update_proposals\x18\x03 \x03(\x0b\x32\x39.injective.exchange.v1beta1.SpotMarketParamUpdateProposalR\x1espotMarketParamUpdateProposals\x12\x97\x01\n(derivative_market_param_update_proposals\x18\x04 \x03(\x0b\x32?.injective.exchange.v1beta1.DerivativeMarketParamUpdateProposalR$derivativeMarketParamUpdateProposals\x12u\n\x1cspot_market_launch_proposals\x18\x05 \x03(\x0b\x32\x34.injective.exchange.v1beta1.SpotMarketLaunchProposalR\x19spotMarketLaunchProposals\x12\x84\x01\n!perpetual_market_launch_proposals\x18\x06 \x03(\x0b\x32\x39.injective.exchange.v1beta1.PerpetualMarketLaunchProposalR\x1eperpetualMarketLaunchProposals\x12\x91\x01\n&expiry_futures_market_launch_proposals\x18\x07 \x03(\x0b\x32=.injective.exchange.v1beta1.ExpiryFuturesMarketLaunchProposalR\"expiryFuturesMarketLaunchProposals\x12\x95\x01\n\'trading_reward_campaign_update_proposal\x18\x08 \x01(\x0b\x32?.injective.exchange.v1beta1.TradingRewardCampaignUpdateProposalR#tradingRewardCampaignUpdateProposal\x12\x91\x01\n&binary_options_market_launch_proposals\x18\t \x03(\x0b\x32=.injective.exchange.v1beta1.BinaryOptionsMarketLaunchProposalR\"binaryOptionsMarketLaunchProposals\x12\x94\x01\n%binary_options_param_update_proposals\x18\n \x03(\x0b\x32\x42.injective.exchange.v1beta1.BinaryOptionsMarketParamUpdateProposalR!binaryOptionsParamUpdateProposals\x12|\n\x1e\x64\x65nom_decimals_update_proposal\x18\x0b \x01(\x0b\x32\x37.injective.exchange.v1beta1.UpdateDenomDecimalsProposalR\x1b\x64\x65nomDecimalsUpdateProposal\x12\x63\n\x15\x66\x65\x65_discount_proposal\x18\x0c \x01(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountProposalR\x13\x66\x65\x65\x44iscountProposal\x12\x87\x01\n\"market_forced_settlement_proposals\x18\r \x03(\x0b\x32:.injective.exchange.v1beta1.MarketForcedSettlementProposalR\x1fmarketForcedSettlementProposals:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/BatchExchangeModificationProposal\"\x96\x06\n\x18SpotMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x04 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x05 \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12I\n\x0emaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12\x46\n\x0cmin_notional\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x0b \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo\x12#\n\rbase_decimals\x18\x0e \x01(\rR\x0c\x62\x61seDecimals\x12%\n\x0equote_decimals\x18\x0f \x01(\rR\rquoteDecimals:L\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*!exchange/SpotMarketLaunchProposal\"\xa6\x08\n\x1dPerpetualMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x05 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x06 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x08 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12U\n\x14initial_margin_ratio\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x10 \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo:Q\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*&exchange/PerpetualMarketLaunchProposal\"\xe5\x07\n!BinaryOptionsMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x04 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x05 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x06 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x31\n\x14\x65xpiration_timestamp\x18\x08 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\t \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\n \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\x0b \x01(\tR\nquoteDenom\x12I\n\x0emaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12+\n\x11\x61\x64min_permissions\x18\x11 \x01(\rR\x10\x61\x64minPermissions:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/BinaryOptionsMarketLaunchProposal\"\xc6\x08\n!ExpiryFuturesMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x05 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x06 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x08 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12\x16\n\x06\x65xpiry\x18\t \x01(\x03R\x06\x65xpiry\x12U\n\x14initial_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x11 \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/ExpiryFuturesMarketLaunchProposal\"\x92\n\n#DerivativeMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12U\n\x14initial_margin_ratio\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\t \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\n \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12S\n\x12HourlyInterestRate\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12HourlyInterestRate\x12W\n\x14HourlyFundingRateCap\x18\x0c \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x14HourlyFundingRateCap\x12@\n\x06status\x18\r \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12M\n\roracle_params\x18\x0e \x01(\x0b\x32(.injective.exchange.v1beta1.OracleParamsR\x0coracleParams\x12\x1c\n\x06ticker\x18\x0f \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x44\n\nadmin_info\x18\x11 \x01(\x0b\x32%.injective.exchange.v1beta1.AdminInfoR\tadminInfo:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/DerivativeMarketParamUpdateProposal\"N\n\tAdminInfo\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\x02 \x01(\rR\x10\x61\x64minPermissions\"\x99\x02\n\x1eMarketForcedSettlementProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice:R\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*\'exchange/MarketForcedSettlementProposal\"\xf8\x01\n\x1bUpdateDenomDecimalsProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12P\n\x0e\x64\x65nom_decimals\x18\x03 \x03(\x0b\x32).injective.exchange.v1beta1.DenomDecimalsR\rdenomDecimals:O\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*$exchange/UpdateDenomDecimalsProposal\"\xc2\x08\n&BinaryOptionsMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x31\n\x14\x65xpiration_timestamp\x18\t \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\n \x01(\x03R\x13settlementTimestamp\x12N\n\x10settlement_price\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x14\n\x05\x61\x64min\x18\x0c \x01(\tR\x05\x61\x64min\x12@\n\x06status\x18\r \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status\x12U\n\roracle_params\x18\x0e \x01(\x0b\x32\x30.injective.exchange.v1beta1.ProviderOracleParamsR\x0coracleParams\x12\x1c\n\x06ticker\x18\x0f \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:Z\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*/exchange/BinaryOptionsMarketParamUpdateProposal\"\xc1\x01\n\x14ProviderOracleParams\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1a\n\x08provider\x18\x02 \x01(\tR\x08provider\x12.\n\x13oracle_scale_factor\x18\x03 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\"\xc9\x01\n\x0cOracleParams\x12\x1f\n\x0boracle_base\x18\x01 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x02 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x03 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\"\xf6\x02\n#TradingRewardCampaignLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12Z\n\rcampaign_info\x18\x03 \x01(\x0b\x32\x35.injective.exchange.v1beta1.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12\x62\n\x15\x63\x61mpaign_reward_pools\x18\x04 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR\x13\x63\x61mpaignRewardPools:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/TradingRewardCampaignLaunchProposal\"\xfc\x03\n#TradingRewardCampaignUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12Z\n\rcampaign_info\x18\x03 \x01(\x0b\x32\x35.injective.exchange.v1beta1.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12u\n\x1f\x63\x61mpaign_reward_pools_additions\x18\x04 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR\x1c\x63\x61mpaignRewardPoolsAdditions\x12q\n\x1d\x63\x61mpaign_reward_pools_updates\x18\x05 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR\x1a\x63\x61mpaignRewardPoolsUpdates:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/TradingRewardCampaignUpdateProposal\"\x80\x01\n\x11RewardPointUpdate\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x42\n\nnew_points\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tnewPoints\"\xd7\x02\n(TradingRewardPendingPointsUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x34\n\x16pending_pool_timestamp\x18\x03 \x01(\x03R\x14pendingPoolTimestamp\x12_\n\x14reward_point_updates\x18\x04 \x03(\x0b\x32-.injective.exchange.v1beta1.RewardPointUpdateR\x12rewardPointUpdates:\\\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*1exchange/TradingRewardPendingPointsUpdateProposal\"\xe3\x01\n\x13\x46\x65\x65\x44iscountProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12K\n\x08schedule\x18\x03 \x01(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountScheduleR\x08schedule:G\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*\x1c\x65xchange/FeeDiscountProposal\"\x85\x02\n\x1f\x42\x61tchCommunityPoolSpendProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12U\n\tproposals\x18\x03 \x03(\x0b\x32\x37.cosmos.distribution.v1beta1.CommunityPoolSpendProposalR\tproposals:S\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*(exchange/BatchCommunityPoolSpendProposal\"\xb3\x02\n.AtomicMarketOrderFeeMultiplierScheduleProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x65\n\x16market_fee_multipliers\x18\x03 \x03(\x0b\x32/.injective.exchange.v1beta1.MarketFeeMultiplierR\x14marketFeeMultipliers:b\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*7exchange/AtomicMarketOrderFeeMultiplierScheduleProposal*x\n\x0c\x45xchangeType\x12\x32\n\x14\x45XCHANGE_UNSPECIFIED\x10\x00\x1a\x18\x8a\x9d \x14\x45XCHANGE_UNSPECIFIED\x12\x12\n\x04SPOT\x10\x01\x1a\x08\x8a\x9d \x04SPOT\x12 \n\x0b\x44\x45RIVATIVES\x10\x02\x1a\x0f\x8a\x9d \x0b\x44\x45RIVATIVESB\x89\x02\n\x1e\x63om.injective.exchange.v1beta1B\rProposalProtoP\x01ZNgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types\xa2\x02\x03IEX\xaa\x02\x1aInjective.Exchange.V1beta1\xca\x02\x1aInjective\\Exchange\\V1beta1\xe2\x02&Injective\\Exchange\\V1beta1\\GPBMetadata\xea\x02\x1cInjective::Exchange::V1beta1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -174,48 +174,48 @@ _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*(exchange/BatchCommunityPoolSpendProposal' _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._loaded_options = None _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*7exchange/AtomicMarketOrderFeeMultiplierScheduleProposal' - _globals['_EXCHANGETYPE']._serialized_start=12535 - _globals['_EXCHANGETYPE']._serialized_end=12655 + _globals['_EXCHANGETYPE']._serialized_start=12687 + _globals['_EXCHANGETYPE']._serialized_end=12807 _globals['_SPOTMARKETPARAMUPDATEPROPOSAL']._serialized_start=329 - _globals['_SPOTMARKETPARAMUPDATEPROPOSAL']._serialized_end=1180 - _globals['_EXCHANGEENABLEPROPOSAL']._serialized_start=1183 - _globals['_EXCHANGEENABLEPROPOSAL']._serialized_end=1387 - _globals['_BATCHEXCHANGEMODIFICATIONPROPOSAL']._serialized_start=1390 - _globals['_BATCHEXCHANGEMODIFICATIONPROPOSAL']._serialized_end=3076 - _globals['_SPOTMARKETLAUNCHPROPOSAL']._serialized_start=3079 - _globals['_SPOTMARKETLAUNCHPROPOSAL']._serialized_end=3793 - _globals['_PERPETUALMARKETLAUNCHPROPOSAL']._serialized_start=3796 - _globals['_PERPETUALMARKETLAUNCHPROPOSAL']._serialized_end=4858 - _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL']._serialized_start=4861 - _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL']._serialized_end=5858 - _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL']._serialized_start=5861 - _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL']._serialized_end=6955 - _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL']._serialized_start=6958 - _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL']._serialized_end=8256 - _globals['_ADMININFO']._serialized_start=8258 - _globals['_ADMININFO']._serialized_end=8336 - _globals['_MARKETFORCEDSETTLEMENTPROPOSAL']._serialized_start=8339 - _globals['_MARKETFORCEDSETTLEMENTPROPOSAL']._serialized_end=8620 - _globals['_UPDATEDENOMDECIMALSPROPOSAL']._serialized_start=8623 - _globals['_UPDATEDENOMDECIMALSPROPOSAL']._serialized_end=8871 - _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL']._serialized_start=8874 - _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL']._serialized_end=9964 - _globals['_PROVIDERORACLEPARAMS']._serialized_start=9967 - _globals['_PROVIDERORACLEPARAMS']._serialized_end=10160 - _globals['_ORACLEPARAMS']._serialized_start=10163 - _globals['_ORACLEPARAMS']._serialized_end=10364 - _globals['_TRADINGREWARDCAMPAIGNLAUNCHPROPOSAL']._serialized_start=10367 - _globals['_TRADINGREWARDCAMPAIGNLAUNCHPROPOSAL']._serialized_end=10741 - _globals['_TRADINGREWARDCAMPAIGNUPDATEPROPOSAL']._serialized_start=10744 - _globals['_TRADINGREWARDCAMPAIGNUPDATEPROPOSAL']._serialized_end=11252 - _globals['_REWARDPOINTUPDATE']._serialized_start=11255 - _globals['_REWARDPOINTUPDATE']._serialized_end=11383 - _globals['_TRADINGREWARDPENDINGPOINTSUPDATEPROPOSAL']._serialized_start=11386 - _globals['_TRADINGREWARDPENDINGPOINTSUPDATEPROPOSAL']._serialized_end=11729 - _globals['_FEEDISCOUNTPROPOSAL']._serialized_start=11732 - _globals['_FEEDISCOUNTPROPOSAL']._serialized_end=11959 - _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._serialized_start=11962 - _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._serialized_end=12223 - _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._serialized_start=12226 - _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._serialized_end=12533 + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL']._serialized_end=1256 + _globals['_EXCHANGEENABLEPROPOSAL']._serialized_start=1259 + _globals['_EXCHANGEENABLEPROPOSAL']._serialized_end=1463 + _globals['_BATCHEXCHANGEMODIFICATIONPROPOSAL']._serialized_start=1466 + _globals['_BATCHEXCHANGEMODIFICATIONPROPOSAL']._serialized_end=3152 + _globals['_SPOTMARKETLAUNCHPROPOSAL']._serialized_start=3155 + _globals['_SPOTMARKETLAUNCHPROPOSAL']._serialized_end=3945 + _globals['_PERPETUALMARKETLAUNCHPROPOSAL']._serialized_start=3948 + _globals['_PERPETUALMARKETLAUNCHPROPOSAL']._serialized_end=5010 + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL']._serialized_start=5013 + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL']._serialized_end=6010 + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL']._serialized_start=6013 + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL']._serialized_end=7107 + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL']._serialized_start=7110 + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL']._serialized_end=8408 + _globals['_ADMININFO']._serialized_start=8410 + _globals['_ADMININFO']._serialized_end=8488 + _globals['_MARKETFORCEDSETTLEMENTPROPOSAL']._serialized_start=8491 + _globals['_MARKETFORCEDSETTLEMENTPROPOSAL']._serialized_end=8772 + _globals['_UPDATEDENOMDECIMALSPROPOSAL']._serialized_start=8775 + _globals['_UPDATEDENOMDECIMALSPROPOSAL']._serialized_end=9023 + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL']._serialized_start=9026 + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL']._serialized_end=10116 + _globals['_PROVIDERORACLEPARAMS']._serialized_start=10119 + _globals['_PROVIDERORACLEPARAMS']._serialized_end=10312 + _globals['_ORACLEPARAMS']._serialized_start=10315 + _globals['_ORACLEPARAMS']._serialized_end=10516 + _globals['_TRADINGREWARDCAMPAIGNLAUNCHPROPOSAL']._serialized_start=10519 + _globals['_TRADINGREWARDCAMPAIGNLAUNCHPROPOSAL']._serialized_end=10893 + _globals['_TRADINGREWARDCAMPAIGNUPDATEPROPOSAL']._serialized_start=10896 + _globals['_TRADINGREWARDCAMPAIGNUPDATEPROPOSAL']._serialized_end=11404 + _globals['_REWARDPOINTUPDATE']._serialized_start=11407 + _globals['_REWARDPOINTUPDATE']._serialized_end=11535 + _globals['_TRADINGREWARDPENDINGPOINTSUPDATEPROPOSAL']._serialized_start=11538 + _globals['_TRADINGREWARDPENDINGPOINTSUPDATEPROPOSAL']._serialized_end=11881 + _globals['_FEEDISCOUNTPROPOSAL']._serialized_start=11884 + _globals['_FEEDISCOUNTPROPOSAL']._serialized_end=12111 + _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._serialized_start=12114 + _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._serialized_end=12375 + _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._serialized_start=12378 + _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._serialized_end=12685 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v1beta1/query_pb2.py b/pyinjective/proto/injective/exchange/v1beta1/query_pb2.py index 30a1f5d7..43c5af63 100644 --- a/pyinjective/proto/injective/exchange/v1beta1/query_pb2.py +++ b/pyinjective/proto/injective/exchange/v1beta1/query_pb2.py @@ -19,7 +19,7 @@ from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&injective/exchange/v1beta1/query.proto\x12\x1ainjective.exchange.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a)injective/exchange/v1beta1/exchange.proto\x1a(injective/exchange/v1beta1/genesis.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x14gogoproto/gogo.proto\"O\n\nSubaccount\x12\x16\n\x06trader\x18\x01 \x01(\tR\x06trader\x12)\n\x10subaccount_nonce\x18\x02 \x01(\rR\x0fsubaccountNonce\"`\n\x1cQuerySubaccountOrdersRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"\xc1\x01\n\x1dQuerySubaccountOrdersResponse\x12N\n\nbuy_orders\x18\x01 \x03(\x0b\x32/.injective.exchange.v1beta1.SubaccountOrderDataR\tbuyOrders\x12P\n\x0bsell_orders\x18\x02 \x03(\x0b\x32/.injective.exchange.v1beta1.SubaccountOrderDataR\nsellOrders\"\xaf\x01\n%SubaccountOrderbookMetadataWithMarket\x12S\n\x08metadata\x18\x01 \x01(\x0b\x32\x37.injective.exchange.v1beta1.SubaccountOrderbookMetadataR\x08metadata\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x14\n\x05isBuy\x18\x03 \x01(\x08R\x05isBuy\"\x1c\n\x1aQueryExchangeParamsRequest\"_\n\x1bQueryExchangeParamsResponse\x12@\n\x06params\x18\x01 \x01(\x0b\x32\".injective.exchange.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06params\"\x93\x01\n\x1eQuerySubaccountDepositsRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12L\n\nsubaccount\x18\x02 \x01(\x0b\x32&.injective.exchange.v1beta1.SubaccountB\x04\xc8\xde\x1f\x01R\nsubaccount\"\xea\x01\n\x1fQuerySubaccountDepositsResponse\x12\x65\n\x08\x64\x65posits\x18\x01 \x03(\x0b\x32I.injective.exchange.v1beta1.QuerySubaccountDepositsResponse.DepositsEntryR\x08\x64\x65posits\x1a`\n\rDepositsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32#.injective.exchange.v1beta1.DepositR\x05value:\x02\x38\x01\"\x1e\n\x1cQueryExchangeBalancesRequest\"f\n\x1dQueryExchangeBalancesResponse\x12\x45\n\x08\x62\x61lances\x18\x01 \x03(\x0b\x32#.injective.exchange.v1beta1.BalanceB\x04\xc8\xde\x1f\x00R\x08\x62\x61lances\"7\n\x1bQueryAggregateVolumeRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"u\n\x1cQueryAggregateVolumeResponse\x12U\n\x11\x61ggregate_volumes\x18\x01 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\x10\x61ggregateVolumes\"Y\n\x1cQueryAggregateVolumesRequest\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"\xf9\x01\n\x1dQueryAggregateVolumesResponse\x12t\n\x19\x61ggregate_account_volumes\x18\x01 \x03(\x0b\x32\x38.injective.exchange.v1beta1.AggregateAccountVolumeRecordR\x17\x61ggregateAccountVolumes\x12\x62\n\x18\x61ggregate_market_volumes\x18\x02 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\x16\x61ggregateMarketVolumes\"@\n!QueryAggregateMarketVolumeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"l\n\"QueryAggregateMarketVolumeResponse\x12\x46\n\x06volume\x18\x01 \x01(\x0b\x32(.injective.exchange.v1beta1.VolumeRecordB\x04\xc8\xde\x1f\x00R\x06volume\"0\n\x18QueryDenomDecimalRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\"5\n\x19QueryDenomDecimalResponse\x12\x18\n\x07\x64\x65\x63imal\x18\x01 \x01(\x04R\x07\x64\x65\x63imal\"3\n\x19QueryDenomDecimalsRequest\x12\x16\n\x06\x64\x65noms\x18\x01 \x03(\tR\x06\x64\x65noms\"t\n\x1aQueryDenomDecimalsResponse\x12V\n\x0e\x64\x65nom_decimals\x18\x01 \x03(\x0b\x32).injective.exchange.v1beta1.DenomDecimalsB\x04\xc8\xde\x1f\x00R\rdenomDecimals\"C\n\"QueryAggregateMarketVolumesRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"i\n#QueryAggregateMarketVolumesResponse\x12\x42\n\x07volumes\x18\x01 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\x07volumes\"Z\n\x1dQuerySubaccountDepositRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\"a\n\x1eQuerySubaccountDepositResponse\x12?\n\x08\x64\x65posits\x18\x01 \x01(\x0b\x32#.injective.exchange.v1beta1.DepositR\x08\x64\x65posits\"P\n\x17QuerySpotMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"\\\n\x18QuerySpotMarketsResponse\x12@\n\x07markets\x18\x01 \x03(\x0b\x32&.injective.exchange.v1beta1.SpotMarketR\x07markets\"5\n\x16QuerySpotMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"Y\n\x17QuerySpotMarketResponse\x12>\n\x06market\x18\x01 \x01(\x0b\x32&.injective.exchange.v1beta1.SpotMarketR\x06market\"\xd6\x02\n\x19QuerySpotOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05limit\x18\x02 \x01(\x04R\x05limit\x12\x44\n\norder_side\x18\x03 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderSideR\torderSide\x12_\n\x19limit_cumulative_notional\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeNotional\x12_\n\x19limit_cumulative_quantity\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeQuantity\"\xb8\x01\n\x1aQuerySpotOrderbookResponse\x12K\n\x10\x62uys_price_level\x18\x01 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\x0e\x62uysPriceLevel\x12M\n\x11sells_price_level\x18\x02 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\x0fsellsPriceLevel\"\xad\x01\n\x0e\x46ullSpotMarket\x12>\n\x06market\x18\x01 \x01(\x0b\x32&.injective.exchange.v1beta1.SpotMarketR\x06market\x12[\n\x11mid_price_and_tob\x18\x02 \x01(\x0b\x32*.injective.exchange.v1beta1.MidPriceAndTOBB\x04\xc8\xde\x1f\x01R\x0emidPriceAndTob\"\x88\x01\n\x1bQueryFullSpotMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\x12\x32\n\x16with_mid_price_and_tob\x18\x03 \x01(\x08R\x12withMidPriceAndTob\"d\n\x1cQueryFullSpotMarketsResponse\x12\x44\n\x07markets\x18\x01 \x03(\x0b\x32*.injective.exchange.v1beta1.FullSpotMarketR\x07markets\"m\n\x1aQueryFullSpotMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x32\n\x16with_mid_price_and_tob\x18\x02 \x01(\x08R\x12withMidPriceAndTob\"a\n\x1bQueryFullSpotMarketResponse\x12\x42\n\x06market\x18\x01 \x01(\x0b\x32*.injective.exchange.v1beta1.FullSpotMarketR\x06market\"\x85\x01\n\x1eQuerySpotOrdersByHashesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12!\n\x0corder_hashes\x18\x03 \x03(\tR\x0borderHashes\"l\n\x1fQuerySpotOrdersByHashesResponse\x12I\n\x06orders\x18\x01 \x03(\x0b\x32\x31.injective.exchange.v1beta1.TrimmedSpotLimitOrderR\x06orders\"`\n\x1cQueryTraderSpotOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"l\n$QueryAccountAddressSpotOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\"\x9b\x02\n\x15TrimmedSpotLimitOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12?\n\x08\x66illable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12\x14\n\x05isBuy\x18\x04 \x01(\x08R\x05isBuy\x12\x1d\n\norder_hash\x18\x05 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id\"j\n\x1dQueryTraderSpotOrdersResponse\x12I\n\x06orders\x18\x01 \x03(\x0b\x32\x31.injective.exchange.v1beta1.TrimmedSpotLimitOrderR\x06orders\"r\n%QueryAccountAddressSpotOrdersResponse\x12I\n\x06orders\x18\x01 \x03(\x0b\x32\x31.injective.exchange.v1beta1.TrimmedSpotLimitOrderR\x06orders\"=\n\x1eQuerySpotMidPriceAndTOBRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\xfb\x01\n\x1fQuerySpotMidPriceAndTOBResponse\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"C\n$QueryDerivativeMidPriceAndTOBRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\x81\x02\n%QueryDerivativeMidPriceAndTOBResponse\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"\xb5\x01\n\x1fQueryDerivativeOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05limit\x18\x02 \x01(\x04R\x05limit\x12_\n\x19limit_cumulative_notional\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeNotional\"\xbe\x01\n QueryDerivativeOrderbookResponse\x12K\n\x10\x62uys_price_level\x18\x01 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\x0e\x62uysPriceLevel\x12M\n\x11sells_price_level\x18\x02 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\x0fsellsPriceLevel\"\x9c\x03\n.QueryTraderSpotOrdersToCancelUpToAmountRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x44\n\x0b\x62\x61se_amount\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nbaseAmount\x12\x46\n\x0cquote_amount\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bquoteAmount\x12L\n\x08strategy\x18\x05 \x01(\x0e\x32\x30.injective.exchange.v1beta1.CancellationStrategyR\x08strategy\x12L\n\x0freference_price\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ereferencePrice\"\xdc\x02\n4QueryTraderDerivativeOrdersToCancelUpToAmountRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x46\n\x0cquote_amount\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bquoteAmount\x12L\n\x08strategy\x18\x04 \x01(\x0e\x32\x30.injective.exchange.v1beta1.CancellationStrategyR\x08strategy\x12L\n\x0freference_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ereferencePrice\"f\n\"QueryTraderDerivativeOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"r\n*QueryAccountAddressDerivativeOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\"\xe9\x02\n\x1bTrimmedDerivativeLimitOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12?\n\x08\x66illable\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12\x1f\n\x05isBuy\x18\x05 \x01(\x08\x42\t\xea\xde\x1f\x05isBuyR\x05isBuy\x12\x1d\n\norder_hash\x18\x06 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\"v\n#QueryTraderDerivativeOrdersResponse\x12O\n\x06orders\x18\x01 \x03(\x0b\x32\x37.injective.exchange.v1beta1.TrimmedDerivativeLimitOrderR\x06orders\"~\n+QueryAccountAddressDerivativeOrdersResponse\x12O\n\x06orders\x18\x01 \x03(\x0b\x32\x37.injective.exchange.v1beta1.TrimmedDerivativeLimitOrderR\x06orders\"\x8b\x01\n$QueryDerivativeOrdersByHashesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12!\n\x0corder_hashes\x18\x03 \x03(\tR\x0borderHashes\"x\n%QueryDerivativeOrdersByHashesResponse\x12O\n\x06orders\x18\x01 \x03(\x0b\x32\x37.injective.exchange.v1beta1.TrimmedDerivativeLimitOrderR\x06orders\"\x8a\x01\n\x1dQueryDerivativeMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\x12\x32\n\x16with_mid_price_and_tob\x18\x03 \x01(\x08R\x12withMidPriceAndTob\"\x88\x01\n\nPriceLevel\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\"\xbf\x01\n\x14PerpetualMarketState\x12P\n\x0bmarket_info\x18\x01 \x01(\x0b\x32/.injective.exchange.v1beta1.PerpetualMarketInfoR\nmarketInfo\x12U\n\x0c\x66unding_info\x18\x02 \x01(\x0b\x32\x32.injective.exchange.v1beta1.PerpetualMarketFundingR\x0b\x66undingInfo\"\xba\x03\n\x14\x46ullDerivativeMarket\x12\x44\n\x06market\x18\x01 \x01(\x0b\x32,.injective.exchange.v1beta1.DerivativeMarketR\x06market\x12Y\n\x0eperpetual_info\x18\x02 \x01(\x0b\x32\x30.injective.exchange.v1beta1.PerpetualMarketStateH\x00R\rperpetualInfo\x12X\n\x0c\x66utures_info\x18\x03 \x01(\x0b\x32\x33.injective.exchange.v1beta1.ExpiryFuturesMarketInfoH\x00R\x0b\x66uturesInfo\x12\x42\n\nmark_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tmarkPrice\x12[\n\x11mid_price_and_tob\x18\x05 \x01(\x0b\x32*.injective.exchange.v1beta1.MidPriceAndTOBB\x04\xc8\xde\x1f\x01R\x0emidPriceAndTobB\x06\n\x04info\"l\n\x1eQueryDerivativeMarketsResponse\x12J\n\x07markets\x18\x01 \x03(\x0b\x32\x30.injective.exchange.v1beta1.FullDerivativeMarketR\x07markets\";\n\x1cQueryDerivativeMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"i\n\x1dQueryDerivativeMarketResponse\x12H\n\x06market\x18\x01 \x01(\x0b\x32\x30.injective.exchange.v1beta1.FullDerivativeMarketR\x06market\"B\n#QueryDerivativeMarketAddressRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"e\n$QueryDerivativeMarketAddressResponse\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"G\n QuerySubaccountTradeNonceRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"F\n\x1fQuerySubaccountPositionsRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"j\n&QuerySubaccountPositionInMarketRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"s\n/QuerySubaccountEffectivePositionInMarketRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"J\n#QuerySubaccountOrderMetadataRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"n\n QuerySubaccountPositionsResponse\x12J\n\x05state\x18\x01 \x03(\x0b\x32..injective.exchange.v1beta1.DerivativePositionB\x04\xc8\xde\x1f\x00R\x05state\"k\n\'QuerySubaccountPositionInMarketResponse\x12@\n\x05state\x18\x01 \x01(\x0b\x32$.injective.exchange.v1beta1.PositionB\x04\xc8\xde\x1f\x01R\x05state\"\x83\x02\n\x11\x45\x66\x66\x65\x63tivePosition\x12\x17\n\x07is_long\x18\x01 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12N\n\x10\x65\x66\x66\x65\x63tive_margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x65\x66\x66\x65\x63tiveMargin\"}\n0QuerySubaccountEffectivePositionInMarketResponse\x12I\n\x05state\x18\x01 \x01(\x0b\x32-.injective.exchange.v1beta1.EffectivePositionB\x04\xc8\xde\x1f\x01R\x05state\">\n\x1fQueryPerpetualMarketInfoRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"m\n QueryPerpetualMarketInfoResponse\x12I\n\x04info\x18\x01 \x01(\x0b\x32/.injective.exchange.v1beta1.PerpetualMarketInfoB\x04\xc8\xde\x1f\x00R\x04info\"B\n#QueryExpiryFuturesMarketInfoRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"u\n$QueryExpiryFuturesMarketInfoResponse\x12M\n\x04info\x18\x01 \x01(\x0b\x32\x33.injective.exchange.v1beta1.ExpiryFuturesMarketInfoB\x04\xc8\xde\x1f\x00R\x04info\"A\n\"QueryPerpetualMarketFundingRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"u\n#QueryPerpetualMarketFundingResponse\x12N\n\x05state\x18\x01 \x01(\x0b\x32\x32.injective.exchange.v1beta1.PerpetualMarketFundingB\x04\xc8\xde\x1f\x00R\x05state\"\x8b\x01\n$QuerySubaccountOrderMetadataResponse\x12\x63\n\x08metadata\x18\x01 \x03(\x0b\x32\x41.injective.exchange.v1beta1.SubaccountOrderbookMetadataWithMarketB\x04\xc8\xde\x1f\x00R\x08metadata\"9\n!QuerySubaccountTradeNonceResponse\x12\x14\n\x05nonce\x18\x01 \x01(\rR\x05nonce\"\x19\n\x17QueryModuleStateRequest\"Z\n\x18QueryModuleStateResponse\x12>\n\x05state\x18\x01 \x01(\x0b\x32(.injective.exchange.v1beta1.GenesisStateR\x05state\"\x17\n\x15QueryPositionsRequest\"d\n\x16QueryPositionsResponse\x12J\n\x05state\x18\x01 \x03(\x0b\x32..injective.exchange.v1beta1.DerivativePositionB\x04\xc8\xde\x1f\x00R\x05state\"q\n\x1dQueryTradeRewardPointsRequest\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\x12\x34\n\x16pending_pool_timestamp\x18\x02 \x01(\x03R\x14pendingPoolTimestamp\"\x84\x01\n\x1eQueryTradeRewardPointsResponse\x12\x62\n\x1b\x61\x63\x63ount_trade_reward_points\x18\x01 \x03(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x18\x61\x63\x63ountTradeRewardPoints\"!\n\x1fQueryTradeRewardCampaignRequest\"\xfe\x04\n QueryTradeRewardCampaignResponse\x12v\n\x1ctrading_reward_campaign_info\x18\x01 \x01(\x0b\x32\x35.injective.exchange.v1beta1.TradingRewardCampaignInfoR\x19tradingRewardCampaignInfo\x12\x80\x01\n%trading_reward_pool_campaign_schedule\x18\x02 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR!tradingRewardPoolCampaignSchedule\x12^\n\x19total_trade_reward_points\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16totalTradeRewardPoints\x12\x8f\x01\n-pending_trading_reward_pool_campaign_schedule\x18\x04 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR(pendingTradingRewardPoolCampaignSchedule\x12m\n!pending_total_trade_reward_points\x18\x05 \x03(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1dpendingTotalTradeRewardPoints\";\n\x1fQueryIsOptedOutOfRewardsRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"D\n QueryIsOptedOutOfRewardsResponse\x12 \n\x0cis_opted_out\x18\x01 \x01(\x08R\nisOptedOut\"\'\n%QueryOptedOutOfRewardsAccountsRequest\"D\n&QueryOptedOutOfRewardsAccountsResponse\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\">\n\"QueryFeeDiscountAccountInfoRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"\xe9\x01\n#QueryFeeDiscountAccountInfoResponse\x12\x1d\n\ntier_level\x18\x01 \x01(\x04R\ttierLevel\x12R\n\x0c\x61\x63\x63ount_info\x18\x02 \x01(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountTierInfoR\x0b\x61\x63\x63ountInfo\x12O\n\x0b\x61\x63\x63ount_ttl\x18\x03 \x01(\x0b\x32..injective.exchange.v1beta1.FeeDiscountTierTTLR\naccountTtl\"!\n\x1fQueryFeeDiscountScheduleRequest\"\x87\x01\n QueryFeeDiscountScheduleResponse\x12\x63\n\x15\x66\x65\x65_discount_schedule\x18\x01 \x01(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountScheduleR\x13\x66\x65\x65\x44iscountSchedule\"@\n\x1dQueryBalanceMismatchesRequest\x12\x1f\n\x0b\x64ust_factor\x18\x01 \x01(\x03R\ndustFactor\"\xa2\x03\n\x0f\x42\x61lanceMismatch\x12\"\n\x0csubaccountId\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x41\n\tavailable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tavailable\x12\x39\n\x05total\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05total\x12\x46\n\x0c\x62\x61lance_hold\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\x12J\n\x0e\x65xpected_total\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rexpectedTotal\x12\x43\n\ndifference\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\ndifference\"|\n\x1eQueryBalanceMismatchesResponse\x12Z\n\x12\x62\x61lance_mismatches\x18\x01 \x03(\x0b\x32+.injective.exchange.v1beta1.BalanceMismatchR\x11\x62\x61lanceMismatches\"%\n#QueryBalanceWithBalanceHoldsRequest\"\x97\x02\n\x15\x42\x61lanceWithMarginHold\x12\"\n\x0csubaccountId\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x41\n\tavailable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tavailable\x12\x39\n\x05total\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05total\x12\x46\n\x0c\x62\x61lance_hold\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\"\x96\x01\n$QueryBalanceWithBalanceHoldsResponse\x12n\n\x1a\x62\x61lance_with_balance_holds\x18\x01 \x03(\x0b\x32\x31.injective.exchange.v1beta1.BalanceWithMarginHoldR\x17\x62\x61lanceWithBalanceHolds\"\'\n%QueryFeeDiscountTierStatisticsRequest\"9\n\rTierStatistic\x12\x12\n\x04tier\x18\x01 \x01(\x04R\x04tier\x12\x14\n\x05\x63ount\x18\x02 \x01(\x04R\x05\x63ount\"s\n&QueryFeeDiscountTierStatisticsResponse\x12I\n\nstatistics\x18\x01 \x03(\x0b\x32).injective.exchange.v1beta1.TierStatisticR\nstatistics\"\x17\n\x15MitoVaultInfosRequest\"\xc4\x01\n\x16MitoVaultInfosResponse\x12)\n\x10master_addresses\x18\x01 \x03(\tR\x0fmasterAddresses\x12\x31\n\x14\x64\x65rivative_addresses\x18\x02 \x03(\tR\x13\x64\x65rivativeAddresses\x12%\n\x0espot_addresses\x18\x03 \x03(\tR\rspotAddresses\x12%\n\x0e\x63w20_addresses\x18\x04 \x03(\tR\rcw20Addresses\"D\n\x1dQueryMarketIDFromVaultRequest\x12#\n\rvault_address\x18\x01 \x01(\tR\x0cvaultAddress\"=\n\x1eQueryMarketIDFromVaultResponse\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"A\n\"QueryHistoricalTradeRecordsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"t\n#QueryHistoricalTradeRecordsResponse\x12M\n\rtrade_records\x18\x01 \x03(\x0b\x32(.injective.exchange.v1beta1.TradeRecordsR\x0ctradeRecords\"\xb7\x01\n\x13TradeHistoryOptions\x12,\n\x12trade_grouping_sec\x18\x01 \x01(\x04R\x10tradeGroupingSec\x12\x17\n\x07max_age\x18\x02 \x01(\x04R\x06maxAge\x12.\n\x13include_raw_history\x18\x04 \x01(\x08R\x11includeRawHistory\x12)\n\x10include_metadata\x18\x05 \x01(\x08R\x0fincludeMetadata\"\xa0\x01\n\x1cQueryMarketVolatilityRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x63\n\x15trade_history_options\x18\x02 \x01(\x0b\x32/.injective.exchange.v1beta1.TradeHistoryOptionsR\x13tradeHistoryOptions\"\x83\x02\n\x1dQueryMarketVolatilityResponse\x12?\n\nvolatility\x18\x01 \x01(\tB\x1f\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nvolatility\x12W\n\x10history_metadata\x18\x02 \x01(\x0b\x32,.injective.oracle.v1beta1.MetadataStatisticsR\x0fhistoryMetadata\x12H\n\x0braw_history\x18\x03 \x03(\x0b\x32\'.injective.exchange.v1beta1.TradeRecordR\nrawHistory\"3\n\x19QueryBinaryMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\"g\n\x1aQueryBinaryMarketsResponse\x12I\n\x07markets\x18\x01 \x03(\x0b\x32/.injective.exchange.v1beta1.BinaryOptionsMarketR\x07markets\"q\n-QueryTraderDerivativeConditionalOrdersRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"\x9e\x03\n!TrimmedDerivativeConditionalOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12G\n\x0ctriggerPrice\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1f\n\x05isBuy\x18\x05 \x01(\x08\x42\t\xea\xde\x1f\x05isBuyR\x05isBuy\x12%\n\x07isLimit\x18\x06 \x01(\x08\x42\x0b\xea\xde\x1f\x07isLimitR\x07isLimit\x12\x1d\n\norder_hash\x18\x07 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x08 \x01(\tR\x03\x63id\"\x87\x01\n.QueryTraderDerivativeConditionalOrdersResponse\x12U\n\x06orders\x18\x01 \x03(\x0b\x32=.injective.exchange.v1beta1.TrimmedDerivativeConditionalOrderR\x06orders\"M\n.QueryMarketAtomicExecutionFeeMultiplierRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"v\n/QueryMarketAtomicExecutionFeeMultiplierResponse\x12\x43\n\nmultiplier\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nmultiplier\"8\n\x1cQueryActiveStakeGrantRequest\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\"\xb3\x01\n\x1dQueryActiveStakeGrantResponse\x12=\n\x05grant\x18\x01 \x01(\x0b\x32\'.injective.exchange.v1beta1.ActiveGrantR\x05grant\x12S\n\x0f\x65\x66\x66\x65\x63tive_grant\x18\x02 \x01(\x0b\x32*.injective.exchange.v1beta1.EffectiveGrantR\x0e\x65\x66\x66\x65\x63tiveGrant\"T\n\x1eQueryGrantAuthorizationRequest\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x18\n\x07grantee\x18\x02 \x01(\tR\x07grantee\"X\n\x1fQueryGrantAuthorizationResponse\x12\x35\n\x06\x61mount\x18\x01 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\";\n\x1fQueryGrantAuthorizationsRequest\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\"\xb7\x01\n QueryGrantAuthorizationsResponse\x12K\n\x12total_grant_amount\x18\x01 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10totalGrantAmount\x12\x46\n\x06grants\x18\x02 \x03(\x0b\x32..injective.exchange.v1beta1.GrantAuthorizationR\x06grants*4\n\tOrderSide\x12\x14\n\x10Side_Unspecified\x10\x00\x12\x07\n\x03\x42uy\x10\x01\x12\x08\n\x04Sell\x10\x02*V\n\x14\x43\x61ncellationStrategy\x12\x14\n\x10UnspecifiedOrder\x10\x00\x12\x13\n\x0f\x46romWorstToBest\x10\x01\x12\x13\n\x0f\x46romBestToWorst\x10\x02\x32\xcd\x65\n\x05Query\x12\xba\x01\n\x13QueryExchangeParams\x12\x36.injective.exchange.v1beta1.QueryExchangeParamsRequest\x1a\x37.injective.exchange.v1beta1.QueryExchangeParamsResponse\"2\x82\xd3\xe4\x93\x02,\x12*/injective/exchange/v1beta1/exchangeParams\x12\xce\x01\n\x12SubaccountDeposits\x12:.injective.exchange.v1beta1.QuerySubaccountDepositsRequest\x1a;.injective.exchange.v1beta1.QuerySubaccountDepositsResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/injective/exchange/v1beta1/exchange/subaccountDeposits\x12\xca\x01\n\x11SubaccountDeposit\x12\x39.injective.exchange.v1beta1.QuerySubaccountDepositRequest\x1a:.injective.exchange.v1beta1.QuerySubaccountDepositResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v1beta1/exchange/subaccountDeposit\x12\xc6\x01\n\x10\x45xchangeBalances\x12\x38.injective.exchange.v1beta1.QueryExchangeBalancesRequest\x1a\x39.injective.exchange.v1beta1.QueryExchangeBalancesResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v1beta1/exchange/exchangeBalances\x12\xcc\x01\n\x0f\x41ggregateVolume\x12\x37.injective.exchange.v1beta1.QueryAggregateVolumeRequest\x1a\x38.injective.exchange.v1beta1.QueryAggregateVolumeResponse\"F\x82\xd3\xe4\x93\x02@\x12>/injective/exchange/v1beta1/exchange/aggregateVolume/{account}\x12\xc6\x01\n\x10\x41ggregateVolumes\x12\x38.injective.exchange.v1beta1.QueryAggregateVolumesRequest\x1a\x39.injective.exchange.v1beta1.QueryAggregateVolumesResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v1beta1/exchange/aggregateVolumes\x12\xe6\x01\n\x15\x41ggregateMarketVolume\x12=.injective.exchange.v1beta1.QueryAggregateMarketVolumeRequest\x1a>.injective.exchange.v1beta1.QueryAggregateMarketVolumeResponse\"N\x82\xd3\xe4\x93\x02H\x12\x46/injective/exchange/v1beta1/exchange/aggregateMarketVolume/{market_id}\x12\xde\x01\n\x16\x41ggregateMarketVolumes\x12>.injective.exchange.v1beta1.QueryAggregateMarketVolumesRequest\x1a?.injective.exchange.v1beta1.QueryAggregateMarketVolumesResponse\"C\x82\xd3\xe4\x93\x02=\x12;/injective/exchange/v1beta1/exchange/aggregateMarketVolumes\x12\xbf\x01\n\x0c\x44\x65nomDecimal\x12\x34.injective.exchange.v1beta1.QueryDenomDecimalRequest\x1a\x35.injective.exchange.v1beta1.QueryDenomDecimalResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/exchange/denom_decimal/{denom}\x12\xbb\x01\n\rDenomDecimals\x12\x35.injective.exchange.v1beta1.QueryDenomDecimalsRequest\x1a\x36.injective.exchange.v1beta1.QueryDenomDecimalsResponse\";\x82\xd3\xe4\x93\x02\x35\x12\x33/injective/exchange/v1beta1/exchange/denom_decimals\x12\xaa\x01\n\x0bSpotMarkets\x12\x33.injective.exchange.v1beta1.QuerySpotMarketsRequest\x1a\x34.injective.exchange.v1beta1.QuerySpotMarketsResponse\"0\x82\xd3\xe4\x93\x02*\x12(/injective/exchange/v1beta1/spot/markets\x12\xb3\x01\n\nSpotMarket\x12\x32.injective.exchange.v1beta1.QuerySpotMarketRequest\x1a\x33.injective.exchange.v1beta1.QuerySpotMarketResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/injective/exchange/v1beta1/spot/markets/{market_id}\x12\xbb\x01\n\x0f\x46ullSpotMarkets\x12\x37.injective.exchange.v1beta1.QueryFullSpotMarketsRequest\x1a\x38.injective.exchange.v1beta1.QueryFullSpotMarketsResponse\"5\x82\xd3\xe4\x93\x02/\x12-/injective/exchange/v1beta1/spot/full_markets\x12\xc3\x01\n\x0e\x46ullSpotMarket\x12\x36.injective.exchange.v1beta1.QueryFullSpotMarketRequest\x1a\x37.injective.exchange.v1beta1.QueryFullSpotMarketResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/injective/exchange/v1beta1/spot/full_market/{market_id}\x12\xbe\x01\n\rSpotOrderbook\x12\x35.injective.exchange.v1beta1.QuerySpotOrderbookRequest\x1a\x36.injective.exchange.v1beta1.QuerySpotOrderbookResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v1beta1/spot/orderbook/{market_id}\x12\xd4\x01\n\x10TraderSpotOrders\x12\x38.injective.exchange.v1beta1.QueryTraderSpotOrdersRequest\x1a\x39.injective.exchange.v1beta1.QueryTraderSpotOrdersResponse\"K\x82\xd3\xe4\x93\x02\x45\x12\x43/injective/exchange/v1beta1/spot/orders/{market_id}/{subaccount_id}\x12\xf6\x01\n\x18\x41\x63\x63ountAddressSpotOrders\x12@.injective.exchange.v1beta1.QueryAccountAddressSpotOrdersRequest\x1a\x41.injective.exchange.v1beta1.QueryAccountAddressSpotOrdersResponse\"U\x82\xd3\xe4\x93\x02O\x12M/injective/exchange/v1beta1/spot/orders/{market_id}/account/{account_address}\x12\xe4\x01\n\x12SpotOrdersByHashes\x12:.injective.exchange.v1beta1.QuerySpotOrdersByHashesRequest\x1a;.injective.exchange.v1beta1.QuerySpotOrdersByHashesResponse\"U\x82\xd3\xe4\x93\x02O\x12M/injective/exchange/v1beta1/spot/orders_by_hashes/{market_id}/{subaccount_id}\x12\xc3\x01\n\x10SubaccountOrders\x12\x38.injective.exchange.v1beta1.QuerySubaccountOrdersRequest\x1a\x39.injective.exchange.v1beta1.QuerySubaccountOrdersResponse\":\x82\xd3\xe4\x93\x02\x34\x12\x32/injective/exchange/v1beta1/orders/{subaccount_id}\x12\xe7\x01\n\x19TraderSpotTransientOrders\x12\x38.injective.exchange.v1beta1.QueryTraderSpotOrdersRequest\x1a\x39.injective.exchange.v1beta1.QueryTraderSpotOrdersResponse\"U\x82\xd3\xe4\x93\x02O\x12M/injective/exchange/v1beta1/spot/transient_orders/{market_id}/{subaccount_id}\x12\xd5\x01\n\x12SpotMidPriceAndTOB\x12:.injective.exchange.v1beta1.QuerySpotMidPriceAndTOBRequest\x1a;.injective.exchange.v1beta1.QuerySpotMidPriceAndTOBResponse\"F\x82\xd3\xe4\x93\x02@\x12>/injective/exchange/v1beta1/spot/mid_price_and_tob/{market_id}\x12\xed\x01\n\x18\x44\x65rivativeMidPriceAndTOB\x12@.injective.exchange.v1beta1.QueryDerivativeMidPriceAndTOBRequest\x1a\x41.injective.exchange.v1beta1.QueryDerivativeMidPriceAndTOBResponse\"L\x82\xd3\xe4\x93\x02\x46\x12\x44/injective/exchange/v1beta1/derivative/mid_price_and_tob/{market_id}\x12\xd6\x01\n\x13\x44\x65rivativeOrderbook\x12;.injective.exchange.v1beta1.QueryDerivativeOrderbookRequest\x1a<.injective.exchange.v1beta1.QueryDerivativeOrderbookResponse\"D\x82\xd3\xe4\x93\x02>\x12.injective.exchange.v1beta1.QueryTraderDerivativeOrdersRequest\x1a?.injective.exchange.v1beta1.QueryTraderDerivativeOrdersResponse\"Q\x82\xd3\xe4\x93\x02K\x12I/injective/exchange/v1beta1/derivative/orders/{market_id}/{subaccount_id}\x12\x8e\x02\n\x1e\x41\x63\x63ountAddressDerivativeOrders\x12\x46.injective.exchange.v1beta1.QueryAccountAddressDerivativeOrdersRequest\x1aG.injective.exchange.v1beta1.QueryAccountAddressDerivativeOrdersResponse\"[\x82\xd3\xe4\x93\x02U\x12S/injective/exchange/v1beta1/derivative/orders/{market_id}/account/{account_address}\x12\xfc\x01\n\x18\x44\x65rivativeOrdersByHashes\x12@.injective.exchange.v1beta1.QueryDerivativeOrdersByHashesRequest\x1a\x41.injective.exchange.v1beta1.QueryDerivativeOrdersByHashesResponse\"[\x82\xd3\xe4\x93\x02U\x12S/injective/exchange/v1beta1/derivative/orders_by_hashes/{market_id}/{subaccount_id}\x12\xff\x01\n\x1fTraderDerivativeTransientOrders\x12>.injective.exchange.v1beta1.QueryTraderDerivativeOrdersRequest\x1a?.injective.exchange.v1beta1.QueryTraderDerivativeOrdersResponse\"[\x82\xd3\xe4\x93\x02U\x12S/injective/exchange/v1beta1/derivative/transient_orders/{market_id}/{subaccount_id}\x12\xc2\x01\n\x11\x44\x65rivativeMarkets\x12\x39.injective.exchange.v1beta1.QueryDerivativeMarketsRequest\x1a:.injective.exchange.v1beta1.QueryDerivativeMarketsResponse\"6\x82\xd3\xe4\x93\x02\x30\x12./injective/exchange/v1beta1/derivative/markets\x12\xcb\x01\n\x10\x44\x65rivativeMarket\x12\x38.injective.exchange.v1beta1.QueryDerivativeMarketRequest\x1a\x39.injective.exchange.v1beta1.QueryDerivativeMarketResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/derivative/markets/{market_id}\x12\xe7\x01\n\x17\x44\x65rivativeMarketAddress\x12?.injective.exchange.v1beta1.QueryDerivativeMarketAddressRequest\x1a@.injective.exchange.v1beta1.QueryDerivativeMarketAddressResponse\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/injective/exchange/v1beta1/derivative/market_address/{market_id}\x12\xd1\x01\n\x14SubaccountTradeNonce\x12<.injective.exchange.v1beta1.QuerySubaccountTradeNonceRequest\x1a=.injective.exchange.v1beta1.QuerySubaccountTradeNonceResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/injective/exchange/v1beta1/exchange/{subaccount_id}\x12\xb2\x01\n\x13\x45xchangeModuleState\x12\x33.injective.exchange.v1beta1.QueryModuleStateRequest\x1a\x34.injective.exchange.v1beta1.QueryModuleStateResponse\"0\x82\xd3\xe4\x93\x02*\x12(/injective/exchange/v1beta1/module_state\x12\xa1\x01\n\tPositions\x12\x31.injective.exchange.v1beta1.QueryPositionsRequest\x1a\x32.injective.exchange.v1beta1.QueryPositionsResponse\"-\x82\xd3\xe4\x93\x02\'\x12%/injective/exchange/v1beta1/positions\x12\xcf\x01\n\x13SubaccountPositions\x12;.injective.exchange.v1beta1.QuerySubaccountPositionsRequest\x1a<.injective.exchange.v1beta1.QuerySubaccountPositionsResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v1beta1/positions/{subaccount_id}\x12\xf0\x01\n\x1aSubaccountPositionInMarket\x12\x42.injective.exchange.v1beta1.QuerySubaccountPositionInMarketRequest\x1a\x43.injective.exchange.v1beta1.QuerySubaccountPositionInMarketResponse\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/injective/exchange/v1beta1/positions/{subaccount_id}/{market_id}\x12\x95\x02\n#SubaccountEffectivePositionInMarket\x12K.injective.exchange.v1beta1.QuerySubaccountEffectivePositionInMarketRequest\x1aL.injective.exchange.v1beta1.QuerySubaccountEffectivePositionInMarketResponse\"S\x82\xd3\xe4\x93\x02M\x12K/injective/exchange/v1beta1/effective_positions/{subaccount_id}/{market_id}\x12\xd7\x01\n\x13PerpetualMarketInfo\x12;.injective.exchange.v1beta1.QueryPerpetualMarketInfoRequest\x1a<.injective.exchange.v1beta1.QueryPerpetualMarketInfoResponse\"E\x82\xd3\xe4\x93\x02?\x12=/injective/exchange/v1beta1/perpetual_market_info/{market_id}\x12\xe0\x01\n\x17\x45xpiryFuturesMarketInfo\x12?.injective.exchange.v1beta1.QueryExpiryFuturesMarketInfoRequest\x1a@.injective.exchange.v1beta1.QueryExpiryFuturesMarketInfoResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/expiry_market_info/{market_id}\x12\xe3\x01\n\x16PerpetualMarketFunding\x12>.injective.exchange.v1beta1.QueryPerpetualMarketFundingRequest\x1a?.injective.exchange.v1beta1.QueryPerpetualMarketFundingResponse\"H\x82\xd3\xe4\x93\x02\x42\x12@/injective/exchange/v1beta1/perpetual_market_funding/{market_id}\x12\xe0\x01\n\x17SubaccountOrderMetadata\x12?.injective.exchange.v1beta1.QuerySubaccountOrderMetadataRequest\x1a@.injective.exchange.v1beta1.QuerySubaccountOrderMetadataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/order_metadata/{subaccount_id}\x12\xc3\x01\n\x11TradeRewardPoints\x12\x39.injective.exchange.v1beta1.QueryTradeRewardPointsRequest\x1a:.injective.exchange.v1beta1.QueryTradeRewardPointsResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//injective/exchange/v1beta1/trade_reward_points\x12\xd2\x01\n\x18PendingTradeRewardPoints\x12\x39.injective.exchange.v1beta1.QueryTradeRewardPointsRequest\x1a:.injective.exchange.v1beta1.QueryTradeRewardPointsResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/injective/exchange/v1beta1/pending_trade_reward_points\x12\xcb\x01\n\x13TradeRewardCampaign\x12;.injective.exchange.v1beta1.QueryTradeRewardCampaignRequest\x1a<.injective.exchange.v1beta1.QueryTradeRewardCampaignResponse\"9\x82\xd3\xe4\x93\x02\x33\x12\x31/injective/exchange/v1beta1/trade_reward_campaign\x12\xe2\x01\n\x16\x46\x65\x65\x44iscountAccountInfo\x12>.injective.exchange.v1beta1.QueryFeeDiscountAccountInfoRequest\x1a?.injective.exchange.v1beta1.QueryFeeDiscountAccountInfoResponse\"G\x82\xd3\xe4\x93\x02\x41\x12?/injective/exchange/v1beta1/fee_discount_account_info/{account}\x12\xcb\x01\n\x13\x46\x65\x65\x44iscountSchedule\x12;.injective.exchange.v1beta1.QueryFeeDiscountScheduleRequest\x1a<.injective.exchange.v1beta1.QueryFeeDiscountScheduleResponse\"9\x82\xd3\xe4\x93\x02\x33\x12\x31/injective/exchange/v1beta1/fee_discount_schedule\x12\xd0\x01\n\x11\x42\x61lanceMismatches\x12\x39.injective.exchange.v1beta1.QueryBalanceMismatchesRequest\x1a:.injective.exchange.v1beta1.QueryBalanceMismatchesResponse\"D\x82\xd3\xe4\x93\x02>\x12.injective.exchange.v1beta1.QueryHistoricalTradeRecordsRequest\x1a?.injective.exchange.v1beta1.QueryHistoricalTradeRecordsResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/injective/exchange/v1beta1/historical_trade_records\x12\xd7\x01\n\x13IsOptedOutOfRewards\x12;.injective.exchange.v1beta1.QueryIsOptedOutOfRewardsRequest\x1a<.injective.exchange.v1beta1.QueryIsOptedOutOfRewardsResponse\"E\x82\xd3\xe4\x93\x02?\x12=/injective/exchange/v1beta1/is_opted_out_of_rewards/{account}\x12\xe5\x01\n\x19OptedOutOfRewardsAccounts\x12\x41.injective.exchange.v1beta1.QueryOptedOutOfRewardsAccountsRequest\x1a\x42.injective.exchange.v1beta1.QueryOptedOutOfRewardsAccountsResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/injective/exchange/v1beta1/opted_out_of_rewards_accounts\x12\xca\x01\n\x10MarketVolatility\x12\x38.injective.exchange.v1beta1.QueryMarketVolatilityRequest\x1a\x39.injective.exchange.v1beta1.QueryMarketVolatilityResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/injective/exchange/v1beta1/market_volatility/{market_id}\x12\xc1\x01\n\x14\x42inaryOptionsMarkets\x12\x35.injective.exchange.v1beta1.QueryBinaryMarketsRequest\x1a\x36.injective.exchange.v1beta1.QueryBinaryMarketsResponse\":\x82\xd3\xe4\x93\x02\x34\x12\x32/injective/exchange/v1beta1/binary_options/markets\x12\x99\x02\n!TraderDerivativeConditionalOrders\x12I.injective.exchange.v1beta1.QueryTraderDerivativeConditionalOrdersRequest\x1aJ.injective.exchange.v1beta1.QueryTraderDerivativeConditionalOrdersResponse\"]\x82\xd3\xe4\x93\x02W\x12U/injective/exchange/v1beta1/derivative/orders/conditional/{market_id}/{subaccount_id}\x12\xfe\x01\n\"MarketAtomicExecutionFeeMultiplier\x12J.injective.exchange.v1beta1.QueryMarketAtomicExecutionFeeMultiplierRequest\x1aK.injective.exchange.v1beta1.QueryMarketAtomicExecutionFeeMultiplierResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/injective/exchange/v1beta1/atomic_order_fee_multiplier\x12\xc9\x01\n\x10\x41\x63tiveStakeGrant\x12\x38.injective.exchange.v1beta1.QueryActiveStakeGrantRequest\x1a\x39.injective.exchange.v1beta1.QueryActiveStakeGrantResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/injective/exchange/v1beta1/active_stake_grant/{grantee}\x12\xda\x01\n\x12GrantAuthorization\x12:.injective.exchange.v1beta1.QueryGrantAuthorizationRequest\x1a;.injective.exchange.v1beta1.QueryGrantAuthorizationResponse\"K\x82\xd3\xe4\x93\x02\x45\x12\x43/injective/exchange/v1beta1/grant_authorization/{granter}/{grantee}\x12\xd4\x01\n\x13GrantAuthorizations\x12;.injective.exchange.v1beta1.QueryGrantAuthorizationsRequest\x1a<.injective.exchange.v1beta1.QueryGrantAuthorizationsResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/grant_authorizations/{granter}B\x86\x02\n\x1e\x63om.injective.exchange.v1beta1B\nQueryProtoP\x01ZNgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types\xa2\x02\x03IEX\xaa\x02\x1aInjective.Exchange.V1beta1\xca\x02\x1aInjective\\Exchange\\V1beta1\xe2\x02&Injective\\Exchange\\V1beta1\\GPBMetadata\xea\x02\x1cInjective::Exchange::V1beta1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&injective/exchange/v1beta1/query.proto\x12\x1ainjective.exchange.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a)injective/exchange/v1beta1/exchange.proto\x1a(injective/exchange/v1beta1/genesis.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x14gogoproto/gogo.proto\"O\n\nSubaccount\x12\x16\n\x06trader\x18\x01 \x01(\tR\x06trader\x12)\n\x10subaccount_nonce\x18\x02 \x01(\rR\x0fsubaccountNonce\"`\n\x1cQuerySubaccountOrdersRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"\xc1\x01\n\x1dQuerySubaccountOrdersResponse\x12N\n\nbuy_orders\x18\x01 \x03(\x0b\x32/.injective.exchange.v1beta1.SubaccountOrderDataR\tbuyOrders\x12P\n\x0bsell_orders\x18\x02 \x03(\x0b\x32/.injective.exchange.v1beta1.SubaccountOrderDataR\nsellOrders\"\xaf\x01\n%SubaccountOrderbookMetadataWithMarket\x12S\n\x08metadata\x18\x01 \x01(\x0b\x32\x37.injective.exchange.v1beta1.SubaccountOrderbookMetadataR\x08metadata\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x14\n\x05isBuy\x18\x03 \x01(\x08R\x05isBuy\"\x1c\n\x1aQueryExchangeParamsRequest\"_\n\x1bQueryExchangeParamsResponse\x12@\n\x06params\x18\x01 \x01(\x0b\x32\".injective.exchange.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06params\"\x93\x01\n\x1eQuerySubaccountDepositsRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12L\n\nsubaccount\x18\x02 \x01(\x0b\x32&.injective.exchange.v1beta1.SubaccountB\x04\xc8\xde\x1f\x01R\nsubaccount\"\xea\x01\n\x1fQuerySubaccountDepositsResponse\x12\x65\n\x08\x64\x65posits\x18\x01 \x03(\x0b\x32I.injective.exchange.v1beta1.QuerySubaccountDepositsResponse.DepositsEntryR\x08\x64\x65posits\x1a`\n\rDepositsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32#.injective.exchange.v1beta1.DepositR\x05value:\x02\x38\x01\"\x1e\n\x1cQueryExchangeBalancesRequest\"f\n\x1dQueryExchangeBalancesResponse\x12\x45\n\x08\x62\x61lances\x18\x01 \x03(\x0b\x32#.injective.exchange.v1beta1.BalanceB\x04\xc8\xde\x1f\x00R\x08\x62\x61lances\"7\n\x1bQueryAggregateVolumeRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"u\n\x1cQueryAggregateVolumeResponse\x12U\n\x11\x61ggregate_volumes\x18\x01 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\x10\x61ggregateVolumes\"Y\n\x1cQueryAggregateVolumesRequest\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"\xf9\x01\n\x1dQueryAggregateVolumesResponse\x12t\n\x19\x61ggregate_account_volumes\x18\x01 \x03(\x0b\x32\x38.injective.exchange.v1beta1.AggregateAccountVolumeRecordR\x17\x61ggregateAccountVolumes\x12\x62\n\x18\x61ggregate_market_volumes\x18\x02 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\x16\x61ggregateMarketVolumes\"@\n!QueryAggregateMarketVolumeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"l\n\"QueryAggregateMarketVolumeResponse\x12\x46\n\x06volume\x18\x01 \x01(\x0b\x32(.injective.exchange.v1beta1.VolumeRecordB\x04\xc8\xde\x1f\x00R\x06volume\"0\n\x18QueryDenomDecimalRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\"5\n\x19QueryDenomDecimalResponse\x12\x18\n\x07\x64\x65\x63imal\x18\x01 \x01(\x04R\x07\x64\x65\x63imal\"3\n\x19QueryDenomDecimalsRequest\x12\x16\n\x06\x64\x65noms\x18\x01 \x03(\tR\x06\x64\x65noms\"t\n\x1aQueryDenomDecimalsResponse\x12V\n\x0e\x64\x65nom_decimals\x18\x01 \x03(\x0b\x32).injective.exchange.v1beta1.DenomDecimalsB\x04\xc8\xde\x1f\x00R\rdenomDecimals\"C\n\"QueryAggregateMarketVolumesRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"i\n#QueryAggregateMarketVolumesResponse\x12\x42\n\x07volumes\x18\x01 \x03(\x0b\x32(.injective.exchange.v1beta1.MarketVolumeR\x07volumes\"Z\n\x1dQuerySubaccountDepositRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\"a\n\x1eQuerySubaccountDepositResponse\x12?\n\x08\x64\x65posits\x18\x01 \x01(\x0b\x32#.injective.exchange.v1beta1.DepositR\x08\x64\x65posits\"P\n\x17QuerySpotMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"\\\n\x18QuerySpotMarketsResponse\x12@\n\x07markets\x18\x01 \x03(\x0b\x32&.injective.exchange.v1beta1.SpotMarketR\x07markets\"5\n\x16QuerySpotMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"Y\n\x17QuerySpotMarketResponse\x12>\n\x06market\x18\x01 \x01(\x0b\x32&.injective.exchange.v1beta1.SpotMarketR\x06market\"\xd6\x02\n\x19QuerySpotOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05limit\x18\x02 \x01(\x04R\x05limit\x12\x44\n\norder_side\x18\x03 \x01(\x0e\x32%.injective.exchange.v1beta1.OrderSideR\torderSide\x12_\n\x19limit_cumulative_notional\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeNotional\x12_\n\x19limit_cumulative_quantity\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeQuantity\"\xb8\x01\n\x1aQuerySpotOrderbookResponse\x12K\n\x10\x62uys_price_level\x18\x01 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\x0e\x62uysPriceLevel\x12M\n\x11sells_price_level\x18\x02 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\x0fsellsPriceLevel\"\xad\x01\n\x0e\x46ullSpotMarket\x12>\n\x06market\x18\x01 \x01(\x0b\x32&.injective.exchange.v1beta1.SpotMarketR\x06market\x12[\n\x11mid_price_and_tob\x18\x02 \x01(\x0b\x32*.injective.exchange.v1beta1.MidPriceAndTOBB\x04\xc8\xde\x1f\x01R\x0emidPriceAndTob\"\x88\x01\n\x1bQueryFullSpotMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\x12\x32\n\x16with_mid_price_and_tob\x18\x03 \x01(\x08R\x12withMidPriceAndTob\"d\n\x1cQueryFullSpotMarketsResponse\x12\x44\n\x07markets\x18\x01 \x03(\x0b\x32*.injective.exchange.v1beta1.FullSpotMarketR\x07markets\"m\n\x1aQueryFullSpotMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x32\n\x16with_mid_price_and_tob\x18\x02 \x01(\x08R\x12withMidPriceAndTob\"a\n\x1bQueryFullSpotMarketResponse\x12\x42\n\x06market\x18\x01 \x01(\x0b\x32*.injective.exchange.v1beta1.FullSpotMarketR\x06market\"\x85\x01\n\x1eQuerySpotOrdersByHashesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12!\n\x0corder_hashes\x18\x03 \x03(\tR\x0borderHashes\"l\n\x1fQuerySpotOrdersByHashesResponse\x12I\n\x06orders\x18\x01 \x03(\x0b\x32\x31.injective.exchange.v1beta1.TrimmedSpotLimitOrderR\x06orders\"`\n\x1cQueryTraderSpotOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"l\n$QueryAccountAddressSpotOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\"\x9b\x02\n\x15TrimmedSpotLimitOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12?\n\x08\x66illable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12\x14\n\x05isBuy\x18\x04 \x01(\x08R\x05isBuy\x12\x1d\n\norder_hash\x18\x05 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id\"j\n\x1dQueryTraderSpotOrdersResponse\x12I\n\x06orders\x18\x01 \x03(\x0b\x32\x31.injective.exchange.v1beta1.TrimmedSpotLimitOrderR\x06orders\"r\n%QueryAccountAddressSpotOrdersResponse\x12I\n\x06orders\x18\x01 \x03(\x0b\x32\x31.injective.exchange.v1beta1.TrimmedSpotLimitOrderR\x06orders\"=\n\x1eQuerySpotMidPriceAndTOBRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\xfb\x01\n\x1fQuerySpotMidPriceAndTOBResponse\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"C\n$QueryDerivativeMidPriceAndTOBRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\x81\x02\n%QueryDerivativeMidPriceAndTOBResponse\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"\xb5\x01\n\x1fQueryDerivativeOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05limit\x18\x02 \x01(\x04R\x05limit\x12_\n\x19limit_cumulative_notional\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeNotional\"\xbe\x01\n QueryDerivativeOrderbookResponse\x12K\n\x10\x62uys_price_level\x18\x01 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\x0e\x62uysPriceLevel\x12M\n\x11sells_price_level\x18\x02 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\x0fsellsPriceLevel\"\x9c\x03\n.QueryTraderSpotOrdersToCancelUpToAmountRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x44\n\x0b\x62\x61se_amount\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nbaseAmount\x12\x46\n\x0cquote_amount\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bquoteAmount\x12L\n\x08strategy\x18\x05 \x01(\x0e\x32\x30.injective.exchange.v1beta1.CancellationStrategyR\x08strategy\x12L\n\x0freference_price\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ereferencePrice\"\xdc\x02\n4QueryTraderDerivativeOrdersToCancelUpToAmountRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x46\n\x0cquote_amount\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bquoteAmount\x12L\n\x08strategy\x18\x04 \x01(\x0e\x32\x30.injective.exchange.v1beta1.CancellationStrategyR\x08strategy\x12L\n\x0freference_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ereferencePrice\"f\n\"QueryTraderDerivativeOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"r\n*QueryAccountAddressDerivativeOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\"\xe9\x02\n\x1bTrimmedDerivativeLimitOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12?\n\x08\x66illable\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12\x1f\n\x05isBuy\x18\x05 \x01(\x08\x42\t\xea\xde\x1f\x05isBuyR\x05isBuy\x12\x1d\n\norder_hash\x18\x06 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\"v\n#QueryTraderDerivativeOrdersResponse\x12O\n\x06orders\x18\x01 \x03(\x0b\x32\x37.injective.exchange.v1beta1.TrimmedDerivativeLimitOrderR\x06orders\"~\n+QueryAccountAddressDerivativeOrdersResponse\x12O\n\x06orders\x18\x01 \x03(\x0b\x32\x37.injective.exchange.v1beta1.TrimmedDerivativeLimitOrderR\x06orders\"\x8b\x01\n$QueryDerivativeOrdersByHashesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12!\n\x0corder_hashes\x18\x03 \x03(\tR\x0borderHashes\"x\n%QueryDerivativeOrdersByHashesResponse\x12O\n\x06orders\x18\x01 \x03(\x0b\x32\x37.injective.exchange.v1beta1.TrimmedDerivativeLimitOrderR\x06orders\"\x8a\x01\n\x1dQueryDerivativeMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\x12\x32\n\x16with_mid_price_and_tob\x18\x03 \x01(\x08R\x12withMidPriceAndTob\"\x88\x01\n\nPriceLevel\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\"\xbf\x01\n\x14PerpetualMarketState\x12P\n\x0bmarket_info\x18\x01 \x01(\x0b\x32/.injective.exchange.v1beta1.PerpetualMarketInfoR\nmarketInfo\x12U\n\x0c\x66unding_info\x18\x02 \x01(\x0b\x32\x32.injective.exchange.v1beta1.PerpetualMarketFundingR\x0b\x66undingInfo\"\xba\x03\n\x14\x46ullDerivativeMarket\x12\x44\n\x06market\x18\x01 \x01(\x0b\x32,.injective.exchange.v1beta1.DerivativeMarketR\x06market\x12Y\n\x0eperpetual_info\x18\x02 \x01(\x0b\x32\x30.injective.exchange.v1beta1.PerpetualMarketStateH\x00R\rperpetualInfo\x12X\n\x0c\x66utures_info\x18\x03 \x01(\x0b\x32\x33.injective.exchange.v1beta1.ExpiryFuturesMarketInfoH\x00R\x0b\x66uturesInfo\x12\x42\n\nmark_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tmarkPrice\x12[\n\x11mid_price_and_tob\x18\x05 \x01(\x0b\x32*.injective.exchange.v1beta1.MidPriceAndTOBB\x04\xc8\xde\x1f\x01R\x0emidPriceAndTobB\x06\n\x04info\"l\n\x1eQueryDerivativeMarketsResponse\x12J\n\x07markets\x18\x01 \x03(\x0b\x32\x30.injective.exchange.v1beta1.FullDerivativeMarketR\x07markets\";\n\x1cQueryDerivativeMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"i\n\x1dQueryDerivativeMarketResponse\x12H\n\x06market\x18\x01 \x01(\x0b\x32\x30.injective.exchange.v1beta1.FullDerivativeMarketR\x06market\"B\n#QueryDerivativeMarketAddressRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"e\n$QueryDerivativeMarketAddressResponse\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"G\n QuerySubaccountTradeNonceRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"F\n\x1fQuerySubaccountPositionsRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"j\n&QuerySubaccountPositionInMarketRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"s\n/QuerySubaccountEffectivePositionInMarketRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"J\n#QuerySubaccountOrderMetadataRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"n\n QuerySubaccountPositionsResponse\x12J\n\x05state\x18\x01 \x03(\x0b\x32..injective.exchange.v1beta1.DerivativePositionB\x04\xc8\xde\x1f\x00R\x05state\"k\n\'QuerySubaccountPositionInMarketResponse\x12@\n\x05state\x18\x01 \x01(\x0b\x32$.injective.exchange.v1beta1.PositionB\x04\xc8\xde\x1f\x01R\x05state\"\x83\x02\n\x11\x45\x66\x66\x65\x63tivePosition\x12\x17\n\x07is_long\x18\x01 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12N\n\x10\x65\x66\x66\x65\x63tive_margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x65\x66\x66\x65\x63tiveMargin\"}\n0QuerySubaccountEffectivePositionInMarketResponse\x12I\n\x05state\x18\x01 \x01(\x0b\x32-.injective.exchange.v1beta1.EffectivePositionB\x04\xc8\xde\x1f\x01R\x05state\">\n\x1fQueryPerpetualMarketInfoRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"m\n QueryPerpetualMarketInfoResponse\x12I\n\x04info\x18\x01 \x01(\x0b\x32/.injective.exchange.v1beta1.PerpetualMarketInfoB\x04\xc8\xde\x1f\x00R\x04info\"B\n#QueryExpiryFuturesMarketInfoRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"u\n$QueryExpiryFuturesMarketInfoResponse\x12M\n\x04info\x18\x01 \x01(\x0b\x32\x33.injective.exchange.v1beta1.ExpiryFuturesMarketInfoB\x04\xc8\xde\x1f\x00R\x04info\"A\n\"QueryPerpetualMarketFundingRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"u\n#QueryPerpetualMarketFundingResponse\x12N\n\x05state\x18\x01 \x01(\x0b\x32\x32.injective.exchange.v1beta1.PerpetualMarketFundingB\x04\xc8\xde\x1f\x00R\x05state\"\x8b\x01\n$QuerySubaccountOrderMetadataResponse\x12\x63\n\x08metadata\x18\x01 \x03(\x0b\x32\x41.injective.exchange.v1beta1.SubaccountOrderbookMetadataWithMarketB\x04\xc8\xde\x1f\x00R\x08metadata\"9\n!QuerySubaccountTradeNonceResponse\x12\x14\n\x05nonce\x18\x01 \x01(\rR\x05nonce\"\x19\n\x17QueryModuleStateRequest\"Z\n\x18QueryModuleStateResponse\x12>\n\x05state\x18\x01 \x01(\x0b\x32(.injective.exchange.v1beta1.GenesisStateR\x05state\"\x17\n\x15QueryPositionsRequest\"d\n\x16QueryPositionsResponse\x12J\n\x05state\x18\x01 \x03(\x0b\x32..injective.exchange.v1beta1.DerivativePositionB\x04\xc8\xde\x1f\x00R\x05state\"q\n\x1dQueryTradeRewardPointsRequest\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\x12\x34\n\x16pending_pool_timestamp\x18\x02 \x01(\x03R\x14pendingPoolTimestamp\"\x84\x01\n\x1eQueryTradeRewardPointsResponse\x12\x62\n\x1b\x61\x63\x63ount_trade_reward_points\x18\x01 \x03(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x18\x61\x63\x63ountTradeRewardPoints\"!\n\x1fQueryTradeRewardCampaignRequest\"\xfe\x04\n QueryTradeRewardCampaignResponse\x12v\n\x1ctrading_reward_campaign_info\x18\x01 \x01(\x0b\x32\x35.injective.exchange.v1beta1.TradingRewardCampaignInfoR\x19tradingRewardCampaignInfo\x12\x80\x01\n%trading_reward_pool_campaign_schedule\x18\x02 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR!tradingRewardPoolCampaignSchedule\x12^\n\x19total_trade_reward_points\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16totalTradeRewardPoints\x12\x8f\x01\n-pending_trading_reward_pool_campaign_schedule\x18\x04 \x03(\x0b\x32..injective.exchange.v1beta1.CampaignRewardPoolR(pendingTradingRewardPoolCampaignSchedule\x12m\n!pending_total_trade_reward_points\x18\x05 \x03(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1dpendingTotalTradeRewardPoints\";\n\x1fQueryIsOptedOutOfRewardsRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"D\n QueryIsOptedOutOfRewardsResponse\x12 \n\x0cis_opted_out\x18\x01 \x01(\x08R\nisOptedOut\"\'\n%QueryOptedOutOfRewardsAccountsRequest\"D\n&QueryOptedOutOfRewardsAccountsResponse\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\">\n\"QueryFeeDiscountAccountInfoRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"\xe9\x01\n#QueryFeeDiscountAccountInfoResponse\x12\x1d\n\ntier_level\x18\x01 \x01(\x04R\ttierLevel\x12R\n\x0c\x61\x63\x63ount_info\x18\x02 \x01(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountTierInfoR\x0b\x61\x63\x63ountInfo\x12O\n\x0b\x61\x63\x63ount_ttl\x18\x03 \x01(\x0b\x32..injective.exchange.v1beta1.FeeDiscountTierTTLR\naccountTtl\"!\n\x1fQueryFeeDiscountScheduleRequest\"\x87\x01\n QueryFeeDiscountScheduleResponse\x12\x63\n\x15\x66\x65\x65_discount_schedule\x18\x01 \x01(\x0b\x32/.injective.exchange.v1beta1.FeeDiscountScheduleR\x13\x66\x65\x65\x44iscountSchedule\"@\n\x1dQueryBalanceMismatchesRequest\x12\x1f\n\x0b\x64ust_factor\x18\x01 \x01(\x03R\ndustFactor\"\xa2\x03\n\x0f\x42\x61lanceMismatch\x12\"\n\x0csubaccountId\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x41\n\tavailable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tavailable\x12\x39\n\x05total\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05total\x12\x46\n\x0c\x62\x61lance_hold\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\x12J\n\x0e\x65xpected_total\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rexpectedTotal\x12\x43\n\ndifference\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\ndifference\"|\n\x1eQueryBalanceMismatchesResponse\x12Z\n\x12\x62\x61lance_mismatches\x18\x01 \x03(\x0b\x32+.injective.exchange.v1beta1.BalanceMismatchR\x11\x62\x61lanceMismatches\"%\n#QueryBalanceWithBalanceHoldsRequest\"\x97\x02\n\x15\x42\x61lanceWithMarginHold\x12\"\n\x0csubaccountId\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x41\n\tavailable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tavailable\x12\x39\n\x05total\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05total\x12\x46\n\x0c\x62\x61lance_hold\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\"\x96\x01\n$QueryBalanceWithBalanceHoldsResponse\x12n\n\x1a\x62\x61lance_with_balance_holds\x18\x01 \x03(\x0b\x32\x31.injective.exchange.v1beta1.BalanceWithMarginHoldR\x17\x62\x61lanceWithBalanceHolds\"\'\n%QueryFeeDiscountTierStatisticsRequest\"9\n\rTierStatistic\x12\x12\n\x04tier\x18\x01 \x01(\x04R\x04tier\x12\x14\n\x05\x63ount\x18\x02 \x01(\x04R\x05\x63ount\"s\n&QueryFeeDiscountTierStatisticsResponse\x12I\n\nstatistics\x18\x01 \x03(\x0b\x32).injective.exchange.v1beta1.TierStatisticR\nstatistics\"\x17\n\x15MitoVaultInfosRequest\"\xc4\x01\n\x16MitoVaultInfosResponse\x12)\n\x10master_addresses\x18\x01 \x03(\tR\x0fmasterAddresses\x12\x31\n\x14\x64\x65rivative_addresses\x18\x02 \x03(\tR\x13\x64\x65rivativeAddresses\x12%\n\x0espot_addresses\x18\x03 \x03(\tR\rspotAddresses\x12%\n\x0e\x63w20_addresses\x18\x04 \x03(\tR\rcw20Addresses\"D\n\x1dQueryMarketIDFromVaultRequest\x12#\n\rvault_address\x18\x01 \x01(\tR\x0cvaultAddress\"=\n\x1eQueryMarketIDFromVaultResponse\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"A\n\"QueryHistoricalTradeRecordsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"t\n#QueryHistoricalTradeRecordsResponse\x12M\n\rtrade_records\x18\x01 \x03(\x0b\x32(.injective.exchange.v1beta1.TradeRecordsR\x0ctradeRecords\"\xb7\x01\n\x13TradeHistoryOptions\x12,\n\x12trade_grouping_sec\x18\x01 \x01(\x04R\x10tradeGroupingSec\x12\x17\n\x07max_age\x18\x02 \x01(\x04R\x06maxAge\x12.\n\x13include_raw_history\x18\x04 \x01(\x08R\x11includeRawHistory\x12)\n\x10include_metadata\x18\x05 \x01(\x08R\x0fincludeMetadata\"\xa0\x01\n\x1cQueryMarketVolatilityRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x63\n\x15trade_history_options\x18\x02 \x01(\x0b\x32/.injective.exchange.v1beta1.TradeHistoryOptionsR\x13tradeHistoryOptions\"\x83\x02\n\x1dQueryMarketVolatilityResponse\x12?\n\nvolatility\x18\x01 \x01(\tB\x1f\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nvolatility\x12W\n\x10history_metadata\x18\x02 \x01(\x0b\x32,.injective.oracle.v1beta1.MetadataStatisticsR\x0fhistoryMetadata\x12H\n\x0braw_history\x18\x03 \x03(\x0b\x32\'.injective.exchange.v1beta1.TradeRecordR\nrawHistory\"3\n\x19QueryBinaryMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\"g\n\x1aQueryBinaryMarketsResponse\x12I\n\x07markets\x18\x01 \x03(\x0b\x32/.injective.exchange.v1beta1.BinaryOptionsMarketR\x07markets\"q\n-QueryTraderDerivativeConditionalOrdersRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"\x9e\x03\n!TrimmedDerivativeConditionalOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12G\n\x0ctriggerPrice\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1f\n\x05isBuy\x18\x05 \x01(\x08\x42\t\xea\xde\x1f\x05isBuyR\x05isBuy\x12%\n\x07isLimit\x18\x06 \x01(\x08\x42\x0b\xea\xde\x1f\x07isLimitR\x07isLimit\x12\x1d\n\norder_hash\x18\x07 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x08 \x01(\tR\x03\x63id\"\x87\x01\n.QueryTraderDerivativeConditionalOrdersResponse\x12U\n\x06orders\x18\x01 \x03(\x0b\x32=.injective.exchange.v1beta1.TrimmedDerivativeConditionalOrderR\x06orders\"<\n\x1dQueryFullSpotOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\xa6\x01\n\x1eQueryFullSpotOrderbookResponse\x12\x41\n\x04\x42ids\x18\x01 \x03(\x0b\x32-.injective.exchange.v1beta1.TrimmedLimitOrderR\x04\x42ids\x12\x41\n\x04\x41sks\x18\x02 \x03(\x0b\x32-.injective.exchange.v1beta1.TrimmedLimitOrderR\x04\x41sks\"B\n#QueryFullDerivativeOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\xac\x01\n$QueryFullDerivativeOrderbookResponse\x12\x41\n\x04\x42ids\x18\x01 \x03(\x0b\x32-.injective.exchange.v1beta1.TrimmedLimitOrderR\x04\x42ids\x12\x41\n\x04\x41sks\x18\x02 \x03(\x0b\x32-.injective.exchange.v1beta1.TrimmedLimitOrderR\x04\x41sks\"\xd3\x01\n\x11TrimmedLimitOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\"M\n.QueryMarketAtomicExecutionFeeMultiplierRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"v\n/QueryMarketAtomicExecutionFeeMultiplierResponse\x12\x43\n\nmultiplier\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nmultiplier\"8\n\x1cQueryActiveStakeGrantRequest\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\"\xb3\x01\n\x1dQueryActiveStakeGrantResponse\x12=\n\x05grant\x18\x01 \x01(\x0b\x32\'.injective.exchange.v1beta1.ActiveGrantR\x05grant\x12S\n\x0f\x65\x66\x66\x65\x63tive_grant\x18\x02 \x01(\x0b\x32*.injective.exchange.v1beta1.EffectiveGrantR\x0e\x65\x66\x66\x65\x63tiveGrant\"T\n\x1eQueryGrantAuthorizationRequest\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x18\n\x07grantee\x18\x02 \x01(\tR\x07grantee\"X\n\x1fQueryGrantAuthorizationResponse\x12\x35\n\x06\x61mount\x18\x01 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\";\n\x1fQueryGrantAuthorizationsRequest\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\"\xb7\x01\n QueryGrantAuthorizationsResponse\x12K\n\x12total_grant_amount\x18\x01 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10totalGrantAmount\x12\x46\n\x06grants\x18\x02 \x03(\x0b\x32..injective.exchange.v1beta1.GrantAuthorizationR\x06grants*4\n\tOrderSide\x12\x14\n\x10Side_Unspecified\x10\x00\x12\x07\n\x03\x42uy\x10\x01\x12\x08\n\x04Sell\x10\x02*V\n\x14\x43\x61ncellationStrategy\x12\x14\n\x10UnspecifiedOrder\x10\x00\x12\x13\n\x0f\x46romWorstToBest\x10\x01\x12\x13\n\x0f\x46romBestToWorst\x10\x02\x32\xffh\n\x05Query\x12\xe2\x01\n\x15L3DerivativeOrderBook\x12?.injective.exchange.v1beta1.QueryFullDerivativeOrderbookRequest\x1a@.injective.exchange.v1beta1.QueryFullDerivativeOrderbookResponse\"F\x82\xd3\xe4\x93\x02@\x12>/injective/exchange/v1beta1/derivative/L3OrderBook/{market_id}\x12\xca\x01\n\x0fL3SpotOrderBook\x12\x39.injective.exchange.v1beta1.QueryFullSpotOrderbookRequest\x1a:.injective.exchange.v1beta1.QueryFullSpotOrderbookResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/injective/exchange/v1beta1/spot/L3OrderBook/{market_id}\x12\xba\x01\n\x13QueryExchangeParams\x12\x36.injective.exchange.v1beta1.QueryExchangeParamsRequest\x1a\x37.injective.exchange.v1beta1.QueryExchangeParamsResponse\"2\x82\xd3\xe4\x93\x02,\x12*/injective/exchange/v1beta1/exchangeParams\x12\xce\x01\n\x12SubaccountDeposits\x12:.injective.exchange.v1beta1.QuerySubaccountDepositsRequest\x1a;.injective.exchange.v1beta1.QuerySubaccountDepositsResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/injective/exchange/v1beta1/exchange/subaccountDeposits\x12\xca\x01\n\x11SubaccountDeposit\x12\x39.injective.exchange.v1beta1.QuerySubaccountDepositRequest\x1a:.injective.exchange.v1beta1.QuerySubaccountDepositResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v1beta1/exchange/subaccountDeposit\x12\xc6\x01\n\x10\x45xchangeBalances\x12\x38.injective.exchange.v1beta1.QueryExchangeBalancesRequest\x1a\x39.injective.exchange.v1beta1.QueryExchangeBalancesResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v1beta1/exchange/exchangeBalances\x12\xcc\x01\n\x0f\x41ggregateVolume\x12\x37.injective.exchange.v1beta1.QueryAggregateVolumeRequest\x1a\x38.injective.exchange.v1beta1.QueryAggregateVolumeResponse\"F\x82\xd3\xe4\x93\x02@\x12>/injective/exchange/v1beta1/exchange/aggregateVolume/{account}\x12\xc6\x01\n\x10\x41ggregateVolumes\x12\x38.injective.exchange.v1beta1.QueryAggregateVolumesRequest\x1a\x39.injective.exchange.v1beta1.QueryAggregateVolumesResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v1beta1/exchange/aggregateVolumes\x12\xe6\x01\n\x15\x41ggregateMarketVolume\x12=.injective.exchange.v1beta1.QueryAggregateMarketVolumeRequest\x1a>.injective.exchange.v1beta1.QueryAggregateMarketVolumeResponse\"N\x82\xd3\xe4\x93\x02H\x12\x46/injective/exchange/v1beta1/exchange/aggregateMarketVolume/{market_id}\x12\xde\x01\n\x16\x41ggregateMarketVolumes\x12>.injective.exchange.v1beta1.QueryAggregateMarketVolumesRequest\x1a?.injective.exchange.v1beta1.QueryAggregateMarketVolumesResponse\"C\x82\xd3\xe4\x93\x02=\x12;/injective/exchange/v1beta1/exchange/aggregateMarketVolumes\x12\xbf\x01\n\x0c\x44\x65nomDecimal\x12\x34.injective.exchange.v1beta1.QueryDenomDecimalRequest\x1a\x35.injective.exchange.v1beta1.QueryDenomDecimalResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/exchange/denom_decimal/{denom}\x12\xbb\x01\n\rDenomDecimals\x12\x35.injective.exchange.v1beta1.QueryDenomDecimalsRequest\x1a\x36.injective.exchange.v1beta1.QueryDenomDecimalsResponse\";\x82\xd3\xe4\x93\x02\x35\x12\x33/injective/exchange/v1beta1/exchange/denom_decimals\x12\xaa\x01\n\x0bSpotMarkets\x12\x33.injective.exchange.v1beta1.QuerySpotMarketsRequest\x1a\x34.injective.exchange.v1beta1.QuerySpotMarketsResponse\"0\x82\xd3\xe4\x93\x02*\x12(/injective/exchange/v1beta1/spot/markets\x12\xb3\x01\n\nSpotMarket\x12\x32.injective.exchange.v1beta1.QuerySpotMarketRequest\x1a\x33.injective.exchange.v1beta1.QuerySpotMarketResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/injective/exchange/v1beta1/spot/markets/{market_id}\x12\xbb\x01\n\x0f\x46ullSpotMarkets\x12\x37.injective.exchange.v1beta1.QueryFullSpotMarketsRequest\x1a\x38.injective.exchange.v1beta1.QueryFullSpotMarketsResponse\"5\x82\xd3\xe4\x93\x02/\x12-/injective/exchange/v1beta1/spot/full_markets\x12\xc3\x01\n\x0e\x46ullSpotMarket\x12\x36.injective.exchange.v1beta1.QueryFullSpotMarketRequest\x1a\x37.injective.exchange.v1beta1.QueryFullSpotMarketResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/injective/exchange/v1beta1/spot/full_market/{market_id}\x12\xbe\x01\n\rSpotOrderbook\x12\x35.injective.exchange.v1beta1.QuerySpotOrderbookRequest\x1a\x36.injective.exchange.v1beta1.QuerySpotOrderbookResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v1beta1/spot/orderbook/{market_id}\x12\xd4\x01\n\x10TraderSpotOrders\x12\x38.injective.exchange.v1beta1.QueryTraderSpotOrdersRequest\x1a\x39.injective.exchange.v1beta1.QueryTraderSpotOrdersResponse\"K\x82\xd3\xe4\x93\x02\x45\x12\x43/injective/exchange/v1beta1/spot/orders/{market_id}/{subaccount_id}\x12\xf6\x01\n\x18\x41\x63\x63ountAddressSpotOrders\x12@.injective.exchange.v1beta1.QueryAccountAddressSpotOrdersRequest\x1a\x41.injective.exchange.v1beta1.QueryAccountAddressSpotOrdersResponse\"U\x82\xd3\xe4\x93\x02O\x12M/injective/exchange/v1beta1/spot/orders/{market_id}/account/{account_address}\x12\xe4\x01\n\x12SpotOrdersByHashes\x12:.injective.exchange.v1beta1.QuerySpotOrdersByHashesRequest\x1a;.injective.exchange.v1beta1.QuerySpotOrdersByHashesResponse\"U\x82\xd3\xe4\x93\x02O\x12M/injective/exchange/v1beta1/spot/orders_by_hashes/{market_id}/{subaccount_id}\x12\xc3\x01\n\x10SubaccountOrders\x12\x38.injective.exchange.v1beta1.QuerySubaccountOrdersRequest\x1a\x39.injective.exchange.v1beta1.QuerySubaccountOrdersResponse\":\x82\xd3\xe4\x93\x02\x34\x12\x32/injective/exchange/v1beta1/orders/{subaccount_id}\x12\xe7\x01\n\x19TraderSpotTransientOrders\x12\x38.injective.exchange.v1beta1.QueryTraderSpotOrdersRequest\x1a\x39.injective.exchange.v1beta1.QueryTraderSpotOrdersResponse\"U\x82\xd3\xe4\x93\x02O\x12M/injective/exchange/v1beta1/spot/transient_orders/{market_id}/{subaccount_id}\x12\xd5\x01\n\x12SpotMidPriceAndTOB\x12:.injective.exchange.v1beta1.QuerySpotMidPriceAndTOBRequest\x1a;.injective.exchange.v1beta1.QuerySpotMidPriceAndTOBResponse\"F\x82\xd3\xe4\x93\x02@\x12>/injective/exchange/v1beta1/spot/mid_price_and_tob/{market_id}\x12\xed\x01\n\x18\x44\x65rivativeMidPriceAndTOB\x12@.injective.exchange.v1beta1.QueryDerivativeMidPriceAndTOBRequest\x1a\x41.injective.exchange.v1beta1.QueryDerivativeMidPriceAndTOBResponse\"L\x82\xd3\xe4\x93\x02\x46\x12\x44/injective/exchange/v1beta1/derivative/mid_price_and_tob/{market_id}\x12\xd6\x01\n\x13\x44\x65rivativeOrderbook\x12;.injective.exchange.v1beta1.QueryDerivativeOrderbookRequest\x1a<.injective.exchange.v1beta1.QueryDerivativeOrderbookResponse\"D\x82\xd3\xe4\x93\x02>\x12.injective.exchange.v1beta1.QueryTraderDerivativeOrdersRequest\x1a?.injective.exchange.v1beta1.QueryTraderDerivativeOrdersResponse\"Q\x82\xd3\xe4\x93\x02K\x12I/injective/exchange/v1beta1/derivative/orders/{market_id}/{subaccount_id}\x12\x8e\x02\n\x1e\x41\x63\x63ountAddressDerivativeOrders\x12\x46.injective.exchange.v1beta1.QueryAccountAddressDerivativeOrdersRequest\x1aG.injective.exchange.v1beta1.QueryAccountAddressDerivativeOrdersResponse\"[\x82\xd3\xe4\x93\x02U\x12S/injective/exchange/v1beta1/derivative/orders/{market_id}/account/{account_address}\x12\xfc\x01\n\x18\x44\x65rivativeOrdersByHashes\x12@.injective.exchange.v1beta1.QueryDerivativeOrdersByHashesRequest\x1a\x41.injective.exchange.v1beta1.QueryDerivativeOrdersByHashesResponse\"[\x82\xd3\xe4\x93\x02U\x12S/injective/exchange/v1beta1/derivative/orders_by_hashes/{market_id}/{subaccount_id}\x12\xff\x01\n\x1fTraderDerivativeTransientOrders\x12>.injective.exchange.v1beta1.QueryTraderDerivativeOrdersRequest\x1a?.injective.exchange.v1beta1.QueryTraderDerivativeOrdersResponse\"[\x82\xd3\xe4\x93\x02U\x12S/injective/exchange/v1beta1/derivative/transient_orders/{market_id}/{subaccount_id}\x12\xc2\x01\n\x11\x44\x65rivativeMarkets\x12\x39.injective.exchange.v1beta1.QueryDerivativeMarketsRequest\x1a:.injective.exchange.v1beta1.QueryDerivativeMarketsResponse\"6\x82\xd3\xe4\x93\x02\x30\x12./injective/exchange/v1beta1/derivative/markets\x12\xcb\x01\n\x10\x44\x65rivativeMarket\x12\x38.injective.exchange.v1beta1.QueryDerivativeMarketRequest\x1a\x39.injective.exchange.v1beta1.QueryDerivativeMarketResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/derivative/markets/{market_id}\x12\xe7\x01\n\x17\x44\x65rivativeMarketAddress\x12?.injective.exchange.v1beta1.QueryDerivativeMarketAddressRequest\x1a@.injective.exchange.v1beta1.QueryDerivativeMarketAddressResponse\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/injective/exchange/v1beta1/derivative/market_address/{market_id}\x12\xd1\x01\n\x14SubaccountTradeNonce\x12<.injective.exchange.v1beta1.QuerySubaccountTradeNonceRequest\x1a=.injective.exchange.v1beta1.QuerySubaccountTradeNonceResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/injective/exchange/v1beta1/exchange/{subaccount_id}\x12\xb2\x01\n\x13\x45xchangeModuleState\x12\x33.injective.exchange.v1beta1.QueryModuleStateRequest\x1a\x34.injective.exchange.v1beta1.QueryModuleStateResponse\"0\x82\xd3\xe4\x93\x02*\x12(/injective/exchange/v1beta1/module_state\x12\xa1\x01\n\tPositions\x12\x31.injective.exchange.v1beta1.QueryPositionsRequest\x1a\x32.injective.exchange.v1beta1.QueryPositionsResponse\"-\x82\xd3\xe4\x93\x02\'\x12%/injective/exchange/v1beta1/positions\x12\xcf\x01\n\x13SubaccountPositions\x12;.injective.exchange.v1beta1.QuerySubaccountPositionsRequest\x1a<.injective.exchange.v1beta1.QuerySubaccountPositionsResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v1beta1/positions/{subaccount_id}\x12\xf0\x01\n\x1aSubaccountPositionInMarket\x12\x42.injective.exchange.v1beta1.QuerySubaccountPositionInMarketRequest\x1a\x43.injective.exchange.v1beta1.QuerySubaccountPositionInMarketResponse\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/injective/exchange/v1beta1/positions/{subaccount_id}/{market_id}\x12\x95\x02\n#SubaccountEffectivePositionInMarket\x12K.injective.exchange.v1beta1.QuerySubaccountEffectivePositionInMarketRequest\x1aL.injective.exchange.v1beta1.QuerySubaccountEffectivePositionInMarketResponse\"S\x82\xd3\xe4\x93\x02M\x12K/injective/exchange/v1beta1/effective_positions/{subaccount_id}/{market_id}\x12\xd7\x01\n\x13PerpetualMarketInfo\x12;.injective.exchange.v1beta1.QueryPerpetualMarketInfoRequest\x1a<.injective.exchange.v1beta1.QueryPerpetualMarketInfoResponse\"E\x82\xd3\xe4\x93\x02?\x12=/injective/exchange/v1beta1/perpetual_market_info/{market_id}\x12\xe0\x01\n\x17\x45xpiryFuturesMarketInfo\x12?.injective.exchange.v1beta1.QueryExpiryFuturesMarketInfoRequest\x1a@.injective.exchange.v1beta1.QueryExpiryFuturesMarketInfoResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/expiry_market_info/{market_id}\x12\xe3\x01\n\x16PerpetualMarketFunding\x12>.injective.exchange.v1beta1.QueryPerpetualMarketFundingRequest\x1a?.injective.exchange.v1beta1.QueryPerpetualMarketFundingResponse\"H\x82\xd3\xe4\x93\x02\x42\x12@/injective/exchange/v1beta1/perpetual_market_funding/{market_id}\x12\xe0\x01\n\x17SubaccountOrderMetadata\x12?.injective.exchange.v1beta1.QuerySubaccountOrderMetadataRequest\x1a@.injective.exchange.v1beta1.QuerySubaccountOrderMetadataResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/order_metadata/{subaccount_id}\x12\xc3\x01\n\x11TradeRewardPoints\x12\x39.injective.exchange.v1beta1.QueryTradeRewardPointsRequest\x1a:.injective.exchange.v1beta1.QueryTradeRewardPointsResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//injective/exchange/v1beta1/trade_reward_points\x12\xd2\x01\n\x18PendingTradeRewardPoints\x12\x39.injective.exchange.v1beta1.QueryTradeRewardPointsRequest\x1a:.injective.exchange.v1beta1.QueryTradeRewardPointsResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/injective/exchange/v1beta1/pending_trade_reward_points\x12\xcb\x01\n\x13TradeRewardCampaign\x12;.injective.exchange.v1beta1.QueryTradeRewardCampaignRequest\x1a<.injective.exchange.v1beta1.QueryTradeRewardCampaignResponse\"9\x82\xd3\xe4\x93\x02\x33\x12\x31/injective/exchange/v1beta1/trade_reward_campaign\x12\xe2\x01\n\x16\x46\x65\x65\x44iscountAccountInfo\x12>.injective.exchange.v1beta1.QueryFeeDiscountAccountInfoRequest\x1a?.injective.exchange.v1beta1.QueryFeeDiscountAccountInfoResponse\"G\x82\xd3\xe4\x93\x02\x41\x12?/injective/exchange/v1beta1/fee_discount_account_info/{account}\x12\xcb\x01\n\x13\x46\x65\x65\x44iscountSchedule\x12;.injective.exchange.v1beta1.QueryFeeDiscountScheduleRequest\x1a<.injective.exchange.v1beta1.QueryFeeDiscountScheduleResponse\"9\x82\xd3\xe4\x93\x02\x33\x12\x31/injective/exchange/v1beta1/fee_discount_schedule\x12\xd0\x01\n\x11\x42\x61lanceMismatches\x12\x39.injective.exchange.v1beta1.QueryBalanceMismatchesRequest\x1a:.injective.exchange.v1beta1.QueryBalanceMismatchesResponse\"D\x82\xd3\xe4\x93\x02>\x12.injective.exchange.v1beta1.QueryHistoricalTradeRecordsRequest\x1a?.injective.exchange.v1beta1.QueryHistoricalTradeRecordsResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/injective/exchange/v1beta1/historical_trade_records\x12\xd7\x01\n\x13IsOptedOutOfRewards\x12;.injective.exchange.v1beta1.QueryIsOptedOutOfRewardsRequest\x1a<.injective.exchange.v1beta1.QueryIsOptedOutOfRewardsResponse\"E\x82\xd3\xe4\x93\x02?\x12=/injective/exchange/v1beta1/is_opted_out_of_rewards/{account}\x12\xe5\x01\n\x19OptedOutOfRewardsAccounts\x12\x41.injective.exchange.v1beta1.QueryOptedOutOfRewardsAccountsRequest\x1a\x42.injective.exchange.v1beta1.QueryOptedOutOfRewardsAccountsResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/injective/exchange/v1beta1/opted_out_of_rewards_accounts\x12\xca\x01\n\x10MarketVolatility\x12\x38.injective.exchange.v1beta1.QueryMarketVolatilityRequest\x1a\x39.injective.exchange.v1beta1.QueryMarketVolatilityResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/injective/exchange/v1beta1/market_volatility/{market_id}\x12\xc1\x01\n\x14\x42inaryOptionsMarkets\x12\x35.injective.exchange.v1beta1.QueryBinaryMarketsRequest\x1a\x36.injective.exchange.v1beta1.QueryBinaryMarketsResponse\":\x82\xd3\xe4\x93\x02\x34\x12\x32/injective/exchange/v1beta1/binary_options/markets\x12\x99\x02\n!TraderDerivativeConditionalOrders\x12I.injective.exchange.v1beta1.QueryTraderDerivativeConditionalOrdersRequest\x1aJ.injective.exchange.v1beta1.QueryTraderDerivativeConditionalOrdersResponse\"]\x82\xd3\xe4\x93\x02W\x12U/injective/exchange/v1beta1/derivative/orders/conditional/{market_id}/{subaccount_id}\x12\xfe\x01\n\"MarketAtomicExecutionFeeMultiplier\x12J.injective.exchange.v1beta1.QueryMarketAtomicExecutionFeeMultiplierRequest\x1aK.injective.exchange.v1beta1.QueryMarketAtomicExecutionFeeMultiplierResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/injective/exchange/v1beta1/atomic_order_fee_multiplier\x12\xc9\x01\n\x10\x41\x63tiveStakeGrant\x12\x38.injective.exchange.v1beta1.QueryActiveStakeGrantRequest\x1a\x39.injective.exchange.v1beta1.QueryActiveStakeGrantResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/injective/exchange/v1beta1/active_stake_grant/{grantee}\x12\xda\x01\n\x12GrantAuthorization\x12:.injective.exchange.v1beta1.QueryGrantAuthorizationRequest\x1a;.injective.exchange.v1beta1.QueryGrantAuthorizationResponse\"K\x82\xd3\xe4\x93\x02\x45\x12\x43/injective/exchange/v1beta1/grant_authorization/{granter}/{grantee}\x12\xd4\x01\n\x13GrantAuthorizations\x12;.injective.exchange.v1beta1.QueryGrantAuthorizationsRequest\x1a<.injective.exchange.v1beta1.QueryGrantAuthorizationsResponse\"B\x82\xd3\xe4\x93\x02<\x12:/injective/exchange/v1beta1/grant_authorizations/{granter}B\x86\x02\n\x1e\x63om.injective.exchange.v1beta1B\nQueryProtoP\x01ZNgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types\xa2\x02\x03IEX\xaa\x02\x1aInjective.Exchange.V1beta1\xca\x02\x1aInjective\\Exchange\\V1beta1\xe2\x02&Injective\\Exchange\\V1beta1\\GPBMetadata\xea\x02\x1cInjective::Exchange::V1beta1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -151,12 +151,20 @@ _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['isBuy']._serialized_options = b'\352\336\037\005isBuy' _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['isLimit']._loaded_options = None _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['isLimit']._serialized_options = b'\352\336\037\007isLimit' + _globals['_TRIMMEDLIMITORDER'].fields_by_name['price']._loaded_options = None + _globals['_TRIMMEDLIMITORDER'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDLIMITORDER'].fields_by_name['quantity']._loaded_options = None + _globals['_TRIMMEDLIMITORDER'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE'].fields_by_name['multiplier']._loaded_options = None _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE'].fields_by_name['multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' _globals['_QUERYGRANTAUTHORIZATIONRESPONSE'].fields_by_name['amount']._loaded_options = None _globals['_QUERYGRANTAUTHORIZATIONRESPONSE'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE'].fields_by_name['total_grant_amount']._loaded_options = None _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE'].fields_by_name['total_grant_amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_QUERY'].methods_by_name['L3DerivativeOrderBook']._loaded_options = None + _globals['_QUERY'].methods_by_name['L3DerivativeOrderBook']._serialized_options = b'\202\323\344\223\002@\022>/injective/exchange/v1beta1/derivative/L3OrderBook/{market_id}' + _globals['_QUERY'].methods_by_name['L3SpotOrderBook']._loaded_options = None + _globals['_QUERY'].methods_by_name['L3SpotOrderBook']._serialized_options = b'\202\323\344\223\002:\0228/injective/exchange/v1beta1/spot/L3OrderBook/{market_id}' _globals['_QUERY'].methods_by_name['QueryExchangeParams']._loaded_options = None _globals['_QUERY'].methods_by_name['QueryExchangeParams']._serialized_options = b'\202\323\344\223\002,\022*/injective/exchange/v1beta1/exchangeParams' _globals['_QUERY'].methods_by_name['SubaccountDeposits']._loaded_options = None @@ -277,10 +285,10 @@ _globals['_QUERY'].methods_by_name['GrantAuthorization']._serialized_options = b'\202\323\344\223\002E\022C/injective/exchange/v1beta1/grant_authorization/{granter}/{grantee}' _globals['_QUERY'].methods_by_name['GrantAuthorizations']._loaded_options = None _globals['_QUERY'].methods_by_name['GrantAuthorizations']._serialized_options = b'\202\323\344\223\002<\022:/injective/exchange/v1beta1/grant_authorizations/{granter}' - _globals['_ORDERSIDE']._serialized_start=17324 - _globals['_ORDERSIDE']._serialized_end=17376 - _globals['_CANCELLATIONSTRATEGY']._serialized_start=17378 - _globals['_CANCELLATIONSTRATEGY']._serialized_end=17464 + _globals['_ORDERSIDE']._serialized_start=18012 + _globals['_ORDERSIDE']._serialized_end=18064 + _globals['_CANCELLATIONSTRATEGY']._serialized_start=18066 + _globals['_CANCELLATIONSTRATEGY']._serialized_end=18152 _globals['_SUBACCOUNT']._serialized_start=246 _globals['_SUBACCOUNT']._serialized_end=325 _globals['_QUERYSUBACCOUNTORDERSREQUEST']._serialized_start=327 @@ -527,22 +535,32 @@ _globals['_TRIMMEDDERIVATIVECONDITIONALORDER']._serialized_end=16322 _globals['_QUERYTRADERDERIVATIVECONDITIONALORDERSRESPONSE']._serialized_start=16325 _globals['_QUERYTRADERDERIVATIVECONDITIONALORDERSRESPONSE']._serialized_end=16460 - _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERREQUEST']._serialized_start=16462 - _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERREQUEST']._serialized_end=16539 - _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE']._serialized_start=16541 - _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE']._serialized_end=16659 - _globals['_QUERYACTIVESTAKEGRANTREQUEST']._serialized_start=16661 - _globals['_QUERYACTIVESTAKEGRANTREQUEST']._serialized_end=16717 - _globals['_QUERYACTIVESTAKEGRANTRESPONSE']._serialized_start=16720 - _globals['_QUERYACTIVESTAKEGRANTRESPONSE']._serialized_end=16899 - _globals['_QUERYGRANTAUTHORIZATIONREQUEST']._serialized_start=16901 - _globals['_QUERYGRANTAUTHORIZATIONREQUEST']._serialized_end=16985 - _globals['_QUERYGRANTAUTHORIZATIONRESPONSE']._serialized_start=16987 - _globals['_QUERYGRANTAUTHORIZATIONRESPONSE']._serialized_end=17075 - _globals['_QUERYGRANTAUTHORIZATIONSREQUEST']._serialized_start=17077 - _globals['_QUERYGRANTAUTHORIZATIONSREQUEST']._serialized_end=17136 - _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE']._serialized_start=17139 - _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE']._serialized_end=17322 - _globals['_QUERY']._serialized_start=17467 - _globals['_QUERY']._serialized_end=30472 + _globals['_QUERYFULLSPOTORDERBOOKREQUEST']._serialized_start=16462 + _globals['_QUERYFULLSPOTORDERBOOKREQUEST']._serialized_end=16522 + _globals['_QUERYFULLSPOTORDERBOOKRESPONSE']._serialized_start=16525 + _globals['_QUERYFULLSPOTORDERBOOKRESPONSE']._serialized_end=16691 + _globals['_QUERYFULLDERIVATIVEORDERBOOKREQUEST']._serialized_start=16693 + _globals['_QUERYFULLDERIVATIVEORDERBOOKREQUEST']._serialized_end=16759 + _globals['_QUERYFULLDERIVATIVEORDERBOOKRESPONSE']._serialized_start=16762 + _globals['_QUERYFULLDERIVATIVEORDERBOOKRESPONSE']._serialized_end=16934 + _globals['_TRIMMEDLIMITORDER']._serialized_start=16937 + _globals['_TRIMMEDLIMITORDER']._serialized_end=17148 + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERREQUEST']._serialized_start=17150 + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERREQUEST']._serialized_end=17227 + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE']._serialized_start=17229 + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE']._serialized_end=17347 + _globals['_QUERYACTIVESTAKEGRANTREQUEST']._serialized_start=17349 + _globals['_QUERYACTIVESTAKEGRANTREQUEST']._serialized_end=17405 + _globals['_QUERYACTIVESTAKEGRANTRESPONSE']._serialized_start=17408 + _globals['_QUERYACTIVESTAKEGRANTRESPONSE']._serialized_end=17587 + _globals['_QUERYGRANTAUTHORIZATIONREQUEST']._serialized_start=17589 + _globals['_QUERYGRANTAUTHORIZATIONREQUEST']._serialized_end=17673 + _globals['_QUERYGRANTAUTHORIZATIONRESPONSE']._serialized_start=17675 + _globals['_QUERYGRANTAUTHORIZATIONRESPONSE']._serialized_end=17763 + _globals['_QUERYGRANTAUTHORIZATIONSREQUEST']._serialized_start=17765 + _globals['_QUERYGRANTAUTHORIZATIONSREQUEST']._serialized_end=17824 + _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE']._serialized_start=17827 + _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE']._serialized_end=18010 + _globals['_QUERY']._serialized_start=18155 + _globals['_QUERY']._serialized_end=31594 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v1beta1/query_pb2_grpc.py b/pyinjective/proto/injective/exchange/v1beta1/query_pb2_grpc.py index c5aa407e..08ff9a3a 100644 --- a/pyinjective/proto/injective/exchange/v1beta1/query_pb2_grpc.py +++ b/pyinjective/proto/injective/exchange/v1beta1/query_pb2_grpc.py @@ -15,6 +15,16 @@ def __init__(self, channel): Args: channel: A grpc.Channel. """ + self.L3DerivativeOrderBook = channel.unary_unary( + '/injective.exchange.v1beta1.Query/L3DerivativeOrderBook', + request_serializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullDerivativeOrderbookRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullDerivativeOrderbookResponse.FromString, + _registered_method=True) + self.L3SpotOrderBook = channel.unary_unary( + '/injective.exchange.v1beta1.Query/L3SpotOrderBook', + request_serializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullSpotOrderbookRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullSpotOrderbookResponse.FromString, + _registered_method=True) self.QueryExchangeParams = channel.unary_unary( '/injective.exchange.v1beta1.Query/QueryExchangeParams', request_serializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryExchangeParamsRequest.SerializeToString, @@ -321,6 +331,18 @@ class QueryServicer(object): """Query defines the gRPC querier service. """ + def L3DerivativeOrderBook(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def L3SpotOrderBook(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def QueryExchangeParams(self, request, context): """Retrieves exchange params """ @@ -748,6 +770,16 @@ def GrantAuthorizations(self, request, context): def add_QueryServicer_to_server(servicer, server): rpc_method_handlers = { + 'L3DerivativeOrderBook': grpc.unary_unary_rpc_method_handler( + servicer.L3DerivativeOrderBook, + request_deserializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullDerivativeOrderbookRequest.FromString, + response_serializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullDerivativeOrderbookResponse.SerializeToString, + ), + 'L3SpotOrderBook': grpc.unary_unary_rpc_method_handler( + servicer.L3SpotOrderBook, + request_deserializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullSpotOrderbookRequest.FromString, + response_serializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullSpotOrderbookResponse.SerializeToString, + ), 'QueryExchangeParams': grpc.unary_unary_rpc_method_handler( servicer.QueryExchangeParams, request_deserializer=injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryExchangeParamsRequest.FromString, @@ -1060,6 +1092,60 @@ class Query(object): """Query defines the gRPC querier service. """ + @staticmethod + def L3DerivativeOrderBook(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v1beta1.Query/L3DerivativeOrderBook', + injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullDerivativeOrderbookRequest.SerializeToString, + injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullDerivativeOrderbookResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def L3SpotOrderBook(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v1beta1.Query/L3SpotOrderBook', + injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullSpotOrderbookRequest.SerializeToString, + injective_dot_exchange_dot_v1beta1_dot_query__pb2.QueryFullSpotOrderbookResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def QueryExchangeParams(request, target, diff --git a/pyinjective/proto/injective/exchange/v1beta1/tx_pb2.py b/pyinjective/proto/injective/exchange/v1beta1/tx_pb2.py index 1308b852..70abb95c 100644 --- a/pyinjective/proto/injective/exchange/v1beta1/tx_pb2.py +++ b/pyinjective/proto/injective/exchange/v1beta1/tx_pb2.py @@ -22,7 +22,7 @@ from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#injective/exchange/v1beta1/tx.proto\x12\x1ainjective.exchange.v1beta1\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a.cosmos/distribution/v1beta1/distribution.proto\x1a\x17\x63osmos/msg/v1/msg.proto\x1a\x19\x63osmos_proto/cosmos.proto\x1a\x14gogoproto/gogo.proto\x1a)injective/exchange/v1beta1/exchange.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x11\x61mino/amino.proto\"\xa7\x03\n\x13MsgUpdateSpotMarket\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1d\n\nnew_ticker\x18\x03 \x01(\tR\tnewTicker\x12Y\n\x17new_min_price_tick_size\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13newMinPriceTickSize\x12_\n\x1anew_min_quantity_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16newMinQuantityTickSize\x12M\n\x10new_min_notional\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0enewMinNotional:3\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x05\x61\x64min\x8a\xe7\xb0*\x1c\x65xchange/MsgUpdateSpotMarket\"\x1d\n\x1bMsgUpdateSpotMarketResponse\"\xf7\x04\n\x19MsgUpdateDerivativeMarket\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1d\n\nnew_ticker\x18\x03 \x01(\tR\tnewTicker\x12Y\n\x17new_min_price_tick_size\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13newMinPriceTickSize\x12_\n\x1anew_min_quantity_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16newMinQuantityTickSize\x12M\n\x10new_min_notional\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0enewMinNotional\x12\\\n\x18new_initial_margin_ratio\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15newInitialMarginRatio\x12\x64\n\x1cnew_maintenance_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19newMaintenanceMarginRatio:9\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x05\x61\x64min\x8a\xe7\xb0*\"exchange/MsgUpdateDerivativeMarket\"#\n!MsgUpdateDerivativeMarketResponse\"\xb8\x01\n\x0fMsgUpdateParams\x12\x36\n\tauthority\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\tauthority\x12@\n\x06params\x18\x02 \x01(\x0b\x32\".injective.exchange.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06params:+\x82\xe7\xb0*\tauthority\x8a\xe7\xb0*\x18\x65xchange/MsgUpdateParams\"\x19\n\x17MsgUpdateParamsResponse\"\xaf\x01\n\nMsgDeposit\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:+\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x13\x65xchange/MsgDeposit\"\x14\n\x12MsgDepositResponse\"\xb1\x01\n\x0bMsgWithdraw\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:,\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x14\x65xchange/MsgWithdraw\"\x15\n\x13MsgWithdrawResponse\"\xae\x01\n\x17MsgCreateSpotLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v1beta1.SpotOrderB\x04\xc8\xde\x1f\x00R\x05order:8\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0* exchange/MsgCreateSpotLimitOrder\"\\\n\x1fMsgCreateSpotLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbc\x01\n\x1dMsgBatchCreateSpotLimitOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x43\n\x06orders\x18\x02 \x03(\x0b\x32%.injective.exchange.v1beta1.SpotOrderB\x04\xc8\xde\x1f\x00R\x06orders:>\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*&exchange/MsgBatchCreateSpotLimitOrders\"\xb2\x01\n%MsgBatchCreateSpotLimitOrdersResponse\x12!\n\x0corder_hashes\x18\x01 \x03(\tR\x0borderHashes\x12.\n\x13\x63reated_orders_cids\x18\x02 \x03(\tR\x11\x63reatedOrdersCids\x12,\n\x12\x66\x61iled_orders_cids\x18\x03 \x03(\tR\x10\x66\x61iledOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbf\x03\n\x1aMsgInstantSpotMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x03 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:;\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*#exchange/MsgInstantSpotMarketLaunch\"$\n\"MsgInstantSpotMarketLaunchResponse\"\xb1\x07\n\x1fMsgInstantPerpetualMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x04 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x05 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x06 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x07 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12I\n\x0emaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12U\n\x14initial_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12R\n\x13min_price_tick_size\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:@\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*(exchange/MsgInstantPerpetualMarketLaunch\")\n\'MsgInstantPerpetualMarketLaunchResponse\"\x89\x07\n#MsgInstantBinaryOptionsMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x03 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x04 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x05 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x06 \x01(\rR\x11oracleScaleFactor\x12I\n\x0emaker_fee_rate\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12\x31\n\x14\x65xpiration_timestamp\x18\t \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\n \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\x0c \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:D\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgInstantBinaryOptionsMarketLaunch\"-\n+MsgInstantBinaryOptionsMarketLaunchResponse\"\xd1\x07\n#MsgInstantExpiryFuturesMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x04 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x05 \x01(\tR\x0boracleQuote\x12\x45\n\x0boracle_type\x18\x06 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x16\n\x06\x65xpiry\x18\x08 \x01(\x03R\x06\x65xpiry\x12I\n\x0emaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12U\n\x14initial_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:D\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgInstantExpiryFuturesMarketLaunch\"-\n+MsgInstantExpiryFuturesMarketLaunchResponse\"\xb0\x01\n\x18MsgCreateSpotMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v1beta1.SpotOrderB\x04\xc8\xde\x1f\x00R\x05order:9\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgCreateSpotMarketOrder\"\xb1\x01\n MsgCreateSpotMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12R\n\x07results\x18\x02 \x01(\x0b\x32\x32.injective.exchange.v1beta1.SpotMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xd5\x01\n\x16SpotMarketOrderResults\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x35\n\x03\x66\x65\x65\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbc\x01\n\x1dMsgCreateDerivativeLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order::\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*&exchange/MsgCreateDerivativeLimitOrder\"b\n%MsgCreateDerivativeLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xc2\x01\n MsgCreateBinaryOptionsLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:=\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*)exchange/MsgCreateBinaryOptionsLimitOrder\"e\n(MsgCreateBinaryOptionsLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xca\x01\n#MsgBatchCreateDerivativeLimitOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12I\n\x06orders\x18\x02 \x03(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x06orders:@\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgBatchCreateDerivativeLimitOrders\"\xb8\x01\n+MsgBatchCreateDerivativeLimitOrdersResponse\x12!\n\x0corder_hashes\x18\x01 \x03(\tR\x0borderHashes\x12.\n\x13\x63reated_orders_cids\x18\x02 \x03(\tR\x11\x63reatedOrdersCids\x12,\n\x12\x66\x61iled_orders_cids\x18\x03 \x03(\tR\x10\x66\x61iledOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xd0\x01\n\x12MsgCancelSpotOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id:/\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1b\x65xchange/MsgCancelSpotOrder\"\x1c\n\x1aMsgCancelSpotOrderResponse\"\xaa\x01\n\x18MsgBatchCancelSpotOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12?\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:5\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgBatchCancelSpotOrders\"F\n MsgBatchCancelSpotOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbc\x01\n!MsgBatchCancelBinaryOptionsOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12?\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:>\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgBatchCancelBinaryOptionsOrders\"O\n)MsgBatchCancelBinaryOptionsOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xf2\x07\n\x14MsgBatchUpdateOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12?\n\x1dspot_market_ids_to_cancel_all\x18\x03 \x03(\tR\x18spotMarketIdsToCancelAll\x12K\n#derivative_market_ids_to_cancel_all\x18\x04 \x03(\tR\x1e\x64\x65rivativeMarketIdsToCancelAll\x12^\n\x15spot_orders_to_cancel\x18\x05 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x01R\x12spotOrdersToCancel\x12j\n\x1b\x64\x65rivative_orders_to_cancel\x18\x06 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x01R\x18\x64\x65rivativeOrdersToCancel\x12^\n\x15spot_orders_to_create\x18\x07 \x03(\x0b\x32%.injective.exchange.v1beta1.SpotOrderB\x04\xc8\xde\x1f\x01R\x12spotOrdersToCreate\x12p\n\x1b\x64\x65rivative_orders_to_create\x18\x08 \x03(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x18\x64\x65rivativeOrdersToCreate\x12q\n\x1f\x62inary_options_orders_to_cancel\x18\t \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x01R\x1b\x62inaryOptionsOrdersToCancel\x12R\n\'binary_options_market_ids_to_cancel_all\x18\n \x03(\tR!binaryOptionsMarketIdsToCancelAll\x12w\n\x1f\x62inary_options_orders_to_create\x18\x0b \x03(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x1b\x62inaryOptionsOrdersToCreate:1\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1d\x65xchange/MsgBatchUpdateOrders\"\x88\x06\n\x1cMsgBatchUpdateOrdersResponse\x12.\n\x13spot_cancel_success\x18\x01 \x03(\x08R\x11spotCancelSuccess\x12:\n\x19\x64\x65rivative_cancel_success\x18\x02 \x03(\x08R\x17\x64\x65rivativeCancelSuccess\x12*\n\x11spot_order_hashes\x18\x03 \x03(\tR\x0fspotOrderHashes\x12\x36\n\x17\x64\x65rivative_order_hashes\x18\x04 \x03(\tR\x15\x64\x65rivativeOrderHashes\x12\x41\n\x1d\x62inary_options_cancel_success\x18\x05 \x03(\x08R\x1a\x62inaryOptionsCancelSuccess\x12=\n\x1b\x62inary_options_order_hashes\x18\x06 \x03(\tR\x18\x62inaryOptionsOrderHashes\x12\x37\n\x18\x63reated_spot_orders_cids\x18\x07 \x03(\tR\x15\x63reatedSpotOrdersCids\x12\x35\n\x17\x66\x61iled_spot_orders_cids\x18\x08 \x03(\tR\x14\x66\x61iledSpotOrdersCids\x12\x43\n\x1e\x63reated_derivative_orders_cids\x18\t \x03(\tR\x1b\x63reatedDerivativeOrdersCids\x12\x41\n\x1d\x66\x61iled_derivative_orders_cids\x18\n \x03(\tR\x1a\x66\x61iledDerivativeOrdersCids\x12J\n\"created_binary_options_orders_cids\x18\x0b \x03(\tR\x1e\x63reatedBinaryOptionsOrdersCids\x12H\n!failed_binary_options_orders_cids\x18\x0c \x03(\tR\x1d\x66\x61iledBinaryOptionsOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbe\x01\n\x1eMsgCreateDerivativeMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:;\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\'exchange/MsgCreateDerivativeMarketOrder\"\xbd\x01\n&MsgCreateDerivativeMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12X\n\x07results\x18\x02 \x01(\x0b\x32\x38.injective.exchange.v1beta1.DerivativeMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xf0\x02\n\x1c\x44\x65rivativeMarketOrderResults\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x35\n\x03\x66\x65\x65\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12V\n\x0eposition_delta\x18\x04 \x01(\x0b\x32).injective.exchange.v1beta1.PositionDeltaB\x04\xc8\xde\x1f\x00R\rpositionDelta\x12;\n\x06payout\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xc4\x01\n!MsgCreateBinaryOptionsMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:>\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgCreateBinaryOptionsMarketOrder\"\xc0\x01\n)MsgCreateBinaryOptionsMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12X\n\x07results\x18\x02 \x01(\x0b\x32\x38.injective.exchange.v1beta1.DerivativeMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xfb\x01\n\x18MsgCancelDerivativeOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x05 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id:5\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgCancelDerivativeOrder\"\"\n MsgCancelDerivativeOrderResponse\"\x81\x02\n\x1bMsgCancelBinaryOptionsOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x05 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id:8\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*$exchange/MsgCancelBinaryOptionsOrder\"%\n#MsgCancelBinaryOptionsOrderResponse\"\x9d\x01\n\tOrderData\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x04 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id\"\xb6\x01\n\x1eMsgBatchCancelDerivativeOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12?\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:;\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\'exchange/MsgBatchCancelDerivativeOrders\"L\n&MsgBatchCancelDerivativeOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\x86\x02\n\x15MsgSubaccountTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x37\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgSubaccountTransfer\"\x1f\n\x1dMsgSubaccountTransferResponse\"\x82\x02\n\x13MsgExternalTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x37\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:,\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1c\x65xchange/MsgExternalTransfer\"\x1d\n\x1bMsgExternalTransferResponse\"\xe8\x01\n\x14MsgLiquidatePosition\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12G\n\x05order\x18\x04 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x05order:-\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1d\x65xchange/MsgLiquidatePosition\"\x1e\n\x1cMsgLiquidatePositionResponse\"\xa7\x01\n\x18MsgEmergencySettleMarket\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId:1\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgEmergencySettleMarket\"\"\n MsgEmergencySettleMarketResponse\"\xaf\x02\n\x19MsgIncreasePositionMargin\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\x12;\n\x06\x61mount\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06\x61mount:2\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\"exchange/MsgIncreasePositionMargin\"#\n!MsgIncreasePositionMarginResponse\"\xaf\x02\n\x19MsgDecreasePositionMargin\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\x12;\n\x06\x61mount\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06\x61mount:2\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\"exchange/MsgDecreasePositionMargin\"#\n!MsgDecreasePositionMarginResponse\"\xca\x01\n\x1cMsgPrivilegedExecuteContract\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x14\n\x05\x66unds\x18\x02 \x01(\tR\x05\x66unds\x12)\n\x10\x63ontract_address\x18\x03 \x01(\tR\x0f\x63ontractAddress\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\tR\x04\x64\x61ta:=\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*%exchange/MsgPrivilegedExecuteContract\"\xa7\x01\n$MsgPrivilegedExecuteContractResponse\x12j\n\nfunds_diff\x18\x01 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\tfundsDiff:\x13\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\"]\n\x10MsgRewardsOptOut\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender:1\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x19\x65xchange/MsgRewardsOptOut\"\x1a\n\x18MsgRewardsOptOutResponse\"\xaf\x01\n\x15MsgReclaimLockedFunds\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x13lockedAccountPubKey\x18\x02 \x01(\x0cR\x13lockedAccountPubKey\x12\x1c\n\tsignature\x18\x03 \x01(\x0cR\tsignature:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgReclaimLockedFunds\"\x1f\n\x1dMsgReclaimLockedFundsResponse\"\x80\x01\n\x0bMsgSignData\x12S\n\x06Signer\x18\x01 \x01(\x0c\x42;\xea\xde\x1f\x06signer\xfa\xde\x1f-github.com/cosmos/cosmos-sdk/types.AccAddressR\x06Signer\x12\x1c\n\x04\x44\x61ta\x18\x02 \x01(\x0c\x42\x08\xea\xde\x1f\x04\x64\x61taR\x04\x44\x61ta\"x\n\nMsgSignDoc\x12%\n\tsign_type\x18\x01 \x01(\tB\x08\xea\xde\x1f\x04typeR\x08signType\x12\x43\n\x05value\x18\x02 \x01(\x0b\x32\'.injective.exchange.v1beta1.MsgSignDataB\x04\xc8\xde\x1f\x00R\x05value\"\x8c\x03\n!MsgAdminUpdateBinaryOptionsMarket\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x31\n\x14\x65xpiration_timestamp\x18\x04 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\x05 \x01(\x03R\x13settlementTimestamp\x12@\n\x06status\x18\x06 \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status::\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgAdminUpdateBinaryOptionsMarket\"+\n)MsgAdminUpdateBinaryOptionsMarketResponse\"\xab\x01\n\x17MsgAuthorizeStakeGrants\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x46\n\x06grants\x18\x02 \x03(\x0b\x32..injective.exchange.v1beta1.GrantAuthorizationR\x06grants:0\x82\xe7\xb0*\x06sender\x8a\xe7\xb0* exchange/MsgAuthorizeStakeGrants\"!\n\x1fMsgAuthorizeStakeGrantsResponse\"y\n\x15MsgActivateStakeGrant\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgActivateStakeGrant\"\x1f\n\x1dMsgActivateStakeGrantResponse2\xd0\'\n\x03Msg\x12\x61\n\x07\x44\x65posit\x12&.injective.exchange.v1beta1.MsgDeposit\x1a..injective.exchange.v1beta1.MsgDepositResponse\x12\x64\n\x08Withdraw\x12\'.injective.exchange.v1beta1.MsgWithdraw\x1a/.injective.exchange.v1beta1.MsgWithdrawResponse\x12\x91\x01\n\x17InstantSpotMarketLaunch\x12\x36.injective.exchange.v1beta1.MsgInstantSpotMarketLaunch\x1a>.injective.exchange.v1beta1.MsgInstantSpotMarketLaunchResponse\x12\xa0\x01\n\x1cInstantPerpetualMarketLaunch\x12;.injective.exchange.v1beta1.MsgInstantPerpetualMarketLaunch\x1a\x43.injective.exchange.v1beta1.MsgInstantPerpetualMarketLaunchResponse\x12\xac\x01\n InstantExpiryFuturesMarketLaunch\x12?.injective.exchange.v1beta1.MsgInstantExpiryFuturesMarketLaunch\x1aG.injective.exchange.v1beta1.MsgInstantExpiryFuturesMarketLaunchResponse\x12\x88\x01\n\x14\x43reateSpotLimitOrder\x12\x33.injective.exchange.v1beta1.MsgCreateSpotLimitOrder\x1a;.injective.exchange.v1beta1.MsgCreateSpotLimitOrderResponse\x12\x9a\x01\n\x1a\x42\x61tchCreateSpotLimitOrders\x12\x39.injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrders\x1a\x41.injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrdersResponse\x12\x8b\x01\n\x15\x43reateSpotMarketOrder\x12\x34.injective.exchange.v1beta1.MsgCreateSpotMarketOrder\x1a<.injective.exchange.v1beta1.MsgCreateSpotMarketOrderResponse\x12y\n\x0f\x43\x61ncelSpotOrder\x12..injective.exchange.v1beta1.MsgCancelSpotOrder\x1a\x36.injective.exchange.v1beta1.MsgCancelSpotOrderResponse\x12\x8b\x01\n\x15\x42\x61tchCancelSpotOrders\x12\x34.injective.exchange.v1beta1.MsgBatchCancelSpotOrders\x1a<.injective.exchange.v1beta1.MsgBatchCancelSpotOrdersResponse\x12\x7f\n\x11\x42\x61tchUpdateOrders\x12\x30.injective.exchange.v1beta1.MsgBatchUpdateOrders\x1a\x38.injective.exchange.v1beta1.MsgBatchUpdateOrdersResponse\x12\x97\x01\n\x19PrivilegedExecuteContract\x12\x38.injective.exchange.v1beta1.MsgPrivilegedExecuteContract\x1a@.injective.exchange.v1beta1.MsgPrivilegedExecuteContractResponse\x12\x9a\x01\n\x1a\x43reateDerivativeLimitOrder\x12\x39.injective.exchange.v1beta1.MsgCreateDerivativeLimitOrder\x1a\x41.injective.exchange.v1beta1.MsgCreateDerivativeLimitOrderResponse\x12\xac\x01\n BatchCreateDerivativeLimitOrders\x12?.injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrders\x1aG.injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrdersResponse\x12\x9d\x01\n\x1b\x43reateDerivativeMarketOrder\x12:.injective.exchange.v1beta1.MsgCreateDerivativeMarketOrder\x1a\x42.injective.exchange.v1beta1.MsgCreateDerivativeMarketOrderResponse\x12\x8b\x01\n\x15\x43\x61ncelDerivativeOrder\x12\x34.injective.exchange.v1beta1.MsgCancelDerivativeOrder\x1a<.injective.exchange.v1beta1.MsgCancelDerivativeOrderResponse\x12\x9d\x01\n\x1b\x42\x61tchCancelDerivativeOrders\x12:.injective.exchange.v1beta1.MsgBatchCancelDerivativeOrders\x1a\x42.injective.exchange.v1beta1.MsgBatchCancelDerivativeOrdersResponse\x12\xac\x01\n InstantBinaryOptionsMarketLaunch\x12?.injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunch\x1aG.injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunchResponse\x12\xa3\x01\n\x1d\x43reateBinaryOptionsLimitOrder\x12<.injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrder\x1a\x44.injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrderResponse\x12\xa6\x01\n\x1e\x43reateBinaryOptionsMarketOrder\x12=.injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrder\x1a\x45.injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrderResponse\x12\x94\x01\n\x18\x43\x61ncelBinaryOptionsOrder\x12\x37.injective.exchange.v1beta1.MsgCancelBinaryOptionsOrder\x1a?.injective.exchange.v1beta1.MsgCancelBinaryOptionsOrderResponse\x12\xa6\x01\n\x1e\x42\x61tchCancelBinaryOptionsOrders\x12=.injective.exchange.v1beta1.MsgBatchCancelBinaryOptionsOrders\x1a\x45.injective.exchange.v1beta1.MsgBatchCancelBinaryOptionsOrdersResponse\x12\x82\x01\n\x12SubaccountTransfer\x12\x31.injective.exchange.v1beta1.MsgSubaccountTransfer\x1a\x39.injective.exchange.v1beta1.MsgSubaccountTransferResponse\x12|\n\x10\x45xternalTransfer\x12/.injective.exchange.v1beta1.MsgExternalTransfer\x1a\x37.injective.exchange.v1beta1.MsgExternalTransferResponse\x12\x7f\n\x11LiquidatePosition\x12\x30.injective.exchange.v1beta1.MsgLiquidatePosition\x1a\x38.injective.exchange.v1beta1.MsgLiquidatePositionResponse\x12\x8b\x01\n\x15\x45mergencySettleMarket\x12\x34.injective.exchange.v1beta1.MsgEmergencySettleMarket\x1a<.injective.exchange.v1beta1.MsgEmergencySettleMarketResponse\x12\x8e\x01\n\x16IncreasePositionMargin\x12\x35.injective.exchange.v1beta1.MsgIncreasePositionMargin\x1a=.injective.exchange.v1beta1.MsgIncreasePositionMarginResponse\x12\x8e\x01\n\x16\x44\x65\x63reasePositionMargin\x12\x35.injective.exchange.v1beta1.MsgDecreasePositionMargin\x1a=.injective.exchange.v1beta1.MsgDecreasePositionMarginResponse\x12s\n\rRewardsOptOut\x12,.injective.exchange.v1beta1.MsgRewardsOptOut\x1a\x34.injective.exchange.v1beta1.MsgRewardsOptOutResponse\x12\xa6\x01\n\x1e\x41\x64minUpdateBinaryOptionsMarket\x12=.injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarket\x1a\x45.injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarketResponse\x12p\n\x0cUpdateParams\x12+.injective.exchange.v1beta1.MsgUpdateParams\x1a\x33.injective.exchange.v1beta1.MsgUpdateParamsResponse\x12|\n\x10UpdateSpotMarket\x12/.injective.exchange.v1beta1.MsgUpdateSpotMarket\x1a\x37.injective.exchange.v1beta1.MsgUpdateSpotMarketResponse\x12\x8e\x01\n\x16UpdateDerivativeMarket\x12\x35.injective.exchange.v1beta1.MsgUpdateDerivativeMarket\x1a=.injective.exchange.v1beta1.MsgUpdateDerivativeMarketResponse\x12\x88\x01\n\x14\x41uthorizeStakeGrants\x12\x33.injective.exchange.v1beta1.MsgAuthorizeStakeGrants\x1a;.injective.exchange.v1beta1.MsgAuthorizeStakeGrantsResponse\x12\x82\x01\n\x12\x41\x63tivateStakeGrant\x12\x31.injective.exchange.v1beta1.MsgActivateStakeGrant\x1a\x39.injective.exchange.v1beta1.MsgActivateStakeGrantResponse\x1a\x05\x80\xe7\xb0*\x01\x42\x83\x02\n\x1e\x63om.injective.exchange.v1beta1B\x07TxProtoP\x01ZNgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types\xa2\x02\x03IEX\xaa\x02\x1aInjective.Exchange.V1beta1\xca\x02\x1aInjective\\Exchange\\V1beta1\xe2\x02&Injective\\Exchange\\V1beta1\\GPBMetadata\xea\x02\x1cInjective::Exchange::V1beta1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#injective/exchange/v1beta1/tx.proto\x12\x1ainjective.exchange.v1beta1\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a.cosmos/distribution/v1beta1/distribution.proto\x1a\x17\x63osmos/msg/v1/msg.proto\x1a\x19\x63osmos_proto/cosmos.proto\x1a\x14gogoproto/gogo.proto\x1a)injective/exchange/v1beta1/exchange.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x11\x61mino/amino.proto\"\xa3\x03\n\x13MsgUpdateSpotMarket\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1d\n\nnew_ticker\x18\x03 \x01(\tR\tnewTicker\x12Y\n\x17new_min_price_tick_size\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13newMinPriceTickSize\x12_\n\x1anew_min_quantity_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16newMinQuantityTickSize\x12M\n\x10new_min_notional\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0enewMinNotional:/\xe8\xa0\x1f\x00\x82\xe7\xb0*\x05\x61\x64min\x8a\xe7\xb0*\x1c\x65xchange/MsgUpdateSpotMarket\"\x1d\n\x1bMsgUpdateSpotMarketResponse\"\xf7\x04\n\x19MsgUpdateDerivativeMarket\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1d\n\nnew_ticker\x18\x03 \x01(\tR\tnewTicker\x12Y\n\x17new_min_price_tick_size\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13newMinPriceTickSize\x12_\n\x1anew_min_quantity_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16newMinQuantityTickSize\x12M\n\x10new_min_notional\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0enewMinNotional\x12\\\n\x18new_initial_margin_ratio\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15newInitialMarginRatio\x12\x64\n\x1cnew_maintenance_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19newMaintenanceMarginRatio:9\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x05\x61\x64min\x8a\xe7\xb0*\"exchange/MsgUpdateDerivativeMarket\"#\n!MsgUpdateDerivativeMarketResponse\"\xb8\x01\n\x0fMsgUpdateParams\x12\x36\n\tauthority\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\tauthority\x12@\n\x06params\x18\x02 \x01(\x0b\x32\".injective.exchange.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06params:+\x82\xe7\xb0*\tauthority\x8a\xe7\xb0*\x18\x65xchange/MsgUpdateParams\"\x19\n\x17MsgUpdateParamsResponse\"\xaf\x01\n\nMsgDeposit\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:+\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x13\x65xchange/MsgDeposit\"\x14\n\x12MsgDepositResponse\"\xb1\x01\n\x0bMsgWithdraw\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:,\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x14\x65xchange/MsgWithdraw\"\x15\n\x13MsgWithdrawResponse\"\xae\x01\n\x17MsgCreateSpotLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v1beta1.SpotOrderB\x04\xc8\xde\x1f\x00R\x05order:8\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0* exchange/MsgCreateSpotLimitOrder\"\\\n\x1fMsgCreateSpotLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbc\x01\n\x1dMsgBatchCreateSpotLimitOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x43\n\x06orders\x18\x02 \x03(\x0b\x32%.injective.exchange.v1beta1.SpotOrderB\x04\xc8\xde\x1f\x00R\x06orders:>\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*&exchange/MsgBatchCreateSpotLimitOrders\"\xb2\x01\n%MsgBatchCreateSpotLimitOrdersResponse\x12!\n\x0corder_hashes\x18\x01 \x03(\tR\x0borderHashes\x12.\n\x13\x63reated_orders_cids\x18\x02 \x03(\tR\x11\x63reatedOrdersCids\x12,\n\x12\x66\x61iled_orders_cids\x18\x03 \x03(\tR\x10\x66\x61iledOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\x8b\x04\n\x1aMsgInstantSpotMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x03 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12#\n\rbase_decimals\x18\x08 \x01(\rR\x0c\x62\x61seDecimals\x12%\n\x0equote_decimals\x18\t \x01(\rR\rquoteDecimals:;\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*#exchange/MsgInstantSpotMarketLaunch\"$\n\"MsgInstantSpotMarketLaunchResponse\"\xb1\x07\n\x1fMsgInstantPerpetualMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x04 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x05 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x06 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x07 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12I\n\x0emaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12U\n\x14initial_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12R\n\x13min_price_tick_size\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:@\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*(exchange/MsgInstantPerpetualMarketLaunch\")\n\'MsgInstantPerpetualMarketLaunchResponse\"\x89\x07\n#MsgInstantBinaryOptionsMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x03 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x04 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x05 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x06 \x01(\rR\x11oracleScaleFactor\x12I\n\x0emaker_fee_rate\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12\x31\n\x14\x65xpiration_timestamp\x18\t \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\n \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\x0c \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:D\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgInstantBinaryOptionsMarketLaunch\"-\n+MsgInstantBinaryOptionsMarketLaunchResponse\"\xd1\x07\n#MsgInstantExpiryFuturesMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x04 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x05 \x01(\tR\x0boracleQuote\x12\x45\n\x0boracle_type\x18\x06 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x16\n\x06\x65xpiry\x18\x08 \x01(\x03R\x06\x65xpiry\x12I\n\x0emaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12U\n\x14initial_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:D\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgInstantExpiryFuturesMarketLaunch\"-\n+MsgInstantExpiryFuturesMarketLaunchResponse\"\xb0\x01\n\x18MsgCreateSpotMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v1beta1.SpotOrderB\x04\xc8\xde\x1f\x00R\x05order:9\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgCreateSpotMarketOrder\"\xb1\x01\n MsgCreateSpotMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12R\n\x07results\x18\x02 \x01(\x0b\x32\x32.injective.exchange.v1beta1.SpotMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xd5\x01\n\x16SpotMarketOrderResults\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x35\n\x03\x66\x65\x65\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbc\x01\n\x1dMsgCreateDerivativeLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order::\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*&exchange/MsgCreateDerivativeLimitOrder\"b\n%MsgCreateDerivativeLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xc2\x01\n MsgCreateBinaryOptionsLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:=\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*)exchange/MsgCreateBinaryOptionsLimitOrder\"e\n(MsgCreateBinaryOptionsLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xca\x01\n#MsgBatchCreateDerivativeLimitOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12I\n\x06orders\x18\x02 \x03(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x06orders:@\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgBatchCreateDerivativeLimitOrders\"\xb8\x01\n+MsgBatchCreateDerivativeLimitOrdersResponse\x12!\n\x0corder_hashes\x18\x01 \x03(\tR\x0borderHashes\x12.\n\x13\x63reated_orders_cids\x18\x02 \x03(\tR\x11\x63reatedOrdersCids\x12,\n\x12\x66\x61iled_orders_cids\x18\x03 \x03(\tR\x10\x66\x61iledOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xd0\x01\n\x12MsgCancelSpotOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id:/\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1b\x65xchange/MsgCancelSpotOrder\"\x1c\n\x1aMsgCancelSpotOrderResponse\"\xaa\x01\n\x18MsgBatchCancelSpotOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12?\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:5\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgBatchCancelSpotOrders\"F\n MsgBatchCancelSpotOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbc\x01\n!MsgBatchCancelBinaryOptionsOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12?\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:>\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgBatchCancelBinaryOptionsOrders\"O\n)MsgBatchCancelBinaryOptionsOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xf2\x07\n\x14MsgBatchUpdateOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12?\n\x1dspot_market_ids_to_cancel_all\x18\x03 \x03(\tR\x18spotMarketIdsToCancelAll\x12K\n#derivative_market_ids_to_cancel_all\x18\x04 \x03(\tR\x1e\x64\x65rivativeMarketIdsToCancelAll\x12^\n\x15spot_orders_to_cancel\x18\x05 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x01R\x12spotOrdersToCancel\x12j\n\x1b\x64\x65rivative_orders_to_cancel\x18\x06 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x01R\x18\x64\x65rivativeOrdersToCancel\x12^\n\x15spot_orders_to_create\x18\x07 \x03(\x0b\x32%.injective.exchange.v1beta1.SpotOrderB\x04\xc8\xde\x1f\x01R\x12spotOrdersToCreate\x12p\n\x1b\x64\x65rivative_orders_to_create\x18\x08 \x03(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x18\x64\x65rivativeOrdersToCreate\x12q\n\x1f\x62inary_options_orders_to_cancel\x18\t \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x01R\x1b\x62inaryOptionsOrdersToCancel\x12R\n\'binary_options_market_ids_to_cancel_all\x18\n \x03(\tR!binaryOptionsMarketIdsToCancelAll\x12w\n\x1f\x62inary_options_orders_to_create\x18\x0b \x03(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x1b\x62inaryOptionsOrdersToCreate:1\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1d\x65xchange/MsgBatchUpdateOrders\"\x88\x06\n\x1cMsgBatchUpdateOrdersResponse\x12.\n\x13spot_cancel_success\x18\x01 \x03(\x08R\x11spotCancelSuccess\x12:\n\x19\x64\x65rivative_cancel_success\x18\x02 \x03(\x08R\x17\x64\x65rivativeCancelSuccess\x12*\n\x11spot_order_hashes\x18\x03 \x03(\tR\x0fspotOrderHashes\x12\x36\n\x17\x64\x65rivative_order_hashes\x18\x04 \x03(\tR\x15\x64\x65rivativeOrderHashes\x12\x41\n\x1d\x62inary_options_cancel_success\x18\x05 \x03(\x08R\x1a\x62inaryOptionsCancelSuccess\x12=\n\x1b\x62inary_options_order_hashes\x18\x06 \x03(\tR\x18\x62inaryOptionsOrderHashes\x12\x37\n\x18\x63reated_spot_orders_cids\x18\x07 \x03(\tR\x15\x63reatedSpotOrdersCids\x12\x35\n\x17\x66\x61iled_spot_orders_cids\x18\x08 \x03(\tR\x14\x66\x61iledSpotOrdersCids\x12\x43\n\x1e\x63reated_derivative_orders_cids\x18\t \x03(\tR\x1b\x63reatedDerivativeOrdersCids\x12\x41\n\x1d\x66\x61iled_derivative_orders_cids\x18\n \x03(\tR\x1a\x66\x61iledDerivativeOrdersCids\x12J\n\"created_binary_options_orders_cids\x18\x0b \x03(\tR\x1e\x63reatedBinaryOptionsOrdersCids\x12H\n!failed_binary_options_orders_cids\x18\x0c \x03(\tR\x1d\x66\x61iledBinaryOptionsOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbe\x01\n\x1eMsgCreateDerivativeMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:;\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\'exchange/MsgCreateDerivativeMarketOrder\"\xbd\x01\n&MsgCreateDerivativeMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12X\n\x07results\x18\x02 \x01(\x0b\x32\x38.injective.exchange.v1beta1.DerivativeMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xf0\x02\n\x1c\x44\x65rivativeMarketOrderResults\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x35\n\x03\x66\x65\x65\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12V\n\x0eposition_delta\x18\x04 \x01(\x0b\x32).injective.exchange.v1beta1.PositionDeltaB\x04\xc8\xde\x1f\x00R\rpositionDelta\x12;\n\x06payout\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xc4\x01\n!MsgCreateBinaryOptionsMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:>\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgCreateBinaryOptionsMarketOrder\"\xc0\x01\n)MsgCreateBinaryOptionsMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12X\n\x07results\x18\x02 \x01(\x0b\x32\x38.injective.exchange.v1beta1.DerivativeMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xfb\x01\n\x18MsgCancelDerivativeOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x05 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id:5\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgCancelDerivativeOrder\"\"\n MsgCancelDerivativeOrderResponse\"\x81\x02\n\x1bMsgCancelBinaryOptionsOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x05 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id:8\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*$exchange/MsgCancelBinaryOptionsOrder\"%\n#MsgCancelBinaryOptionsOrderResponse\"\x9d\x01\n\tOrderData\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x04 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id\"\xb6\x01\n\x1eMsgBatchCancelDerivativeOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12?\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32%.injective.exchange.v1beta1.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:;\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\'exchange/MsgBatchCancelDerivativeOrders\"L\n&MsgBatchCancelDerivativeOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\x86\x02\n\x15MsgSubaccountTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x37\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgSubaccountTransfer\"\x1f\n\x1dMsgSubaccountTransferResponse\"\x82\x02\n\x13MsgExternalTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x37\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:,\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1c\x65xchange/MsgExternalTransfer\"\x1d\n\x1bMsgExternalTransferResponse\"\xe8\x01\n\x14MsgLiquidatePosition\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12G\n\x05order\x18\x04 \x01(\x0b\x32+.injective.exchange.v1beta1.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x05order:-\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1d\x65xchange/MsgLiquidatePosition\"\x1e\n\x1cMsgLiquidatePositionResponse\"\xa7\x01\n\x18MsgEmergencySettleMarket\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId:1\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgEmergencySettleMarket\"\"\n MsgEmergencySettleMarketResponse\"\xaf\x02\n\x19MsgIncreasePositionMargin\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\x12;\n\x06\x61mount\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06\x61mount:2\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\"exchange/MsgIncreasePositionMargin\"#\n!MsgIncreasePositionMarginResponse\"\xaf\x02\n\x19MsgDecreasePositionMargin\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\x12;\n\x06\x61mount\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06\x61mount:2\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\"exchange/MsgDecreasePositionMargin\"#\n!MsgDecreasePositionMarginResponse\"\xca\x01\n\x1cMsgPrivilegedExecuteContract\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x14\n\x05\x66unds\x18\x02 \x01(\tR\x05\x66unds\x12)\n\x10\x63ontract_address\x18\x03 \x01(\tR\x0f\x63ontractAddress\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\tR\x04\x64\x61ta:=\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*%exchange/MsgPrivilegedExecuteContract\"\xa7\x01\n$MsgPrivilegedExecuteContractResponse\x12j\n\nfunds_diff\x18\x01 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\tfundsDiff:\x13\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\"]\n\x10MsgRewardsOptOut\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender:1\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x19\x65xchange/MsgRewardsOptOut\"\x1a\n\x18MsgRewardsOptOutResponse\"\xaf\x01\n\x15MsgReclaimLockedFunds\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x13lockedAccountPubKey\x18\x02 \x01(\x0cR\x13lockedAccountPubKey\x12\x1c\n\tsignature\x18\x03 \x01(\x0cR\tsignature:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgReclaimLockedFunds\"\x1f\n\x1dMsgReclaimLockedFundsResponse\"\x80\x01\n\x0bMsgSignData\x12S\n\x06Signer\x18\x01 \x01(\x0c\x42;\xea\xde\x1f\x06signer\xfa\xde\x1f-github.com/cosmos/cosmos-sdk/types.AccAddressR\x06Signer\x12\x1c\n\x04\x44\x61ta\x18\x02 \x01(\x0c\x42\x08\xea\xde\x1f\x04\x64\x61taR\x04\x44\x61ta\"x\n\nMsgSignDoc\x12%\n\tsign_type\x18\x01 \x01(\tB\x08\xea\xde\x1f\x04typeR\x08signType\x12\x43\n\x05value\x18\x02 \x01(\x0b\x32\'.injective.exchange.v1beta1.MsgSignDataB\x04\xc8\xde\x1f\x00R\x05value\"\x8c\x03\n!MsgAdminUpdateBinaryOptionsMarket\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x31\n\x14\x65xpiration_timestamp\x18\x04 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\x05 \x01(\x03R\x13settlementTimestamp\x12@\n\x06status\x18\x06 \x01(\x0e\x32(.injective.exchange.v1beta1.MarketStatusR\x06status::\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgAdminUpdateBinaryOptionsMarket\"+\n)MsgAdminUpdateBinaryOptionsMarketResponse\"\xab\x01\n\x17MsgAuthorizeStakeGrants\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x46\n\x06grants\x18\x02 \x03(\x0b\x32..injective.exchange.v1beta1.GrantAuthorizationR\x06grants:0\x82\xe7\xb0*\x06sender\x8a\xe7\xb0* exchange/MsgAuthorizeStakeGrants\"!\n\x1fMsgAuthorizeStakeGrantsResponse\"y\n\x15MsgActivateStakeGrant\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgActivateStakeGrant\"\x1f\n\x1dMsgActivateStakeGrantResponse2\xd0\'\n\x03Msg\x12\x61\n\x07\x44\x65posit\x12&.injective.exchange.v1beta1.MsgDeposit\x1a..injective.exchange.v1beta1.MsgDepositResponse\x12\x64\n\x08Withdraw\x12\'.injective.exchange.v1beta1.MsgWithdraw\x1a/.injective.exchange.v1beta1.MsgWithdrawResponse\x12\x91\x01\n\x17InstantSpotMarketLaunch\x12\x36.injective.exchange.v1beta1.MsgInstantSpotMarketLaunch\x1a>.injective.exchange.v1beta1.MsgInstantSpotMarketLaunchResponse\x12\xa0\x01\n\x1cInstantPerpetualMarketLaunch\x12;.injective.exchange.v1beta1.MsgInstantPerpetualMarketLaunch\x1a\x43.injective.exchange.v1beta1.MsgInstantPerpetualMarketLaunchResponse\x12\xac\x01\n InstantExpiryFuturesMarketLaunch\x12?.injective.exchange.v1beta1.MsgInstantExpiryFuturesMarketLaunch\x1aG.injective.exchange.v1beta1.MsgInstantExpiryFuturesMarketLaunchResponse\x12\x88\x01\n\x14\x43reateSpotLimitOrder\x12\x33.injective.exchange.v1beta1.MsgCreateSpotLimitOrder\x1a;.injective.exchange.v1beta1.MsgCreateSpotLimitOrderResponse\x12\x9a\x01\n\x1a\x42\x61tchCreateSpotLimitOrders\x12\x39.injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrders\x1a\x41.injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrdersResponse\x12\x8b\x01\n\x15\x43reateSpotMarketOrder\x12\x34.injective.exchange.v1beta1.MsgCreateSpotMarketOrder\x1a<.injective.exchange.v1beta1.MsgCreateSpotMarketOrderResponse\x12y\n\x0f\x43\x61ncelSpotOrder\x12..injective.exchange.v1beta1.MsgCancelSpotOrder\x1a\x36.injective.exchange.v1beta1.MsgCancelSpotOrderResponse\x12\x8b\x01\n\x15\x42\x61tchCancelSpotOrders\x12\x34.injective.exchange.v1beta1.MsgBatchCancelSpotOrders\x1a<.injective.exchange.v1beta1.MsgBatchCancelSpotOrdersResponse\x12\x7f\n\x11\x42\x61tchUpdateOrders\x12\x30.injective.exchange.v1beta1.MsgBatchUpdateOrders\x1a\x38.injective.exchange.v1beta1.MsgBatchUpdateOrdersResponse\x12\x97\x01\n\x19PrivilegedExecuteContract\x12\x38.injective.exchange.v1beta1.MsgPrivilegedExecuteContract\x1a@.injective.exchange.v1beta1.MsgPrivilegedExecuteContractResponse\x12\x9a\x01\n\x1a\x43reateDerivativeLimitOrder\x12\x39.injective.exchange.v1beta1.MsgCreateDerivativeLimitOrder\x1a\x41.injective.exchange.v1beta1.MsgCreateDerivativeLimitOrderResponse\x12\xac\x01\n BatchCreateDerivativeLimitOrders\x12?.injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrders\x1aG.injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrdersResponse\x12\x9d\x01\n\x1b\x43reateDerivativeMarketOrder\x12:.injective.exchange.v1beta1.MsgCreateDerivativeMarketOrder\x1a\x42.injective.exchange.v1beta1.MsgCreateDerivativeMarketOrderResponse\x12\x8b\x01\n\x15\x43\x61ncelDerivativeOrder\x12\x34.injective.exchange.v1beta1.MsgCancelDerivativeOrder\x1a<.injective.exchange.v1beta1.MsgCancelDerivativeOrderResponse\x12\x9d\x01\n\x1b\x42\x61tchCancelDerivativeOrders\x12:.injective.exchange.v1beta1.MsgBatchCancelDerivativeOrders\x1a\x42.injective.exchange.v1beta1.MsgBatchCancelDerivativeOrdersResponse\x12\xac\x01\n InstantBinaryOptionsMarketLaunch\x12?.injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunch\x1aG.injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunchResponse\x12\xa3\x01\n\x1d\x43reateBinaryOptionsLimitOrder\x12<.injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrder\x1a\x44.injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrderResponse\x12\xa6\x01\n\x1e\x43reateBinaryOptionsMarketOrder\x12=.injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrder\x1a\x45.injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrderResponse\x12\x94\x01\n\x18\x43\x61ncelBinaryOptionsOrder\x12\x37.injective.exchange.v1beta1.MsgCancelBinaryOptionsOrder\x1a?.injective.exchange.v1beta1.MsgCancelBinaryOptionsOrderResponse\x12\xa6\x01\n\x1e\x42\x61tchCancelBinaryOptionsOrders\x12=.injective.exchange.v1beta1.MsgBatchCancelBinaryOptionsOrders\x1a\x45.injective.exchange.v1beta1.MsgBatchCancelBinaryOptionsOrdersResponse\x12\x82\x01\n\x12SubaccountTransfer\x12\x31.injective.exchange.v1beta1.MsgSubaccountTransfer\x1a\x39.injective.exchange.v1beta1.MsgSubaccountTransferResponse\x12|\n\x10\x45xternalTransfer\x12/.injective.exchange.v1beta1.MsgExternalTransfer\x1a\x37.injective.exchange.v1beta1.MsgExternalTransferResponse\x12\x7f\n\x11LiquidatePosition\x12\x30.injective.exchange.v1beta1.MsgLiquidatePosition\x1a\x38.injective.exchange.v1beta1.MsgLiquidatePositionResponse\x12\x8b\x01\n\x15\x45mergencySettleMarket\x12\x34.injective.exchange.v1beta1.MsgEmergencySettleMarket\x1a<.injective.exchange.v1beta1.MsgEmergencySettleMarketResponse\x12\x8e\x01\n\x16IncreasePositionMargin\x12\x35.injective.exchange.v1beta1.MsgIncreasePositionMargin\x1a=.injective.exchange.v1beta1.MsgIncreasePositionMarginResponse\x12\x8e\x01\n\x16\x44\x65\x63reasePositionMargin\x12\x35.injective.exchange.v1beta1.MsgDecreasePositionMargin\x1a=.injective.exchange.v1beta1.MsgDecreasePositionMarginResponse\x12s\n\rRewardsOptOut\x12,.injective.exchange.v1beta1.MsgRewardsOptOut\x1a\x34.injective.exchange.v1beta1.MsgRewardsOptOutResponse\x12\xa6\x01\n\x1e\x41\x64minUpdateBinaryOptionsMarket\x12=.injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarket\x1a\x45.injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarketResponse\x12p\n\x0cUpdateParams\x12+.injective.exchange.v1beta1.MsgUpdateParams\x1a\x33.injective.exchange.v1beta1.MsgUpdateParamsResponse\x12|\n\x10UpdateSpotMarket\x12/.injective.exchange.v1beta1.MsgUpdateSpotMarket\x1a\x37.injective.exchange.v1beta1.MsgUpdateSpotMarketResponse\x12\x8e\x01\n\x16UpdateDerivativeMarket\x12\x35.injective.exchange.v1beta1.MsgUpdateDerivativeMarket\x1a=.injective.exchange.v1beta1.MsgUpdateDerivativeMarketResponse\x12\x88\x01\n\x14\x41uthorizeStakeGrants\x12\x33.injective.exchange.v1beta1.MsgAuthorizeStakeGrants\x1a;.injective.exchange.v1beta1.MsgAuthorizeStakeGrantsResponse\x12\x82\x01\n\x12\x41\x63tivateStakeGrant\x12\x31.injective.exchange.v1beta1.MsgActivateStakeGrant\x1a\x39.injective.exchange.v1beta1.MsgActivateStakeGrantResponse\x1a\x05\x80\xe7\xb0*\x01\x42\x83\x02\n\x1e\x63om.injective.exchange.v1beta1B\x07TxProtoP\x01ZNgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types\xa2\x02\x03IEX\xaa\x02\x1aInjective.Exchange.V1beta1\xca\x02\x1aInjective\\Exchange\\V1beta1\xe2\x02&Injective\\Exchange\\V1beta1\\GPBMetadata\xea\x02\x1cInjective::Exchange::V1beta1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -37,7 +37,7 @@ _globals['_MSGUPDATESPOTMARKET'].fields_by_name['new_min_notional']._loaded_options = None _globals['_MSGUPDATESPOTMARKET'].fields_by_name['new_min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' _globals['_MSGUPDATESPOTMARKET']._loaded_options = None - _globals['_MSGUPDATESPOTMARKET']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\005admin\212\347\260*\034exchange/MsgUpdateSpotMarket' + _globals['_MSGUPDATESPOTMARKET']._serialized_options = b'\350\240\037\000\202\347\260*\005admin\212\347\260*\034exchange/MsgUpdateSpotMarket' _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_price_tick_size']._loaded_options = None _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_quantity_tick_size']._loaded_options = None @@ -281,159 +281,159 @@ _globals['_MSG']._loaded_options = None _globals['_MSG']._serialized_options = b'\200\347\260*\001' _globals['_MSGUPDATESPOTMARKET']._serialized_start=323 - _globals['_MSGUPDATESPOTMARKET']._serialized_end=746 - _globals['_MSGUPDATESPOTMARKETRESPONSE']._serialized_start=748 - _globals['_MSGUPDATESPOTMARKETRESPONSE']._serialized_end=777 - _globals['_MSGUPDATEDERIVATIVEMARKET']._serialized_start=780 - _globals['_MSGUPDATEDERIVATIVEMARKET']._serialized_end=1411 - _globals['_MSGUPDATEDERIVATIVEMARKETRESPONSE']._serialized_start=1413 - _globals['_MSGUPDATEDERIVATIVEMARKETRESPONSE']._serialized_end=1448 - _globals['_MSGUPDATEPARAMS']._serialized_start=1451 - _globals['_MSGUPDATEPARAMS']._serialized_end=1635 - _globals['_MSGUPDATEPARAMSRESPONSE']._serialized_start=1637 - _globals['_MSGUPDATEPARAMSRESPONSE']._serialized_end=1662 - _globals['_MSGDEPOSIT']._serialized_start=1665 - _globals['_MSGDEPOSIT']._serialized_end=1840 - _globals['_MSGDEPOSITRESPONSE']._serialized_start=1842 - _globals['_MSGDEPOSITRESPONSE']._serialized_end=1862 - _globals['_MSGWITHDRAW']._serialized_start=1865 - _globals['_MSGWITHDRAW']._serialized_end=2042 - _globals['_MSGWITHDRAWRESPONSE']._serialized_start=2044 - _globals['_MSGWITHDRAWRESPONSE']._serialized_end=2065 - _globals['_MSGCREATESPOTLIMITORDER']._serialized_start=2068 - _globals['_MSGCREATESPOTLIMITORDER']._serialized_end=2242 - _globals['_MSGCREATESPOTLIMITORDERRESPONSE']._serialized_start=2244 - _globals['_MSGCREATESPOTLIMITORDERRESPONSE']._serialized_end=2336 - _globals['_MSGBATCHCREATESPOTLIMITORDERS']._serialized_start=2339 - _globals['_MSGBATCHCREATESPOTLIMITORDERS']._serialized_end=2527 - _globals['_MSGBATCHCREATESPOTLIMITORDERSRESPONSE']._serialized_start=2530 - _globals['_MSGBATCHCREATESPOTLIMITORDERSRESPONSE']._serialized_end=2708 - _globals['_MSGINSTANTSPOTMARKETLAUNCH']._serialized_start=2711 - _globals['_MSGINSTANTSPOTMARKETLAUNCH']._serialized_end=3158 - _globals['_MSGINSTANTSPOTMARKETLAUNCHRESPONSE']._serialized_start=3160 - _globals['_MSGINSTANTSPOTMARKETLAUNCHRESPONSE']._serialized_end=3196 - _globals['_MSGINSTANTPERPETUALMARKETLAUNCH']._serialized_start=3199 - _globals['_MSGINSTANTPERPETUALMARKETLAUNCH']._serialized_end=4144 - _globals['_MSGINSTANTPERPETUALMARKETLAUNCHRESPONSE']._serialized_start=4146 - _globals['_MSGINSTANTPERPETUALMARKETLAUNCHRESPONSE']._serialized_end=4187 - _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH']._serialized_start=4190 - _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH']._serialized_end=5095 - _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCHRESPONSE']._serialized_start=5097 - _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCHRESPONSE']._serialized_end=5142 - _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH']._serialized_start=5145 - _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH']._serialized_end=6122 - _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCHRESPONSE']._serialized_start=6124 - _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCHRESPONSE']._serialized_end=6169 - _globals['_MSGCREATESPOTMARKETORDER']._serialized_start=6172 - _globals['_MSGCREATESPOTMARKETORDER']._serialized_end=6348 - _globals['_MSGCREATESPOTMARKETORDERRESPONSE']._serialized_start=6351 - _globals['_MSGCREATESPOTMARKETORDERRESPONSE']._serialized_end=6528 - _globals['_SPOTMARKETORDERRESULTS']._serialized_start=6531 - _globals['_SPOTMARKETORDERRESULTS']._serialized_end=6744 - _globals['_MSGCREATEDERIVATIVELIMITORDER']._serialized_start=6747 - _globals['_MSGCREATEDERIVATIVELIMITORDER']._serialized_end=6935 - _globals['_MSGCREATEDERIVATIVELIMITORDERRESPONSE']._serialized_start=6937 - _globals['_MSGCREATEDERIVATIVELIMITORDERRESPONSE']._serialized_end=7035 - _globals['_MSGCREATEBINARYOPTIONSLIMITORDER']._serialized_start=7038 - _globals['_MSGCREATEBINARYOPTIONSLIMITORDER']._serialized_end=7232 - _globals['_MSGCREATEBINARYOPTIONSLIMITORDERRESPONSE']._serialized_start=7234 - _globals['_MSGCREATEBINARYOPTIONSLIMITORDERRESPONSE']._serialized_end=7335 - _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS']._serialized_start=7338 - _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS']._serialized_end=7540 - _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERSRESPONSE']._serialized_start=7543 - _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERSRESPONSE']._serialized_end=7727 - _globals['_MSGCANCELSPOTORDER']._serialized_start=7730 - _globals['_MSGCANCELSPOTORDER']._serialized_end=7938 - _globals['_MSGCANCELSPOTORDERRESPONSE']._serialized_start=7940 - _globals['_MSGCANCELSPOTORDERRESPONSE']._serialized_end=7968 - _globals['_MSGBATCHCANCELSPOTORDERS']._serialized_start=7971 - _globals['_MSGBATCHCANCELSPOTORDERS']._serialized_end=8141 - _globals['_MSGBATCHCANCELSPOTORDERSRESPONSE']._serialized_start=8143 - _globals['_MSGBATCHCANCELSPOTORDERSRESPONSE']._serialized_end=8213 - _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS']._serialized_start=8216 - _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS']._serialized_end=8404 - _globals['_MSGBATCHCANCELBINARYOPTIONSORDERSRESPONSE']._serialized_start=8406 - _globals['_MSGBATCHCANCELBINARYOPTIONSORDERSRESPONSE']._serialized_end=8485 - _globals['_MSGBATCHUPDATEORDERS']._serialized_start=8488 - _globals['_MSGBATCHUPDATEORDERS']._serialized_end=9498 - _globals['_MSGBATCHUPDATEORDERSRESPONSE']._serialized_start=9501 - _globals['_MSGBATCHUPDATEORDERSRESPONSE']._serialized_end=10277 - _globals['_MSGCREATEDERIVATIVEMARKETORDER']._serialized_start=10280 - _globals['_MSGCREATEDERIVATIVEMARKETORDER']._serialized_end=10470 - _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE']._serialized_start=10473 - _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE']._serialized_end=10662 - _globals['_DERIVATIVEMARKETORDERRESULTS']._serialized_start=10665 - _globals['_DERIVATIVEMARKETORDERRESULTS']._serialized_end=11033 - _globals['_MSGCREATEBINARYOPTIONSMARKETORDER']._serialized_start=11036 - _globals['_MSGCREATEBINARYOPTIONSMARKETORDER']._serialized_end=11232 - _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE']._serialized_start=11235 - _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE']._serialized_end=11427 - _globals['_MSGCANCELDERIVATIVEORDER']._serialized_start=11430 - _globals['_MSGCANCELDERIVATIVEORDER']._serialized_end=11681 - _globals['_MSGCANCELDERIVATIVEORDERRESPONSE']._serialized_start=11683 - _globals['_MSGCANCELDERIVATIVEORDERRESPONSE']._serialized_end=11717 - _globals['_MSGCANCELBINARYOPTIONSORDER']._serialized_start=11720 - _globals['_MSGCANCELBINARYOPTIONSORDER']._serialized_end=11977 - _globals['_MSGCANCELBINARYOPTIONSORDERRESPONSE']._serialized_start=11979 - _globals['_MSGCANCELBINARYOPTIONSORDERRESPONSE']._serialized_end=12016 - _globals['_ORDERDATA']._serialized_start=12019 - _globals['_ORDERDATA']._serialized_end=12176 - _globals['_MSGBATCHCANCELDERIVATIVEORDERS']._serialized_start=12179 - _globals['_MSGBATCHCANCELDERIVATIVEORDERS']._serialized_end=12361 - _globals['_MSGBATCHCANCELDERIVATIVEORDERSRESPONSE']._serialized_start=12363 - _globals['_MSGBATCHCANCELDERIVATIVEORDERSRESPONSE']._serialized_end=12439 - _globals['_MSGSUBACCOUNTTRANSFER']._serialized_start=12442 - _globals['_MSGSUBACCOUNTTRANSFER']._serialized_end=12704 - _globals['_MSGSUBACCOUNTTRANSFERRESPONSE']._serialized_start=12706 - _globals['_MSGSUBACCOUNTTRANSFERRESPONSE']._serialized_end=12737 - _globals['_MSGEXTERNALTRANSFER']._serialized_start=12740 - _globals['_MSGEXTERNALTRANSFER']._serialized_end=12998 - _globals['_MSGEXTERNALTRANSFERRESPONSE']._serialized_start=13000 - _globals['_MSGEXTERNALTRANSFERRESPONSE']._serialized_end=13029 - _globals['_MSGLIQUIDATEPOSITION']._serialized_start=13032 - _globals['_MSGLIQUIDATEPOSITION']._serialized_end=13264 - _globals['_MSGLIQUIDATEPOSITIONRESPONSE']._serialized_start=13266 - _globals['_MSGLIQUIDATEPOSITIONRESPONSE']._serialized_end=13296 - _globals['_MSGEMERGENCYSETTLEMARKET']._serialized_start=13299 - _globals['_MSGEMERGENCYSETTLEMARKET']._serialized_end=13466 - _globals['_MSGEMERGENCYSETTLEMARKETRESPONSE']._serialized_start=13468 - _globals['_MSGEMERGENCYSETTLEMARKETRESPONSE']._serialized_end=13502 - _globals['_MSGINCREASEPOSITIONMARGIN']._serialized_start=13505 - _globals['_MSGINCREASEPOSITIONMARGIN']._serialized_end=13808 - _globals['_MSGINCREASEPOSITIONMARGINRESPONSE']._serialized_start=13810 - _globals['_MSGINCREASEPOSITIONMARGINRESPONSE']._serialized_end=13845 - _globals['_MSGDECREASEPOSITIONMARGIN']._serialized_start=13848 - _globals['_MSGDECREASEPOSITIONMARGIN']._serialized_end=14151 - _globals['_MSGDECREASEPOSITIONMARGINRESPONSE']._serialized_start=14153 - _globals['_MSGDECREASEPOSITIONMARGINRESPONSE']._serialized_end=14188 - _globals['_MSGPRIVILEGEDEXECUTECONTRACT']._serialized_start=14191 - _globals['_MSGPRIVILEGEDEXECUTECONTRACT']._serialized_end=14393 - _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE']._serialized_start=14396 - _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE']._serialized_end=14563 - _globals['_MSGREWARDSOPTOUT']._serialized_start=14565 - _globals['_MSGREWARDSOPTOUT']._serialized_end=14658 - _globals['_MSGREWARDSOPTOUTRESPONSE']._serialized_start=14660 - _globals['_MSGREWARDSOPTOUTRESPONSE']._serialized_end=14686 - _globals['_MSGRECLAIMLOCKEDFUNDS']._serialized_start=14689 - _globals['_MSGRECLAIMLOCKEDFUNDS']._serialized_end=14864 - _globals['_MSGRECLAIMLOCKEDFUNDSRESPONSE']._serialized_start=14866 - _globals['_MSGRECLAIMLOCKEDFUNDSRESPONSE']._serialized_end=14897 - _globals['_MSGSIGNDATA']._serialized_start=14900 - _globals['_MSGSIGNDATA']._serialized_end=15028 - _globals['_MSGSIGNDOC']._serialized_start=15030 - _globals['_MSGSIGNDOC']._serialized_end=15150 - _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET']._serialized_start=15153 - _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET']._serialized_end=15549 - _globals['_MSGADMINUPDATEBINARYOPTIONSMARKETRESPONSE']._serialized_start=15551 - _globals['_MSGADMINUPDATEBINARYOPTIONSMARKETRESPONSE']._serialized_end=15594 - _globals['_MSGAUTHORIZESTAKEGRANTS']._serialized_start=15597 - _globals['_MSGAUTHORIZESTAKEGRANTS']._serialized_end=15768 - _globals['_MSGAUTHORIZESTAKEGRANTSRESPONSE']._serialized_start=15770 - _globals['_MSGAUTHORIZESTAKEGRANTSRESPONSE']._serialized_end=15803 - _globals['_MSGACTIVATESTAKEGRANT']._serialized_start=15805 - _globals['_MSGACTIVATESTAKEGRANT']._serialized_end=15926 - _globals['_MSGACTIVATESTAKEGRANTRESPONSE']._serialized_start=15928 - _globals['_MSGACTIVATESTAKEGRANTRESPONSE']._serialized_end=15959 - _globals['_MSG']._serialized_start=15962 - _globals['_MSG']._serialized_end=21034 + _globals['_MSGUPDATESPOTMARKET']._serialized_end=742 + _globals['_MSGUPDATESPOTMARKETRESPONSE']._serialized_start=744 + _globals['_MSGUPDATESPOTMARKETRESPONSE']._serialized_end=773 + _globals['_MSGUPDATEDERIVATIVEMARKET']._serialized_start=776 + _globals['_MSGUPDATEDERIVATIVEMARKET']._serialized_end=1407 + _globals['_MSGUPDATEDERIVATIVEMARKETRESPONSE']._serialized_start=1409 + _globals['_MSGUPDATEDERIVATIVEMARKETRESPONSE']._serialized_end=1444 + _globals['_MSGUPDATEPARAMS']._serialized_start=1447 + _globals['_MSGUPDATEPARAMS']._serialized_end=1631 + _globals['_MSGUPDATEPARAMSRESPONSE']._serialized_start=1633 + _globals['_MSGUPDATEPARAMSRESPONSE']._serialized_end=1658 + _globals['_MSGDEPOSIT']._serialized_start=1661 + _globals['_MSGDEPOSIT']._serialized_end=1836 + _globals['_MSGDEPOSITRESPONSE']._serialized_start=1838 + _globals['_MSGDEPOSITRESPONSE']._serialized_end=1858 + _globals['_MSGWITHDRAW']._serialized_start=1861 + _globals['_MSGWITHDRAW']._serialized_end=2038 + _globals['_MSGWITHDRAWRESPONSE']._serialized_start=2040 + _globals['_MSGWITHDRAWRESPONSE']._serialized_end=2061 + _globals['_MSGCREATESPOTLIMITORDER']._serialized_start=2064 + _globals['_MSGCREATESPOTLIMITORDER']._serialized_end=2238 + _globals['_MSGCREATESPOTLIMITORDERRESPONSE']._serialized_start=2240 + _globals['_MSGCREATESPOTLIMITORDERRESPONSE']._serialized_end=2332 + _globals['_MSGBATCHCREATESPOTLIMITORDERS']._serialized_start=2335 + _globals['_MSGBATCHCREATESPOTLIMITORDERS']._serialized_end=2523 + _globals['_MSGBATCHCREATESPOTLIMITORDERSRESPONSE']._serialized_start=2526 + _globals['_MSGBATCHCREATESPOTLIMITORDERSRESPONSE']._serialized_end=2704 + _globals['_MSGINSTANTSPOTMARKETLAUNCH']._serialized_start=2707 + _globals['_MSGINSTANTSPOTMARKETLAUNCH']._serialized_end=3230 + _globals['_MSGINSTANTSPOTMARKETLAUNCHRESPONSE']._serialized_start=3232 + _globals['_MSGINSTANTSPOTMARKETLAUNCHRESPONSE']._serialized_end=3268 + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH']._serialized_start=3271 + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH']._serialized_end=4216 + _globals['_MSGINSTANTPERPETUALMARKETLAUNCHRESPONSE']._serialized_start=4218 + _globals['_MSGINSTANTPERPETUALMARKETLAUNCHRESPONSE']._serialized_end=4259 + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH']._serialized_start=4262 + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH']._serialized_end=5167 + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCHRESPONSE']._serialized_start=5169 + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCHRESPONSE']._serialized_end=5214 + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH']._serialized_start=5217 + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH']._serialized_end=6194 + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCHRESPONSE']._serialized_start=6196 + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCHRESPONSE']._serialized_end=6241 + _globals['_MSGCREATESPOTMARKETORDER']._serialized_start=6244 + _globals['_MSGCREATESPOTMARKETORDER']._serialized_end=6420 + _globals['_MSGCREATESPOTMARKETORDERRESPONSE']._serialized_start=6423 + _globals['_MSGCREATESPOTMARKETORDERRESPONSE']._serialized_end=6600 + _globals['_SPOTMARKETORDERRESULTS']._serialized_start=6603 + _globals['_SPOTMARKETORDERRESULTS']._serialized_end=6816 + _globals['_MSGCREATEDERIVATIVELIMITORDER']._serialized_start=6819 + _globals['_MSGCREATEDERIVATIVELIMITORDER']._serialized_end=7007 + _globals['_MSGCREATEDERIVATIVELIMITORDERRESPONSE']._serialized_start=7009 + _globals['_MSGCREATEDERIVATIVELIMITORDERRESPONSE']._serialized_end=7107 + _globals['_MSGCREATEBINARYOPTIONSLIMITORDER']._serialized_start=7110 + _globals['_MSGCREATEBINARYOPTIONSLIMITORDER']._serialized_end=7304 + _globals['_MSGCREATEBINARYOPTIONSLIMITORDERRESPONSE']._serialized_start=7306 + _globals['_MSGCREATEBINARYOPTIONSLIMITORDERRESPONSE']._serialized_end=7407 + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS']._serialized_start=7410 + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS']._serialized_end=7612 + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERSRESPONSE']._serialized_start=7615 + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERSRESPONSE']._serialized_end=7799 + _globals['_MSGCANCELSPOTORDER']._serialized_start=7802 + _globals['_MSGCANCELSPOTORDER']._serialized_end=8010 + _globals['_MSGCANCELSPOTORDERRESPONSE']._serialized_start=8012 + _globals['_MSGCANCELSPOTORDERRESPONSE']._serialized_end=8040 + _globals['_MSGBATCHCANCELSPOTORDERS']._serialized_start=8043 + _globals['_MSGBATCHCANCELSPOTORDERS']._serialized_end=8213 + _globals['_MSGBATCHCANCELSPOTORDERSRESPONSE']._serialized_start=8215 + _globals['_MSGBATCHCANCELSPOTORDERSRESPONSE']._serialized_end=8285 + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS']._serialized_start=8288 + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS']._serialized_end=8476 + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERSRESPONSE']._serialized_start=8478 + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERSRESPONSE']._serialized_end=8557 + _globals['_MSGBATCHUPDATEORDERS']._serialized_start=8560 + _globals['_MSGBATCHUPDATEORDERS']._serialized_end=9570 + _globals['_MSGBATCHUPDATEORDERSRESPONSE']._serialized_start=9573 + _globals['_MSGBATCHUPDATEORDERSRESPONSE']._serialized_end=10349 + _globals['_MSGCREATEDERIVATIVEMARKETORDER']._serialized_start=10352 + _globals['_MSGCREATEDERIVATIVEMARKETORDER']._serialized_end=10542 + _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE']._serialized_start=10545 + _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE']._serialized_end=10734 + _globals['_DERIVATIVEMARKETORDERRESULTS']._serialized_start=10737 + _globals['_DERIVATIVEMARKETORDERRESULTS']._serialized_end=11105 + _globals['_MSGCREATEBINARYOPTIONSMARKETORDER']._serialized_start=11108 + _globals['_MSGCREATEBINARYOPTIONSMARKETORDER']._serialized_end=11304 + _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE']._serialized_start=11307 + _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE']._serialized_end=11499 + _globals['_MSGCANCELDERIVATIVEORDER']._serialized_start=11502 + _globals['_MSGCANCELDERIVATIVEORDER']._serialized_end=11753 + _globals['_MSGCANCELDERIVATIVEORDERRESPONSE']._serialized_start=11755 + _globals['_MSGCANCELDERIVATIVEORDERRESPONSE']._serialized_end=11789 + _globals['_MSGCANCELBINARYOPTIONSORDER']._serialized_start=11792 + _globals['_MSGCANCELBINARYOPTIONSORDER']._serialized_end=12049 + _globals['_MSGCANCELBINARYOPTIONSORDERRESPONSE']._serialized_start=12051 + _globals['_MSGCANCELBINARYOPTIONSORDERRESPONSE']._serialized_end=12088 + _globals['_ORDERDATA']._serialized_start=12091 + _globals['_ORDERDATA']._serialized_end=12248 + _globals['_MSGBATCHCANCELDERIVATIVEORDERS']._serialized_start=12251 + _globals['_MSGBATCHCANCELDERIVATIVEORDERS']._serialized_end=12433 + _globals['_MSGBATCHCANCELDERIVATIVEORDERSRESPONSE']._serialized_start=12435 + _globals['_MSGBATCHCANCELDERIVATIVEORDERSRESPONSE']._serialized_end=12511 + _globals['_MSGSUBACCOUNTTRANSFER']._serialized_start=12514 + _globals['_MSGSUBACCOUNTTRANSFER']._serialized_end=12776 + _globals['_MSGSUBACCOUNTTRANSFERRESPONSE']._serialized_start=12778 + _globals['_MSGSUBACCOUNTTRANSFERRESPONSE']._serialized_end=12809 + _globals['_MSGEXTERNALTRANSFER']._serialized_start=12812 + _globals['_MSGEXTERNALTRANSFER']._serialized_end=13070 + _globals['_MSGEXTERNALTRANSFERRESPONSE']._serialized_start=13072 + _globals['_MSGEXTERNALTRANSFERRESPONSE']._serialized_end=13101 + _globals['_MSGLIQUIDATEPOSITION']._serialized_start=13104 + _globals['_MSGLIQUIDATEPOSITION']._serialized_end=13336 + _globals['_MSGLIQUIDATEPOSITIONRESPONSE']._serialized_start=13338 + _globals['_MSGLIQUIDATEPOSITIONRESPONSE']._serialized_end=13368 + _globals['_MSGEMERGENCYSETTLEMARKET']._serialized_start=13371 + _globals['_MSGEMERGENCYSETTLEMARKET']._serialized_end=13538 + _globals['_MSGEMERGENCYSETTLEMARKETRESPONSE']._serialized_start=13540 + _globals['_MSGEMERGENCYSETTLEMARKETRESPONSE']._serialized_end=13574 + _globals['_MSGINCREASEPOSITIONMARGIN']._serialized_start=13577 + _globals['_MSGINCREASEPOSITIONMARGIN']._serialized_end=13880 + _globals['_MSGINCREASEPOSITIONMARGINRESPONSE']._serialized_start=13882 + _globals['_MSGINCREASEPOSITIONMARGINRESPONSE']._serialized_end=13917 + _globals['_MSGDECREASEPOSITIONMARGIN']._serialized_start=13920 + _globals['_MSGDECREASEPOSITIONMARGIN']._serialized_end=14223 + _globals['_MSGDECREASEPOSITIONMARGINRESPONSE']._serialized_start=14225 + _globals['_MSGDECREASEPOSITIONMARGINRESPONSE']._serialized_end=14260 + _globals['_MSGPRIVILEGEDEXECUTECONTRACT']._serialized_start=14263 + _globals['_MSGPRIVILEGEDEXECUTECONTRACT']._serialized_end=14465 + _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE']._serialized_start=14468 + _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE']._serialized_end=14635 + _globals['_MSGREWARDSOPTOUT']._serialized_start=14637 + _globals['_MSGREWARDSOPTOUT']._serialized_end=14730 + _globals['_MSGREWARDSOPTOUTRESPONSE']._serialized_start=14732 + _globals['_MSGREWARDSOPTOUTRESPONSE']._serialized_end=14758 + _globals['_MSGRECLAIMLOCKEDFUNDS']._serialized_start=14761 + _globals['_MSGRECLAIMLOCKEDFUNDS']._serialized_end=14936 + _globals['_MSGRECLAIMLOCKEDFUNDSRESPONSE']._serialized_start=14938 + _globals['_MSGRECLAIMLOCKEDFUNDSRESPONSE']._serialized_end=14969 + _globals['_MSGSIGNDATA']._serialized_start=14972 + _globals['_MSGSIGNDATA']._serialized_end=15100 + _globals['_MSGSIGNDOC']._serialized_start=15102 + _globals['_MSGSIGNDOC']._serialized_end=15222 + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET']._serialized_start=15225 + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET']._serialized_end=15621 + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKETRESPONSE']._serialized_start=15623 + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKETRESPONSE']._serialized_end=15666 + _globals['_MSGAUTHORIZESTAKEGRANTS']._serialized_start=15669 + _globals['_MSGAUTHORIZESTAKEGRANTS']._serialized_end=15840 + _globals['_MSGAUTHORIZESTAKEGRANTSRESPONSE']._serialized_start=15842 + _globals['_MSGAUTHORIZESTAKEGRANTSRESPONSE']._serialized_end=15875 + _globals['_MSGACTIVATESTAKEGRANT']._serialized_start=15877 + _globals['_MSGACTIVATESTAKEGRANT']._serialized_end=15998 + _globals['_MSGACTIVATESTAKEGRANTRESPONSE']._serialized_start=16000 + _globals['_MSGACTIVATESTAKEGRANTRESPONSE']._serialized_end=16031 + _globals['_MSG']._serialized_start=16034 + _globals['_MSG']._serialized_end=21106 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/authz_pb2.py b/pyinjective/proto/injective/exchange/v2/authz_pb2.py new file mode 100644 index 00000000..49193d67 --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/authz_pb2.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/authz.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.cosmos_proto import cosmos_pb2 as cosmos__proto_dot_cosmos__pb2 +from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!injective/exchange/v2/authz.proto\x12\x15injective.exchange.v2\x1a\x19\x63osmos_proto/cosmos.proto\x1a\x11\x61mino/amino.proto\"\x99\x01\n\x19\x43reateSpotLimitOrderAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:8\xca\xb4-\rAuthorization\x8a\xe7\xb0*\"exchange/CreateSpotLimitOrderAuthz\"\x9b\x01\n\x1a\x43reateSpotMarketOrderAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:9\xca\xb4-\rAuthorization\x8a\xe7\xb0*#exchange/CreateSpotMarketOrderAuthz\"\xa5\x01\n\x1f\x42\x61tchCreateSpotLimitOrdersAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:>\xca\xb4-\rAuthorization\x8a\xe7\xb0*(exchange/BatchCreateSpotLimitOrdersAuthz\"\x8f\x01\n\x14\x43\x61ncelSpotOrderAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:3\xca\xb4-\rAuthorization\x8a\xe7\xb0*\x1d\x65xchange/CancelSpotOrderAuthz\"\x9b\x01\n\x1a\x42\x61tchCancelSpotOrdersAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:9\xca\xb4-\rAuthorization\x8a\xe7\xb0*#exchange/BatchCancelSpotOrdersAuthz\"\xa5\x01\n\x1f\x43reateDerivativeLimitOrderAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:>\xca\xb4-\rAuthorization\x8a\xe7\xb0*(exchange/CreateDerivativeLimitOrderAuthz\"\xa7\x01\n CreateDerivativeMarketOrderAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:?\xca\xb4-\rAuthorization\x8a\xe7\xb0*)exchange/CreateDerivativeMarketOrderAuthz\"\xb1\x01\n%BatchCreateDerivativeLimitOrdersAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:D\xca\xb4-\rAuthorization\x8a\xe7\xb0*.exchange/BatchCreateDerivativeLimitOrdersAuthz\"\x9b\x01\n\x1a\x43\x61ncelDerivativeOrderAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:9\xca\xb4-\rAuthorization\x8a\xe7\xb0*#exchange/CancelDerivativeOrderAuthz\"\xa7\x01\n BatchCancelDerivativeOrdersAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds:?\xca\xb4-\rAuthorization\x8a\xe7\xb0*)exchange/BatchCancelDerivativeOrdersAuthz\"\xc6\x01\n\x16\x42\x61tchUpdateOrdersAuthz\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12!\n\x0cspot_markets\x18\x02 \x03(\tR\x0bspotMarkets\x12-\n\x12\x64\x65rivative_markets\x18\x03 \x03(\tR\x11\x64\x65rivativeMarkets:5\xca\xb4-\rAuthorization\x8a\xe7\xb0*\x1f\x65xchange/BatchUpdateOrdersAuthzB\xf0\x01\n\x19\x63om.injective.exchange.v2B\nAuthzProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.authz_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\nAuthzProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_CREATESPOTLIMITORDERAUTHZ']._loaded_options = None + _globals['_CREATESPOTLIMITORDERAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*\"exchange/CreateSpotLimitOrderAuthz' + _globals['_CREATESPOTMARKETORDERAUTHZ']._loaded_options = None + _globals['_CREATESPOTMARKETORDERAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*#exchange/CreateSpotMarketOrderAuthz' + _globals['_BATCHCREATESPOTLIMITORDERSAUTHZ']._loaded_options = None + _globals['_BATCHCREATESPOTLIMITORDERSAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*(exchange/BatchCreateSpotLimitOrdersAuthz' + _globals['_CANCELSPOTORDERAUTHZ']._loaded_options = None + _globals['_CANCELSPOTORDERAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*\035exchange/CancelSpotOrderAuthz' + _globals['_BATCHCANCELSPOTORDERSAUTHZ']._loaded_options = None + _globals['_BATCHCANCELSPOTORDERSAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*#exchange/BatchCancelSpotOrdersAuthz' + _globals['_CREATEDERIVATIVELIMITORDERAUTHZ']._loaded_options = None + _globals['_CREATEDERIVATIVELIMITORDERAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*(exchange/CreateDerivativeLimitOrderAuthz' + _globals['_CREATEDERIVATIVEMARKETORDERAUTHZ']._loaded_options = None + _globals['_CREATEDERIVATIVEMARKETORDERAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*)exchange/CreateDerivativeMarketOrderAuthz' + _globals['_BATCHCREATEDERIVATIVELIMITORDERSAUTHZ']._loaded_options = None + _globals['_BATCHCREATEDERIVATIVELIMITORDERSAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*.exchange/BatchCreateDerivativeLimitOrdersAuthz' + _globals['_CANCELDERIVATIVEORDERAUTHZ']._loaded_options = None + _globals['_CANCELDERIVATIVEORDERAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*#exchange/CancelDerivativeOrderAuthz' + _globals['_BATCHCANCELDERIVATIVEORDERSAUTHZ']._loaded_options = None + _globals['_BATCHCANCELDERIVATIVEORDERSAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*)exchange/BatchCancelDerivativeOrdersAuthz' + _globals['_BATCHUPDATEORDERSAUTHZ']._loaded_options = None + _globals['_BATCHUPDATEORDERSAUTHZ']._serialized_options = b'\312\264-\rAuthorization\212\347\260*\037exchange/BatchUpdateOrdersAuthz' + _globals['_CREATESPOTLIMITORDERAUTHZ']._serialized_start=107 + _globals['_CREATESPOTLIMITORDERAUTHZ']._serialized_end=260 + _globals['_CREATESPOTMARKETORDERAUTHZ']._serialized_start=263 + _globals['_CREATESPOTMARKETORDERAUTHZ']._serialized_end=418 + _globals['_BATCHCREATESPOTLIMITORDERSAUTHZ']._serialized_start=421 + _globals['_BATCHCREATESPOTLIMITORDERSAUTHZ']._serialized_end=586 + _globals['_CANCELSPOTORDERAUTHZ']._serialized_start=589 + _globals['_CANCELSPOTORDERAUTHZ']._serialized_end=732 + _globals['_BATCHCANCELSPOTORDERSAUTHZ']._serialized_start=735 + _globals['_BATCHCANCELSPOTORDERSAUTHZ']._serialized_end=890 + _globals['_CREATEDERIVATIVELIMITORDERAUTHZ']._serialized_start=893 + _globals['_CREATEDERIVATIVELIMITORDERAUTHZ']._serialized_end=1058 + _globals['_CREATEDERIVATIVEMARKETORDERAUTHZ']._serialized_start=1061 + _globals['_CREATEDERIVATIVEMARKETORDERAUTHZ']._serialized_end=1228 + _globals['_BATCHCREATEDERIVATIVELIMITORDERSAUTHZ']._serialized_start=1231 + _globals['_BATCHCREATEDERIVATIVELIMITORDERSAUTHZ']._serialized_end=1408 + _globals['_CANCELDERIVATIVEORDERAUTHZ']._serialized_start=1411 + _globals['_CANCELDERIVATIVEORDERAUTHZ']._serialized_end=1566 + _globals['_BATCHCANCELDERIVATIVEORDERSAUTHZ']._serialized_start=1569 + _globals['_BATCHCANCELDERIVATIVEORDERSAUTHZ']._serialized_end=1736 + _globals['_BATCHUPDATEORDERSAUTHZ']._serialized_start=1739 + _globals['_BATCHUPDATEORDERSAUTHZ']._serialized_end=1937 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/authz_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/authz_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/authz_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/pyinjective/proto/injective/exchange/v2/events_pb2.py b/pyinjective/proto/injective/exchange/v2/events_pb2.py new file mode 100644 index 00000000..0154fee0 --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/events_pb2.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/events.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as cosmos_dot_base_dot_v1beta1_dot_coin__pb2 +from pyinjective.proto.injective.oracle.v1beta1 import oracle_pb2 as injective_dot_oracle_dot_v1beta1_dot_oracle__pb2 +from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as injective_dot_exchange_dot_v2_dot_exchange__pb2 +from pyinjective.proto.injective.exchange.v2 import market_pb2 as injective_dot_exchange_dot_v2_dot_market__pb2 +from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"injective/exchange/v2/events.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a$injective/exchange/v2/exchange.proto\x1a\"injective/exchange/v2/market.proto\x1a!injective/exchange/v2/order.proto\"\xd2\x01\n\x17\x45ventBatchSpotExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12J\n\rexecutionType\x18\x03 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x37\n\x06trades\x18\x04 \x03(\x0b\x32\x1f.injective.exchange.v2.TradeLogR\x06trades\"\xdd\x02\n\x1d\x45ventBatchDerivativeExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12%\n\x0eis_liquidation\x18\x03 \x01(\x08R\risLiquidation\x12R\n\x12\x63umulative_funding\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x63umulativeFunding\x12J\n\rexecutionType\x18\x05 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x41\n\x06trades\x18\x06 \x03(\x0b\x32).injective.exchange.v2.DerivativeTradeLogR\x06trades\"\xc2\x02\n\x1d\x45ventLostFundsFromLiquidation\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12x\n\'lost_funds_from_available_during_payout\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"lostFundsFromAvailableDuringPayout\x12\x65\n\x1dlost_funds_from_order_cancels\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19lostFundsFromOrderCancels\"\x84\x01\n\x1c\x45ventBatchDerivativePosition\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\tpositions\x18\x02 \x03(\x0b\x32).injective.exchange.v2.SubaccountPositionR\tpositions\"\xbb\x01\n\x1b\x45ventDerivativeMarketPaused\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12.\n\x13total_missing_funds\x18\x03 \x01(\tR\x11totalMissingFunds\x12,\n\x12missing_funds_rate\x18\x04 \x01(\tR\x10missingFundsRate\"\x8f\x01\n\x1b\x45ventMarketBeyondBankruptcy\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12\x30\n\x14missing_market_funds\x18\x03 \x01(\tR\x12missingMarketFunds\"\x88\x01\n\x18\x45ventAllPositionsHaircut\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12,\n\x12missing_funds_rate\x18\x03 \x01(\tR\x10missingFundsRate\"j\n\x1e\x45ventBinaryOptionsMarketUpdate\x12H\n\x06market\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.BinaryOptionsMarketB\x04\xc8\xde\x1f\x00R\x06market\"\xbf\x01\n\x12\x45ventNewSpotOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x44\n\nbuy_orders\x18\x02 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\tbuyOrders\x12\x46\n\x0bsell_orders\x18\x03 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\nsellOrders\"\xd1\x01\n\x18\x45ventNewDerivativeOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\nbuy_orders\x18\x02 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\tbuyOrders\x12L\n\x0bsell_orders\x18\x03 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\nsellOrders\"v\n\x14\x45ventCancelSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"X\n\x15\x45ventSpotMarketUpdate\x12?\n\x06market\x18\x01 \x01(\x0b\x32!.injective.exchange.v2.SpotMarketB\x04\xc8\xde\x1f\x00R\x06market\"\x98\x02\n\x1a\x45ventPerpetualMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12\x64\n\x15perpetual_market_info\x18\x02 \x01(\x0b\x32*.injective.exchange.v2.PerpetualMarketInfoB\x04\xc8\xde\x1f\x01R\x13perpetualMarketInfo\x12M\n\x07\x66unding\x18\x03 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x01R\x07\x66unding\"\xda\x01\n\x1e\x45ventExpiryFuturesMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12q\n\x1a\x65xpiry_futures_market_info\x18\x03 \x01(\x0b\x32..injective.exchange.v2.ExpiryFuturesMarketInfoB\x04\xc8\xde\x1f\x01R\x17\x65xpiryFuturesMarketInfo\"\xc7\x02\n!EventPerpetualMarketFundingUpdate\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12M\n\x07\x66unding\x18\x02 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x00R\x07\x66unding\x12*\n\x11is_hourly_funding\x18\x03 \x01(\x08R\x0fisHourlyFunding\x12\x46\n\x0c\x66unding_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x66undingRate\x12\x42\n\nmark_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tmarkPrice\"\x97\x01\n\x16\x45ventSubaccountDeposit\x12\x1f\n\x0bsrc_address\x18\x01 \x01(\tR\nsrcAddress\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\x98\x01\n\x17\x45ventSubaccountWithdraw\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12\x1f\n\x0b\x64st_address\x18\x02 \x01(\tR\ndstAddress\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\xb1\x01\n\x1e\x45ventSubaccountBalanceTransfer\x12*\n\x11src_subaccount_id\x18\x01 \x01(\tR\x0fsrcSubaccountId\x12*\n\x11\x64st_subaccount_id\x18\x02 \x01(\tR\x0f\x64stSubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"h\n\x17\x45ventBatchDepositUpdate\x12M\n\x0f\x64\x65posit_updates\x18\x01 \x03(\x0b\x32$.injective.exchange.v2.DepositUpdateR\x0e\x64\x65positUpdates\"\xc2\x01\n\x1b\x44\x65rivativeMarketOrderCancel\x12U\n\x0cmarket_order\x18\x01 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\x12L\n\x0f\x63\x61ncel_quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0e\x63\x61ncelQuantity\"\x9d\x02\n\x1a\x45ventCancelDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12h\n\x13market_order_cancel\x18\x04 \x01(\x0b\x32\x32.injective.exchange.v2.DerivativeMarketOrderCancelB\x04\xc8\xde\x1f\x01R\x11marketOrderCancel\"b\n\x18\x45ventFeeDiscountSchedule\x12\x46\n\x08schedule\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountScheduleR\x08schedule\"\xd8\x01\n EventTradingRewardCampaignUpdate\x12U\n\rcampaign_info\x18\x01 \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12]\n\x15\x63\x61mpaign_reward_pools\x18\x02 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR\x13\x63\x61mpaignRewardPools\"p\n\x1e\x45ventTradingRewardDistribution\x12N\n\x0f\x61\x63\x63ount_rewards\x18\x01 \x03(\x0b\x32%.injective.exchange.v2.AccountRewardsR\x0e\x61\x63\x63ountRewards\"\xb0\x01\n\"EventNewConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12<\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderR\x05order\x12\x12\n\x04hash\x18\x03 \x01(\x0cR\x04hash\x12\x1b\n\tis_market\x18\x04 \x01(\x08R\x08isMarket\"\x95\x02\n%EventCancelConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12U\n\x0cmarket_order\x18\x04 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\"\xfb\x01\n&EventConditionalDerivativeOrderTrigger\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12&\n\x0eisLimitTrigger\x18\x02 \x01(\x08R\x0eisLimitTrigger\x12\x30\n\x14triggered_order_hash\x18\x03 \x01(\x0cR\x12triggeredOrderHash\x12*\n\x11placed_order_hash\x18\x04 \x01(\x0cR\x0fplacedOrderHash\x12.\n\x13triggered_order_cid\x18\x05 \x01(\tR\x11triggeredOrderCid\"l\n\x0e\x45ventOrderFail\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0cR\x07\x61\x63\x63ount\x12\x16\n\x06hashes\x18\x02 \x03(\x0cR\x06hashes\x12\x14\n\x05\x66lags\x18\x03 \x03(\rR\x05\x66lags\x12\x12\n\x04\x63ids\x18\x04 \x03(\tR\x04\x63ids\"\x8f\x01\n+EventAtomicMarketOrderFeeMultipliersUpdated\x12`\n\x16market_fee_multipliers\x18\x01 \x03(\x0b\x32*.injective.exchange.v2.MarketFeeMultiplierR\x14marketFeeMultipliers\"\xb8\x01\n\x14\x45ventOrderbookUpdate\x12I\n\x0cspot_updates\x18\x01 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x0bspotUpdates\x12U\n\x12\x64\x65rivative_updates\x18\x02 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x11\x64\x65rivativeUpdates\"c\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12>\n\torderbook\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.OrderbookR\torderbook\"\xa4\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12;\n\nbuy_levels\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\tbuyLevels\x12=\n\x0bsell_levels\x18\x03 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\nsellLevels\"w\n\x18\x45ventGrantAuthorizations\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x41\n\x06grants\x18\x02 \x03(\x0b\x32).injective.exchange.v2.GrantAuthorizationR\x06grants\"\x81\x01\n\x14\x45ventGrantActivation\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\x12\x35\n\x06\x61mount\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"G\n\x11\x45ventInvalidGrant\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\"\xab\x01\n\x14\x45ventOrderCancelFail\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x04 \x01(\tR\x03\x63id\x12 \n\x0b\x64\x65scription\x18\x05 \x01(\tR\x0b\x64\x65scription\"i\n$EventDerivativeLimitOrderV2Migration\x12\x41\n\x05order\x18\x01 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\x05order\"k\n%EventDerivativeMarketOrderV2Migration\x12\x42\n\x05order\x18\x01 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderR\x05order\"k\n\"EventDerivativePositionV2Migration\x12\x45\n\x08position\x18\x01 \x01(\x0b\x32).injective.exchange.v2.DerivativePositionR\x08position\"X\n\x19\x45ventSpotOrderV2Migration\x12;\n\x05order\x18\x01 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\x05orderB\xf1\x01\n\x19\x63om.injective.exchange.v2B\x0b\x45ventsProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.events_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\013EventsProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_EVENTBATCHDERIVATIVEEXECUTION'].fields_by_name['cumulative_funding']._loaded_options = None + _globals['_EVENTBATCHDERIVATIVEEXECUTION'].fields_by_name['cumulative_funding']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EVENTLOSTFUNDSFROMLIQUIDATION'].fields_by_name['lost_funds_from_available_during_payout']._loaded_options = None + _globals['_EVENTLOSTFUNDSFROMLIQUIDATION'].fields_by_name['lost_funds_from_available_during_payout']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EVENTLOSTFUNDSFROMLIQUIDATION'].fields_by_name['lost_funds_from_order_cancels']._loaded_options = None + _globals['_EVENTLOSTFUNDSFROMLIQUIDATION'].fields_by_name['lost_funds_from_order_cancels']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EVENTBINARYOPTIONSMARKETUPDATE'].fields_by_name['market']._loaded_options = None + _globals['_EVENTBINARYOPTIONSMARKETUPDATE'].fields_by_name['market']._serialized_options = b'\310\336\037\000' + _globals['_EVENTCANCELSPOTORDER'].fields_by_name['order']._loaded_options = None + _globals['_EVENTCANCELSPOTORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_EVENTSPOTMARKETUPDATE'].fields_by_name['market']._loaded_options = None + _globals['_EVENTSPOTMARKETUPDATE'].fields_by_name['market']._serialized_options = b'\310\336\037\000' + _globals['_EVENTPERPETUALMARKETUPDATE'].fields_by_name['market']._loaded_options = None + _globals['_EVENTPERPETUALMARKETUPDATE'].fields_by_name['market']._serialized_options = b'\310\336\037\000' + _globals['_EVENTPERPETUALMARKETUPDATE'].fields_by_name['perpetual_market_info']._loaded_options = None + _globals['_EVENTPERPETUALMARKETUPDATE'].fields_by_name['perpetual_market_info']._serialized_options = b'\310\336\037\001' + _globals['_EVENTPERPETUALMARKETUPDATE'].fields_by_name['funding']._loaded_options = None + _globals['_EVENTPERPETUALMARKETUPDATE'].fields_by_name['funding']._serialized_options = b'\310\336\037\001' + _globals['_EVENTEXPIRYFUTURESMARKETUPDATE'].fields_by_name['market']._loaded_options = None + _globals['_EVENTEXPIRYFUTURESMARKETUPDATE'].fields_by_name['market']._serialized_options = b'\310\336\037\000' + _globals['_EVENTEXPIRYFUTURESMARKETUPDATE'].fields_by_name['expiry_futures_market_info']._loaded_options = None + _globals['_EVENTEXPIRYFUTURESMARKETUPDATE'].fields_by_name['expiry_futures_market_info']._serialized_options = b'\310\336\037\001' + _globals['_EVENTPERPETUALMARKETFUNDINGUPDATE'].fields_by_name['funding']._loaded_options = None + _globals['_EVENTPERPETUALMARKETFUNDINGUPDATE'].fields_by_name['funding']._serialized_options = b'\310\336\037\000' + _globals['_EVENTPERPETUALMARKETFUNDINGUPDATE'].fields_by_name['funding_rate']._loaded_options = None + _globals['_EVENTPERPETUALMARKETFUNDINGUPDATE'].fields_by_name['funding_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EVENTPERPETUALMARKETFUNDINGUPDATE'].fields_by_name['mark_price']._loaded_options = None + _globals['_EVENTPERPETUALMARKETFUNDINGUPDATE'].fields_by_name['mark_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EVENTSUBACCOUNTDEPOSIT'].fields_by_name['amount']._loaded_options = None + _globals['_EVENTSUBACCOUNTDEPOSIT'].fields_by_name['amount']._serialized_options = b'\310\336\037\000' + _globals['_EVENTSUBACCOUNTWITHDRAW'].fields_by_name['amount']._loaded_options = None + _globals['_EVENTSUBACCOUNTWITHDRAW'].fields_by_name['amount']._serialized_options = b'\310\336\037\000' + _globals['_EVENTSUBACCOUNTBALANCETRANSFER'].fields_by_name['amount']._loaded_options = None + _globals['_EVENTSUBACCOUNTBALANCETRANSFER'].fields_by_name['amount']._serialized_options = b'\310\336\037\000' + _globals['_DERIVATIVEMARKETORDERCANCEL'].fields_by_name['market_order']._loaded_options = None + _globals['_DERIVATIVEMARKETORDERCANCEL'].fields_by_name['market_order']._serialized_options = b'\310\336\037\001' + _globals['_DERIVATIVEMARKETORDERCANCEL'].fields_by_name['cancel_quantity']._loaded_options = None + _globals['_DERIVATIVEMARKETORDERCANCEL'].fields_by_name['cancel_quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EVENTCANCELDERIVATIVEORDER'].fields_by_name['limit_order']._loaded_options = None + _globals['_EVENTCANCELDERIVATIVEORDER'].fields_by_name['limit_order']._serialized_options = b'\310\336\037\001' + _globals['_EVENTCANCELDERIVATIVEORDER'].fields_by_name['market_order_cancel']._loaded_options = None + _globals['_EVENTCANCELDERIVATIVEORDER'].fields_by_name['market_order_cancel']._serialized_options = b'\310\336\037\001' + _globals['_EVENTCANCELCONDITIONALDERIVATIVEORDER'].fields_by_name['limit_order']._loaded_options = None + _globals['_EVENTCANCELCONDITIONALDERIVATIVEORDER'].fields_by_name['limit_order']._serialized_options = b'\310\336\037\001' + _globals['_EVENTCANCELCONDITIONALDERIVATIVEORDER'].fields_by_name['market_order']._loaded_options = None + _globals['_EVENTCANCELCONDITIONALDERIVATIVEORDER'].fields_by_name['market_order']._serialized_options = b'\310\336\037\001' + _globals['_EVENTGRANTACTIVATION'].fields_by_name['amount']._loaded_options = None + _globals['_EVENTGRANTACTIVATION'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_EVENTBATCHSPOTEXECUTION']._serialized_start=264 + _globals['_EVENTBATCHSPOTEXECUTION']._serialized_end=474 + _globals['_EVENTBATCHDERIVATIVEEXECUTION']._serialized_start=477 + _globals['_EVENTBATCHDERIVATIVEEXECUTION']._serialized_end=826 + _globals['_EVENTLOSTFUNDSFROMLIQUIDATION']._serialized_start=829 + _globals['_EVENTLOSTFUNDSFROMLIQUIDATION']._serialized_end=1151 + _globals['_EVENTBATCHDERIVATIVEPOSITION']._serialized_start=1154 + _globals['_EVENTBATCHDERIVATIVEPOSITION']._serialized_end=1286 + _globals['_EVENTDERIVATIVEMARKETPAUSED']._serialized_start=1289 + _globals['_EVENTDERIVATIVEMARKETPAUSED']._serialized_end=1476 + _globals['_EVENTMARKETBEYONDBANKRUPTCY']._serialized_start=1479 + _globals['_EVENTMARKETBEYONDBANKRUPTCY']._serialized_end=1622 + _globals['_EVENTALLPOSITIONSHAIRCUT']._serialized_start=1625 + _globals['_EVENTALLPOSITIONSHAIRCUT']._serialized_end=1761 + _globals['_EVENTBINARYOPTIONSMARKETUPDATE']._serialized_start=1763 + _globals['_EVENTBINARYOPTIONSMARKETUPDATE']._serialized_end=1869 + _globals['_EVENTNEWSPOTORDERS']._serialized_start=1872 + _globals['_EVENTNEWSPOTORDERS']._serialized_end=2063 + _globals['_EVENTNEWDERIVATIVEORDERS']._serialized_start=2066 + _globals['_EVENTNEWDERIVATIVEORDERS']._serialized_end=2275 + _globals['_EVENTCANCELSPOTORDER']._serialized_start=2277 + _globals['_EVENTCANCELSPOTORDER']._serialized_end=2395 + _globals['_EVENTSPOTMARKETUPDATE']._serialized_start=2397 + _globals['_EVENTSPOTMARKETUPDATE']._serialized_end=2485 + _globals['_EVENTPERPETUALMARKETUPDATE']._serialized_start=2488 + _globals['_EVENTPERPETUALMARKETUPDATE']._serialized_end=2768 + _globals['_EVENTEXPIRYFUTURESMARKETUPDATE']._serialized_start=2771 + _globals['_EVENTEXPIRYFUTURESMARKETUPDATE']._serialized_end=2989 + _globals['_EVENTPERPETUALMARKETFUNDINGUPDATE']._serialized_start=2992 + _globals['_EVENTPERPETUALMARKETFUNDINGUPDATE']._serialized_end=3319 + _globals['_EVENTSUBACCOUNTDEPOSIT']._serialized_start=3322 + _globals['_EVENTSUBACCOUNTDEPOSIT']._serialized_end=3473 + _globals['_EVENTSUBACCOUNTWITHDRAW']._serialized_start=3476 + _globals['_EVENTSUBACCOUNTWITHDRAW']._serialized_end=3628 + _globals['_EVENTSUBACCOUNTBALANCETRANSFER']._serialized_start=3631 + _globals['_EVENTSUBACCOUNTBALANCETRANSFER']._serialized_end=3808 + _globals['_EVENTBATCHDEPOSITUPDATE']._serialized_start=3810 + _globals['_EVENTBATCHDEPOSITUPDATE']._serialized_end=3914 + _globals['_DERIVATIVEMARKETORDERCANCEL']._serialized_start=3917 + _globals['_DERIVATIVEMARKETORDERCANCEL']._serialized_end=4111 + _globals['_EVENTCANCELDERIVATIVEORDER']._serialized_start=4114 + _globals['_EVENTCANCELDERIVATIVEORDER']._serialized_end=4399 + _globals['_EVENTFEEDISCOUNTSCHEDULE']._serialized_start=4401 + _globals['_EVENTFEEDISCOUNTSCHEDULE']._serialized_end=4499 + _globals['_EVENTTRADINGREWARDCAMPAIGNUPDATE']._serialized_start=4502 + _globals['_EVENTTRADINGREWARDCAMPAIGNUPDATE']._serialized_end=4718 + _globals['_EVENTTRADINGREWARDDISTRIBUTION']._serialized_start=4720 + _globals['_EVENTTRADINGREWARDDISTRIBUTION']._serialized_end=4832 + _globals['_EVENTNEWCONDITIONALDERIVATIVEORDER']._serialized_start=4835 + _globals['_EVENTNEWCONDITIONALDERIVATIVEORDER']._serialized_end=5011 + _globals['_EVENTCANCELCONDITIONALDERIVATIVEORDER']._serialized_start=5014 + _globals['_EVENTCANCELCONDITIONALDERIVATIVEORDER']._serialized_end=5291 + _globals['_EVENTCONDITIONALDERIVATIVEORDERTRIGGER']._serialized_start=5294 + _globals['_EVENTCONDITIONALDERIVATIVEORDERTRIGGER']._serialized_end=5545 + _globals['_EVENTORDERFAIL']._serialized_start=5547 + _globals['_EVENTORDERFAIL']._serialized_end=5655 + _globals['_EVENTATOMICMARKETORDERFEEMULTIPLIERSUPDATED']._serialized_start=5658 + _globals['_EVENTATOMICMARKETORDERFEEMULTIPLIERSUPDATED']._serialized_end=5801 + _globals['_EVENTORDERBOOKUPDATE']._serialized_start=5804 + _globals['_EVENTORDERBOOKUPDATE']._serialized_end=5988 + _globals['_ORDERBOOKUPDATE']._serialized_start=5990 + _globals['_ORDERBOOKUPDATE']._serialized_end=6089 + _globals['_ORDERBOOK']._serialized_start=6092 + _globals['_ORDERBOOK']._serialized_end=6256 + _globals['_EVENTGRANTAUTHORIZATIONS']._serialized_start=6258 + _globals['_EVENTGRANTAUTHORIZATIONS']._serialized_end=6377 + _globals['_EVENTGRANTACTIVATION']._serialized_start=6380 + _globals['_EVENTGRANTACTIVATION']._serialized_end=6509 + _globals['_EVENTINVALIDGRANT']._serialized_start=6511 + _globals['_EVENTINVALIDGRANT']._serialized_end=6582 + _globals['_EVENTORDERCANCELFAIL']._serialized_start=6585 + _globals['_EVENTORDERCANCELFAIL']._serialized_end=6756 + _globals['_EVENTDERIVATIVELIMITORDERV2MIGRATION']._serialized_start=6758 + _globals['_EVENTDERIVATIVELIMITORDERV2MIGRATION']._serialized_end=6863 + _globals['_EVENTDERIVATIVEMARKETORDERV2MIGRATION']._serialized_start=6865 + _globals['_EVENTDERIVATIVEMARKETORDERV2MIGRATION']._serialized_end=6972 + _globals['_EVENTDERIVATIVEPOSITIONV2MIGRATION']._serialized_start=6974 + _globals['_EVENTDERIVATIVEPOSITIONV2MIGRATION']._serialized_end=7081 + _globals['_EVENTSPOTORDERV2MIGRATION']._serialized_start=7083 + _globals['_EVENTSPOTORDERV2MIGRATION']._serialized_end=7171 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/events_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/events_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/events_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/pyinjective/proto/injective/exchange/v2/exchange_pb2.py b/pyinjective/proto/injective/exchange/v2/exchange_pb2.py new file mode 100644 index 00000000..e353a54f --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/exchange_pb2.py @@ -0,0 +1,225 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/exchange.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 +from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as cosmos_dot_base_dot_v1beta1_dot_coin__pb2 +from pyinjective.proto.injective.oracle.v1beta1 import oracle_pb2 as injective_dot_oracle_dot_v1beta1_dot_oracle__pb2 +from pyinjective.proto.injective.exchange.v2 import market_pb2 as injective_dot_exchange_dot_v2_dot_market__pb2 +from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$injective/exchange/v2/exchange.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a\x11\x61mino/amino.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\"injective/exchange/v2/market.proto\x1a!injective/exchange/v2/order.proto\"\xd7\x15\n\x06Params\x12\x65\n\x1fspot_market_instant_listing_fee\x18\x01 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x1bspotMarketInstantListingFee\x12q\n%derivative_market_instant_listing_fee\x18\x02 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R!derivativeMarketInstantListingFee\x12\x61\n\x1b\x64\x65\x66\x61ult_spot_maker_fee_rate\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17\x64\x65\x66\x61ultSpotMakerFeeRate\x12\x61\n\x1b\x64\x65\x66\x61ult_spot_taker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17\x64\x65\x66\x61ultSpotTakerFeeRate\x12m\n!default_derivative_maker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultDerivativeMakerFeeRate\x12m\n!default_derivative_taker_fee_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultDerivativeTakerFeeRate\x12\x64\n\x1c\x64\x65\x66\x61ult_initial_margin_ratio\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19\x64\x65\x66\x61ultInitialMarginRatio\x12l\n default_maintenance_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1d\x64\x65\x66\x61ultMaintenanceMarginRatio\x12\x38\n\x18\x64\x65\x66\x61ult_funding_interval\x18\t \x01(\x03R\x16\x64\x65\x66\x61ultFundingInterval\x12)\n\x10\x66unding_multiple\x18\n \x01(\x03R\x0f\x66undingMultiple\x12X\n\x16relayer_fee_share_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12i\n\x1f\x64\x65\x66\x61ult_hourly_funding_rate_cap\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1b\x64\x65\x66\x61ultHourlyFundingRateCap\x12\x64\n\x1c\x64\x65\x66\x61ult_hourly_interest_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19\x64\x65\x66\x61ultHourlyInterestRate\x12\x44\n\x1fmax_derivative_order_side_count\x18\x0e \x01(\rR\x1bmaxDerivativeOrderSideCount\x12s\n\'inj_reward_staked_requirement_threshold\x18\x0f \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR#injRewardStakedRequirementThreshold\x12G\n trading_rewards_vesting_duration\x18\x10 \x01(\x03R\x1dtradingRewardsVestingDuration\x12\x64\n\x1cliquidator_reward_share_rate\x18\x11 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19liquidatorRewardShareRate\x12x\n)binary_options_market_instant_listing_fee\x18\x12 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R$binaryOptionsMarketInstantListingFee\x12{\n atomic_market_order_access_level\x18\x13 \x01(\x0e\x32\x33.injective.exchange.v2.AtomicMarketOrderAccessLevelR\x1c\x61tomicMarketOrderAccessLevel\x12x\n\'spot_atomic_market_order_fee_multiplier\x18\x14 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"spotAtomicMarketOrderFeeMultiplier\x12\x84\x01\n-derivative_atomic_market_order_fee_multiplier\x18\x15 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR(derivativeAtomicMarketOrderFeeMultiplier\x12\x8b\x01\n1binary_options_atomic_market_order_fee_multiplier\x18\x16 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR+binaryOptionsAtomicMarketOrderFeeMultiplier\x12^\n\x19minimal_protocol_fee_rate\x18\x17 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16minimalProtocolFeeRate\x12[\n+is_instant_derivative_market_launch_enabled\x18\x18 \x01(\x08R&isInstantDerivativeMarketLaunchEnabled\x12\x44\n\x1fpost_only_mode_height_threshold\x18\x19 \x01(\x03R\x1bpostOnlyModeHeightThreshold\x12g\n1margin_decrease_price_timestamp_threshold_seconds\x18\x1a \x01(\x03R,marginDecreasePriceTimestampThresholdSeconds\x12\'\n\x0f\x65xchange_admins\x18\x1b \x03(\tR\x0e\x65xchangeAdmins\x12L\n\x13inj_auction_max_cap\x18\x1c \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10injAuctionMaxCap:\x18\xe8\xa0\x1f\x01\x8a\xe7\xb0*\x0f\x65xchange/Params\"=\n\x14NextFundingTimestamp\x12%\n\x0enext_timestamp\x18\x01 \x01(\x03R\rnextTimestamp\"\xea\x01\n\x0eMidPriceAndTOB\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"\xa5\x01\n\x07\x44\x65posit\x12P\n\x11\x61vailable_balance\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10\x61vailableBalance\x12H\n\rtotal_balance\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctotalBalance\",\n\x14SubaccountTradeNonce\x12\x14\n\x05nonce\x18\x01 \x01(\rR\x05nonce\"\xc3\x01\n\x0fSubaccountOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\"\n\x0cisReduceOnly\x18\x03 \x01(\x08R\x0cisReduceOnly\x12\x10\n\x03\x63id\x18\x04 \x01(\tR\x03\x63id\"r\n\x13SubaccountOrderData\x12<\n\x05order\x18\x01 \x01(\x0b\x32&.injective.exchange.v2.SubaccountOrderR\x05order\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\"\xc5\x02\n\x08Position\x12\x16\n\x06isLong\x18\x01 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12;\n\x06margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12]\n\x18\x63umulative_funding_entry\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16\x63umulativeFundingEntry\"\x8a\x01\n\x07\x42\x61lance\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12:\n\x08\x64\x65posits\x18\x03 \x01(\x0b\x32\x1e.injective.exchange.v2.DepositR\x08\x64\x65posits:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\x9d\x01\n\x12\x44\x65rivativePosition\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12;\n\x08position\x18\x03 \x01(\x0b\x32\x1f.injective.exchange.v2.PositionR\x08position:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"I\n\x14MarketOrderIndicator\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05isBuy\x18\x02 \x01(\x08R\x05isBuy\"\xcd\x02\n\x08TradeLog\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12#\n\rsubaccount_id\x18\x03 \x01(\x0cR\x0csubaccountId\x12\x35\n\x03\x66\x65\x65\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\x06 \x01(\x0c\x42\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\"\x9a\x02\n\rPositionDelta\x12\x17\n\x07is_long\x18\x01 \x01(\x08R\x06isLong\x12R\n\x12\x65xecution_quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x65xecutionQuantity\x12N\n\x10\x65xecution_margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x65xecutionMargin\x12L\n\x0f\x65xecution_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0e\x65xecutionPrice\"\x9c\x03\n\x12\x44\x65rivativeTradeLog\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12K\n\x0eposition_delta\x18\x02 \x01(\x0b\x32$.injective.exchange.v2.PositionDeltaR\rpositionDelta\x12;\n\x06payout\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout\x12\x35\n\x03\x66\x65\x65\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\x06 \x01(\x0c\x42\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\x12\x35\n\x03pnl\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03pnl\"v\n\x12SubaccountPosition\x12;\n\x08position\x18\x01 \x01(\x0b\x32\x1f.injective.exchange.v2.PositionR\x08position\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\"r\n\x11SubaccountDeposit\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12\x38\n\x07\x64\x65posit\x18\x02 \x01(\x0b\x32\x1e.injective.exchange.v2.DepositR\x07\x64\x65posit\"k\n\rDepositUpdate\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x44\n\x08\x64\x65posits\x18\x02 \x03(\x0b\x32(.injective.exchange.v2.SubaccountDepositR\x08\x64\x65posits\"\xcc\x01\n\x10PointsMultiplier\x12[\n\x17maker_points_multiplier\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15makerPointsMultiplier\x12[\n\x17taker_points_multiplier\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15takerPointsMultiplier\"\xf4\x02\n\x1eTradingRewardCampaignBoostInfo\x12\x35\n\x17\x62oosted_spot_market_ids\x18\x01 \x03(\tR\x14\x62oostedSpotMarketIds\x12\x65\n\x17spot_market_multipliers\x18\x02 \x03(\x0b\x32\'.injective.exchange.v2.PointsMultiplierB\x04\xc8\xde\x1f\x00R\x15spotMarketMultipliers\x12\x41\n\x1d\x62oosted_derivative_market_ids\x18\x03 \x03(\tR\x1a\x62oostedDerivativeMarketIds\x12q\n\x1d\x64\x65rivative_market_multipliers\x18\x04 \x03(\x0b\x32\'.injective.exchange.v2.PointsMultiplierB\x04\xc8\xde\x1f\x00R\x1b\x64\x65rivativeMarketMultipliers\"\xbc\x01\n\x12\x43\x61mpaignRewardPool\x12\'\n\x0fstart_timestamp\x18\x01 \x01(\x03R\x0estartTimestamp\x12}\n\x14max_campaign_rewards\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x12maxCampaignRewards\"\xa4\x02\n\x19TradingRewardCampaignInfo\x12:\n\x19\x63\x61mpaign_duration_seconds\x18\x01 \x01(\x03R\x17\x63\x61mpaignDurationSeconds\x12!\n\x0cquote_denoms\x18\x02 \x03(\tR\x0bquoteDenoms\x12p\n\x19trading_reward_boost_info\x18\x03 \x01(\x0b\x32\x35.injective.exchange.v2.TradingRewardCampaignBoostInfoR\x16tradingRewardBoostInfo\x12\x36\n\x17\x64isqualified_market_ids\x18\x04 \x03(\tR\x15\x64isqualifiedMarketIds\"\xc0\x02\n\x13\x46\x65\x65\x44iscountTierInfo\x12S\n\x13maker_discount_rate\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11makerDiscountRate\x12S\n\x13taker_discount_rate\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11takerDiscountRate\x12\x42\n\rstaked_amount\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0cstakedAmount\x12;\n\x06volume\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06volume\"\x87\x02\n\x13\x46\x65\x65\x44iscountSchedule\x12!\n\x0c\x62ucket_count\x18\x01 \x01(\x04R\x0b\x62ucketCount\x12\'\n\x0f\x62ucket_duration\x18\x02 \x01(\x03R\x0e\x62ucketDuration\x12!\n\x0cquote_denoms\x18\x03 \x03(\tR\x0bquoteDenoms\x12I\n\ntier_infos\x18\x04 \x03(\x0b\x32*.injective.exchange.v2.FeeDiscountTierInfoR\ttierInfos\x12\x36\n\x17\x64isqualified_market_ids\x18\x05 \x03(\tR\x15\x64isqualifiedMarketIds\"M\n\x12\x46\x65\x65\x44iscountTierTTL\x12\x12\n\x04tier\x18\x01 \x01(\x04R\x04tier\x12#\n\rttl_timestamp\x18\x02 \x01(\x03R\x0cttlTimestamp\"\x91\x01\n\x0e\x41\x63\x63ountRewards\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x65\n\x07rewards\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x07rewards\"\x81\x01\n\x0cTradeRecords\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12T\n\x14latest_trade_records\x18\x02 \x03(\x0b\x32\".injective.exchange.v2.TradeRecordR\x12latestTradeRecords\"6\n\rSubaccountIDs\x12%\n\x0esubaccount_ids\x18\x01 \x03(\x0cR\rsubaccountIds\"\xa7\x01\n\x0bTradeRecord\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\"m\n\x05Level\x12\x31\n\x01p\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01p\x12\x31\n\x01q\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01q\"\x92\x01\n\x1f\x41ggregateSubaccountVolumeRecord\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12J\n\x0emarket_volumes\x18\x02 \x03(\x0b\x32#.injective.exchange.v2.MarketVolumeR\rmarketVolumes\"\x84\x01\n\x1c\x41ggregateAccountVolumeRecord\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12J\n\x0emarket_volumes\x18\x02 \x03(\x0b\x32#.injective.exchange.v2.MarketVolumeR\rmarketVolumes\"A\n\rDenomDecimals\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x1a\n\x08\x64\x65\x63imals\x18\x02 \x01(\x04R\x08\x64\x65\x63imals\"e\n\x12GrantAuthorization\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x35\n\x06\x61mount\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"^\n\x0b\x41\x63tiveGrant\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x35\n\x06\x61mount\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"\x90\x01\n\x0e\x45\x66\x66\x65\x63tiveGrant\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12I\n\x11net_granted_stake\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0fnetGrantedStake\x12\x19\n\x08is_valid\x18\x03 \x01(\x08R\x07isValid*\xaf\x01\n\rExecutionType\x12\x1c\n\x18UnspecifiedExecutionType\x10\x00\x12\n\n\x06Market\x10\x01\x12\r\n\tLimitFill\x10\x02\x12\x1a\n\x16LimitMatchRestingOrder\x10\x03\x12\x16\n\x12LimitMatchNewOrder\x10\x04\x12\x15\n\x11MarketLiquidation\x10\x05\x12\x1a\n\x16\x45xpiryMarketSettlement\x10\x06\x42\xf3\x01\n\x19\x63om.injective.exchange.v2B\rExchangeProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.exchange_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\rExchangeProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_PARAMS'].fields_by_name['spot_market_instant_listing_fee']._loaded_options = None + _globals['_PARAMS'].fields_by_name['spot_market_instant_listing_fee']._serialized_options = b'\310\336\037\000' + _globals['_PARAMS'].fields_by_name['derivative_market_instant_listing_fee']._loaded_options = None + _globals['_PARAMS'].fields_by_name['derivative_market_instant_listing_fee']._serialized_options = b'\310\336\037\000' + _globals['_PARAMS'].fields_by_name['default_spot_maker_fee_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_spot_maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['default_spot_taker_fee_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_spot_taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['default_derivative_maker_fee_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_derivative_maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['default_derivative_taker_fee_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_derivative_taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['default_initial_margin_ratio']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_initial_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['default_maintenance_margin_ratio']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_maintenance_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['relayer_fee_share_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['relayer_fee_share_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['default_hourly_funding_rate_cap']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_hourly_funding_rate_cap']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['default_hourly_interest_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_hourly_interest_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['inj_reward_staked_requirement_threshold']._loaded_options = None + _globals['_PARAMS'].fields_by_name['inj_reward_staked_requirement_threshold']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_PARAMS'].fields_by_name['liquidator_reward_share_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['liquidator_reward_share_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['binary_options_market_instant_listing_fee']._loaded_options = None + _globals['_PARAMS'].fields_by_name['binary_options_market_instant_listing_fee']._serialized_options = b'\310\336\037\000' + _globals['_PARAMS'].fields_by_name['spot_atomic_market_order_fee_multiplier']._loaded_options = None + _globals['_PARAMS'].fields_by_name['spot_atomic_market_order_fee_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['derivative_atomic_market_order_fee_multiplier']._loaded_options = None + _globals['_PARAMS'].fields_by_name['derivative_atomic_market_order_fee_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['binary_options_atomic_market_order_fee_multiplier']._loaded_options = None + _globals['_PARAMS'].fields_by_name['binary_options_atomic_market_order_fee_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['minimal_protocol_fee_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['minimal_protocol_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PARAMS'].fields_by_name['inj_auction_max_cap']._loaded_options = None + _globals['_PARAMS'].fields_by_name['inj_auction_max_cap']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_PARAMS']._loaded_options = None + _globals['_PARAMS']._serialized_options = b'\350\240\037\001\212\347\260*\017exchange/Params' + _globals['_MIDPRICEANDTOB'].fields_by_name['mid_price']._loaded_options = None + _globals['_MIDPRICEANDTOB'].fields_by_name['mid_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MIDPRICEANDTOB'].fields_by_name['best_buy_price']._loaded_options = None + _globals['_MIDPRICEANDTOB'].fields_by_name['best_buy_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MIDPRICEANDTOB'].fields_by_name['best_sell_price']._loaded_options = None + _globals['_MIDPRICEANDTOB'].fields_by_name['best_sell_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DEPOSIT'].fields_by_name['available_balance']._loaded_options = None + _globals['_DEPOSIT'].fields_by_name['available_balance']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DEPOSIT'].fields_by_name['total_balance']._loaded_options = None + _globals['_DEPOSIT'].fields_by_name['total_balance']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SUBACCOUNTORDER'].fields_by_name['price']._loaded_options = None + _globals['_SUBACCOUNTORDER'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SUBACCOUNTORDER'].fields_by_name['quantity']._loaded_options = None + _globals['_SUBACCOUNTORDER'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITION'].fields_by_name['quantity']._loaded_options = None + _globals['_POSITION'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITION'].fields_by_name['entry_price']._loaded_options = None + _globals['_POSITION'].fields_by_name['entry_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITION'].fields_by_name['margin']._loaded_options = None + _globals['_POSITION'].fields_by_name['margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITION'].fields_by_name['cumulative_funding_entry']._loaded_options = None + _globals['_POSITION'].fields_by_name['cumulative_funding_entry']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCE']._loaded_options = None + _globals['_BALANCE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_DERIVATIVEPOSITION']._loaded_options = None + _globals['_DERIVATIVEPOSITION']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_TRADELOG'].fields_by_name['quantity']._loaded_options = None + _globals['_TRADELOG'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRADELOG'].fields_by_name['price']._loaded_options = None + _globals['_TRADELOG'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRADELOG'].fields_by_name['fee']._loaded_options = None + _globals['_TRADELOG'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRADELOG'].fields_by_name['fee_recipient_address']._loaded_options = None + _globals['_TRADELOG'].fields_by_name['fee_recipient_address']._serialized_options = b'\310\336\037\001' + _globals['_POSITIONDELTA'].fields_by_name['execution_quantity']._loaded_options = None + _globals['_POSITIONDELTA'].fields_by_name['execution_quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITIONDELTA'].fields_by_name['execution_margin']._loaded_options = None + _globals['_POSITIONDELTA'].fields_by_name['execution_margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITIONDELTA'].fields_by_name['execution_price']._loaded_options = None + _globals['_POSITIONDELTA'].fields_by_name['execution_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVETRADELOG'].fields_by_name['payout']._loaded_options = None + _globals['_DERIVATIVETRADELOG'].fields_by_name['payout']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVETRADELOG'].fields_by_name['fee']._loaded_options = None + _globals['_DERIVATIVETRADELOG'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVETRADELOG'].fields_by_name['fee_recipient_address']._loaded_options = None + _globals['_DERIVATIVETRADELOG'].fields_by_name['fee_recipient_address']._serialized_options = b'\310\336\037\001' + _globals['_DERIVATIVETRADELOG'].fields_by_name['pnl']._loaded_options = None + _globals['_DERIVATIVETRADELOG'].fields_by_name['pnl']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POINTSMULTIPLIER'].fields_by_name['maker_points_multiplier']._loaded_options = None + _globals['_POINTSMULTIPLIER'].fields_by_name['maker_points_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POINTSMULTIPLIER'].fields_by_name['taker_points_multiplier']._loaded_options = None + _globals['_POINTSMULTIPLIER'].fields_by_name['taker_points_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO'].fields_by_name['spot_market_multipliers']._loaded_options = None + _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO'].fields_by_name['spot_market_multipliers']._serialized_options = b'\310\336\037\000' + _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO'].fields_by_name['derivative_market_multipliers']._loaded_options = None + _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO'].fields_by_name['derivative_market_multipliers']._serialized_options = b'\310\336\037\000' + _globals['_CAMPAIGNREWARDPOOL'].fields_by_name['max_campaign_rewards']._loaded_options = None + _globals['_CAMPAIGNREWARDPOOL'].fields_by_name['max_campaign_rewards']._serialized_options = b'\310\336\037\000\252\337\037(github.com/cosmos/cosmos-sdk/types.Coins' + _globals['_FEEDISCOUNTTIERINFO'].fields_by_name['maker_discount_rate']._loaded_options = None + _globals['_FEEDISCOUNTTIERINFO'].fields_by_name['maker_discount_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_FEEDISCOUNTTIERINFO'].fields_by_name['taker_discount_rate']._loaded_options = None + _globals['_FEEDISCOUNTTIERINFO'].fields_by_name['taker_discount_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_FEEDISCOUNTTIERINFO'].fields_by_name['staked_amount']._loaded_options = None + _globals['_FEEDISCOUNTTIERINFO'].fields_by_name['staked_amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_FEEDISCOUNTTIERINFO'].fields_by_name['volume']._loaded_options = None + _globals['_FEEDISCOUNTTIERINFO'].fields_by_name['volume']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_ACCOUNTREWARDS'].fields_by_name['rewards']._loaded_options = None + _globals['_ACCOUNTREWARDS'].fields_by_name['rewards']._serialized_options = b'\310\336\037\000\252\337\037(github.com/cosmos/cosmos-sdk/types.Coins' + _globals['_TRADERECORD'].fields_by_name['price']._loaded_options = None + _globals['_TRADERECORD'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRADERECORD'].fields_by_name['quantity']._loaded_options = None + _globals['_TRADERECORD'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_LEVEL'].fields_by_name['p']._loaded_options = None + _globals['_LEVEL'].fields_by_name['p']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_LEVEL'].fields_by_name['q']._loaded_options = None + _globals['_LEVEL'].fields_by_name['q']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_GRANTAUTHORIZATION'].fields_by_name['amount']._loaded_options = None + _globals['_GRANTAUTHORIZATION'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_ACTIVEGRANT'].fields_by_name['amount']._loaded_options = None + _globals['_ACTIVEGRANT'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_EFFECTIVEGRANT'].fields_by_name['net_granted_stake']._loaded_options = None + _globals['_EFFECTIVEGRANT'].fields_by_name['net_granted_stake']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_EXECUTIONTYPE']._serialized_start=8988 + _globals['_EXECUTIONTYPE']._serialized_end=9163 + _globals['_PARAMS']._serialized_start=247 + _globals['_PARAMS']._serialized_end=3022 + _globals['_NEXTFUNDINGTIMESTAMP']._serialized_start=3024 + _globals['_NEXTFUNDINGTIMESTAMP']._serialized_end=3085 + _globals['_MIDPRICEANDTOB']._serialized_start=3088 + _globals['_MIDPRICEANDTOB']._serialized_end=3322 + _globals['_DEPOSIT']._serialized_start=3325 + _globals['_DEPOSIT']._serialized_end=3490 + _globals['_SUBACCOUNTTRADENONCE']._serialized_start=3492 + _globals['_SUBACCOUNTTRADENONCE']._serialized_end=3536 + _globals['_SUBACCOUNTORDER']._serialized_start=3539 + _globals['_SUBACCOUNTORDER']._serialized_end=3734 + _globals['_SUBACCOUNTORDERDATA']._serialized_start=3736 + _globals['_SUBACCOUNTORDERDATA']._serialized_end=3850 + _globals['_POSITION']._serialized_start=3853 + _globals['_POSITION']._serialized_end=4178 + _globals['_BALANCE']._serialized_start=4181 + _globals['_BALANCE']._serialized_end=4319 + _globals['_DERIVATIVEPOSITION']._serialized_start=4322 + _globals['_DERIVATIVEPOSITION']._serialized_end=4479 + _globals['_MARKETORDERINDICATOR']._serialized_start=4481 + _globals['_MARKETORDERINDICATOR']._serialized_end=4554 + _globals['_TRADELOG']._serialized_start=4557 + _globals['_TRADELOG']._serialized_end=4890 + _globals['_POSITIONDELTA']._serialized_start=4893 + _globals['_POSITIONDELTA']._serialized_end=5175 + _globals['_DERIVATIVETRADELOG']._serialized_start=5178 + _globals['_DERIVATIVETRADELOG']._serialized_end=5590 + _globals['_SUBACCOUNTPOSITION']._serialized_start=5592 + _globals['_SUBACCOUNTPOSITION']._serialized_end=5710 + _globals['_SUBACCOUNTDEPOSIT']._serialized_start=5712 + _globals['_SUBACCOUNTDEPOSIT']._serialized_end=5826 + _globals['_DEPOSITUPDATE']._serialized_start=5828 + _globals['_DEPOSITUPDATE']._serialized_end=5935 + _globals['_POINTSMULTIPLIER']._serialized_start=5938 + _globals['_POINTSMULTIPLIER']._serialized_end=6142 + _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO']._serialized_start=6145 + _globals['_TRADINGREWARDCAMPAIGNBOOSTINFO']._serialized_end=6517 + _globals['_CAMPAIGNREWARDPOOL']._serialized_start=6520 + _globals['_CAMPAIGNREWARDPOOL']._serialized_end=6708 + _globals['_TRADINGREWARDCAMPAIGNINFO']._serialized_start=6711 + _globals['_TRADINGREWARDCAMPAIGNINFO']._serialized_end=7003 + _globals['_FEEDISCOUNTTIERINFO']._serialized_start=7006 + _globals['_FEEDISCOUNTTIERINFO']._serialized_end=7326 + _globals['_FEEDISCOUNTSCHEDULE']._serialized_start=7329 + _globals['_FEEDISCOUNTSCHEDULE']._serialized_end=7592 + _globals['_FEEDISCOUNTTIERTTL']._serialized_start=7594 + _globals['_FEEDISCOUNTTIERTTL']._serialized_end=7671 + _globals['_ACCOUNTREWARDS']._serialized_start=7674 + _globals['_ACCOUNTREWARDS']._serialized_end=7819 + _globals['_TRADERECORDS']._serialized_start=7822 + _globals['_TRADERECORDS']._serialized_end=7951 + _globals['_SUBACCOUNTIDS']._serialized_start=7953 + _globals['_SUBACCOUNTIDS']._serialized_end=8007 + _globals['_TRADERECORD']._serialized_start=8010 + _globals['_TRADERECORD']._serialized_end=8177 + _globals['_LEVEL']._serialized_start=8179 + _globals['_LEVEL']._serialized_end=8288 + _globals['_AGGREGATESUBACCOUNTVOLUMERECORD']._serialized_start=8291 + _globals['_AGGREGATESUBACCOUNTVOLUMERECORD']._serialized_end=8437 + _globals['_AGGREGATEACCOUNTVOLUMERECORD']._serialized_start=8440 + _globals['_AGGREGATEACCOUNTVOLUMERECORD']._serialized_end=8572 + _globals['_DENOMDECIMALS']._serialized_start=8574 + _globals['_DENOMDECIMALS']._serialized_end=8639 + _globals['_GRANTAUTHORIZATION']._serialized_start=8641 + _globals['_GRANTAUTHORIZATION']._serialized_end=8742 + _globals['_ACTIVEGRANT']._serialized_start=8744 + _globals['_ACTIVEGRANT']._serialized_end=8838 + _globals['_EFFECTIVEGRANT']._serialized_start=8841 + _globals['_EFFECTIVEGRANT']._serialized_end=8985 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/exchange_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/exchange_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/exchange_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/pyinjective/proto/injective/exchange/v2/genesis_pb2.py b/pyinjective/proto/injective/exchange/v2/genesis_pb2.py new file mode 100644 index 00000000..5169d995 --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/genesis_pb2.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/genesis.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as injective_dot_exchange_dot_v2_dot_exchange__pb2 +from pyinjective.proto.injective.exchange.v2 import market_pb2 as injective_dot_exchange_dot_v2_dot_market__pb2 +from pyinjective.proto.injective.exchange.v2 import orderbook_pb2 as injective_dot_exchange_dot_v2_dot_orderbook__pb2 +from pyinjective.proto.injective.exchange.v2 import tx_pb2 as injective_dot_exchange_dot_v2_dot_tx__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#injective/exchange/v2/genesis.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a$injective/exchange/v2/exchange.proto\x1a\"injective/exchange/v2/market.proto\x1a%injective/exchange/v2/orderbook.proto\x1a\x1einjective/exchange/v2/tx.proto\"\x93\x1c\n\x0cGenesisState\x12;\n\x06params\x18\x01 \x01(\x0b\x32\x1d.injective.exchange.v2.ParamsB\x04\xc8\xde\x1f\x00R\x06params\x12\x44\n\x0cspot_markets\x18\x02 \x03(\x0b\x32!.injective.exchange.v2.SpotMarketR\x0bspotMarkets\x12V\n\x12\x64\x65rivative_markets\x18\x03 \x03(\x0b\x32\'.injective.exchange.v2.DerivativeMarketR\x11\x64\x65rivativeMarkets\x12Q\n\x0espot_orderbook\x18\x04 \x03(\x0b\x32$.injective.exchange.v2.SpotOrderBookB\x04\xc8\xde\x1f\x00R\rspotOrderbook\x12\x63\n\x14\x64\x65rivative_orderbook\x18\x05 \x03(\x0b\x32*.injective.exchange.v2.DerivativeOrderBookB\x04\xc8\xde\x1f\x00R\x13\x64\x65rivativeOrderbook\x12@\n\x08\x62\x61lances\x18\x06 \x03(\x0b\x32\x1e.injective.exchange.v2.BalanceB\x04\xc8\xde\x1f\x00R\x08\x62\x61lances\x12M\n\tpositions\x18\x07 \x03(\x0b\x32).injective.exchange.v2.DerivativePositionB\x04\xc8\xde\x1f\x00R\tpositions\x12\x64\n\x17subaccount_trade_nonces\x18\x08 \x03(\x0b\x32&.injective.exchange.v2.SubaccountNonceB\x04\xc8\xde\x1f\x00R\x15subaccountTradeNonces\x12\x81\x01\n expiry_futures_market_info_state\x18\t \x03(\x0b\x32\x33.injective.exchange.v2.ExpiryFuturesMarketInfoStateB\x04\xc8\xde\x1f\x00R\x1c\x65xpiryFuturesMarketInfoState\x12\x64\n\x15perpetual_market_info\x18\n \x03(\x0b\x32*.injective.exchange.v2.PerpetualMarketInfoB\x04\xc8\xde\x1f\x00R\x13perpetualMarketInfo\x12}\n\x1eperpetual_market_funding_state\x18\x0b \x03(\x0b\x32\x32.injective.exchange.v2.PerpetualMarketFundingStateB\x04\xc8\xde\x1f\x00R\x1bperpetualMarketFundingState\x12\x90\x01\n&derivative_market_settlement_scheduled\x18\x0c \x03(\x0b\x32\x35.injective.exchange.v2.DerivativeMarketSettlementInfoB\x04\xc8\xde\x1f\x00R#derivativeMarketSettlementScheduled\x12\x37\n\x18is_spot_exchange_enabled\x18\r \x01(\x08R\x15isSpotExchangeEnabled\x12\x45\n\x1fis_derivatives_exchange_enabled\x18\x0e \x01(\x08R\x1cisDerivativesExchangeEnabled\x12q\n\x1ctrading_reward_campaign_info\x18\x0f \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x19tradingRewardCampaignInfo\x12{\n%trading_reward_pool_campaign_schedule\x18\x10 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR!tradingRewardPoolCampaignSchedule\x12\x8d\x01\n&trading_reward_campaign_account_points\x18\x11 \x03(\x0b\x32\x39.injective.exchange.v2.TradingRewardCampaignAccountPointsR\"tradingRewardCampaignAccountPoints\x12^\n\x15\x66\x65\x65_discount_schedule\x18\x12 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountScheduleR\x13\x66\x65\x65\x44iscountSchedule\x12r\n\x1d\x66\x65\x65_discount_account_tier_ttl\x18\x13 \x03(\x0b\x32\x30.injective.exchange.v2.FeeDiscountAccountTierTTLR\x19\x66\x65\x65\x44iscountAccountTierTtl\x12\x84\x01\n#fee_discount_bucket_volume_accounts\x18\x14 \x03(\x0b\x32\x36.injective.exchange.v2.FeeDiscountBucketVolumeAccountsR\x1f\x66\x65\x65\x44iscountBucketVolumeAccounts\x12<\n\x1bis_first_fee_cycle_finished\x18\x15 \x01(\x08R\x17isFirstFeeCycleFinished\x12\x8a\x01\n-pending_trading_reward_pool_campaign_schedule\x18\x16 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR(pendingTradingRewardPoolCampaignSchedule\x12\xa3\x01\n.pending_trading_reward_campaign_account_points\x18\x17 \x03(\x0b\x32@.injective.exchange.v2.TradingRewardCampaignAccountPendingPointsR)pendingTradingRewardCampaignAccountPoints\x12\x39\n\x19rewards_opt_out_addresses\x18\x18 \x03(\tR\x16rewardsOptOutAddresses\x12]\n\x18historical_trade_records\x18\x19 \x03(\x0b\x32#.injective.exchange.v2.TradeRecordsR\x16historicalTradeRecords\x12`\n\x16\x62inary_options_markets\x18\x1a \x03(\x0b\x32*.injective.exchange.v2.BinaryOptionsMarketR\x14\x62inaryOptionsMarkets\x12h\n2binary_options_market_ids_scheduled_for_settlement\x18\x1b \x03(\tR,binaryOptionsMarketIdsScheduledForSettlement\x12T\n(spot_market_ids_scheduled_to_force_close\x18\x1c \x03(\tR\"spotMarketIdsScheduledToForceClose\x12Q\n\x0e\x64\x65nom_decimals\x18\x1d \x03(\x0b\x32$.injective.exchange.v2.DenomDecimalsB\x04\xc8\xde\x1f\x00R\rdenomDecimals\x12\x81\x01\n!conditional_derivative_orderbooks\x18\x1e \x03(\x0b\x32\x35.injective.exchange.v2.ConditionalDerivativeOrderBookR\x1f\x63onditionalDerivativeOrderbooks\x12`\n\x16market_fee_multipliers\x18\x1f \x03(\x0b\x32*.injective.exchange.v2.MarketFeeMultiplierR\x14marketFeeMultipliers\x12Y\n\x13orderbook_sequences\x18 \x03(\x0b\x32(.injective.exchange.v2.OrderbookSequenceR\x12orderbookSequences\x12\x65\n\x12subaccount_volumes\x18! \x03(\x0b\x32\x36.injective.exchange.v2.AggregateSubaccountVolumeRecordR\x11subaccountVolumes\x12J\n\x0emarket_volumes\x18\" \x03(\x0b\x32#.injective.exchange.v2.MarketVolumeR\rmarketVolumes\x12\x61\n\x14grant_authorizations\x18# \x03(\x0b\x32..injective.exchange.v2.FullGrantAuthorizationsR\x13grantAuthorizations\x12K\n\ractive_grants\x18$ \x03(\x0b\x32&.injective.exchange.v2.FullActiveGrantR\x0c\x61\x63tiveGrants\"L\n\x11OrderbookSequence\x12\x1a\n\x08sequence\x18\x01 \x01(\x04R\x08sequence\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"{\n\x19\x46\x65\x65\x44iscountAccountTierTTL\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x44\n\x08tier_ttl\x18\x02 \x01(\x0b\x32).injective.exchange.v2.FeeDiscountTierTTLR\x07tierTtl\"\xa4\x01\n\x1f\x46\x65\x65\x44iscountBucketVolumeAccounts\x12\x34\n\x16\x62ucket_start_timestamp\x18\x01 \x01(\x03R\x14\x62ucketStartTimestamp\x12K\n\x0e\x61\x63\x63ount_volume\x18\x02 \x03(\x0b\x32$.injective.exchange.v2.AccountVolumeR\raccountVolume\"f\n\rAccountVolume\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12;\n\x06volume\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06volume\"{\n\"TradingRewardCampaignAccountPoints\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12;\n\x06points\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06points\"\xcc\x01\n)TradingRewardCampaignAccountPendingPoints\x12=\n\x1breward_pool_start_timestamp\x18\x01 \x01(\x03R\x18rewardPoolStartTimestamp\x12`\n\x0e\x61\x63\x63ount_points\x18\x02 \x03(\x0b\x32\x39.injective.exchange.v2.TradingRewardCampaignAccountPointsR\raccountPoints\"\xa9\x01\n\x0fSubaccountNonce\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12g\n\x16subaccount_trade_nonce\x18\x02 \x01(\x0b\x32+.injective.exchange.v2.SubaccountTradeNonceB\x04\xc8\xde\x1f\x00R\x14subaccountTradeNonce:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\x86\x02\n\x17\x46ullGrantAuthorizations\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12K\n\x12total_grant_amount\x18\x02 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10totalGrantAmount\x12\x41\n\x1dlast_delegations_checked_time\x18\x03 \x01(\x03R\x1alastDelegationsCheckedTime\x12\x41\n\x06grants\x18\x04 \x03(\x0b\x32).injective.exchange.v2.GrantAuthorizationR\x06grants\"r\n\x0f\x46ullActiveGrant\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x45\n\x0c\x61\x63tive_grant\x18\x02 \x01(\x0b\x32\".injective.exchange.v2.ActiveGrantR\x0b\x61\x63tiveGrantB\xf2\x01\n\x19\x63om.injective.exchange.v2B\x0cGenesisProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.genesis_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\014GenesisProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_GENESISSTATE'].fields_by_name['params']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['params']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['spot_orderbook']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['spot_orderbook']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['derivative_orderbook']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['derivative_orderbook']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['balances']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['balances']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['positions']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['positions']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['subaccount_trade_nonces']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['subaccount_trade_nonces']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['expiry_futures_market_info_state']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['expiry_futures_market_info_state']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['perpetual_market_info']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['perpetual_market_info']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['perpetual_market_funding_state']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['perpetual_market_funding_state']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['derivative_market_settlement_scheduled']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['derivative_market_settlement_scheduled']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE'].fields_by_name['denom_decimals']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['denom_decimals']._serialized_options = b'\310\336\037\000' + _globals['_ACCOUNTVOLUME'].fields_by_name['volume']._loaded_options = None + _globals['_ACCOUNTVOLUME'].fields_by_name['volume']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRADINGREWARDCAMPAIGNACCOUNTPOINTS'].fields_by_name['points']._loaded_options = None + _globals['_TRADINGREWARDCAMPAIGNACCOUNTPOINTS'].fields_by_name['points']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SUBACCOUNTNONCE'].fields_by_name['subaccount_trade_nonce']._loaded_options = None + _globals['_SUBACCOUNTNONCE'].fields_by_name['subaccount_trade_nonce']._serialized_options = b'\310\336\037\000' + _globals['_SUBACCOUNTNONCE']._loaded_options = None + _globals['_SUBACCOUNTNONCE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_FULLGRANTAUTHORIZATIONS'].fields_by_name['total_grant_amount']._loaded_options = None + _globals['_FULLGRANTAUTHORIZATIONS'].fields_by_name['total_grant_amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_GENESISSTATE']._serialized_start=230 + _globals['_GENESISSTATE']._serialized_end=3833 + _globals['_ORDERBOOKSEQUENCE']._serialized_start=3835 + _globals['_ORDERBOOKSEQUENCE']._serialized_end=3911 + _globals['_FEEDISCOUNTACCOUNTTIERTTL']._serialized_start=3913 + _globals['_FEEDISCOUNTACCOUNTTIERTTL']._serialized_end=4036 + _globals['_FEEDISCOUNTBUCKETVOLUMEACCOUNTS']._serialized_start=4039 + _globals['_FEEDISCOUNTBUCKETVOLUMEACCOUNTS']._serialized_end=4203 + _globals['_ACCOUNTVOLUME']._serialized_start=4205 + _globals['_ACCOUNTVOLUME']._serialized_end=4307 + _globals['_TRADINGREWARDCAMPAIGNACCOUNTPOINTS']._serialized_start=4309 + _globals['_TRADINGREWARDCAMPAIGNACCOUNTPOINTS']._serialized_end=4432 + _globals['_TRADINGREWARDCAMPAIGNACCOUNTPENDINGPOINTS']._serialized_start=4435 + _globals['_TRADINGREWARDCAMPAIGNACCOUNTPENDINGPOINTS']._serialized_end=4639 + _globals['_SUBACCOUNTNONCE']._serialized_start=4642 + _globals['_SUBACCOUNTNONCE']._serialized_end=4811 + _globals['_FULLGRANTAUTHORIZATIONS']._serialized_start=4814 + _globals['_FULLGRANTAUTHORIZATIONS']._serialized_end=5076 + _globals['_FULLACTIVEGRANT']._serialized_start=5078 + _globals['_FULLACTIVEGRANT']._serialized_end=5192 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/genesis_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/genesis_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/genesis_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/pyinjective/proto/injective/exchange/v2/market_pb2.py b/pyinjective/proto/injective/exchange/v2/market_pb2.py new file mode 100644 index 00000000..2794d5a3 --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/market_pb2.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/market.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.injective.oracle.v1beta1 import oracle_pb2 as injective_dot_oracle_dot_v1beta1_dot_oracle__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"injective/exchange/v2/market.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a%injective/oracle/v1beta1/oracle.proto\"\x84\x01\n\x13MarketFeeMultiplier\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\x0e\x66\x65\x65_multiplier\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rfeeMultiplier:\x04\x88\xa0\x1f\x00\"\xb3\x06\n\nSpotMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x02 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12\x1b\n\tmarket_id\x18\x07 \x01(\tR\x08marketId\x12;\n\x06status\x18\x08 \x01(\x0e\x32#.injective.exchange.v2.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x14\n\x05\x61\x64min\x18\x0c \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\r \x01(\rR\x10\x61\x64minPermissions\x12#\n\rbase_decimals\x18\x0e \x01(\rR\x0c\x62\x61seDecimals\x12%\n\x0equote_decimals\x18\x0f \x01(\rR\rquoteDecimals\"\xf9\x08\n\x13\x42inaryOptionsMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x02 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x03 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x05 \x01(\rR\x11oracleScaleFactor\x12\x31\n\x14\x65xpiration_timestamp\x18\x06 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\x07 \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\x08 \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\t \x01(\tR\nquoteDenom\x12\x1b\n\tmarket_id\x18\n \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12;\n\x06status\x18\x0e \x01(\x0e\x32#.injective.exchange.v2.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12N\n\x10settlement_price\x18\x11 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x46\n\x0cmin_notional\x18\x12 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12+\n\x11\x61\x64min_permissions\x18\x13 \x01(\rR\x10\x61\x64minPermissions\x12%\n\x0equote_decimals\x18\x14 \x01(\rR\rquoteDecimals:\x04\x88\xa0\x1f\x00\"\x8e\t\n\x10\x44\x65rivativeMarket\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1f\n\x0boracle_base\x18\x02 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x03 \x01(\tR\x0boracleQuote\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x05 \x01(\rR\x11oracleScaleFactor\x12\x1f\n\x0bquote_denom\x18\x06 \x01(\tR\nquoteDenom\x12\x1b\n\tmarket_id\x18\x07 \x01(\tR\x08marketId\x12U\n\x14initial_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12 \n\x0bisPerpetual\x18\r \x01(\x08R\x0bisPerpetual\x12;\n\x06status\x18\x0e \x01(\x0e\x32#.injective.exchange.v2.MarketStatusR\x06status\x12R\n\x13min_price_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x11 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12\x14\n\x05\x61\x64min\x18\x12 \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\x13 \x01(\rR\x10\x61\x64minPermissions\x12%\n\x0equote_decimals\x18\x14 \x01(\rR\rquoteDecimals:\x04\x88\xa0\x1f\x00\"\x8d\x01\n\x1e\x44\x65rivativeMarketSettlementInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\"n\n\x0cMarketVolume\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x06volume\x18\x02 \x01(\x0b\x32#.injective.exchange.v2.VolumeRecordB\x04\xc8\xde\x1f\x00R\x06volume\"\x9e\x01\n\x0cVolumeRecord\x12\x46\n\x0cmaker_volume\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bmakerVolume\x12\x46\n\x0ctaker_volume\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0btakerVolume\"\x8c\x01\n\x1c\x45xpiryFuturesMarketInfoState\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12O\n\x0bmarket_info\x18\x02 \x01(\x0b\x32..injective.exchange.v2.ExpiryFuturesMarketInfoR\nmarketInfo\"\x83\x01\n\x1bPerpetualMarketFundingState\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\x07\x66unding\x18\x02 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingR\x07\x66unding\"\xe4\x02\n\x17\x45xpiryFuturesMarketInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x31\n\x14\x65xpiration_timestamp\x18\x02 \x01(\x03R\x13\x65xpirationTimestamp\x12\x30\n\x14twap_start_timestamp\x18\x03 \x01(\x03R\x12twapStartTimestamp\x12w\n&expiration_twap_start_price_cumulative\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"expirationTwapStartPriceCumulative\x12N\n\x10settlement_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\"\xc6\x02\n\x13PerpetualMarketInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12Z\n\x17hourly_funding_rate_cap\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x14hourlyFundingRateCap\x12U\n\x14hourly_interest_rate\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12hourlyInterestRate\x12\x34\n\x16next_funding_timestamp\x18\x04 \x01(\x03R\x14nextFundingTimestamp\x12)\n\x10\x66unding_interval\x18\x05 \x01(\x03R\x0f\x66undingInterval\"\xe3\x01\n\x16PerpetualMarketFunding\x12R\n\x12\x63umulative_funding\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x63umulativeFunding\x12N\n\x10\x63umulative_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x63umulativePrice\x12%\n\x0elast_timestamp\x18\x03 \x01(\x03R\rlastTimestamp*T\n\x0cMarketStatus\x12\x0f\n\x0bUnspecified\x10\x00\x12\n\n\x06\x41\x63tive\x10\x01\x12\n\n\x06Paused\x10\x02\x12\x0e\n\nDemolished\x10\x03\x12\x0b\n\x07\x45xpired\x10\x04\x42\xf1\x01\n\x19\x63om.injective.exchange.v2B\x0bMarketProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.market_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\013MarketProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_MARKETFEEMULTIPLIER'].fields_by_name['fee_multiplier']._loaded_options = None + _globals['_MARKETFEEMULTIPLIER'].fields_by_name['fee_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MARKETFEEMULTIPLIER']._loaded_options = None + _globals['_MARKETFEEMULTIPLIER']._serialized_options = b'\210\240\037\000' + _globals['_SPOTMARKET'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_SPOTMARKET'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKET'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_SPOTMARKET'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKET'].fields_by_name['relayer_fee_share_rate']._loaded_options = None + _globals['_SPOTMARKET'].fields_by_name['relayer_fee_share_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKET'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_SPOTMARKET'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKET'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_SPOTMARKET'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKET'].fields_by_name['min_notional']._loaded_options = None + _globals['_SPOTMARKET'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKET'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_BINARYOPTIONSMARKET'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKET'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_BINARYOPTIONSMARKET'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKET'].fields_by_name['relayer_fee_share_rate']._loaded_options = None + _globals['_BINARYOPTIONSMARKET'].fields_by_name['relayer_fee_share_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKET'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_BINARYOPTIONSMARKET'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKET'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_BINARYOPTIONSMARKET'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKET'].fields_by_name['settlement_price']._loaded_options = None + _globals['_BINARYOPTIONSMARKET'].fields_by_name['settlement_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKET'].fields_by_name['min_notional']._loaded_options = None + _globals['_BINARYOPTIONSMARKET'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKET']._loaded_options = None + _globals['_BINARYOPTIONSMARKET']._serialized_options = b'\210\240\037\000' + _globals['_DERIVATIVEMARKET'].fields_by_name['initial_margin_ratio']._loaded_options = None + _globals['_DERIVATIVEMARKET'].fields_by_name['initial_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKET'].fields_by_name['maintenance_margin_ratio']._loaded_options = None + _globals['_DERIVATIVEMARKET'].fields_by_name['maintenance_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKET'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_DERIVATIVEMARKET'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKET'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_DERIVATIVEMARKET'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKET'].fields_by_name['relayer_fee_share_rate']._loaded_options = None + _globals['_DERIVATIVEMARKET'].fields_by_name['relayer_fee_share_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKET'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_DERIVATIVEMARKET'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKET'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_DERIVATIVEMARKET'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKET'].fields_by_name['min_notional']._loaded_options = None + _globals['_DERIVATIVEMARKET'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKET']._loaded_options = None + _globals['_DERIVATIVEMARKET']._serialized_options = b'\210\240\037\000' + _globals['_DERIVATIVEMARKETSETTLEMENTINFO'].fields_by_name['settlement_price']._loaded_options = None + _globals['_DERIVATIVEMARKETSETTLEMENTINFO'].fields_by_name['settlement_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MARKETVOLUME'].fields_by_name['volume']._loaded_options = None + _globals['_MARKETVOLUME'].fields_by_name['volume']._serialized_options = b'\310\336\037\000' + _globals['_VOLUMERECORD'].fields_by_name['maker_volume']._loaded_options = None + _globals['_VOLUMERECORD'].fields_by_name['maker_volume']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_VOLUMERECORD'].fields_by_name['taker_volume']._loaded_options = None + _globals['_VOLUMERECORD'].fields_by_name['taker_volume']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETINFO'].fields_by_name['expiration_twap_start_price_cumulative']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETINFO'].fields_by_name['expiration_twap_start_price_cumulative']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETINFO'].fields_by_name['settlement_price']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETINFO'].fields_by_name['settlement_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETINFO'].fields_by_name['hourly_funding_rate_cap']._loaded_options = None + _globals['_PERPETUALMARKETINFO'].fields_by_name['hourly_funding_rate_cap']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETINFO'].fields_by_name['hourly_interest_rate']._loaded_options = None + _globals['_PERPETUALMARKETINFO'].fields_by_name['hourly_interest_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETFUNDING'].fields_by_name['cumulative_funding']._loaded_options = None + _globals['_PERPETUALMARKETFUNDING'].fields_by_name['cumulative_funding']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETFUNDING'].fields_by_name['cumulative_price']._loaded_options = None + _globals['_PERPETUALMARKETFUNDING'].fields_by_name['cumulative_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MARKETSTATUS']._serialized_start=5008 + _globals['_MARKETSTATUS']._serialized_end=5092 + _globals['_MARKETFEEMULTIPLIER']._serialized_start=123 + _globals['_MARKETFEEMULTIPLIER']._serialized_end=255 + _globals['_SPOTMARKET']._serialized_start=258 + _globals['_SPOTMARKET']._serialized_end=1077 + _globals['_BINARYOPTIONSMARKET']._serialized_start=1080 + _globals['_BINARYOPTIONSMARKET']._serialized_end=2225 + _globals['_DERIVATIVEMARKET']._serialized_start=2228 + _globals['_DERIVATIVEMARKET']._serialized_end=3394 + _globals['_DERIVATIVEMARKETSETTLEMENTINFO']._serialized_start=3397 + _globals['_DERIVATIVEMARKETSETTLEMENTINFO']._serialized_end=3538 + _globals['_MARKETVOLUME']._serialized_start=3540 + _globals['_MARKETVOLUME']._serialized_end=3650 + _globals['_VOLUMERECORD']._serialized_start=3653 + _globals['_VOLUMERECORD']._serialized_end=3811 + _globals['_EXPIRYFUTURESMARKETINFOSTATE']._serialized_start=3814 + _globals['_EXPIRYFUTURESMARKETINFOSTATE']._serialized_end=3954 + _globals['_PERPETUALMARKETFUNDINGSTATE']._serialized_start=3957 + _globals['_PERPETUALMARKETFUNDINGSTATE']._serialized_end=4088 + _globals['_EXPIRYFUTURESMARKETINFO']._serialized_start=4091 + _globals['_EXPIRYFUTURESMARKETINFO']._serialized_end=4447 + _globals['_PERPETUALMARKETINFO']._serialized_start=4450 + _globals['_PERPETUALMARKETINFO']._serialized_end=4776 + _globals['_PERPETUALMARKETFUNDING']._serialized_start=4779 + _globals['_PERPETUALMARKETFUNDING']._serialized_end=5006 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/market_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/market_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/market_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/pyinjective/proto/injective/exchange/v2/order_pb2.py b/pyinjective/proto/injective/exchange/v2/order_pb2.py new file mode 100644 index 00000000..38aaeada --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/order_pb2.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/order.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!injective/exchange/v2/order.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\"\xe3\x01\n\tOrderInfo\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12#\n\rfee_recipient\x18\x02 \x01(\tR\x0c\x66\x65\x65Recipient\x12\x39\n\x05price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id\"\xfa\x01\n\tSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x45\n\norder_info\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12?\n\norder_type\x18\x03 \x01(\x0e\x32 .injective.exchange.v2.OrderTypeR\torderType\x12H\n\rtrigger_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\xca\x02\n\x0fSpotMarketOrder\x12\x45\n\norder_info\x18\x01 \x01(\x0b\x32 .injective.exchange.v2.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12\x46\n\x0c\x62\x61lance_hold\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\x12\x1d\n\norder_hash\x18\x03 \x01(\x0cR\torderHash\x12?\n\norder_type\x18\x04 \x01(\x0e\x32 .injective.exchange.v2.OrderTypeR\torderType\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\xc2\x02\n\x0eSpotLimitOrder\x12\x45\n\norder_info\x18\x01 \x01(\x0b\x32 .injective.exchange.v2.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12?\n\norder_type\x18\x02 \x01(\x0e\x32 .injective.exchange.v2.OrderTypeR\torderType\x12?\n\x08\x66illable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12H\n\rtrigger_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x05 \x01(\x0cR\torderHash\"\xbd\x02\n\x0f\x44\x65rivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x45\n\norder_info\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12?\n\norder_type\x18\x03 \x01(\x0e\x32 .injective.exchange.v2.OrderTypeR\torderType\x12;\n\x06margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\"\x8b\x03\n\x15\x44\x65rivativeMarketOrder\x12\x45\n\norder_info\x18\x01 \x01(\x0b\x32 .injective.exchange.v2.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12?\n\norder_type\x18\x02 \x01(\x0e\x32 .injective.exchange.v2.OrderTypeR\torderType\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12\x44\n\x0bmargin_hold\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nmarginHold\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x06 \x01(\x0cR\torderHash\"\x85\x03\n\x14\x44\x65rivativeLimitOrder\x12\x45\n\norder_info\x18\x01 \x01(\x0b\x32 .injective.exchange.v2.OrderInfoB\x04\xc8\xde\x1f\x00R\torderInfo\x12?\n\norder_type\x18\x02 \x01(\x0e\x32 .injective.exchange.v2.OrderTypeR\torderType\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12?\n\x08\x66illable\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12H\n\rtrigger_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1d\n\norder_hash\x18\x06 \x01(\x0cR\torderHash*\xbb\x02\n\tOrderType\x12 \n\x0bUNSPECIFIED\x10\x00\x1a\x0f\x8a\x9d \x0bUNSPECIFIED\x12\x10\n\x03\x42UY\x10\x01\x1a\x07\x8a\x9d \x03\x42UY\x12\x12\n\x04SELL\x10\x02\x1a\x08\x8a\x9d \x04SELL\x12\x1a\n\x08STOP_BUY\x10\x03\x1a\x0c\x8a\x9d \x08STOP_BUY\x12\x1c\n\tSTOP_SELL\x10\x04\x1a\r\x8a\x9d \tSTOP_SELL\x12\x1a\n\x08TAKE_BUY\x10\x05\x1a\x0c\x8a\x9d \x08TAKE_BUY\x12\x1c\n\tTAKE_SELL\x10\x06\x1a\r\x8a\x9d \tTAKE_SELL\x12\x16\n\x06\x42UY_PO\x10\x07\x1a\n\x8a\x9d \x06\x42UY_PO\x12\x18\n\x07SELL_PO\x10\x08\x1a\x0b\x8a\x9d \x07SELL_PO\x12\x1e\n\nBUY_ATOMIC\x10\t\x1a\x0e\x8a\x9d \nBUY_ATOMIC\x12 \n\x0bSELL_ATOMIC\x10\n\x1a\x0f\x8a\x9d \x0bSELL_ATOMIC*\x89\x02\n\tOrderMask\x12\x16\n\x06UNUSED\x10\x00\x1a\n\x8a\x9d \x06UNUSED\x12\x10\n\x03\x41NY\x10\x01\x1a\x07\x8a\x9d \x03\x41NY\x12\x18\n\x07REGULAR\x10\x02\x1a\x0b\x8a\x9d \x07REGULAR\x12 \n\x0b\x43ONDITIONAL\x10\x04\x1a\x0f\x8a\x9d \x0b\x43ONDITIONAL\x12.\n\x17\x44IRECTION_BUY_OR_HIGHER\x10\x08\x1a\x11\x8a\x9d \rBUY_OR_HIGHER\x12.\n\x17\x44IRECTION_SELL_OR_LOWER\x10\x10\x1a\x11\x8a\x9d \rSELL_OR_LOWER\x12\x1b\n\x0bTYPE_MARKET\x10 \x1a\n\x8a\x9d \x06MARKET\x12\x19\n\nTYPE_LIMIT\x10@\x1a\t\x8a\x9d \x05LIMIT*t\n\x1c\x41tomicMarketOrderAccessLevel\x12\n\n\x06Nobody\x10\x00\x12\"\n\x1e\x42\x65ginBlockerSmartContractsOnly\x10\x01\x12\x16\n\x12SmartContractsOnly\x10\x02\x12\x0c\n\x08\x45veryone\x10\x03\x42\xf0\x01\n\x19\x63om.injective.exchange.v2B\nOrderProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.order_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\nOrderProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_ORDERTYPE'].values_by_name["UNSPECIFIED"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["UNSPECIFIED"]._serialized_options = b'\212\235 \013UNSPECIFIED' + _globals['_ORDERTYPE'].values_by_name["BUY"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["BUY"]._serialized_options = b'\212\235 \003BUY' + _globals['_ORDERTYPE'].values_by_name["SELL"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["SELL"]._serialized_options = b'\212\235 \004SELL' + _globals['_ORDERTYPE'].values_by_name["STOP_BUY"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["STOP_BUY"]._serialized_options = b'\212\235 \010STOP_BUY' + _globals['_ORDERTYPE'].values_by_name["STOP_SELL"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["STOP_SELL"]._serialized_options = b'\212\235 \tSTOP_SELL' + _globals['_ORDERTYPE'].values_by_name["TAKE_BUY"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["TAKE_BUY"]._serialized_options = b'\212\235 \010TAKE_BUY' + _globals['_ORDERTYPE'].values_by_name["TAKE_SELL"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["TAKE_SELL"]._serialized_options = b'\212\235 \tTAKE_SELL' + _globals['_ORDERTYPE'].values_by_name["BUY_PO"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["BUY_PO"]._serialized_options = b'\212\235 \006BUY_PO' + _globals['_ORDERTYPE'].values_by_name["SELL_PO"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["SELL_PO"]._serialized_options = b'\212\235 \007SELL_PO' + _globals['_ORDERTYPE'].values_by_name["BUY_ATOMIC"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["BUY_ATOMIC"]._serialized_options = b'\212\235 \nBUY_ATOMIC' + _globals['_ORDERTYPE'].values_by_name["SELL_ATOMIC"]._loaded_options = None + _globals['_ORDERTYPE'].values_by_name["SELL_ATOMIC"]._serialized_options = b'\212\235 \013SELL_ATOMIC' + _globals['_ORDERMASK'].values_by_name["UNUSED"]._loaded_options = None + _globals['_ORDERMASK'].values_by_name["UNUSED"]._serialized_options = b'\212\235 \006UNUSED' + _globals['_ORDERMASK'].values_by_name["ANY"]._loaded_options = None + _globals['_ORDERMASK'].values_by_name["ANY"]._serialized_options = b'\212\235 \003ANY' + _globals['_ORDERMASK'].values_by_name["REGULAR"]._loaded_options = None + _globals['_ORDERMASK'].values_by_name["REGULAR"]._serialized_options = b'\212\235 \007REGULAR' + _globals['_ORDERMASK'].values_by_name["CONDITIONAL"]._loaded_options = None + _globals['_ORDERMASK'].values_by_name["CONDITIONAL"]._serialized_options = b'\212\235 \013CONDITIONAL' + _globals['_ORDERMASK'].values_by_name["DIRECTION_BUY_OR_HIGHER"]._loaded_options = None + _globals['_ORDERMASK'].values_by_name["DIRECTION_BUY_OR_HIGHER"]._serialized_options = b'\212\235 \rBUY_OR_HIGHER' + _globals['_ORDERMASK'].values_by_name["DIRECTION_SELL_OR_LOWER"]._loaded_options = None + _globals['_ORDERMASK'].values_by_name["DIRECTION_SELL_OR_LOWER"]._serialized_options = b'\212\235 \rSELL_OR_LOWER' + _globals['_ORDERMASK'].values_by_name["TYPE_MARKET"]._loaded_options = None + _globals['_ORDERMASK'].values_by_name["TYPE_MARKET"]._serialized_options = b'\212\235 \006MARKET' + _globals['_ORDERMASK'].values_by_name["TYPE_LIMIT"]._loaded_options = None + _globals['_ORDERMASK'].values_by_name["TYPE_LIMIT"]._serialized_options = b'\212\235 \005LIMIT' + _globals['_ORDERINFO'].fields_by_name['price']._loaded_options = None + _globals['_ORDERINFO'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_ORDERINFO'].fields_by_name['quantity']._loaded_options = None + _globals['_ORDERINFO'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTORDER'].fields_by_name['order_info']._loaded_options = None + _globals['_SPOTORDER'].fields_by_name['order_info']._serialized_options = b'\310\336\037\000' + _globals['_SPOTORDER'].fields_by_name['trigger_price']._loaded_options = None + _globals['_SPOTORDER'].fields_by_name['trigger_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETORDER'].fields_by_name['order_info']._loaded_options = None + _globals['_SPOTMARKETORDER'].fields_by_name['order_info']._serialized_options = b'\310\336\037\000' + _globals['_SPOTMARKETORDER'].fields_by_name['balance_hold']._loaded_options = None + _globals['_SPOTMARKETORDER'].fields_by_name['balance_hold']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETORDER'].fields_by_name['trigger_price']._loaded_options = None + _globals['_SPOTMARKETORDER'].fields_by_name['trigger_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTLIMITORDER'].fields_by_name['order_info']._loaded_options = None + _globals['_SPOTLIMITORDER'].fields_by_name['order_info']._serialized_options = b'\310\336\037\000' + _globals['_SPOTLIMITORDER'].fields_by_name['fillable']._loaded_options = None + _globals['_SPOTLIMITORDER'].fields_by_name['fillable']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTLIMITORDER'].fields_by_name['trigger_price']._loaded_options = None + _globals['_SPOTLIMITORDER'].fields_by_name['trigger_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEORDER'].fields_by_name['order_info']._loaded_options = None + _globals['_DERIVATIVEORDER'].fields_by_name['order_info']._serialized_options = b'\310\336\037\000' + _globals['_DERIVATIVEORDER'].fields_by_name['margin']._loaded_options = None + _globals['_DERIVATIVEORDER'].fields_by_name['margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEORDER'].fields_by_name['trigger_price']._loaded_options = None + _globals['_DERIVATIVEORDER'].fields_by_name['trigger_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETORDER'].fields_by_name['order_info']._loaded_options = None + _globals['_DERIVATIVEMARKETORDER'].fields_by_name['order_info']._serialized_options = b'\310\336\037\000' + _globals['_DERIVATIVEMARKETORDER'].fields_by_name['margin']._loaded_options = None + _globals['_DERIVATIVEMARKETORDER'].fields_by_name['margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETORDER'].fields_by_name['margin_hold']._loaded_options = None + _globals['_DERIVATIVEMARKETORDER'].fields_by_name['margin_hold']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETORDER'].fields_by_name['trigger_price']._loaded_options = None + _globals['_DERIVATIVEMARKETORDER'].fields_by_name['trigger_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVELIMITORDER'].fields_by_name['order_info']._loaded_options = None + _globals['_DERIVATIVELIMITORDER'].fields_by_name['order_info']._serialized_options = b'\310\336\037\000' + _globals['_DERIVATIVELIMITORDER'].fields_by_name['margin']._loaded_options = None + _globals['_DERIVATIVELIMITORDER'].fields_by_name['margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVELIMITORDER'].fields_by_name['fillable']._loaded_options = None + _globals['_DERIVATIVELIMITORDER'].fields_by_name['fillable']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVELIMITORDER'].fields_by_name['trigger_price']._loaded_options = None + _globals['_DERIVATIVELIMITORDER'].fields_by_name['trigger_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_ORDERTYPE']._serialized_start=2334 + _globals['_ORDERTYPE']._serialized_end=2649 + _globals['_ORDERMASK']._serialized_start=2652 + _globals['_ORDERMASK']._serialized_end=2917 + _globals['_ATOMICMARKETORDERACCESSLEVEL']._serialized_start=2919 + _globals['_ATOMICMARKETORDERACCESSLEVEL']._serialized_end=3035 + _globals['_ORDERINFO']._serialized_start=83 + _globals['_ORDERINFO']._serialized_end=310 + _globals['_SPOTORDER']._serialized_start=313 + _globals['_SPOTORDER']._serialized_end=563 + _globals['_SPOTMARKETORDER']._serialized_start=566 + _globals['_SPOTMARKETORDER']._serialized_end=896 + _globals['_SPOTLIMITORDER']._serialized_start=899 + _globals['_SPOTLIMITORDER']._serialized_end=1221 + _globals['_DERIVATIVEORDER']._serialized_start=1224 + _globals['_DERIVATIVEORDER']._serialized_end=1541 + _globals['_DERIVATIVEMARKETORDER']._serialized_start=1544 + _globals['_DERIVATIVEMARKETORDER']._serialized_end=1939 + _globals['_DERIVATIVELIMITORDER']._serialized_start=1942 + _globals['_DERIVATIVELIMITORDER']._serialized_end=2331 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/order_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/order_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/order_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/pyinjective/proto/injective/exchange/v2/orderbook_pb2.py b/pyinjective/proto/injective/exchange/v2/orderbook_pb2.py new file mode 100644 index 00000000..d9f9e5d0 --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/orderbook_pb2.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/orderbook.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%injective/exchange/v2/orderbook.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a!injective/exchange/v2/order.proto\"\x93\x01\n\rSpotOrderBook\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1c\n\tisBuySide\x18\x02 \x01(\x08R\tisBuySide\x12=\n\x06orders\x18\x03 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\x06orders:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\x9f\x01\n\x13\x44\x65rivativeOrderBook\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1c\n\tisBuySide\x18\x02 \x01(\x08R\tisBuySide\x12\x43\n\x06orders\x18\x03 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\x06orders:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xad\x03\n\x1e\x43onditionalDerivativeOrderBook\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12U\n\x10limit_buy_orders\x18\x02 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\x0elimitBuyOrders\x12X\n\x11market_buy_orders\x18\x03 \x03(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderR\x0fmarketBuyOrders\x12W\n\x11limit_sell_orders\x18\x04 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\x0flimitSellOrders\x12Z\n\x12market_sell_orders\x18\x05 \x03(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderR\x10marketSellOrders:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xfc\x03\n\x1bSubaccountOrderbookMetadata\x12\x39\n\x19vanilla_limit_order_count\x18\x01 \x01(\rR\x16vanillaLimitOrderCount\x12@\n\x1dreduce_only_limit_order_count\x18\x02 \x01(\rR\x19reduceOnlyLimitOrderCount\x12h\n\x1e\x61ggregate_reduce_only_quantity\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1b\x61ggregateReduceOnlyQuantity\x12\x61\n\x1a\x61ggregate_vanilla_quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x18\x61ggregateVanillaQuantity\x12\x45\n\x1fvanilla_conditional_order_count\x18\x05 \x01(\rR\x1cvanillaConditionalOrderCount\x12L\n#reduce_only_conditional_order_count\x18\x06 \x01(\rR\x1freduceOnlyConditionalOrderCountB\xf4\x01\n\x19\x63om.injective.exchange.v2B\x0eOrderbookProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.orderbook_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\016OrderbookProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_SPOTORDERBOOK']._loaded_options = None + _globals['_SPOTORDERBOOK']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_DERIVATIVEORDERBOOK']._loaded_options = None + _globals['_DERIVATIVEORDERBOOK']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_CONDITIONALDERIVATIVEORDERBOOK']._loaded_options = None + _globals['_CONDITIONALDERIVATIVEORDERBOOK']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_SUBACCOUNTORDERBOOKMETADATA'].fields_by_name['aggregate_reduce_only_quantity']._loaded_options = None + _globals['_SUBACCOUNTORDERBOOKMETADATA'].fields_by_name['aggregate_reduce_only_quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SUBACCOUNTORDERBOOKMETADATA'].fields_by_name['aggregate_vanilla_quantity']._loaded_options = None + _globals['_SUBACCOUNTORDERBOOKMETADATA'].fields_by_name['aggregate_vanilla_quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTORDERBOOK']._serialized_start=122 + _globals['_SPOTORDERBOOK']._serialized_end=269 + _globals['_DERIVATIVEORDERBOOK']._serialized_start=272 + _globals['_DERIVATIVEORDERBOOK']._serialized_end=431 + _globals['_CONDITIONALDERIVATIVEORDERBOOK']._serialized_start=434 + _globals['_CONDITIONALDERIVATIVEORDERBOOK']._serialized_end=863 + _globals['_SUBACCOUNTORDERBOOKMETADATA']._serialized_start=866 + _globals['_SUBACCOUNTORDERBOOKMETADATA']._serialized_end=1374 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/orderbook_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/orderbook_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/orderbook_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/pyinjective/proto/injective/exchange/v2/proposal_pb2.py b/pyinjective/proto/injective/exchange/v2/proposal_pb2.py new file mode 100644 index 00000000..4c8950fe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/proposal_pb2.py @@ -0,0 +1,222 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/proposal.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.cosmos_proto import cosmos_pb2 as cosmos__proto_dot_cosmos__pb2 +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 +from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as cosmos_dot_base_dot_v1beta1_dot_coin__pb2 +from pyinjective.proto.cosmos.msg.v1 import msg_pb2 as cosmos_dot_msg_dot_v1_dot_msg__pb2 +from pyinjective.proto.cosmos.distribution.v1beta1 import distribution_pb2 as cosmos_dot_distribution_dot_v1beta1_dot_distribution__pb2 +from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as injective_dot_exchange_dot_v2_dot_exchange__pb2 +from pyinjective.proto.injective.exchange.v2 import market_pb2 as injective_dot_exchange_dot_v2_dot_market__pb2 +from pyinjective.proto.injective.oracle.v1beta1 import oracle_pb2 as injective_dot_oracle_dot_v1beta1_dot_oracle__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$injective/exchange/v2/proposal.proto\x12\x15injective.exchange.v2\x1a\x19\x63osmos_proto/cosmos.proto\x1a\x14gogoproto/gogo.proto\x1a\x11\x61mino/amino.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x17\x63osmos/msg/v1/msg.proto\x1a.cosmos/distribution/v1beta1/distribution.proto\x1a$injective/exchange/v2/exchange.proto\x1a\"injective/exchange/v2/market.proto\x1a%injective/oracle/v1beta1/oracle.proto\"\x95\x07\n\x1dSpotMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12;\n\x06status\x18\t \x01(\x0e\x32#.injective.exchange.v2.MarketStatusR\x06status\x12\x1c\n\x06ticker\x18\n \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12?\n\nadmin_info\x18\x0c \x01(\x0b\x32 .injective.exchange.v2.AdminInfoR\tadminInfo\x12#\n\rbase_decimals\x18\r \x01(\rR\x0c\x62\x61seDecimals\x12%\n\x0equote_decimals\x18\x0e \x01(\rR\rquoteDecimals:Q\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*&exchange/SpotMarketParamUpdateProposal\"\xc7\x01\n\x16\x45xchangeEnableProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12G\n\x0c\x65xchangeType\x18\x03 \x01(\x0e\x32#.injective.exchange.v2.ExchangeTypeR\x0c\x65xchangeType:,\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x8a\xe7\xb0*\x1f\x65xchange/ExchangeEnableProposal\"\xde\x0c\n!BatchExchangeModificationProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x80\x01\n\"spot_market_param_update_proposals\x18\x03 \x03(\x0b\x32\x34.injective.exchange.v2.SpotMarketParamUpdateProposalR\x1espotMarketParamUpdateProposals\x12\x92\x01\n(derivative_market_param_update_proposals\x18\x04 \x03(\x0b\x32:.injective.exchange.v2.DerivativeMarketParamUpdateProposalR$derivativeMarketParamUpdateProposals\x12p\n\x1cspot_market_launch_proposals\x18\x05 \x03(\x0b\x32/.injective.exchange.v2.SpotMarketLaunchProposalR\x19spotMarketLaunchProposals\x12\x7f\n!perpetual_market_launch_proposals\x18\x06 \x03(\x0b\x32\x34.injective.exchange.v2.PerpetualMarketLaunchProposalR\x1eperpetualMarketLaunchProposals\x12\x8c\x01\n&expiry_futures_market_launch_proposals\x18\x07 \x03(\x0b\x32\x38.injective.exchange.v2.ExpiryFuturesMarketLaunchProposalR\"expiryFuturesMarketLaunchProposals\x12\x90\x01\n\'trading_reward_campaign_update_proposal\x18\x08 \x01(\x0b\x32:.injective.exchange.v2.TradingRewardCampaignUpdateProposalR#tradingRewardCampaignUpdateProposal\x12\x8c\x01\n&binary_options_market_launch_proposals\x18\t \x03(\x0b\x32\x38.injective.exchange.v2.BinaryOptionsMarketLaunchProposalR\"binaryOptionsMarketLaunchProposals\x12\x8f\x01\n%binary_options_param_update_proposals\x18\n \x03(\x0b\x32=.injective.exchange.v2.BinaryOptionsMarketParamUpdateProposalR!binaryOptionsParamUpdateProposals\x12w\n\x1e\x64\x65nom_decimals_update_proposal\x18\x0b \x01(\x0b\x32\x32.injective.exchange.v2.UpdateDenomDecimalsProposalR\x1b\x64\x65nomDecimalsUpdateProposal\x12^\n\x15\x66\x65\x65_discount_proposal\x18\x0c \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountProposalR\x13\x66\x65\x65\x44iscountProposal\x12\x82\x01\n\"market_forced_settlement_proposals\x18\r \x03(\x0b\x32\x35.injective.exchange.v2.MarketForcedSettlementProposalR\x1fmarketForcedSettlementProposals:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/BatchExchangeModificationProposal\"\x91\x06\n\x18SpotMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x04 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x05 \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12I\n\x0emaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12\x46\n\x0cmin_notional\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12?\n\nadmin_info\x18\x0b \x01(\x0b\x32 .injective.exchange.v2.AdminInfoR\tadminInfo\x12#\n\rbase_decimals\x18\x0e \x01(\rR\x0c\x62\x61seDecimals\x12%\n\x0equote_decimals\x18\x0f \x01(\rR\rquoteDecimals:L\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*!exchange/SpotMarketLaunchProposal\"\xa1\x08\n\x1dPerpetualMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x05 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x06 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x08 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12U\n\x14initial_margin_ratio\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12?\n\nadmin_info\x18\x10 \x01(\x0b\x32 .injective.exchange.v2.AdminInfoR\tadminInfo:Q\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*&exchange/PerpetualMarketLaunchProposal\"\xe5\x07\n!BinaryOptionsMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x04 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x05 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x06 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x31\n\x14\x65xpiration_timestamp\x18\x08 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\t \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\n \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\x0b \x01(\tR\nquoteDenom\x12I\n\x0emaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12+\n\x11\x61\x64min_permissions\x18\x11 \x01(\rR\x10\x61\x64minPermissions:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/BinaryOptionsMarketLaunchProposal\"\xc1\x08\n!ExpiryFuturesMarketLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x05 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x06 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x08 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12\x16\n\x06\x65xpiry\x18\t \x01(\x03R\x06\x65xpiry\x12U\n\x14initial_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12R\n\x13min_price_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12?\n\nadmin_info\x18\x11 \x01(\x0b\x32 .injective.exchange.v2.AdminInfoR\tadminInfo:U\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0**exchange/ExpiryFuturesMarketLaunchProposal\"\x83\n\n#DerivativeMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12U\n\x14initial_margin_ratio\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12I\n\x0emaker_fee_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\t \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\n \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12S\n\x12HourlyInterestRate\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12HourlyInterestRate\x12W\n\x14HourlyFundingRateCap\x18\x0c \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x14HourlyFundingRateCap\x12;\n\x06status\x18\r \x01(\x0e\x32#.injective.exchange.v2.MarketStatusR\x06status\x12H\n\roracle_params\x18\x0e \x01(\x0b\x32#.injective.exchange.v2.OracleParamsR\x0coracleParams\x12\x1c\n\x06ticker\x18\x0f \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12?\n\nadmin_info\x18\x11 \x01(\x0b\x32 .injective.exchange.v2.AdminInfoR\tadminInfo:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/DerivativeMarketParamUpdateProposal\"N\n\tAdminInfo\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12+\n\x11\x61\x64min_permissions\x18\x02 \x01(\rR\x10\x61\x64minPermissions\"\x99\x02\n\x1eMarketForcedSettlementProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice:R\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*\'exchange/MarketForcedSettlementProposal\"\xf3\x01\n\x1bUpdateDenomDecimalsProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12K\n\x0e\x64\x65nom_decimals\x18\x03 \x03(\x0b\x32$.injective.exchange.v2.DenomDecimalsR\rdenomDecimals:O\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*$exchange/UpdateDenomDecimalsProposal\"\xb8\x08\n&BinaryOptionsMarketParamUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12I\n\x0emaker_fee_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12X\n\x16relayer_fee_share_rate\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13relayerFeeShareRate\x12R\n\x13min_price_tick_size\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x08 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x31\n\x14\x65xpiration_timestamp\x18\t \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\n \x01(\x03R\x13settlementTimestamp\x12N\n\x10settlement_price\x18\x0b \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x14\n\x05\x61\x64min\x18\x0c \x01(\tR\x05\x61\x64min\x12;\n\x06status\x18\r \x01(\x0e\x32#.injective.exchange.v2.MarketStatusR\x06status\x12P\n\roracle_params\x18\x0e \x01(\x0b\x32+.injective.exchange.v2.ProviderOracleParamsR\x0coracleParams\x12\x1c\n\x06ticker\x18\x0f \x01(\tB\x04\xc8\xde\x1f\x01R\x06ticker\x12\x46\n\x0cmin_notional\x18\x10 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:Z\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*/exchange/BinaryOptionsMarketParamUpdateProposal\"\xc1\x01\n\x14ProviderOracleParams\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1a\n\x08provider\x18\x02 \x01(\tR\x08provider\x12.\n\x13oracle_scale_factor\x18\x03 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\"\xc9\x01\n\x0cOracleParams\x12\x1f\n\x0boracle_base\x18\x01 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x02 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x03 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x04 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\"\xec\x02\n#TradingRewardCampaignLaunchProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12U\n\rcampaign_info\x18\x03 \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12]\n\x15\x63\x61mpaign_reward_pools\x18\x04 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR\x13\x63\x61mpaignRewardPools:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/TradingRewardCampaignLaunchProposal\"\xed\x03\n#TradingRewardCampaignUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12U\n\rcampaign_info\x18\x03 \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12p\n\x1f\x63\x61mpaign_reward_pools_additions\x18\x04 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR\x1c\x63\x61mpaignRewardPoolsAdditions\x12l\n\x1d\x63\x61mpaign_reward_pools_updates\x18\x05 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR\x1a\x63\x61mpaignRewardPoolsUpdates:W\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*,exchange/TradingRewardCampaignUpdateProposal\"\x80\x01\n\x11RewardPointUpdate\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x42\n\nnew_points\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tnewPoints\"\xd2\x02\n(TradingRewardPendingPointsUpdateProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x34\n\x16pending_pool_timestamp\x18\x03 \x01(\x03R\x14pendingPoolTimestamp\x12Z\n\x14reward_point_updates\x18\x04 \x03(\x0b\x32(.injective.exchange.v2.RewardPointUpdateR\x12rewardPointUpdates:\\\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*1exchange/TradingRewardPendingPointsUpdateProposal\"\xde\x01\n\x13\x46\x65\x65\x44iscountProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x46\n\x08schedule\x18\x03 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountScheduleR\x08schedule:G\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*\x1c\x65xchange/FeeDiscountProposal\"\x85\x02\n\x1f\x42\x61tchCommunityPoolSpendProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12U\n\tproposals\x18\x03 \x03(\x0b\x32\x37.cosmos.distribution.v1beta1.CommunityPoolSpendProposalR\tproposals:S\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*(exchange/BatchCommunityPoolSpendProposal\"\xae\x02\n.AtomicMarketOrderFeeMultiplierScheduleProposal\x12\x14\n\x05title\x18\x01 \x01(\tR\x05title\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12`\n\x16market_fee_multipliers\x18\x03 \x03(\x0b\x32*.injective.exchange.v2.MarketFeeMultiplierR\x14marketFeeMultipliers:b\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\xca\xb4-\x1a\x63osmos.gov.v1beta1.Content\x8a\xe7\xb0*7exchange/AtomicMarketOrderFeeMultiplierScheduleProposal*x\n\x0c\x45xchangeType\x12\x32\n\x14\x45XCHANGE_UNSPECIFIED\x10\x00\x1a\x18\x8a\x9d \x14\x45XCHANGE_UNSPECIFIED\x12\x12\n\x04SPOT\x10\x01\x1a\x08\x8a\x9d \x04SPOT\x12 \n\x0b\x44\x45RIVATIVES\x10\x02\x1a\x0f\x8a\x9d \x0b\x44\x45RIVATIVESB\xf3\x01\n\x19\x63om.injective.exchange.v2B\rProposalProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.proposal_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\rProposalProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_EXCHANGETYPE'].values_by_name["EXCHANGE_UNSPECIFIED"]._loaded_options = None + _globals['_EXCHANGETYPE'].values_by_name["EXCHANGE_UNSPECIFIED"]._serialized_options = b'\212\235 \024EXCHANGE_UNSPECIFIED' + _globals['_EXCHANGETYPE'].values_by_name["SPOT"]._loaded_options = None + _globals['_EXCHANGETYPE'].values_by_name["SPOT"]._serialized_options = b'\212\235 \004SPOT' + _globals['_EXCHANGETYPE'].values_by_name["DERIVATIVES"]._loaded_options = None + _globals['_EXCHANGETYPE'].values_by_name["DERIVATIVES"]._serialized_options = b'\212\235 \013DERIVATIVES' + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['relayer_fee_share_rate']._loaded_options = None + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['relayer_fee_share_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['ticker']._loaded_options = None + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['ticker']._serialized_options = b'\310\336\037\001' + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_notional']._loaded_options = None + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL']._loaded_options = None + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*&exchange/SpotMarketParamUpdateProposal' + _globals['_EXCHANGEENABLEPROPOSAL']._loaded_options = None + _globals['_EXCHANGEENABLEPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\212\347\260*\037exchange/ExchangeEnableProposal' + _globals['_BATCHEXCHANGEMODIFICATIONPROPOSAL']._loaded_options = None + _globals['_BATCHEXCHANGEMODIFICATIONPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260**exchange/BatchExchangeModificationProposal' + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['min_notional']._loaded_options = None + _globals['_SPOTMARKETLAUNCHPROPOSAL'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETLAUNCHPROPOSAL']._loaded_options = None + _globals['_SPOTMARKETLAUNCHPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*!exchange/SpotMarketLaunchProposal' + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['initial_margin_ratio']._loaded_options = None + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['initial_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['maintenance_margin_ratio']._loaded_options = None + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['maintenance_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['min_notional']._loaded_options = None + _globals['_PERPETUALMARKETLAUNCHPROPOSAL'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PERPETUALMARKETLAUNCHPROPOSAL']._loaded_options = None + _globals['_PERPETUALMARKETLAUNCHPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*&exchange/PerpetualMarketLaunchProposal' + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['min_notional']._loaded_options = None + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL']._loaded_options = None + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260**exchange/BinaryOptionsMarketLaunchProposal' + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['initial_margin_ratio']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['initial_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['maintenance_margin_ratio']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['maintenance_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['min_notional']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL']._loaded_options = None + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260**exchange/ExpiryFuturesMarketLaunchProposal' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['initial_margin_ratio']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['initial_margin_ratio']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['maintenance_margin_ratio']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['maintenance_margin_ratio']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['relayer_fee_share_rate']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['relayer_fee_share_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['HourlyInterestRate']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['HourlyInterestRate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['HourlyFundingRateCap']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['HourlyFundingRateCap']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['ticker']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['ticker']._serialized_options = b'\310\336\037\001' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_notional']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL']._loaded_options = None + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*,exchange/DerivativeMarketParamUpdateProposal' + _globals['_MARKETFORCEDSETTLEMENTPROPOSAL'].fields_by_name['settlement_price']._loaded_options = None + _globals['_MARKETFORCEDSETTLEMENTPROPOSAL'].fields_by_name['settlement_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MARKETFORCEDSETTLEMENTPROPOSAL']._loaded_options = None + _globals['_MARKETFORCEDSETTLEMENTPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*\'exchange/MarketForcedSettlementProposal' + _globals['_UPDATEDENOMDECIMALSPROPOSAL']._loaded_options = None + _globals['_UPDATEDENOMDECIMALSPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*$exchange/UpdateDenomDecimalsProposal' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['relayer_fee_share_rate']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['relayer_fee_share_rate']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['settlement_price']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['settlement_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['ticker']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['ticker']._serialized_options = b'\310\336\037\001' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_notional']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL']._loaded_options = None + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*/exchange/BinaryOptionsMarketParamUpdateProposal' + _globals['_TRADINGREWARDCAMPAIGNLAUNCHPROPOSAL']._loaded_options = None + _globals['_TRADINGREWARDCAMPAIGNLAUNCHPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*,exchange/TradingRewardCampaignLaunchProposal' + _globals['_TRADINGREWARDCAMPAIGNUPDATEPROPOSAL']._loaded_options = None + _globals['_TRADINGREWARDCAMPAIGNUPDATEPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*,exchange/TradingRewardCampaignUpdateProposal' + _globals['_REWARDPOINTUPDATE'].fields_by_name['new_points']._loaded_options = None + _globals['_REWARDPOINTUPDATE'].fields_by_name['new_points']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRADINGREWARDPENDINGPOINTSUPDATEPROPOSAL']._loaded_options = None + _globals['_TRADINGREWARDPENDINGPOINTSUPDATEPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*1exchange/TradingRewardPendingPointsUpdateProposal' + _globals['_FEEDISCOUNTPROPOSAL']._loaded_options = None + _globals['_FEEDISCOUNTPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*\034exchange/FeeDiscountProposal' + _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._loaded_options = None + _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*(exchange/BatchCommunityPoolSpendProposal' + _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._loaded_options = None + _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._serialized_options = b'\210\240\037\000\350\240\037\000\312\264-\032cosmos.gov.v1beta1.Content\212\347\260*7exchange/AtomicMarketOrderFeeMultiplierScheduleProposal' + _globals['_EXCHANGETYPE']._serialized_start=12552 + _globals['_EXCHANGETYPE']._serialized_end=12672 + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL']._serialized_start=350 + _globals['_SPOTMARKETPARAMUPDATEPROPOSAL']._serialized_end=1267 + _globals['_EXCHANGEENABLEPROPOSAL']._serialized_start=1270 + _globals['_EXCHANGEENABLEPROPOSAL']._serialized_end=1469 + _globals['_BATCHEXCHANGEMODIFICATIONPROPOSAL']._serialized_start=1472 + _globals['_BATCHEXCHANGEMODIFICATIONPROPOSAL']._serialized_end=3102 + _globals['_SPOTMARKETLAUNCHPROPOSAL']._serialized_start=3105 + _globals['_SPOTMARKETLAUNCHPROPOSAL']._serialized_end=3890 + _globals['_PERPETUALMARKETLAUNCHPROPOSAL']._serialized_start=3893 + _globals['_PERPETUALMARKETLAUNCHPROPOSAL']._serialized_end=4950 + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL']._serialized_start=4953 + _globals['_BINARYOPTIONSMARKETLAUNCHPROPOSAL']._serialized_end=5950 + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL']._serialized_start=5953 + _globals['_EXPIRYFUTURESMARKETLAUNCHPROPOSAL']._serialized_end=7042 + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL']._serialized_start=7045 + _globals['_DERIVATIVEMARKETPARAMUPDATEPROPOSAL']._serialized_end=8328 + _globals['_ADMININFO']._serialized_start=8330 + _globals['_ADMININFO']._serialized_end=8408 + _globals['_MARKETFORCEDSETTLEMENTPROPOSAL']._serialized_start=8411 + _globals['_MARKETFORCEDSETTLEMENTPROPOSAL']._serialized_end=8692 + _globals['_UPDATEDENOMDECIMALSPROPOSAL']._serialized_start=8695 + _globals['_UPDATEDENOMDECIMALSPROPOSAL']._serialized_end=8938 + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL']._serialized_start=8941 + _globals['_BINARYOPTIONSMARKETPARAMUPDATEPROPOSAL']._serialized_end=10021 + _globals['_PROVIDERORACLEPARAMS']._serialized_start=10024 + _globals['_PROVIDERORACLEPARAMS']._serialized_end=10217 + _globals['_ORACLEPARAMS']._serialized_start=10220 + _globals['_ORACLEPARAMS']._serialized_end=10421 + _globals['_TRADINGREWARDCAMPAIGNLAUNCHPROPOSAL']._serialized_start=10424 + _globals['_TRADINGREWARDCAMPAIGNLAUNCHPROPOSAL']._serialized_end=10788 + _globals['_TRADINGREWARDCAMPAIGNUPDATEPROPOSAL']._serialized_start=10791 + _globals['_TRADINGREWARDCAMPAIGNUPDATEPROPOSAL']._serialized_end=11284 + _globals['_REWARDPOINTUPDATE']._serialized_start=11287 + _globals['_REWARDPOINTUPDATE']._serialized_end=11415 + _globals['_TRADINGREWARDPENDINGPOINTSUPDATEPROPOSAL']._serialized_start=11418 + _globals['_TRADINGREWARDPENDINGPOINTSUPDATEPROPOSAL']._serialized_end=11756 + _globals['_FEEDISCOUNTPROPOSAL']._serialized_start=11759 + _globals['_FEEDISCOUNTPROPOSAL']._serialized_end=11981 + _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._serialized_start=11984 + _globals['_BATCHCOMMUNITYPOOLSPENDPROPOSAL']._serialized_end=12245 + _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._serialized_start=12248 + _globals['_ATOMICMARKETORDERFEEMULTIPLIERSCHEDULEPROPOSAL']._serialized_end=12550 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/proposal_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/proposal_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/proposal_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/pyinjective/proto/injective/exchange/v2/query_pb2.py b/pyinjective/proto/injective/exchange/v2/query_pb2.py new file mode 100644 index 00000000..13849253 --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/query_pb2.py @@ -0,0 +1,568 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/query.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as injective_dot_exchange_dot_v2_dot_exchange__pb2 +from pyinjective.proto.injective.exchange.v2 import orderbook_pb2 as injective_dot_exchange_dot_v2_dot_orderbook__pb2 +from pyinjective.proto.injective.exchange.v2 import market_pb2 as injective_dot_exchange_dot_v2_dot_market__pb2 +from pyinjective.proto.injective.exchange.v2 import genesis_pb2 as injective_dot_exchange_dot_v2_dot_genesis__pb2 +from pyinjective.proto.injective.oracle.v1beta1 import oracle_pb2 as injective_dot_oracle_dot_v1beta1_dot_oracle__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!injective/exchange/v2/query.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a\x1cgoogle/api/annotations.proto\x1a$injective/exchange/v2/exchange.proto\x1a%injective/exchange/v2/orderbook.proto\x1a\"injective/exchange/v2/market.proto\x1a#injective/exchange/v2/genesis.proto\x1a%injective/oracle/v1beta1/oracle.proto\"O\n\nSubaccount\x12\x16\n\x06trader\x18\x01 \x01(\tR\x06trader\x12)\n\x10subaccount_nonce\x18\x02 \x01(\rR\x0fsubaccountNonce\"`\n\x1cQuerySubaccountOrdersRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"\xb7\x01\n\x1dQuerySubaccountOrdersResponse\x12I\n\nbuy_orders\x18\x01 \x03(\x0b\x32*.injective.exchange.v2.SubaccountOrderDataR\tbuyOrders\x12K\n\x0bsell_orders\x18\x02 \x03(\x0b\x32*.injective.exchange.v2.SubaccountOrderDataR\nsellOrders\"\xaa\x01\n%SubaccountOrderbookMetadataWithMarket\x12N\n\x08metadata\x18\x01 \x01(\x0b\x32\x32.injective.exchange.v2.SubaccountOrderbookMetadataR\x08metadata\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x14\n\x05isBuy\x18\x03 \x01(\x08R\x05isBuy\"\x1c\n\x1aQueryExchangeParamsRequest\"Z\n\x1bQueryExchangeParamsResponse\x12;\n\x06params\x18\x01 \x01(\x0b\x32\x1d.injective.exchange.v2.ParamsB\x04\xc8\xde\x1f\x00R\x06params\"\x8e\x01\n\x1eQuerySubaccountDepositsRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12G\n\nsubaccount\x18\x02 \x01(\x0b\x32!.injective.exchange.v2.SubaccountB\x04\xc8\xde\x1f\x01R\nsubaccount\"\xe0\x01\n\x1fQuerySubaccountDepositsResponse\x12`\n\x08\x64\x65posits\x18\x01 \x03(\x0b\x32\x44.injective.exchange.v2.QuerySubaccountDepositsResponse.DepositsEntryR\x08\x64\x65posits\x1a[\n\rDepositsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32\x1e.injective.exchange.v2.DepositR\x05value:\x02\x38\x01\"\x1e\n\x1cQueryExchangeBalancesRequest\"a\n\x1dQueryExchangeBalancesResponse\x12@\n\x08\x62\x61lances\x18\x01 \x03(\x0b\x32\x1e.injective.exchange.v2.BalanceB\x04\xc8\xde\x1f\x00R\x08\x62\x61lances\"7\n\x1bQueryAggregateVolumeRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"p\n\x1cQueryAggregateVolumeResponse\x12P\n\x11\x61ggregate_volumes\x18\x01 \x03(\x0b\x32#.injective.exchange.v2.MarketVolumeR\x10\x61ggregateVolumes\"Y\n\x1cQueryAggregateVolumesRequest\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"\xef\x01\n\x1dQueryAggregateVolumesResponse\x12o\n\x19\x61ggregate_account_volumes\x18\x01 \x03(\x0b\x32\x33.injective.exchange.v2.AggregateAccountVolumeRecordR\x17\x61ggregateAccountVolumes\x12]\n\x18\x61ggregate_market_volumes\x18\x02 \x03(\x0b\x32#.injective.exchange.v2.MarketVolumeR\x16\x61ggregateMarketVolumes\"@\n!QueryAggregateMarketVolumeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"g\n\"QueryAggregateMarketVolumeResponse\x12\x41\n\x06volume\x18\x01 \x01(\x0b\x32#.injective.exchange.v2.VolumeRecordB\x04\xc8\xde\x1f\x00R\x06volume\"0\n\x18QueryDenomDecimalRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\"5\n\x19QueryDenomDecimalResponse\x12\x18\n\x07\x64\x65\x63imal\x18\x01 \x01(\x04R\x07\x64\x65\x63imal\"3\n\x19QueryDenomDecimalsRequest\x12\x16\n\x06\x64\x65noms\x18\x01 \x03(\tR\x06\x64\x65noms\"o\n\x1aQueryDenomDecimalsResponse\x12Q\n\x0e\x64\x65nom_decimals\x18\x01 \x03(\x0b\x32$.injective.exchange.v2.DenomDecimalsB\x04\xc8\xde\x1f\x00R\rdenomDecimals\"C\n\"QueryAggregateMarketVolumesRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"d\n#QueryAggregateMarketVolumesResponse\x12=\n\x07volumes\x18\x01 \x03(\x0b\x32#.injective.exchange.v2.MarketVolumeR\x07volumes\"Z\n\x1dQuerySubaccountDepositRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\"\\\n\x1eQuerySubaccountDepositResponse\x12:\n\x08\x64\x65posits\x18\x01 \x01(\x0b\x32\x1e.injective.exchange.v2.DepositR\x08\x64\x65posits\"P\n\x17QuerySpotMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"W\n\x18QuerySpotMarketsResponse\x12;\n\x07markets\x18\x01 \x03(\x0b\x32!.injective.exchange.v2.SpotMarketR\x07markets\"5\n\x16QuerySpotMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"T\n\x17QuerySpotMarketResponse\x12\x39\n\x06market\x18\x01 \x01(\x0b\x32!.injective.exchange.v2.SpotMarketR\x06market\"\xd1\x02\n\x19QuerySpotOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05limit\x18\x02 \x01(\x04R\x05limit\x12?\n\norder_side\x18\x03 \x01(\x0e\x32 .injective.exchange.v2.OrderSideR\torderSide\x12_\n\x19limit_cumulative_notional\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeNotional\x12_\n\x19limit_cumulative_quantity\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeQuantity\"\xae\x01\n\x1aQuerySpotOrderbookResponse\x12\x46\n\x10\x62uys_price_level\x18\x01 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\x0e\x62uysPriceLevel\x12H\n\x11sells_price_level\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\x0fsellsPriceLevel\"\xa3\x01\n\x0e\x46ullSpotMarket\x12\x39\n\x06market\x18\x01 \x01(\x0b\x32!.injective.exchange.v2.SpotMarketR\x06market\x12V\n\x11mid_price_and_tob\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.MidPriceAndTOBB\x04\xc8\xde\x1f\x01R\x0emidPriceAndTob\"\x88\x01\n\x1bQueryFullSpotMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\x12\x32\n\x16with_mid_price_and_tob\x18\x03 \x01(\x08R\x12withMidPriceAndTob\"_\n\x1cQueryFullSpotMarketsResponse\x12?\n\x07markets\x18\x01 \x03(\x0b\x32%.injective.exchange.v2.FullSpotMarketR\x07markets\"m\n\x1aQueryFullSpotMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x32\n\x16with_mid_price_and_tob\x18\x02 \x01(\x08R\x12withMidPriceAndTob\"\\\n\x1bQueryFullSpotMarketResponse\x12=\n\x06market\x18\x01 \x01(\x0b\x32%.injective.exchange.v2.FullSpotMarketR\x06market\"\x85\x01\n\x1eQuerySpotOrdersByHashesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12!\n\x0corder_hashes\x18\x03 \x03(\tR\x0borderHashes\"g\n\x1fQuerySpotOrdersByHashesResponse\x12\x44\n\x06orders\x18\x01 \x03(\x0b\x32,.injective.exchange.v2.TrimmedSpotLimitOrderR\x06orders\"`\n\x1cQueryTraderSpotOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"l\n$QueryAccountAddressSpotOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\"\x9b\x02\n\x15TrimmedSpotLimitOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12?\n\x08\x66illable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12\x14\n\x05isBuy\x18\x04 \x01(\x08R\x05isBuy\x12\x1d\n\norder_hash\x18\x05 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id\"e\n\x1dQueryTraderSpotOrdersResponse\x12\x44\n\x06orders\x18\x01 \x03(\x0b\x32,.injective.exchange.v2.TrimmedSpotLimitOrderR\x06orders\"m\n%QueryAccountAddressSpotOrdersResponse\x12\x44\n\x06orders\x18\x01 \x03(\x0b\x32,.injective.exchange.v2.TrimmedSpotLimitOrderR\x06orders\"=\n\x1eQuerySpotMidPriceAndTOBRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\xfb\x01\n\x1fQuerySpotMidPriceAndTOBResponse\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"C\n$QueryDerivativeMidPriceAndTOBRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\x81\x02\n%QueryDerivativeMidPriceAndTOBResponse\x12@\n\tmid_price\x18\x01 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08midPrice\x12I\n\x0e\x62\x65st_buy_price\x18\x02 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0c\x62\x65stBuyPrice\x12K\n\x0f\x62\x65st_sell_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rbestSellPrice\"\xb5\x01\n\x1fQueryDerivativeOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05limit\x18\x02 \x01(\x04R\x05limit\x12_\n\x19limit_cumulative_notional\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17limitCumulativeNotional\"\xb4\x01\n QueryDerivativeOrderbookResponse\x12\x46\n\x10\x62uys_price_level\x18\x01 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\x0e\x62uysPriceLevel\x12H\n\x11sells_price_level\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\x0fsellsPriceLevel\"\x97\x03\n.QueryTraderSpotOrdersToCancelUpToAmountRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x44\n\x0b\x62\x61se_amount\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nbaseAmount\x12\x46\n\x0cquote_amount\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bquoteAmount\x12G\n\x08strategy\x18\x05 \x01(\x0e\x32+.injective.exchange.v2.CancellationStrategyR\x08strategy\x12L\n\x0freference_price\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ereferencePrice\"\xd7\x02\n4QueryTraderDerivativeOrdersToCancelUpToAmountRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x46\n\x0cquote_amount\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bquoteAmount\x12G\n\x08strategy\x18\x04 \x01(\x0e\x32+.injective.exchange.v2.CancellationStrategyR\x08strategy\x12L\n\x0freference_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ereferencePrice\"f\n\"QueryTraderDerivativeOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"r\n*QueryAccountAddressDerivativeOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\"\xe9\x02\n\x1bTrimmedDerivativeLimitOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12?\n\x08\x66illable\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08\x66illable\x12\x1f\n\x05isBuy\x18\x05 \x01(\x08\x42\t\xea\xde\x1f\x05isBuyR\x05isBuy\x12\x1d\n\norder_hash\x18\x06 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x07 \x01(\tR\x03\x63id\"q\n#QueryTraderDerivativeOrdersResponse\x12J\n\x06orders\x18\x01 \x03(\x0b\x32\x32.injective.exchange.v2.TrimmedDerivativeLimitOrderR\x06orders\"y\n+QueryAccountAddressDerivativeOrdersResponse\x12J\n\x06orders\x18\x01 \x03(\x0b\x32\x32.injective.exchange.v2.TrimmedDerivativeLimitOrderR\x06orders\"\x8b\x01\n$QueryDerivativeOrdersByHashesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12!\n\x0corder_hashes\x18\x03 \x03(\tR\x0borderHashes\"s\n%QueryDerivativeOrdersByHashesResponse\x12J\n\x06orders\x18\x01 \x03(\x0b\x32\x32.injective.exchange.v2.TrimmedDerivativeLimitOrderR\x06orders\"\x8a\x01\n\x1dQueryDerivativeMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\x12\x32\n\x16with_mid_price_and_tob\x18\x03 \x01(\x08R\x12withMidPriceAndTob\"\x88\x01\n\nPriceLevel\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\"\xb5\x01\n\x14PerpetualMarketState\x12K\n\x0bmarket_info\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.PerpetualMarketInfoR\nmarketInfo\x12P\n\x0c\x66unding_info\x18\x02 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingR\x0b\x66undingInfo\"\xa6\x03\n\x14\x46ullDerivativeMarket\x12?\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketR\x06market\x12T\n\x0eperpetual_info\x18\x02 \x01(\x0b\x32+.injective.exchange.v2.PerpetualMarketStateH\x00R\rperpetualInfo\x12S\n\x0c\x66utures_info\x18\x03 \x01(\x0b\x32..injective.exchange.v2.ExpiryFuturesMarketInfoH\x00R\x0b\x66uturesInfo\x12\x42\n\nmark_price\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tmarkPrice\x12V\n\x11mid_price_and_tob\x18\x05 \x01(\x0b\x32%.injective.exchange.v2.MidPriceAndTOBB\x04\xc8\xde\x1f\x01R\x0emidPriceAndTobB\x06\n\x04info\"g\n\x1eQueryDerivativeMarketsResponse\x12\x45\n\x07markets\x18\x01 \x03(\x0b\x32+.injective.exchange.v2.FullDerivativeMarketR\x07markets\";\n\x1cQueryDerivativeMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"d\n\x1dQueryDerivativeMarketResponse\x12\x43\n\x06market\x18\x01 \x01(\x0b\x32+.injective.exchange.v2.FullDerivativeMarketR\x06market\"B\n#QueryDerivativeMarketAddressRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"e\n$QueryDerivativeMarketAddressResponse\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\"G\n QuerySubaccountTradeNonceRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"F\n\x1fQuerySubaccountPositionsRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"j\n&QuerySubaccountPositionInMarketRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"s\n/QuerySubaccountEffectivePositionInMarketRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"J\n#QuerySubaccountOrderMetadataRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\"i\n QuerySubaccountPositionsResponse\x12\x45\n\x05state\x18\x01 \x03(\x0b\x32).injective.exchange.v2.DerivativePositionB\x04\xc8\xde\x1f\x00R\x05state\"f\n\'QuerySubaccountPositionInMarketResponse\x12;\n\x05state\x18\x01 \x01(\x0b\x32\x1f.injective.exchange.v2.PositionB\x04\xc8\xde\x1f\x01R\x05state\"\x83\x02\n\x11\x45\x66\x66\x65\x63tivePosition\x12\x17\n\x07is_long\x18\x01 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12N\n\x10\x65\x66\x66\x65\x63tive_margin\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0f\x65\x66\x66\x65\x63tiveMargin\"x\n0QuerySubaccountEffectivePositionInMarketResponse\x12\x44\n\x05state\x18\x01 \x01(\x0b\x32(.injective.exchange.v2.EffectivePositionB\x04\xc8\xde\x1f\x01R\x05state\">\n\x1fQueryPerpetualMarketInfoRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"h\n QueryPerpetualMarketInfoResponse\x12\x44\n\x04info\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.PerpetualMarketInfoB\x04\xc8\xde\x1f\x00R\x04info\"B\n#QueryExpiryFuturesMarketInfoRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"p\n$QueryExpiryFuturesMarketInfoResponse\x12H\n\x04info\x18\x01 \x01(\x0b\x32..injective.exchange.v2.ExpiryFuturesMarketInfoB\x04\xc8\xde\x1f\x00R\x04info\"A\n\"QueryPerpetualMarketFundingRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"p\n#QueryPerpetualMarketFundingResponse\x12I\n\x05state\x18\x01 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x00R\x05state\"\x86\x01\n$QuerySubaccountOrderMetadataResponse\x12^\n\x08metadata\x18\x01 \x03(\x0b\x32<.injective.exchange.v2.SubaccountOrderbookMetadataWithMarketB\x04\xc8\xde\x1f\x00R\x08metadata\"9\n!QuerySubaccountTradeNonceResponse\x12\x14\n\x05nonce\x18\x01 \x01(\rR\x05nonce\"\x19\n\x17QueryModuleStateRequest\"U\n\x18QueryModuleStateResponse\x12\x39\n\x05state\x18\x01 \x01(\x0b\x32#.injective.exchange.v2.GenesisStateR\x05state\"\x17\n\x15QueryPositionsRequest\"_\n\x16QueryPositionsResponse\x12\x45\n\x05state\x18\x01 \x03(\x0b\x32).injective.exchange.v2.DerivativePositionB\x04\xc8\xde\x1f\x00R\x05state\"q\n\x1dQueryTradeRewardPointsRequest\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\x12\x34\n\x16pending_pool_timestamp\x18\x02 \x01(\x03R\x14pendingPoolTimestamp\"\x84\x01\n\x1eQueryTradeRewardPointsResponse\x12\x62\n\x1b\x61\x63\x63ount_trade_reward_points\x18\x01 \x03(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x18\x61\x63\x63ountTradeRewardPoints\"!\n\x1fQueryTradeRewardCampaignRequest\"\xee\x04\n QueryTradeRewardCampaignResponse\x12q\n\x1ctrading_reward_campaign_info\x18\x01 \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x19tradingRewardCampaignInfo\x12{\n%trading_reward_pool_campaign_schedule\x18\x02 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR!tradingRewardPoolCampaignSchedule\x12^\n\x19total_trade_reward_points\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16totalTradeRewardPoints\x12\x8a\x01\n-pending_trading_reward_pool_campaign_schedule\x18\x04 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR(pendingTradingRewardPoolCampaignSchedule\x12m\n!pending_total_trade_reward_points\x18\x05 \x03(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x1dpendingTotalTradeRewardPoints\";\n\x1fQueryIsOptedOutOfRewardsRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"D\n QueryIsOptedOutOfRewardsResponse\x12 \n\x0cis_opted_out\x18\x01 \x01(\x08R\nisOptedOut\"\'\n%QueryOptedOutOfRewardsAccountsRequest\"D\n&QueryOptedOutOfRewardsAccountsResponse\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\">\n\"QueryFeeDiscountAccountInfoRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n#QueryFeeDiscountAccountInfoResponse\x12\x1d\n\ntier_level\x18\x01 \x01(\x04R\ttierLevel\x12M\n\x0c\x61\x63\x63ount_info\x18\x02 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountTierInfoR\x0b\x61\x63\x63ountInfo\x12J\n\x0b\x61\x63\x63ount_ttl\x18\x03 \x01(\x0b\x32).injective.exchange.v2.FeeDiscountTierTTLR\naccountTtl\"!\n\x1fQueryFeeDiscountScheduleRequest\"\x82\x01\n QueryFeeDiscountScheduleResponse\x12^\n\x15\x66\x65\x65_discount_schedule\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountScheduleR\x13\x66\x65\x65\x44iscountSchedule\"@\n\x1dQueryBalanceMismatchesRequest\x12\x1f\n\x0b\x64ust_factor\x18\x01 \x01(\x03R\ndustFactor\"\xa2\x03\n\x0f\x42\x61lanceMismatch\x12\"\n\x0csubaccountId\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x41\n\tavailable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tavailable\x12\x39\n\x05total\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05total\x12\x46\n\x0c\x62\x61lance_hold\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\x12J\n\x0e\x65xpected_total\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\rexpectedTotal\x12\x43\n\ndifference\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\ndifference\"w\n\x1eQueryBalanceMismatchesResponse\x12U\n\x12\x62\x61lance_mismatches\x18\x01 \x03(\x0b\x32&.injective.exchange.v2.BalanceMismatchR\x11\x62\x61lanceMismatches\"%\n#QueryBalanceWithBalanceHoldsRequest\"\x97\x02\n\x15\x42\x61lanceWithMarginHold\x12\"\n\x0csubaccountId\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x41\n\tavailable\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tavailable\x12\x39\n\x05total\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05total\x12\x46\n\x0c\x62\x61lance_hold\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x62\x61lanceHold\"\x91\x01\n$QueryBalanceWithBalanceHoldsResponse\x12i\n\x1a\x62\x61lance_with_balance_holds\x18\x01 \x03(\x0b\x32,.injective.exchange.v2.BalanceWithMarginHoldR\x17\x62\x61lanceWithBalanceHolds\"\'\n%QueryFeeDiscountTierStatisticsRequest\"9\n\rTierStatistic\x12\x12\n\x04tier\x18\x01 \x01(\x04R\x04tier\x12\x14\n\x05\x63ount\x18\x02 \x01(\x04R\x05\x63ount\"n\n&QueryFeeDiscountTierStatisticsResponse\x12\x44\n\nstatistics\x18\x01 \x03(\x0b\x32$.injective.exchange.v2.TierStatisticR\nstatistics\"\x17\n\x15MitoVaultInfosRequest\"\xc4\x01\n\x16MitoVaultInfosResponse\x12)\n\x10master_addresses\x18\x01 \x03(\tR\x0fmasterAddresses\x12\x31\n\x14\x64\x65rivative_addresses\x18\x02 \x03(\tR\x13\x64\x65rivativeAddresses\x12%\n\x0espot_addresses\x18\x03 \x03(\tR\rspotAddresses\x12%\n\x0e\x63w20_addresses\x18\x04 \x03(\tR\rcw20Addresses\"D\n\x1dQueryMarketIDFromVaultRequest\x12#\n\rvault_address\x18\x01 \x01(\tR\x0cvaultAddress\"=\n\x1eQueryMarketIDFromVaultResponse\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"A\n\"QueryHistoricalTradeRecordsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"o\n#QueryHistoricalTradeRecordsResponse\x12H\n\rtrade_records\x18\x01 \x03(\x0b\x32#.injective.exchange.v2.TradeRecordsR\x0ctradeRecords\"\xb7\x01\n\x13TradeHistoryOptions\x12,\n\x12trade_grouping_sec\x18\x01 \x01(\x04R\x10tradeGroupingSec\x12\x17\n\x07max_age\x18\x02 \x01(\x04R\x06maxAge\x12.\n\x13include_raw_history\x18\x04 \x01(\x08R\x11includeRawHistory\x12)\n\x10include_metadata\x18\x05 \x01(\x08R\x0fincludeMetadata\"\x9b\x01\n\x1cQueryMarketVolatilityRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12^\n\x15trade_history_options\x18\x02 \x01(\x0b\x32*.injective.exchange.v2.TradeHistoryOptionsR\x13tradeHistoryOptions\"\xfe\x01\n\x1dQueryMarketVolatilityResponse\x12?\n\nvolatility\x18\x01 \x01(\tB\x1f\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nvolatility\x12W\n\x10history_metadata\x18\x02 \x01(\x0b\x32,.injective.oracle.v1beta1.MetadataStatisticsR\x0fhistoryMetadata\x12\x43\n\x0braw_history\x18\x03 \x03(\x0b\x32\".injective.exchange.v2.TradeRecordR\nrawHistory\"3\n\x19QueryBinaryMarketsRequest\x12\x16\n\x06status\x18\x01 \x01(\tR\x06status\"b\n\x1aQueryBinaryMarketsResponse\x12\x44\n\x07markets\x18\x01 \x03(\x0b\x32*.injective.exchange.v2.BinaryOptionsMarketR\x07markets\"q\n-QueryTraderDerivativeConditionalOrdersRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\"\x9e\x03\n!TrimmedDerivativeConditionalOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12;\n\x06margin\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12G\n\x0ctriggerPrice\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctriggerPrice\x12\x1f\n\x05isBuy\x18\x05 \x01(\x08\x42\t\xea\xde\x1f\x05isBuyR\x05isBuy\x12%\n\x07isLimit\x18\x06 \x01(\x08\x42\x0b\xea\xde\x1f\x07isLimitR\x07isLimit\x12\x1d\n\norder_hash\x18\x07 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x08 \x01(\tR\x03\x63id\"\x82\x01\n.QueryTraderDerivativeConditionalOrdersResponse\x12P\n\x06orders\x18\x01 \x03(\x0b\x32\x38.injective.exchange.v2.TrimmedDerivativeConditionalOrderR\x06orders\"<\n\x1dQueryFullSpotOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\x9c\x01\n\x1eQueryFullSpotOrderbookResponse\x12<\n\x04\x42ids\x18\x01 \x03(\x0b\x32(.injective.exchange.v2.TrimmedLimitOrderR\x04\x42ids\x12<\n\x04\x41sks\x18\x02 \x03(\x0b\x32(.injective.exchange.v2.TrimmedLimitOrderR\x04\x41sks\"B\n#QueryFullDerivativeOrderbookRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"\xa2\x01\n$QueryFullDerivativeOrderbookResponse\x12<\n\x04\x42ids\x18\x01 \x03(\x0b\x32(.injective.exchange.v2.TrimmedLimitOrderR\x04\x42ids\x12<\n\x04\x41sks\x18\x02 \x03(\x0b\x32(.injective.exchange.v2.TrimmedLimitOrderR\x04\x41sks\"\xd3\x01\n\x11TrimmedLimitOrder\x12\x39\n\x05price\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12?\n\x08quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\"M\n.QueryMarketAtomicExecutionFeeMultiplierRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"v\n/QueryMarketAtomicExecutionFeeMultiplierResponse\x12\x43\n\nmultiplier\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nmultiplier\"8\n\x1cQueryActiveStakeGrantRequest\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\"\xa9\x01\n\x1dQueryActiveStakeGrantResponse\x12\x38\n\x05grant\x18\x01 \x01(\x0b\x32\".injective.exchange.v2.ActiveGrantR\x05grant\x12N\n\x0f\x65\x66\x66\x65\x63tive_grant\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.EffectiveGrantR\x0e\x65\x66\x66\x65\x63tiveGrant\"T\n\x1eQueryGrantAuthorizationRequest\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x18\n\x07grantee\x18\x02 \x01(\tR\x07grantee\"X\n\x1fQueryGrantAuthorizationResponse\x12\x35\n\x06\x61mount\x18\x01 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\";\n\x1fQueryGrantAuthorizationsRequest\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\"\xb2\x01\n QueryGrantAuthorizationsResponse\x12K\n\x12total_grant_amount\x18\x01 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x10totalGrantAmount\x12\x41\n\x06grants\x18\x02 \x03(\x0b\x32).injective.exchange.v2.GrantAuthorizationR\x06grants*4\n\tOrderSide\x12\x14\n\x10Side_Unspecified\x10\x00\x12\x07\n\x03\x42uy\x10\x01\x12\x08\n\x04Sell\x10\x02*V\n\x14\x43\x61ncellationStrategy\x12\x14\n\x10UnspecifiedOrder\x10\x00\x12\x13\n\x0f\x46romWorstToBest\x10\x01\x12\x13\n\x0f\x46romBestToWorst\x10\x02\x32\xdd\x61\n\x05Query\x12\xd3\x01\n\x15L3DerivativeOrderBook\x12:.injective.exchange.v2.QueryFullDerivativeOrderbookRequest\x1a;.injective.exchange.v2.QueryFullDerivativeOrderbookResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/injective/exchange/v2/derivative/L3OrderBook/{market_id}\x12\xbb\x01\n\x0fL3SpotOrderBook\x12\x34.injective.exchange.v2.QueryFullSpotOrderbookRequest\x1a\x35.injective.exchange.v2.QueryFullSpotOrderbookResponse\";\x82\xd3\xe4\x93\x02\x35\x12\x33/injective/exchange/v2/spot/L3OrderBook/{market_id}\x12\xab\x01\n\x13QueryExchangeParams\x12\x31.injective.exchange.v2.QueryExchangeParamsRequest\x1a\x32.injective.exchange.v2.QueryExchangeParamsResponse\"-\x82\xd3\xe4\x93\x02\'\x12%/injective/exchange/v2/exchangeParams\x12\xbf\x01\n\x12SubaccountDeposits\x12\x35.injective.exchange.v2.QuerySubaccountDepositsRequest\x1a\x36.injective.exchange.v2.QuerySubaccountDepositsResponse\":\x82\xd3\xe4\x93\x02\x34\x12\x32/injective/exchange/v2/exchange/subaccountDeposits\x12\xbb\x01\n\x11SubaccountDeposit\x12\x34.injective.exchange.v2.QuerySubaccountDepositRequest\x1a\x35.injective.exchange.v2.QuerySubaccountDepositResponse\"9\x82\xd3\xe4\x93\x02\x33\x12\x31/injective/exchange/v2/exchange/subaccountDeposit\x12\xb7\x01\n\x10\x45xchangeBalances\x12\x33.injective.exchange.v2.QueryExchangeBalancesRequest\x1a\x34.injective.exchange.v2.QueryExchangeBalancesResponse\"8\x82\xd3\xe4\x93\x02\x32\x12\x30/injective/exchange/v2/exchange/exchangeBalances\x12\xbd\x01\n\x0f\x41ggregateVolume\x12\x32.injective.exchange.v2.QueryAggregateVolumeRequest\x1a\x33.injective.exchange.v2.QueryAggregateVolumeResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/injective/exchange/v2/exchange/aggregateVolume/{account}\x12\xb7\x01\n\x10\x41ggregateVolumes\x12\x33.injective.exchange.v2.QueryAggregateVolumesRequest\x1a\x34.injective.exchange.v2.QueryAggregateVolumesResponse\"8\x82\xd3\xe4\x93\x02\x32\x12\x30/injective/exchange/v2/exchange/aggregateVolumes\x12\xd7\x01\n\x15\x41ggregateMarketVolume\x12\x38.injective.exchange.v2.QueryAggregateMarketVolumeRequest\x1a\x39.injective.exchange.v2.QueryAggregateMarketVolumeResponse\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/injective/exchange/v2/exchange/aggregateMarketVolume/{market_id}\x12\xcf\x01\n\x16\x41ggregateMarketVolumes\x12\x39.injective.exchange.v2.QueryAggregateMarketVolumesRequest\x1a:.injective.exchange.v2.QueryAggregateMarketVolumesResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v2/exchange/aggregateMarketVolumes\x12\xb0\x01\n\x0c\x44\x65nomDecimal\x12/.injective.exchange.v2.QueryDenomDecimalRequest\x1a\x30.injective.exchange.v2.QueryDenomDecimalResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v2/exchange/denom_decimal/{denom}\x12\xac\x01\n\rDenomDecimals\x12\x30.injective.exchange.v2.QueryDenomDecimalsRequest\x1a\x31.injective.exchange.v2.QueryDenomDecimalsResponse\"6\x82\xd3\xe4\x93\x02\x30\x12./injective/exchange/v2/exchange/denom_decimals\x12\x9b\x01\n\x0bSpotMarkets\x12..injective.exchange.v2.QuerySpotMarketsRequest\x1a/.injective.exchange.v2.QuerySpotMarketsResponse\"+\x82\xd3\xe4\x93\x02%\x12#/injective/exchange/v2/spot/markets\x12\xa4\x01\n\nSpotMarket\x12-.injective.exchange.v2.QuerySpotMarketRequest\x1a..injective.exchange.v2.QuerySpotMarketResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//injective/exchange/v2/spot/markets/{market_id}\x12\xac\x01\n\x0f\x46ullSpotMarkets\x12\x32.injective.exchange.v2.QueryFullSpotMarketsRequest\x1a\x33.injective.exchange.v2.QueryFullSpotMarketsResponse\"0\x82\xd3\xe4\x93\x02*\x12(/injective/exchange/v2/spot/full_markets\x12\xb4\x01\n\x0e\x46ullSpotMarket\x12\x31.injective.exchange.v2.QueryFullSpotMarketRequest\x1a\x32.injective.exchange.v2.QueryFullSpotMarketResponse\";\x82\xd3\xe4\x93\x02\x35\x12\x33/injective/exchange/v2/spot/full_market/{market_id}\x12\xaf\x01\n\rSpotOrderbook\x12\x30.injective.exchange.v2.QuerySpotOrderbookRequest\x1a\x31.injective.exchange.v2.QuerySpotOrderbookResponse\"9\x82\xd3\xe4\x93\x02\x33\x12\x31/injective/exchange/v2/spot/orderbook/{market_id}\x12\xc5\x01\n\x10TraderSpotOrders\x12\x33.injective.exchange.v2.QueryTraderSpotOrdersRequest\x1a\x34.injective.exchange.v2.QueryTraderSpotOrdersResponse\"F\x82\xd3\xe4\x93\x02@\x12>/injective/exchange/v2/spot/orders/{market_id}/{subaccount_id}\x12\xe7\x01\n\x18\x41\x63\x63ountAddressSpotOrders\x12;.injective.exchange.v2.QueryAccountAddressSpotOrdersRequest\x1a<.injective.exchange.v2.QueryAccountAddressSpotOrdersResponse\"P\x82\xd3\xe4\x93\x02J\x12H/injective/exchange/v2/spot/orders/{market_id}/account/{account_address}\x12\xd5\x01\n\x12SpotOrdersByHashes\x12\x35.injective.exchange.v2.QuerySpotOrdersByHashesRequest\x1a\x36.injective.exchange.v2.QuerySpotOrdersByHashesResponse\"P\x82\xd3\xe4\x93\x02J\x12H/injective/exchange/v2/spot/orders_by_hashes/{market_id}/{subaccount_id}\x12\xb4\x01\n\x10SubaccountOrders\x12\x33.injective.exchange.v2.QuerySubaccountOrdersRequest\x1a\x34.injective.exchange.v2.QuerySubaccountOrdersResponse\"5\x82\xd3\xe4\x93\x02/\x12-/injective/exchange/v2/orders/{subaccount_id}\x12\xd8\x01\n\x19TraderSpotTransientOrders\x12\x33.injective.exchange.v2.QueryTraderSpotOrdersRequest\x1a\x34.injective.exchange.v2.QueryTraderSpotOrdersResponse\"P\x82\xd3\xe4\x93\x02J\x12H/injective/exchange/v2/spot/transient_orders/{market_id}/{subaccount_id}\x12\xc6\x01\n\x12SpotMidPriceAndTOB\x12\x35.injective.exchange.v2.QuerySpotMidPriceAndTOBRequest\x1a\x36.injective.exchange.v2.QuerySpotMidPriceAndTOBResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/injective/exchange/v2/spot/mid_price_and_tob/{market_id}\x12\xde\x01\n\x18\x44\x65rivativeMidPriceAndTOB\x12;.injective.exchange.v2.QueryDerivativeMidPriceAndTOBRequest\x1a<.injective.exchange.v2.QueryDerivativeMidPriceAndTOBResponse\"G\x82\xd3\xe4\x93\x02\x41\x12?/injective/exchange/v2/derivative/mid_price_and_tob/{market_id}\x12\xc7\x01\n\x13\x44\x65rivativeOrderbook\x12\x36.injective.exchange.v2.QueryDerivativeOrderbookRequest\x1a\x37.injective.exchange.v2.QueryDerivativeOrderbookResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/injective/exchange/v2/derivative/orderbook/{market_id}\x12\xdd\x01\n\x16TraderDerivativeOrders\x12\x39.injective.exchange.v2.QueryTraderDerivativeOrdersRequest\x1a:.injective.exchange.v2.QueryTraderDerivativeOrdersResponse\"L\x82\xd3\xe4\x93\x02\x46\x12\x44/injective/exchange/v2/derivative/orders/{market_id}/{subaccount_id}\x12\xff\x01\n\x1e\x41\x63\x63ountAddressDerivativeOrders\x12\x41.injective.exchange.v2.QueryAccountAddressDerivativeOrdersRequest\x1a\x42.injective.exchange.v2.QueryAccountAddressDerivativeOrdersResponse\"V\x82\xd3\xe4\x93\x02P\x12N/injective/exchange/v2/derivative/orders/{market_id}/account/{account_address}\x12\xed\x01\n\x18\x44\x65rivativeOrdersByHashes\x12;.injective.exchange.v2.QueryDerivativeOrdersByHashesRequest\x1a<.injective.exchange.v2.QueryDerivativeOrdersByHashesResponse\"V\x82\xd3\xe4\x93\x02P\x12N/injective/exchange/v2/derivative/orders_by_hashes/{market_id}/{subaccount_id}\x12\xf0\x01\n\x1fTraderDerivativeTransientOrders\x12\x39.injective.exchange.v2.QueryTraderDerivativeOrdersRequest\x1a:.injective.exchange.v2.QueryTraderDerivativeOrdersResponse\"V\x82\xd3\xe4\x93\x02P\x12N/injective/exchange/v2/derivative/transient_orders/{market_id}/{subaccount_id}\x12\xb3\x01\n\x11\x44\x65rivativeMarkets\x12\x34.injective.exchange.v2.QueryDerivativeMarketsRequest\x1a\x35.injective.exchange.v2.QueryDerivativeMarketsResponse\"1\x82\xd3\xe4\x93\x02+\x12)/injective/exchange/v2/derivative/markets\x12\xbc\x01\n\x10\x44\x65rivativeMarket\x12\x33.injective.exchange.v2.QueryDerivativeMarketRequest\x1a\x34.injective.exchange.v2.QueryDerivativeMarketResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v2/derivative/markets/{market_id}\x12\xd8\x01\n\x17\x44\x65rivativeMarketAddress\x12:.injective.exchange.v2.QueryDerivativeMarketAddressRequest\x1a;.injective.exchange.v2.QueryDerivativeMarketAddressResponse\"D\x82\xd3\xe4\x93\x02>\x12.injective.exchange.v2.QuerySubaccountPositionInMarketResponse\"D\x82\xd3\xe4\x93\x02>\x12\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v2/vault_market_id/{vault_address}\x12\xc8\x01\n\x16HistoricalTradeRecords\x12\x39.injective.exchange.v2.QueryHistoricalTradeRecordsRequest\x1a:.injective.exchange.v2.QueryHistoricalTradeRecordsResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//injective/exchange/v2/historical_trade_records\x12\xc8\x01\n\x13IsOptedOutOfRewards\x12\x36.injective.exchange.v2.QueryIsOptedOutOfRewardsRequest\x1a\x37.injective.exchange.v2.QueryIsOptedOutOfRewardsResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/injective/exchange/v2/is_opted_out_of_rewards/{account}\x12\xd6\x01\n\x19OptedOutOfRewardsAccounts\x12<.injective.exchange.v2.QueryOptedOutOfRewardsAccountsRequest\x1a=.injective.exchange.v2.QueryOptedOutOfRewardsAccountsResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/injective/exchange/v2/opted_out_of_rewards_accounts\x12\xbb\x01\n\x10MarketVolatility\x12\x33.injective.exchange.v2.QueryMarketVolatilityRequest\x1a\x34.injective.exchange.v2.QueryMarketVolatilityResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/injective/exchange/v2/market_volatility/{market_id}\x12\xb2\x01\n\x14\x42inaryOptionsMarkets\x12\x30.injective.exchange.v2.QueryBinaryMarketsRequest\x1a\x31.injective.exchange.v2.QueryBinaryMarketsResponse\"5\x82\xd3\xe4\x93\x02/\x12-/injective/exchange/v2/binary_options/markets\x12\x8a\x02\n!TraderDerivativeConditionalOrders\x12\x44.injective.exchange.v2.QueryTraderDerivativeConditionalOrdersRequest\x1a\x45.injective.exchange.v2.QueryTraderDerivativeConditionalOrdersResponse\"X\x82\xd3\xe4\x93\x02R\x12P/injective/exchange/v2/derivative/orders/conditional/{market_id}/{subaccount_id}\x12\xef\x01\n\"MarketAtomicExecutionFeeMultiplier\x12\x45.injective.exchange.v2.QueryMarketAtomicExecutionFeeMultiplierRequest\x1a\x46.injective.exchange.v2.QueryMarketAtomicExecutionFeeMultiplierResponse\":\x82\xd3\xe4\x93\x02\x34\x12\x32/injective/exchange/v2/atomic_order_fee_multiplier\x12\xba\x01\n\x10\x41\x63tiveStakeGrant\x12\x33.injective.exchange.v2.QueryActiveStakeGrantRequest\x1a\x34.injective.exchange.v2.QueryActiveStakeGrantResponse\";\x82\xd3\xe4\x93\x02\x35\x12\x33/injective/exchange/v2/active_stake_grant/{grantee}\x12\xcb\x01\n\x12GrantAuthorization\x12\x35.injective.exchange.v2.QueryGrantAuthorizationRequest\x1a\x36.injective.exchange.v2.QueryGrantAuthorizationResponse\"F\x82\xd3\xe4\x93\x02@\x12>/injective/exchange/v2/grant_authorization/{granter}/{grantee}\x12\xc5\x01\n\x13GrantAuthorizations\x12\x36.injective.exchange.v2.QueryGrantAuthorizationsRequest\x1a\x37.injective.exchange.v2.QueryGrantAuthorizationsResponse\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/injective/exchange/v2/grant_authorizations/{granter}B\xf0\x01\n\x19\x63om.injective.exchange.v2B\nQueryProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.query_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\nQueryProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_QUERYEXCHANGEPARAMSRESPONSE'].fields_by_name['params']._loaded_options = None + _globals['_QUERYEXCHANGEPARAMSRESPONSE'].fields_by_name['params']._serialized_options = b'\310\336\037\000' + _globals['_QUERYSUBACCOUNTDEPOSITSREQUEST'].fields_by_name['subaccount']._loaded_options = None + _globals['_QUERYSUBACCOUNTDEPOSITSREQUEST'].fields_by_name['subaccount']._serialized_options = b'\310\336\037\001' + _globals['_QUERYSUBACCOUNTDEPOSITSRESPONSE_DEPOSITSENTRY']._loaded_options = None + _globals['_QUERYSUBACCOUNTDEPOSITSRESPONSE_DEPOSITSENTRY']._serialized_options = b'8\001' + _globals['_QUERYEXCHANGEBALANCESRESPONSE'].fields_by_name['balances']._loaded_options = None + _globals['_QUERYEXCHANGEBALANCESRESPONSE'].fields_by_name['balances']._serialized_options = b'\310\336\037\000' + _globals['_QUERYAGGREGATEMARKETVOLUMERESPONSE'].fields_by_name['volume']._loaded_options = None + _globals['_QUERYAGGREGATEMARKETVOLUMERESPONSE'].fields_by_name['volume']._serialized_options = b'\310\336\037\000' + _globals['_QUERYDENOMDECIMALSRESPONSE'].fields_by_name['denom_decimals']._loaded_options = None + _globals['_QUERYDENOMDECIMALSRESPONSE'].fields_by_name['denom_decimals']._serialized_options = b'\310\336\037\000' + _globals['_QUERYSPOTORDERBOOKREQUEST'].fields_by_name['limit_cumulative_notional']._loaded_options = None + _globals['_QUERYSPOTORDERBOOKREQUEST'].fields_by_name['limit_cumulative_notional']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYSPOTORDERBOOKREQUEST'].fields_by_name['limit_cumulative_quantity']._loaded_options = None + _globals['_QUERYSPOTORDERBOOKREQUEST'].fields_by_name['limit_cumulative_quantity']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_FULLSPOTMARKET'].fields_by_name['mid_price_and_tob']._loaded_options = None + _globals['_FULLSPOTMARKET'].fields_by_name['mid_price_and_tob']._serialized_options = b'\310\336\037\001' + _globals['_TRIMMEDSPOTLIMITORDER'].fields_by_name['price']._loaded_options = None + _globals['_TRIMMEDSPOTLIMITORDER'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDSPOTLIMITORDER'].fields_by_name['quantity']._loaded_options = None + _globals['_TRIMMEDSPOTLIMITORDER'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDSPOTLIMITORDER'].fields_by_name['fillable']._loaded_options = None + _globals['_TRIMMEDSPOTLIMITORDER'].fields_by_name['fillable']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYSPOTMIDPRICEANDTOBRESPONSE'].fields_by_name['mid_price']._loaded_options = None + _globals['_QUERYSPOTMIDPRICEANDTOBRESPONSE'].fields_by_name['mid_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYSPOTMIDPRICEANDTOBRESPONSE'].fields_by_name['best_buy_price']._loaded_options = None + _globals['_QUERYSPOTMIDPRICEANDTOBRESPONSE'].fields_by_name['best_buy_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYSPOTMIDPRICEANDTOBRESPONSE'].fields_by_name['best_sell_price']._loaded_options = None + _globals['_QUERYSPOTMIDPRICEANDTOBRESPONSE'].fields_by_name['best_sell_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBRESPONSE'].fields_by_name['mid_price']._loaded_options = None + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBRESPONSE'].fields_by_name['mid_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBRESPONSE'].fields_by_name['best_buy_price']._loaded_options = None + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBRESPONSE'].fields_by_name['best_buy_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBRESPONSE'].fields_by_name['best_sell_price']._loaded_options = None + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBRESPONSE'].fields_by_name['best_sell_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYDERIVATIVEORDERBOOKREQUEST'].fields_by_name['limit_cumulative_notional']._loaded_options = None + _globals['_QUERYDERIVATIVEORDERBOOKREQUEST'].fields_by_name['limit_cumulative_notional']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYTRADERSPOTORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['base_amount']._loaded_options = None + _globals['_QUERYTRADERSPOTORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['base_amount']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYTRADERSPOTORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['quote_amount']._loaded_options = None + _globals['_QUERYTRADERSPOTORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['quote_amount']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYTRADERSPOTORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['reference_price']._loaded_options = None + _globals['_QUERYTRADERSPOTORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['reference_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYTRADERDERIVATIVEORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['quote_amount']._loaded_options = None + _globals['_QUERYTRADERDERIVATIVEORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['quote_amount']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYTRADERDERIVATIVEORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['reference_price']._loaded_options = None + _globals['_QUERYTRADERDERIVATIVEORDERSTOCANCELUPTOAMOUNTREQUEST'].fields_by_name['reference_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['price']._loaded_options = None + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['quantity']._loaded_options = None + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['margin']._loaded_options = None + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['fillable']._loaded_options = None + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['fillable']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['isBuy']._loaded_options = None + _globals['_TRIMMEDDERIVATIVELIMITORDER'].fields_by_name['isBuy']._serialized_options = b'\352\336\037\005isBuy' + _globals['_PRICELEVEL'].fields_by_name['price']._loaded_options = None + _globals['_PRICELEVEL'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_PRICELEVEL'].fields_by_name['quantity']._loaded_options = None + _globals['_PRICELEVEL'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_FULLDERIVATIVEMARKET'].fields_by_name['mark_price']._loaded_options = None + _globals['_FULLDERIVATIVEMARKET'].fields_by_name['mark_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_FULLDERIVATIVEMARKET'].fields_by_name['mid_price_and_tob']._loaded_options = None + _globals['_FULLDERIVATIVEMARKET'].fields_by_name['mid_price_and_tob']._serialized_options = b'\310\336\037\001' + _globals['_QUERYSUBACCOUNTPOSITIONSRESPONSE'].fields_by_name['state']._loaded_options = None + _globals['_QUERYSUBACCOUNTPOSITIONSRESPONSE'].fields_by_name['state']._serialized_options = b'\310\336\037\000' + _globals['_QUERYSUBACCOUNTPOSITIONINMARKETRESPONSE'].fields_by_name['state']._loaded_options = None + _globals['_QUERYSUBACCOUNTPOSITIONINMARKETRESPONSE'].fields_by_name['state']._serialized_options = b'\310\336\037\001' + _globals['_EFFECTIVEPOSITION'].fields_by_name['quantity']._loaded_options = None + _globals['_EFFECTIVEPOSITION'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EFFECTIVEPOSITION'].fields_by_name['entry_price']._loaded_options = None + _globals['_EFFECTIVEPOSITION'].fields_by_name['entry_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_EFFECTIVEPOSITION'].fields_by_name['effective_margin']._loaded_options = None + _globals['_EFFECTIVEPOSITION'].fields_by_name['effective_margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYSUBACCOUNTEFFECTIVEPOSITIONINMARKETRESPONSE'].fields_by_name['state']._loaded_options = None + _globals['_QUERYSUBACCOUNTEFFECTIVEPOSITIONINMARKETRESPONSE'].fields_by_name['state']._serialized_options = b'\310\336\037\001' + _globals['_QUERYPERPETUALMARKETINFORESPONSE'].fields_by_name['info']._loaded_options = None + _globals['_QUERYPERPETUALMARKETINFORESPONSE'].fields_by_name['info']._serialized_options = b'\310\336\037\000' + _globals['_QUERYEXPIRYFUTURESMARKETINFORESPONSE'].fields_by_name['info']._loaded_options = None + _globals['_QUERYEXPIRYFUTURESMARKETINFORESPONSE'].fields_by_name['info']._serialized_options = b'\310\336\037\000' + _globals['_QUERYPERPETUALMARKETFUNDINGRESPONSE'].fields_by_name['state']._loaded_options = None + _globals['_QUERYPERPETUALMARKETFUNDINGRESPONSE'].fields_by_name['state']._serialized_options = b'\310\336\037\000' + _globals['_QUERYSUBACCOUNTORDERMETADATARESPONSE'].fields_by_name['metadata']._loaded_options = None + _globals['_QUERYSUBACCOUNTORDERMETADATARESPONSE'].fields_by_name['metadata']._serialized_options = b'\310\336\037\000' + _globals['_QUERYPOSITIONSRESPONSE'].fields_by_name['state']._loaded_options = None + _globals['_QUERYPOSITIONSRESPONSE'].fields_by_name['state']._serialized_options = b'\310\336\037\000' + _globals['_QUERYTRADEREWARDPOINTSRESPONSE'].fields_by_name['account_trade_reward_points']._loaded_options = None + _globals['_QUERYTRADEREWARDPOINTSRESPONSE'].fields_by_name['account_trade_reward_points']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYTRADEREWARDCAMPAIGNRESPONSE'].fields_by_name['total_trade_reward_points']._loaded_options = None + _globals['_QUERYTRADEREWARDCAMPAIGNRESPONSE'].fields_by_name['total_trade_reward_points']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYTRADEREWARDCAMPAIGNRESPONSE'].fields_by_name['pending_total_trade_reward_points']._loaded_options = None + _globals['_QUERYTRADEREWARDCAMPAIGNRESPONSE'].fields_by_name['pending_total_trade_reward_points']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCEMISMATCH'].fields_by_name['available']._loaded_options = None + _globals['_BALANCEMISMATCH'].fields_by_name['available']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCEMISMATCH'].fields_by_name['total']._loaded_options = None + _globals['_BALANCEMISMATCH'].fields_by_name['total']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCEMISMATCH'].fields_by_name['balance_hold']._loaded_options = None + _globals['_BALANCEMISMATCH'].fields_by_name['balance_hold']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCEMISMATCH'].fields_by_name['expected_total']._loaded_options = None + _globals['_BALANCEMISMATCH'].fields_by_name['expected_total']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCEMISMATCH'].fields_by_name['difference']._loaded_options = None + _globals['_BALANCEMISMATCH'].fields_by_name['difference']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCEWITHMARGINHOLD'].fields_by_name['available']._loaded_options = None + _globals['_BALANCEWITHMARGINHOLD'].fields_by_name['available']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCEWITHMARGINHOLD'].fields_by_name['total']._loaded_options = None + _globals['_BALANCEWITHMARGINHOLD'].fields_by_name['total']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_BALANCEWITHMARGINHOLD'].fields_by_name['balance_hold']._loaded_options = None + _globals['_BALANCEWITHMARGINHOLD'].fields_by_name['balance_hold']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYMARKETVOLATILITYRESPONSE'].fields_by_name['volatility']._loaded_options = None + _globals['_QUERYMARKETVOLATILITYRESPONSE'].fields_by_name['volatility']._serialized_options = b'\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['price']._loaded_options = None + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['quantity']._loaded_options = None + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['margin']._loaded_options = None + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['triggerPrice']._loaded_options = None + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['triggerPrice']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['isBuy']._loaded_options = None + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['isBuy']._serialized_options = b'\352\336\037\005isBuy' + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['isLimit']._loaded_options = None + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER'].fields_by_name['isLimit']._serialized_options = b'\352\336\037\007isLimit' + _globals['_TRIMMEDLIMITORDER'].fields_by_name['price']._loaded_options = None + _globals['_TRIMMEDLIMITORDER'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_TRIMMEDLIMITORDER'].fields_by_name['quantity']._loaded_options = None + _globals['_TRIMMEDLIMITORDER'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE'].fields_by_name['multiplier']._loaded_options = None + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE'].fields_by_name['multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_QUERYGRANTAUTHORIZATIONRESPONSE'].fields_by_name['amount']._loaded_options = None + _globals['_QUERYGRANTAUTHORIZATIONRESPONSE'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE'].fields_by_name['total_grant_amount']._loaded_options = None + _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE'].fields_by_name['total_grant_amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_QUERY'].methods_by_name['L3DerivativeOrderBook']._loaded_options = None + _globals['_QUERY'].methods_by_name['L3DerivativeOrderBook']._serialized_options = b'\202\323\344\223\002;\0229/injective/exchange/v2/derivative/L3OrderBook/{market_id}' + _globals['_QUERY'].methods_by_name['L3SpotOrderBook']._loaded_options = None + _globals['_QUERY'].methods_by_name['L3SpotOrderBook']._serialized_options = b'\202\323\344\223\0025\0223/injective/exchange/v2/spot/L3OrderBook/{market_id}' + _globals['_QUERY'].methods_by_name['QueryExchangeParams']._loaded_options = None + _globals['_QUERY'].methods_by_name['QueryExchangeParams']._serialized_options = b'\202\323\344\223\002\'\022%/injective/exchange/v2/exchangeParams' + _globals['_QUERY'].methods_by_name['SubaccountDeposits']._loaded_options = None + _globals['_QUERY'].methods_by_name['SubaccountDeposits']._serialized_options = b'\202\323\344\223\0024\0222/injective/exchange/v2/exchange/subaccountDeposits' + _globals['_QUERY'].methods_by_name['SubaccountDeposit']._loaded_options = None + _globals['_QUERY'].methods_by_name['SubaccountDeposit']._serialized_options = b'\202\323\344\223\0023\0221/injective/exchange/v2/exchange/subaccountDeposit' + _globals['_QUERY'].methods_by_name['ExchangeBalances']._loaded_options = None + _globals['_QUERY'].methods_by_name['ExchangeBalances']._serialized_options = b'\202\323\344\223\0022\0220/injective/exchange/v2/exchange/exchangeBalances' + _globals['_QUERY'].methods_by_name['AggregateVolume']._loaded_options = None + _globals['_QUERY'].methods_by_name['AggregateVolume']._serialized_options = b'\202\323\344\223\002;\0229/injective/exchange/v2/exchange/aggregateVolume/{account}' + _globals['_QUERY'].methods_by_name['AggregateVolumes']._loaded_options = None + _globals['_QUERY'].methods_by_name['AggregateVolumes']._serialized_options = b'\202\323\344\223\0022\0220/injective/exchange/v2/exchange/aggregateVolumes' + _globals['_QUERY'].methods_by_name['AggregateMarketVolume']._loaded_options = None + _globals['_QUERY'].methods_by_name['AggregateMarketVolume']._serialized_options = b'\202\323\344\223\002C\022A/injective/exchange/v2/exchange/aggregateMarketVolume/{market_id}' + _globals['_QUERY'].methods_by_name['AggregateMarketVolumes']._loaded_options = None + _globals['_QUERY'].methods_by_name['AggregateMarketVolumes']._serialized_options = b'\202\323\344\223\0028\0226/injective/exchange/v2/exchange/aggregateMarketVolumes' + _globals['_QUERY'].methods_by_name['DenomDecimal']._loaded_options = None + _globals['_QUERY'].methods_by_name['DenomDecimal']._serialized_options = b'\202\323\344\223\0027\0225/injective/exchange/v2/exchange/denom_decimal/{denom}' + _globals['_QUERY'].methods_by_name['DenomDecimals']._loaded_options = None + _globals['_QUERY'].methods_by_name['DenomDecimals']._serialized_options = b'\202\323\344\223\0020\022./injective/exchange/v2/exchange/denom_decimals' + _globals['_QUERY'].methods_by_name['SpotMarkets']._loaded_options = None + _globals['_QUERY'].methods_by_name['SpotMarkets']._serialized_options = b'\202\323\344\223\002%\022#/injective/exchange/v2/spot/markets' + _globals['_QUERY'].methods_by_name['SpotMarket']._loaded_options = None + _globals['_QUERY'].methods_by_name['SpotMarket']._serialized_options = b'\202\323\344\223\0021\022//injective/exchange/v2/spot/markets/{market_id}' + _globals['_QUERY'].methods_by_name['FullSpotMarkets']._loaded_options = None + _globals['_QUERY'].methods_by_name['FullSpotMarkets']._serialized_options = b'\202\323\344\223\002*\022(/injective/exchange/v2/spot/full_markets' + _globals['_QUERY'].methods_by_name['FullSpotMarket']._loaded_options = None + _globals['_QUERY'].methods_by_name['FullSpotMarket']._serialized_options = b'\202\323\344\223\0025\0223/injective/exchange/v2/spot/full_market/{market_id}' + _globals['_QUERY'].methods_by_name['SpotOrderbook']._loaded_options = None + _globals['_QUERY'].methods_by_name['SpotOrderbook']._serialized_options = b'\202\323\344\223\0023\0221/injective/exchange/v2/spot/orderbook/{market_id}' + _globals['_QUERY'].methods_by_name['TraderSpotOrders']._loaded_options = None + _globals['_QUERY'].methods_by_name['TraderSpotOrders']._serialized_options = b'\202\323\344\223\002@\022>/injective/exchange/v2/spot/orders/{market_id}/{subaccount_id}' + _globals['_QUERY'].methods_by_name['AccountAddressSpotOrders']._loaded_options = None + _globals['_QUERY'].methods_by_name['AccountAddressSpotOrders']._serialized_options = b'\202\323\344\223\002J\022H/injective/exchange/v2/spot/orders/{market_id}/account/{account_address}' + _globals['_QUERY'].methods_by_name['SpotOrdersByHashes']._loaded_options = None + _globals['_QUERY'].methods_by_name['SpotOrdersByHashes']._serialized_options = b'\202\323\344\223\002J\022H/injective/exchange/v2/spot/orders_by_hashes/{market_id}/{subaccount_id}' + _globals['_QUERY'].methods_by_name['SubaccountOrders']._loaded_options = None + _globals['_QUERY'].methods_by_name['SubaccountOrders']._serialized_options = b'\202\323\344\223\002/\022-/injective/exchange/v2/orders/{subaccount_id}' + _globals['_QUERY'].methods_by_name['TraderSpotTransientOrders']._loaded_options = None + _globals['_QUERY'].methods_by_name['TraderSpotTransientOrders']._serialized_options = b'\202\323\344\223\002J\022H/injective/exchange/v2/spot/transient_orders/{market_id}/{subaccount_id}' + _globals['_QUERY'].methods_by_name['SpotMidPriceAndTOB']._loaded_options = None + _globals['_QUERY'].methods_by_name['SpotMidPriceAndTOB']._serialized_options = b'\202\323\344\223\002;\0229/injective/exchange/v2/spot/mid_price_and_tob/{market_id}' + _globals['_QUERY'].methods_by_name['DerivativeMidPriceAndTOB']._loaded_options = None + _globals['_QUERY'].methods_by_name['DerivativeMidPriceAndTOB']._serialized_options = b'\202\323\344\223\002A\022?/injective/exchange/v2/derivative/mid_price_and_tob/{market_id}' + _globals['_QUERY'].methods_by_name['DerivativeOrderbook']._loaded_options = None + _globals['_QUERY'].methods_by_name['DerivativeOrderbook']._serialized_options = b'\202\323\344\223\0029\0227/injective/exchange/v2/derivative/orderbook/{market_id}' + _globals['_QUERY'].methods_by_name['TraderDerivativeOrders']._loaded_options = None + _globals['_QUERY'].methods_by_name['TraderDerivativeOrders']._serialized_options = b'\202\323\344\223\002F\022D/injective/exchange/v2/derivative/orders/{market_id}/{subaccount_id}' + _globals['_QUERY'].methods_by_name['AccountAddressDerivativeOrders']._loaded_options = None + _globals['_QUERY'].methods_by_name['AccountAddressDerivativeOrders']._serialized_options = b'\202\323\344\223\002P\022N/injective/exchange/v2/derivative/orders/{market_id}/account/{account_address}' + _globals['_QUERY'].methods_by_name['DerivativeOrdersByHashes']._loaded_options = None + _globals['_QUERY'].methods_by_name['DerivativeOrdersByHashes']._serialized_options = b'\202\323\344\223\002P\022N/injective/exchange/v2/derivative/orders_by_hashes/{market_id}/{subaccount_id}' + _globals['_QUERY'].methods_by_name['TraderDerivativeTransientOrders']._loaded_options = None + _globals['_QUERY'].methods_by_name['TraderDerivativeTransientOrders']._serialized_options = b'\202\323\344\223\002P\022N/injective/exchange/v2/derivative/transient_orders/{market_id}/{subaccount_id}' + _globals['_QUERY'].methods_by_name['DerivativeMarkets']._loaded_options = None + _globals['_QUERY'].methods_by_name['DerivativeMarkets']._serialized_options = b'\202\323\344\223\002+\022)/injective/exchange/v2/derivative/markets' + _globals['_QUERY'].methods_by_name['DerivativeMarket']._loaded_options = None + _globals['_QUERY'].methods_by_name['DerivativeMarket']._serialized_options = b'\202\323\344\223\0027\0225/injective/exchange/v2/derivative/markets/{market_id}' + _globals['_QUERY'].methods_by_name['DerivativeMarketAddress']._loaded_options = None + _globals['_QUERY'].methods_by_name['DerivativeMarketAddress']._serialized_options = b'\202\323\344\223\002>\022\022/injective/exchange/v2/grant_authorization/{granter}/{grantee}' + _globals['_QUERY'].methods_by_name['GrantAuthorizations']._loaded_options = None + _globals['_QUERY'].methods_by_name['GrantAuthorizations']._serialized_options = b'\202\323\344\223\0027\0225/injective/exchange/v2/grant_authorizations/{granter}' + _globals['_ORDERSIDE']._serialized_start=17706 + _globals['_ORDERSIDE']._serialized_end=17758 + _globals['_CANCELLATIONSTRATEGY']._serialized_start=17760 + _globals['_CANCELLATIONSTRATEGY']._serialized_end=17846 + _globals['_SUBACCOUNT']._serialized_start=301 + _globals['_SUBACCOUNT']._serialized_end=380 + _globals['_QUERYSUBACCOUNTORDERSREQUEST']._serialized_start=382 + _globals['_QUERYSUBACCOUNTORDERSREQUEST']._serialized_end=478 + _globals['_QUERYSUBACCOUNTORDERSRESPONSE']._serialized_start=481 + _globals['_QUERYSUBACCOUNTORDERSRESPONSE']._serialized_end=664 + _globals['_SUBACCOUNTORDERBOOKMETADATAWITHMARKET']._serialized_start=667 + _globals['_SUBACCOUNTORDERBOOKMETADATAWITHMARKET']._serialized_end=837 + _globals['_QUERYEXCHANGEPARAMSREQUEST']._serialized_start=839 + _globals['_QUERYEXCHANGEPARAMSREQUEST']._serialized_end=867 + _globals['_QUERYEXCHANGEPARAMSRESPONSE']._serialized_start=869 + _globals['_QUERYEXCHANGEPARAMSRESPONSE']._serialized_end=959 + _globals['_QUERYSUBACCOUNTDEPOSITSREQUEST']._serialized_start=962 + _globals['_QUERYSUBACCOUNTDEPOSITSREQUEST']._serialized_end=1104 + _globals['_QUERYSUBACCOUNTDEPOSITSRESPONSE']._serialized_start=1107 + _globals['_QUERYSUBACCOUNTDEPOSITSRESPONSE']._serialized_end=1331 + _globals['_QUERYSUBACCOUNTDEPOSITSRESPONSE_DEPOSITSENTRY']._serialized_start=1240 + _globals['_QUERYSUBACCOUNTDEPOSITSRESPONSE_DEPOSITSENTRY']._serialized_end=1331 + _globals['_QUERYEXCHANGEBALANCESREQUEST']._serialized_start=1333 + _globals['_QUERYEXCHANGEBALANCESREQUEST']._serialized_end=1363 + _globals['_QUERYEXCHANGEBALANCESRESPONSE']._serialized_start=1365 + _globals['_QUERYEXCHANGEBALANCESRESPONSE']._serialized_end=1462 + _globals['_QUERYAGGREGATEVOLUMEREQUEST']._serialized_start=1464 + _globals['_QUERYAGGREGATEVOLUMEREQUEST']._serialized_end=1519 + _globals['_QUERYAGGREGATEVOLUMERESPONSE']._serialized_start=1521 + _globals['_QUERYAGGREGATEVOLUMERESPONSE']._serialized_end=1633 + _globals['_QUERYAGGREGATEVOLUMESREQUEST']._serialized_start=1635 + _globals['_QUERYAGGREGATEVOLUMESREQUEST']._serialized_end=1724 + _globals['_QUERYAGGREGATEVOLUMESRESPONSE']._serialized_start=1727 + _globals['_QUERYAGGREGATEVOLUMESRESPONSE']._serialized_end=1966 + _globals['_QUERYAGGREGATEMARKETVOLUMEREQUEST']._serialized_start=1968 + _globals['_QUERYAGGREGATEMARKETVOLUMEREQUEST']._serialized_end=2032 + _globals['_QUERYAGGREGATEMARKETVOLUMERESPONSE']._serialized_start=2034 + _globals['_QUERYAGGREGATEMARKETVOLUMERESPONSE']._serialized_end=2137 + _globals['_QUERYDENOMDECIMALREQUEST']._serialized_start=2139 + _globals['_QUERYDENOMDECIMALREQUEST']._serialized_end=2187 + _globals['_QUERYDENOMDECIMALRESPONSE']._serialized_start=2189 + _globals['_QUERYDENOMDECIMALRESPONSE']._serialized_end=2242 + _globals['_QUERYDENOMDECIMALSREQUEST']._serialized_start=2244 + _globals['_QUERYDENOMDECIMALSREQUEST']._serialized_end=2295 + _globals['_QUERYDENOMDECIMALSRESPONSE']._serialized_start=2297 + _globals['_QUERYDENOMDECIMALSRESPONSE']._serialized_end=2408 + _globals['_QUERYAGGREGATEMARKETVOLUMESREQUEST']._serialized_start=2410 + _globals['_QUERYAGGREGATEMARKETVOLUMESREQUEST']._serialized_end=2477 + _globals['_QUERYAGGREGATEMARKETVOLUMESRESPONSE']._serialized_start=2479 + _globals['_QUERYAGGREGATEMARKETVOLUMESRESPONSE']._serialized_end=2579 + _globals['_QUERYSUBACCOUNTDEPOSITREQUEST']._serialized_start=2581 + _globals['_QUERYSUBACCOUNTDEPOSITREQUEST']._serialized_end=2671 + _globals['_QUERYSUBACCOUNTDEPOSITRESPONSE']._serialized_start=2673 + _globals['_QUERYSUBACCOUNTDEPOSITRESPONSE']._serialized_end=2765 + _globals['_QUERYSPOTMARKETSREQUEST']._serialized_start=2767 + _globals['_QUERYSPOTMARKETSREQUEST']._serialized_end=2847 + _globals['_QUERYSPOTMARKETSRESPONSE']._serialized_start=2849 + _globals['_QUERYSPOTMARKETSRESPONSE']._serialized_end=2936 + _globals['_QUERYSPOTMARKETREQUEST']._serialized_start=2938 + _globals['_QUERYSPOTMARKETREQUEST']._serialized_end=2991 + _globals['_QUERYSPOTMARKETRESPONSE']._serialized_start=2993 + _globals['_QUERYSPOTMARKETRESPONSE']._serialized_end=3077 + _globals['_QUERYSPOTORDERBOOKREQUEST']._serialized_start=3080 + _globals['_QUERYSPOTORDERBOOKREQUEST']._serialized_end=3417 + _globals['_QUERYSPOTORDERBOOKRESPONSE']._serialized_start=3420 + _globals['_QUERYSPOTORDERBOOKRESPONSE']._serialized_end=3594 + _globals['_FULLSPOTMARKET']._serialized_start=3597 + _globals['_FULLSPOTMARKET']._serialized_end=3760 + _globals['_QUERYFULLSPOTMARKETSREQUEST']._serialized_start=3763 + _globals['_QUERYFULLSPOTMARKETSREQUEST']._serialized_end=3899 + _globals['_QUERYFULLSPOTMARKETSRESPONSE']._serialized_start=3901 + _globals['_QUERYFULLSPOTMARKETSRESPONSE']._serialized_end=3996 + _globals['_QUERYFULLSPOTMARKETREQUEST']._serialized_start=3998 + _globals['_QUERYFULLSPOTMARKETREQUEST']._serialized_end=4107 + _globals['_QUERYFULLSPOTMARKETRESPONSE']._serialized_start=4109 + _globals['_QUERYFULLSPOTMARKETRESPONSE']._serialized_end=4201 + _globals['_QUERYSPOTORDERSBYHASHESREQUEST']._serialized_start=4204 + _globals['_QUERYSPOTORDERSBYHASHESREQUEST']._serialized_end=4337 + _globals['_QUERYSPOTORDERSBYHASHESRESPONSE']._serialized_start=4339 + _globals['_QUERYSPOTORDERSBYHASHESRESPONSE']._serialized_end=4442 + _globals['_QUERYTRADERSPOTORDERSREQUEST']._serialized_start=4444 + _globals['_QUERYTRADERSPOTORDERSREQUEST']._serialized_end=4540 + _globals['_QUERYACCOUNTADDRESSSPOTORDERSREQUEST']._serialized_start=4542 + _globals['_QUERYACCOUNTADDRESSSPOTORDERSREQUEST']._serialized_end=4650 + _globals['_TRIMMEDSPOTLIMITORDER']._serialized_start=4653 + _globals['_TRIMMEDSPOTLIMITORDER']._serialized_end=4936 + _globals['_QUERYTRADERSPOTORDERSRESPONSE']._serialized_start=4938 + _globals['_QUERYTRADERSPOTORDERSRESPONSE']._serialized_end=5039 + _globals['_QUERYACCOUNTADDRESSSPOTORDERSRESPONSE']._serialized_start=5041 + _globals['_QUERYACCOUNTADDRESSSPOTORDERSRESPONSE']._serialized_end=5150 + _globals['_QUERYSPOTMIDPRICEANDTOBREQUEST']._serialized_start=5152 + _globals['_QUERYSPOTMIDPRICEANDTOBREQUEST']._serialized_end=5213 + _globals['_QUERYSPOTMIDPRICEANDTOBRESPONSE']._serialized_start=5216 + _globals['_QUERYSPOTMIDPRICEANDTOBRESPONSE']._serialized_end=5467 + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBREQUEST']._serialized_start=5469 + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBREQUEST']._serialized_end=5536 + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBRESPONSE']._serialized_start=5539 + _globals['_QUERYDERIVATIVEMIDPRICEANDTOBRESPONSE']._serialized_end=5796 + _globals['_QUERYDERIVATIVEORDERBOOKREQUEST']._serialized_start=5799 + _globals['_QUERYDERIVATIVEORDERBOOKREQUEST']._serialized_end=5980 + _globals['_QUERYDERIVATIVEORDERBOOKRESPONSE']._serialized_start=5983 + _globals['_QUERYDERIVATIVEORDERBOOKRESPONSE']._serialized_end=6163 + _globals['_QUERYTRADERSPOTORDERSTOCANCELUPTOAMOUNTREQUEST']._serialized_start=6166 + _globals['_QUERYTRADERSPOTORDERSTOCANCELUPTOAMOUNTREQUEST']._serialized_end=6573 + _globals['_QUERYTRADERDERIVATIVEORDERSTOCANCELUPTOAMOUNTREQUEST']._serialized_start=6576 + _globals['_QUERYTRADERDERIVATIVEORDERSTOCANCELUPTOAMOUNTREQUEST']._serialized_end=6919 + _globals['_QUERYTRADERDERIVATIVEORDERSREQUEST']._serialized_start=6921 + _globals['_QUERYTRADERDERIVATIVEORDERSREQUEST']._serialized_end=7023 + _globals['_QUERYACCOUNTADDRESSDERIVATIVEORDERSREQUEST']._serialized_start=7025 + _globals['_QUERYACCOUNTADDRESSDERIVATIVEORDERSREQUEST']._serialized_end=7139 + _globals['_TRIMMEDDERIVATIVELIMITORDER']._serialized_start=7142 + _globals['_TRIMMEDDERIVATIVELIMITORDER']._serialized_end=7503 + _globals['_QUERYTRADERDERIVATIVEORDERSRESPONSE']._serialized_start=7505 + _globals['_QUERYTRADERDERIVATIVEORDERSRESPONSE']._serialized_end=7618 + _globals['_QUERYACCOUNTADDRESSDERIVATIVEORDERSRESPONSE']._serialized_start=7620 + _globals['_QUERYACCOUNTADDRESSDERIVATIVEORDERSRESPONSE']._serialized_end=7741 + _globals['_QUERYDERIVATIVEORDERSBYHASHESREQUEST']._serialized_start=7744 + _globals['_QUERYDERIVATIVEORDERSBYHASHESREQUEST']._serialized_end=7883 + _globals['_QUERYDERIVATIVEORDERSBYHASHESRESPONSE']._serialized_start=7885 + _globals['_QUERYDERIVATIVEORDERSBYHASHESRESPONSE']._serialized_end=8000 + _globals['_QUERYDERIVATIVEMARKETSREQUEST']._serialized_start=8003 + _globals['_QUERYDERIVATIVEMARKETSREQUEST']._serialized_end=8141 + _globals['_PRICELEVEL']._serialized_start=8144 + _globals['_PRICELEVEL']._serialized_end=8280 + _globals['_PERPETUALMARKETSTATE']._serialized_start=8283 + _globals['_PERPETUALMARKETSTATE']._serialized_end=8464 + _globals['_FULLDERIVATIVEMARKET']._serialized_start=8467 + _globals['_FULLDERIVATIVEMARKET']._serialized_end=8889 + _globals['_QUERYDERIVATIVEMARKETSRESPONSE']._serialized_start=8891 + _globals['_QUERYDERIVATIVEMARKETSRESPONSE']._serialized_end=8994 + _globals['_QUERYDERIVATIVEMARKETREQUEST']._serialized_start=8996 + _globals['_QUERYDERIVATIVEMARKETREQUEST']._serialized_end=9055 + _globals['_QUERYDERIVATIVEMARKETRESPONSE']._serialized_start=9057 + _globals['_QUERYDERIVATIVEMARKETRESPONSE']._serialized_end=9157 + _globals['_QUERYDERIVATIVEMARKETADDRESSREQUEST']._serialized_start=9159 + _globals['_QUERYDERIVATIVEMARKETADDRESSREQUEST']._serialized_end=9225 + _globals['_QUERYDERIVATIVEMARKETADDRESSRESPONSE']._serialized_start=9227 + _globals['_QUERYDERIVATIVEMARKETADDRESSRESPONSE']._serialized_end=9328 + _globals['_QUERYSUBACCOUNTTRADENONCEREQUEST']._serialized_start=9330 + _globals['_QUERYSUBACCOUNTTRADENONCEREQUEST']._serialized_end=9401 + _globals['_QUERYSUBACCOUNTPOSITIONSREQUEST']._serialized_start=9403 + _globals['_QUERYSUBACCOUNTPOSITIONSREQUEST']._serialized_end=9473 + _globals['_QUERYSUBACCOUNTPOSITIONINMARKETREQUEST']._serialized_start=9475 + _globals['_QUERYSUBACCOUNTPOSITIONINMARKETREQUEST']._serialized_end=9581 + _globals['_QUERYSUBACCOUNTEFFECTIVEPOSITIONINMARKETREQUEST']._serialized_start=9583 + _globals['_QUERYSUBACCOUNTEFFECTIVEPOSITIONINMARKETREQUEST']._serialized_end=9698 + _globals['_QUERYSUBACCOUNTORDERMETADATAREQUEST']._serialized_start=9700 + _globals['_QUERYSUBACCOUNTORDERMETADATAREQUEST']._serialized_end=9774 + _globals['_QUERYSUBACCOUNTPOSITIONSRESPONSE']._serialized_start=9776 + _globals['_QUERYSUBACCOUNTPOSITIONSRESPONSE']._serialized_end=9881 + _globals['_QUERYSUBACCOUNTPOSITIONINMARKETRESPONSE']._serialized_start=9883 + _globals['_QUERYSUBACCOUNTPOSITIONINMARKETRESPONSE']._serialized_end=9985 + _globals['_EFFECTIVEPOSITION']._serialized_start=9988 + _globals['_EFFECTIVEPOSITION']._serialized_end=10247 + _globals['_QUERYSUBACCOUNTEFFECTIVEPOSITIONINMARKETRESPONSE']._serialized_start=10249 + _globals['_QUERYSUBACCOUNTEFFECTIVEPOSITIONINMARKETRESPONSE']._serialized_end=10369 + _globals['_QUERYPERPETUALMARKETINFOREQUEST']._serialized_start=10371 + _globals['_QUERYPERPETUALMARKETINFOREQUEST']._serialized_end=10433 + _globals['_QUERYPERPETUALMARKETINFORESPONSE']._serialized_start=10435 + _globals['_QUERYPERPETUALMARKETINFORESPONSE']._serialized_end=10539 + _globals['_QUERYEXPIRYFUTURESMARKETINFOREQUEST']._serialized_start=10541 + _globals['_QUERYEXPIRYFUTURESMARKETINFOREQUEST']._serialized_end=10607 + _globals['_QUERYEXPIRYFUTURESMARKETINFORESPONSE']._serialized_start=10609 + _globals['_QUERYEXPIRYFUTURESMARKETINFORESPONSE']._serialized_end=10721 + _globals['_QUERYPERPETUALMARKETFUNDINGREQUEST']._serialized_start=10723 + _globals['_QUERYPERPETUALMARKETFUNDINGREQUEST']._serialized_end=10788 + _globals['_QUERYPERPETUALMARKETFUNDINGRESPONSE']._serialized_start=10790 + _globals['_QUERYPERPETUALMARKETFUNDINGRESPONSE']._serialized_end=10902 + _globals['_QUERYSUBACCOUNTORDERMETADATARESPONSE']._serialized_start=10905 + _globals['_QUERYSUBACCOUNTORDERMETADATARESPONSE']._serialized_end=11039 + _globals['_QUERYSUBACCOUNTTRADENONCERESPONSE']._serialized_start=11041 + _globals['_QUERYSUBACCOUNTTRADENONCERESPONSE']._serialized_end=11098 + _globals['_QUERYMODULESTATEREQUEST']._serialized_start=11100 + _globals['_QUERYMODULESTATEREQUEST']._serialized_end=11125 + _globals['_QUERYMODULESTATERESPONSE']._serialized_start=11127 + _globals['_QUERYMODULESTATERESPONSE']._serialized_end=11212 + _globals['_QUERYPOSITIONSREQUEST']._serialized_start=11214 + _globals['_QUERYPOSITIONSREQUEST']._serialized_end=11237 + _globals['_QUERYPOSITIONSRESPONSE']._serialized_start=11239 + _globals['_QUERYPOSITIONSRESPONSE']._serialized_end=11334 + _globals['_QUERYTRADEREWARDPOINTSREQUEST']._serialized_start=11336 + _globals['_QUERYTRADEREWARDPOINTSREQUEST']._serialized_end=11449 + _globals['_QUERYTRADEREWARDPOINTSRESPONSE']._serialized_start=11452 + _globals['_QUERYTRADEREWARDPOINTSRESPONSE']._serialized_end=11584 + _globals['_QUERYTRADEREWARDCAMPAIGNREQUEST']._serialized_start=11586 + _globals['_QUERYTRADEREWARDCAMPAIGNREQUEST']._serialized_end=11619 + _globals['_QUERYTRADEREWARDCAMPAIGNRESPONSE']._serialized_start=11622 + _globals['_QUERYTRADEREWARDCAMPAIGNRESPONSE']._serialized_end=12244 + _globals['_QUERYISOPTEDOUTOFREWARDSREQUEST']._serialized_start=12246 + _globals['_QUERYISOPTEDOUTOFREWARDSREQUEST']._serialized_end=12305 + _globals['_QUERYISOPTEDOUTOFREWARDSRESPONSE']._serialized_start=12307 + _globals['_QUERYISOPTEDOUTOFREWARDSRESPONSE']._serialized_end=12375 + _globals['_QUERYOPTEDOUTOFREWARDSACCOUNTSREQUEST']._serialized_start=12377 + _globals['_QUERYOPTEDOUTOFREWARDSACCOUNTSREQUEST']._serialized_end=12416 + _globals['_QUERYOPTEDOUTOFREWARDSACCOUNTSRESPONSE']._serialized_start=12418 + _globals['_QUERYOPTEDOUTOFREWARDSACCOUNTSRESPONSE']._serialized_end=12486 + _globals['_QUERYFEEDISCOUNTACCOUNTINFOREQUEST']._serialized_start=12488 + _globals['_QUERYFEEDISCOUNTACCOUNTINFOREQUEST']._serialized_end=12550 + _globals['_QUERYFEEDISCOUNTACCOUNTINFORESPONSE']._serialized_start=12553 + _globals['_QUERYFEEDISCOUNTACCOUNTINFORESPONSE']._serialized_end=12776 + _globals['_QUERYFEEDISCOUNTSCHEDULEREQUEST']._serialized_start=12778 + _globals['_QUERYFEEDISCOUNTSCHEDULEREQUEST']._serialized_end=12811 + _globals['_QUERYFEEDISCOUNTSCHEDULERESPONSE']._serialized_start=12814 + _globals['_QUERYFEEDISCOUNTSCHEDULERESPONSE']._serialized_end=12944 + _globals['_QUERYBALANCEMISMATCHESREQUEST']._serialized_start=12946 + _globals['_QUERYBALANCEMISMATCHESREQUEST']._serialized_end=13010 + _globals['_BALANCEMISMATCH']._serialized_start=13013 + _globals['_BALANCEMISMATCH']._serialized_end=13431 + _globals['_QUERYBALANCEMISMATCHESRESPONSE']._serialized_start=13433 + _globals['_QUERYBALANCEMISMATCHESRESPONSE']._serialized_end=13552 + _globals['_QUERYBALANCEWITHBALANCEHOLDSREQUEST']._serialized_start=13554 + _globals['_QUERYBALANCEWITHBALANCEHOLDSREQUEST']._serialized_end=13591 + _globals['_BALANCEWITHMARGINHOLD']._serialized_start=13594 + _globals['_BALANCEWITHMARGINHOLD']._serialized_end=13873 + _globals['_QUERYBALANCEWITHBALANCEHOLDSRESPONSE']._serialized_start=13876 + _globals['_QUERYBALANCEWITHBALANCEHOLDSRESPONSE']._serialized_end=14021 + _globals['_QUERYFEEDISCOUNTTIERSTATISTICSREQUEST']._serialized_start=14023 + _globals['_QUERYFEEDISCOUNTTIERSTATISTICSREQUEST']._serialized_end=14062 + _globals['_TIERSTATISTIC']._serialized_start=14064 + _globals['_TIERSTATISTIC']._serialized_end=14121 + _globals['_QUERYFEEDISCOUNTTIERSTATISTICSRESPONSE']._serialized_start=14123 + _globals['_QUERYFEEDISCOUNTTIERSTATISTICSRESPONSE']._serialized_end=14233 + _globals['_MITOVAULTINFOSREQUEST']._serialized_start=14235 + _globals['_MITOVAULTINFOSREQUEST']._serialized_end=14258 + _globals['_MITOVAULTINFOSRESPONSE']._serialized_start=14261 + _globals['_MITOVAULTINFOSRESPONSE']._serialized_end=14457 + _globals['_QUERYMARKETIDFROMVAULTREQUEST']._serialized_start=14459 + _globals['_QUERYMARKETIDFROMVAULTREQUEST']._serialized_end=14527 + _globals['_QUERYMARKETIDFROMVAULTRESPONSE']._serialized_start=14529 + _globals['_QUERYMARKETIDFROMVAULTRESPONSE']._serialized_end=14590 + _globals['_QUERYHISTORICALTRADERECORDSREQUEST']._serialized_start=14592 + _globals['_QUERYHISTORICALTRADERECORDSREQUEST']._serialized_end=14657 + _globals['_QUERYHISTORICALTRADERECORDSRESPONSE']._serialized_start=14659 + _globals['_QUERYHISTORICALTRADERECORDSRESPONSE']._serialized_end=14770 + _globals['_TRADEHISTORYOPTIONS']._serialized_start=14773 + _globals['_TRADEHISTORYOPTIONS']._serialized_end=14956 + _globals['_QUERYMARKETVOLATILITYREQUEST']._serialized_start=14959 + _globals['_QUERYMARKETVOLATILITYREQUEST']._serialized_end=15114 + _globals['_QUERYMARKETVOLATILITYRESPONSE']._serialized_start=15117 + _globals['_QUERYMARKETVOLATILITYRESPONSE']._serialized_end=15371 + _globals['_QUERYBINARYMARKETSREQUEST']._serialized_start=15373 + _globals['_QUERYBINARYMARKETSREQUEST']._serialized_end=15424 + _globals['_QUERYBINARYMARKETSRESPONSE']._serialized_start=15426 + _globals['_QUERYBINARYMARKETSRESPONSE']._serialized_end=15524 + _globals['_QUERYTRADERDERIVATIVECONDITIONALORDERSREQUEST']._serialized_start=15526 + _globals['_QUERYTRADERDERIVATIVECONDITIONALORDERSREQUEST']._serialized_end=15639 + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER']._serialized_start=15642 + _globals['_TRIMMEDDERIVATIVECONDITIONALORDER']._serialized_end=16056 + _globals['_QUERYTRADERDERIVATIVECONDITIONALORDERSRESPONSE']._serialized_start=16059 + _globals['_QUERYTRADERDERIVATIVECONDITIONALORDERSRESPONSE']._serialized_end=16189 + _globals['_QUERYFULLSPOTORDERBOOKREQUEST']._serialized_start=16191 + _globals['_QUERYFULLSPOTORDERBOOKREQUEST']._serialized_end=16251 + _globals['_QUERYFULLSPOTORDERBOOKRESPONSE']._serialized_start=16254 + _globals['_QUERYFULLSPOTORDERBOOKRESPONSE']._serialized_end=16410 + _globals['_QUERYFULLDERIVATIVEORDERBOOKREQUEST']._serialized_start=16412 + _globals['_QUERYFULLDERIVATIVEORDERBOOKREQUEST']._serialized_end=16478 + _globals['_QUERYFULLDERIVATIVEORDERBOOKRESPONSE']._serialized_start=16481 + _globals['_QUERYFULLDERIVATIVEORDERBOOKRESPONSE']._serialized_end=16643 + _globals['_TRIMMEDLIMITORDER']._serialized_start=16646 + _globals['_TRIMMEDLIMITORDER']._serialized_end=16857 + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERREQUEST']._serialized_start=16859 + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERREQUEST']._serialized_end=16936 + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE']._serialized_start=16938 + _globals['_QUERYMARKETATOMICEXECUTIONFEEMULTIPLIERRESPONSE']._serialized_end=17056 + _globals['_QUERYACTIVESTAKEGRANTREQUEST']._serialized_start=17058 + _globals['_QUERYACTIVESTAKEGRANTREQUEST']._serialized_end=17114 + _globals['_QUERYACTIVESTAKEGRANTRESPONSE']._serialized_start=17117 + _globals['_QUERYACTIVESTAKEGRANTRESPONSE']._serialized_end=17286 + _globals['_QUERYGRANTAUTHORIZATIONREQUEST']._serialized_start=17288 + _globals['_QUERYGRANTAUTHORIZATIONREQUEST']._serialized_end=17372 + _globals['_QUERYGRANTAUTHORIZATIONRESPONSE']._serialized_start=17374 + _globals['_QUERYGRANTAUTHORIZATIONRESPONSE']._serialized_end=17462 + _globals['_QUERYGRANTAUTHORIZATIONSREQUEST']._serialized_start=17464 + _globals['_QUERYGRANTAUTHORIZATIONSREQUEST']._serialized_end=17523 + _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE']._serialized_start=17526 + _globals['_QUERYGRANTAUTHORIZATIONSRESPONSE']._serialized_end=17704 + _globals['_QUERY']._serialized_start=17849 + _globals['_QUERY']._serialized_end=30358 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/query_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/query_pb2_grpc.py new file mode 100644 index 00000000..37e5527c --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/query_pb2_grpc.py @@ -0,0 +1,2767 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from pyinjective.proto.injective.exchange.v2 import query_pb2 as injective_dot_exchange_dot_v2_dot_query__pb2 + + +class QueryStub(object): + """Query defines the gRPC querier service. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.L3DerivativeOrderBook = channel.unary_unary( + '/injective.exchange.v2.Query/L3DerivativeOrderBook', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullDerivativeOrderbookRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullDerivativeOrderbookResponse.FromString, + _registered_method=True) + self.L3SpotOrderBook = channel.unary_unary( + '/injective.exchange.v2.Query/L3SpotOrderBook', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotOrderbookRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotOrderbookResponse.FromString, + _registered_method=True) + self.QueryExchangeParams = channel.unary_unary( + '/injective.exchange.v2.Query/QueryExchangeParams', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeParamsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeParamsResponse.FromString, + _registered_method=True) + self.SubaccountDeposits = channel.unary_unary( + '/injective.exchange.v2.Query/SubaccountDeposits', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositsResponse.FromString, + _registered_method=True) + self.SubaccountDeposit = channel.unary_unary( + '/injective.exchange.v2.Query/SubaccountDeposit', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositResponse.FromString, + _registered_method=True) + self.ExchangeBalances = channel.unary_unary( + '/injective.exchange.v2.Query/ExchangeBalances', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeBalancesRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeBalancesResponse.FromString, + _registered_method=True) + self.AggregateVolume = channel.unary_unary( + '/injective.exchange.v2.Query/AggregateVolume', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumeRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumeResponse.FromString, + _registered_method=True) + self.AggregateVolumes = channel.unary_unary( + '/injective.exchange.v2.Query/AggregateVolumes', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumesRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumesResponse.FromString, + _registered_method=True) + self.AggregateMarketVolume = channel.unary_unary( + '/injective.exchange.v2.Query/AggregateMarketVolume', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumeRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumeResponse.FromString, + _registered_method=True) + self.AggregateMarketVolumes = channel.unary_unary( + '/injective.exchange.v2.Query/AggregateMarketVolumes', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumesRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumesResponse.FromString, + _registered_method=True) + self.DenomDecimal = channel.unary_unary( + '/injective.exchange.v2.Query/DenomDecimal', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalResponse.FromString, + _registered_method=True) + self.DenomDecimals = channel.unary_unary( + '/injective.exchange.v2.Query/DenomDecimals', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalsResponse.FromString, + _registered_method=True) + self.SpotMarkets = channel.unary_unary( + '/injective.exchange.v2.Query/SpotMarkets', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketsResponse.FromString, + _registered_method=True) + self.SpotMarket = channel.unary_unary( + '/injective.exchange.v2.Query/SpotMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketResponse.FromString, + _registered_method=True) + self.FullSpotMarkets = channel.unary_unary( + '/injective.exchange.v2.Query/FullSpotMarkets', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketsResponse.FromString, + _registered_method=True) + self.FullSpotMarket = channel.unary_unary( + '/injective.exchange.v2.Query/FullSpotMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketResponse.FromString, + _registered_method=True) + self.SpotOrderbook = channel.unary_unary( + '/injective.exchange.v2.Query/SpotOrderbook', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrderbookRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrderbookResponse.FromString, + _registered_method=True) + self.TraderSpotOrders = channel.unary_unary( + '/injective.exchange.v2.Query/TraderSpotOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersResponse.FromString, + _registered_method=True) + self.AccountAddressSpotOrders = channel.unary_unary( + '/injective.exchange.v2.Query/AccountAddressSpotOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressSpotOrdersRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressSpotOrdersResponse.FromString, + _registered_method=True) + self.SpotOrdersByHashes = channel.unary_unary( + '/injective.exchange.v2.Query/SpotOrdersByHashes', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrdersByHashesRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrdersByHashesResponse.FromString, + _registered_method=True) + self.SubaccountOrders = channel.unary_unary( + '/injective.exchange.v2.Query/SubaccountOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrdersRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrdersResponse.FromString, + _registered_method=True) + self.TraderSpotTransientOrders = channel.unary_unary( + '/injective.exchange.v2.Query/TraderSpotTransientOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersResponse.FromString, + _registered_method=True) + self.SpotMidPriceAndTOB = channel.unary_unary( + '/injective.exchange.v2.Query/SpotMidPriceAndTOB', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMidPriceAndTOBRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMidPriceAndTOBResponse.FromString, + _registered_method=True) + self.DerivativeMidPriceAndTOB = channel.unary_unary( + '/injective.exchange.v2.Query/DerivativeMidPriceAndTOB', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMidPriceAndTOBRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMidPriceAndTOBResponse.FromString, + _registered_method=True) + self.DerivativeOrderbook = channel.unary_unary( + '/injective.exchange.v2.Query/DerivativeOrderbook', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrderbookRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrderbookResponse.FromString, + _registered_method=True) + self.TraderDerivativeOrders = channel.unary_unary( + '/injective.exchange.v2.Query/TraderDerivativeOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersResponse.FromString, + _registered_method=True) + self.AccountAddressDerivativeOrders = channel.unary_unary( + '/injective.exchange.v2.Query/AccountAddressDerivativeOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressDerivativeOrdersRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressDerivativeOrdersResponse.FromString, + _registered_method=True) + self.DerivativeOrdersByHashes = channel.unary_unary( + '/injective.exchange.v2.Query/DerivativeOrdersByHashes', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrdersByHashesRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrdersByHashesResponse.FromString, + _registered_method=True) + self.TraderDerivativeTransientOrders = channel.unary_unary( + '/injective.exchange.v2.Query/TraderDerivativeTransientOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersResponse.FromString, + _registered_method=True) + self.DerivativeMarkets = channel.unary_unary( + '/injective.exchange.v2.Query/DerivativeMarkets', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketsResponse.FromString, + _registered_method=True) + self.DerivativeMarket = channel.unary_unary( + '/injective.exchange.v2.Query/DerivativeMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketResponse.FromString, + _registered_method=True) + self.DerivativeMarketAddress = channel.unary_unary( + '/injective.exchange.v2.Query/DerivativeMarketAddress', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketAddressRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketAddressResponse.FromString, + _registered_method=True) + self.SubaccountTradeNonce = channel.unary_unary( + '/injective.exchange.v2.Query/SubaccountTradeNonce', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountTradeNonceRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountTradeNonceResponse.FromString, + _registered_method=True) + self.ExchangeModuleState = channel.unary_unary( + '/injective.exchange.v2.Query/ExchangeModuleState', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryModuleStateRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryModuleStateResponse.FromString, + _registered_method=True) + self.Positions = channel.unary_unary( + '/injective.exchange.v2.Query/Positions', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPositionsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPositionsResponse.FromString, + _registered_method=True) + self.SubaccountPositions = channel.unary_unary( + '/injective.exchange.v2.Query/SubaccountPositions', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionsResponse.FromString, + _registered_method=True) + self.SubaccountPositionInMarket = channel.unary_unary( + '/injective.exchange.v2.Query/SubaccountPositionInMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionInMarketRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionInMarketResponse.FromString, + _registered_method=True) + self.SubaccountEffectivePositionInMarket = channel.unary_unary( + '/injective.exchange.v2.Query/SubaccountEffectivePositionInMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountEffectivePositionInMarketRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountEffectivePositionInMarketResponse.FromString, + _registered_method=True) + self.PerpetualMarketInfo = channel.unary_unary( + '/injective.exchange.v2.Query/PerpetualMarketInfo', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketInfoRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketInfoResponse.FromString, + _registered_method=True) + self.ExpiryFuturesMarketInfo = channel.unary_unary( + '/injective.exchange.v2.Query/ExpiryFuturesMarketInfo', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExpiryFuturesMarketInfoRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExpiryFuturesMarketInfoResponse.FromString, + _registered_method=True) + self.PerpetualMarketFunding = channel.unary_unary( + '/injective.exchange.v2.Query/PerpetualMarketFunding', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketFundingRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketFundingResponse.FromString, + _registered_method=True) + self.SubaccountOrderMetadata = channel.unary_unary( + '/injective.exchange.v2.Query/SubaccountOrderMetadata', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrderMetadataRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrderMetadataResponse.FromString, + _registered_method=True) + self.TradeRewardPoints = channel.unary_unary( + '/injective.exchange.v2.Query/TradeRewardPoints', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsResponse.FromString, + _registered_method=True) + self.PendingTradeRewardPoints = channel.unary_unary( + '/injective.exchange.v2.Query/PendingTradeRewardPoints', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsResponse.FromString, + _registered_method=True) + self.TradeRewardCampaign = channel.unary_unary( + '/injective.exchange.v2.Query/TradeRewardCampaign', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardCampaignRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardCampaignResponse.FromString, + _registered_method=True) + self.FeeDiscountAccountInfo = channel.unary_unary( + '/injective.exchange.v2.Query/FeeDiscountAccountInfo', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountAccountInfoRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountAccountInfoResponse.FromString, + _registered_method=True) + self.FeeDiscountSchedule = channel.unary_unary( + '/injective.exchange.v2.Query/FeeDiscountSchedule', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountScheduleRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountScheduleResponse.FromString, + _registered_method=True) + self.BalanceMismatches = channel.unary_unary( + '/injective.exchange.v2.Query/BalanceMismatches', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceMismatchesRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceMismatchesResponse.FromString, + _registered_method=True) + self.BalanceWithBalanceHolds = channel.unary_unary( + '/injective.exchange.v2.Query/BalanceWithBalanceHolds', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceWithBalanceHoldsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceWithBalanceHoldsResponse.FromString, + _registered_method=True) + self.FeeDiscountTierStatistics = channel.unary_unary( + '/injective.exchange.v2.Query/FeeDiscountTierStatistics', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountTierStatisticsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountTierStatisticsResponse.FromString, + _registered_method=True) + self.MitoVaultInfos = channel.unary_unary( + '/injective.exchange.v2.Query/MitoVaultInfos', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.MitoVaultInfosRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.MitoVaultInfosResponse.FromString, + _registered_method=True) + self.QueryMarketIDFromVault = channel.unary_unary( + '/injective.exchange.v2.Query/QueryMarketIDFromVault', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketIDFromVaultRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketIDFromVaultResponse.FromString, + _registered_method=True) + self.HistoricalTradeRecords = channel.unary_unary( + '/injective.exchange.v2.Query/HistoricalTradeRecords', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryHistoricalTradeRecordsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryHistoricalTradeRecordsResponse.FromString, + _registered_method=True) + self.IsOptedOutOfRewards = channel.unary_unary( + '/injective.exchange.v2.Query/IsOptedOutOfRewards', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryIsOptedOutOfRewardsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryIsOptedOutOfRewardsResponse.FromString, + _registered_method=True) + self.OptedOutOfRewardsAccounts = channel.unary_unary( + '/injective.exchange.v2.Query/OptedOutOfRewardsAccounts', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryOptedOutOfRewardsAccountsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryOptedOutOfRewardsAccountsResponse.FromString, + _registered_method=True) + self.MarketVolatility = channel.unary_unary( + '/injective.exchange.v2.Query/MarketVolatility', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketVolatilityRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketVolatilityResponse.FromString, + _registered_method=True) + self.BinaryOptionsMarkets = channel.unary_unary( + '/injective.exchange.v2.Query/BinaryOptionsMarkets', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBinaryMarketsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBinaryMarketsResponse.FromString, + _registered_method=True) + self.TraderDerivativeConditionalOrders = channel.unary_unary( + '/injective.exchange.v2.Query/TraderDerivativeConditionalOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeConditionalOrdersRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeConditionalOrdersResponse.FromString, + _registered_method=True) + self.MarketAtomicExecutionFeeMultiplier = channel.unary_unary( + '/injective.exchange.v2.Query/MarketAtomicExecutionFeeMultiplier', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketAtomicExecutionFeeMultiplierRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketAtomicExecutionFeeMultiplierResponse.FromString, + _registered_method=True) + self.ActiveStakeGrant = channel.unary_unary( + '/injective.exchange.v2.Query/ActiveStakeGrant', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryActiveStakeGrantRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryActiveStakeGrantResponse.FromString, + _registered_method=True) + self.GrantAuthorization = channel.unary_unary( + '/injective.exchange.v2.Query/GrantAuthorization', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationResponse.FromString, + _registered_method=True) + self.GrantAuthorizations = channel.unary_unary( + '/injective.exchange.v2.Query/GrantAuthorizations', + request_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationsRequest.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationsResponse.FromString, + _registered_method=True) + + +class QueryServicer(object): + """Query defines the gRPC querier service. + """ + + def L3DerivativeOrderBook(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def L3SpotOrderBook(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def QueryExchangeParams(self, request, context): + """Retrieves exchange params + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountDeposits(self, request, context): + """Retrieves a Subaccount's Deposits + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountDeposit(self, request, context): + """Retrieves a Subaccount's Deposits + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ExchangeBalances(self, request, context): + """Retrieves all of the balances of all users on the exchange. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AggregateVolume(self, request, context): + """Retrieves the aggregate volumes for the specified account or subaccount + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AggregateVolumes(self, request, context): + """Retrieves the aggregate volumes for specified accounts + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AggregateMarketVolume(self, request, context): + """Retrieves the aggregate volume for the specified market + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AggregateMarketVolumes(self, request, context): + """Retrieves the aggregate market volumes for specified markets + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DenomDecimal(self, request, context): + """Retrieves the denom decimals for a denom. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DenomDecimals(self, request, context): + """Retrieves the denom decimals for multiple denoms. Returns all denom + decimals if unspecified. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SpotMarkets(self, request, context): + """Retrieves a list of spot markets. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SpotMarket(self, request, context): + """Retrieves a spot market by ticker + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def FullSpotMarkets(self, request, context): + """Retrieves a list of spot markets with extra information. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def FullSpotMarket(self, request, context): + """Retrieves a spot market with extra information. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SpotOrderbook(self, request, context): + """Retrieves a spot market's orderbook by marketID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TraderSpotOrders(self, request, context): + """Retrieves a trader's spot orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AccountAddressSpotOrders(self, request, context): + """Retrieves all account address spot orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SpotOrdersByHashes(self, request, context): + """Retrieves spot orders corresponding to specified order hashes for a given + subaccountID and marketID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountOrders(self, request, context): + """Retrieves subaccount's orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TraderSpotTransientOrders(self, request, context): + """Retrieves a trader's transient spot orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SpotMidPriceAndTOB(self, request, context): + """Retrieves a spot market's mid-price + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DerivativeMidPriceAndTOB(self, request, context): + """Retrieves a derivative market's mid-price + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DerivativeOrderbook(self, request, context): + """Retrieves a derivative market's orderbook by marketID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TraderDerivativeOrders(self, request, context): + """Retrieves a trader's derivative orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AccountAddressDerivativeOrders(self, request, context): + """Retrieves all account address derivative orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DerivativeOrdersByHashes(self, request, context): + """Retrieves a trader's derivative orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TraderDerivativeTransientOrders(self, request, context): + """Retrieves a trader's transient derivative orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DerivativeMarkets(self, request, context): + """Retrieves a list of derivative markets. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DerivativeMarket(self, request, context): + """Retrieves a derivative market by ticker + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DerivativeMarketAddress(self, request, context): + """Retrieves a derivative market's corresponding address for fees that + contribute to the market's insurance fund + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountTradeNonce(self, request, context): + """Retrieves a subaccount's trade nonce + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ExchangeModuleState(self, request, context): + """Retrieves the entire exchange module's state + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Positions(self, request, context): + """Retrieves the entire exchange module's positions + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountPositions(self, request, context): + """Retrieves subaccount's positions + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountPositionInMarket(self, request, context): + """Retrieves subaccount's position in market + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountEffectivePositionInMarket(self, request, context): + """Retrieves subaccount's position in market + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def PerpetualMarketInfo(self, request, context): + """Retrieves perpetual market info + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ExpiryFuturesMarketInfo(self, request, context): + """Retrieves expiry market info + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def PerpetualMarketFunding(self, request, context): + """Retrieves perpetual market funding + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountOrderMetadata(self, request, context): + """Retrieves subaccount's order metadata + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TradeRewardPoints(self, request, context): + """Retrieves the account and total trade rewards points + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def PendingTradeRewardPoints(self, request, context): + """Retrieves the pending account and total trade rewards points + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TradeRewardCampaign(self, request, context): + """Retrieves the trade reward campaign + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def FeeDiscountAccountInfo(self, request, context): + """Retrieves the account's fee discount info + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def FeeDiscountSchedule(self, request, context): + """Retrieves the fee discount schedule + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BalanceMismatches(self, request, context): + """Retrieves mismatches between available vs. total balance + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BalanceWithBalanceHolds(self, request, context): + """Retrieves available and total balances with balance holds + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def FeeDiscountTierStatistics(self, request, context): + """Retrieves fee discount tier stats + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def MitoVaultInfos(self, request, context): + """Retrieves market making pool info + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def QueryMarketIDFromVault(self, request, context): + """QueryMarketIDFromVault returns the market ID for a given vault subaccount + ID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def HistoricalTradeRecords(self, request, context): + """Retrieves historical trade records for a given market ID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def IsOptedOutOfRewards(self, request, context): + """Retrieves if the account is opted out of rewards + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def OptedOutOfRewardsAccounts(self, request, context): + """Retrieves all accounts opted out of rewards + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def MarketVolatility(self, request, context): + """MarketVolatility computes the volatility for spot and derivative markets + trading history. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BinaryOptionsMarkets(self, request, context): + """Retrieves a spot market's orderbook by marketID + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TraderDerivativeConditionalOrders(self, request, context): + """Retrieves a trader's derivative conditional orders + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def MarketAtomicExecutionFeeMultiplier(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ActiveStakeGrant(self, request, context): + """Retrieves the active stake grant for a grantee + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GrantAuthorization(self, request, context): + """Retrieves the grant authorization amount for a granter and grantee + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GrantAuthorizations(self, request, context): + """Retrieves the grant authorization amount for a granter and grantee + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_QueryServicer_to_server(servicer, server): + rpc_method_handlers = { + 'L3DerivativeOrderBook': grpc.unary_unary_rpc_method_handler( + servicer.L3DerivativeOrderBook, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullDerivativeOrderbookRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullDerivativeOrderbookResponse.SerializeToString, + ), + 'L3SpotOrderBook': grpc.unary_unary_rpc_method_handler( + servicer.L3SpotOrderBook, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotOrderbookRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotOrderbookResponse.SerializeToString, + ), + 'QueryExchangeParams': grpc.unary_unary_rpc_method_handler( + servicer.QueryExchangeParams, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeParamsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeParamsResponse.SerializeToString, + ), + 'SubaccountDeposits': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountDeposits, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositsResponse.SerializeToString, + ), + 'SubaccountDeposit': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountDeposit, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositResponse.SerializeToString, + ), + 'ExchangeBalances': grpc.unary_unary_rpc_method_handler( + servicer.ExchangeBalances, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeBalancesRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeBalancesResponse.SerializeToString, + ), + 'AggregateVolume': grpc.unary_unary_rpc_method_handler( + servicer.AggregateVolume, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumeRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumeResponse.SerializeToString, + ), + 'AggregateVolumes': grpc.unary_unary_rpc_method_handler( + servicer.AggregateVolumes, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumesRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumesResponse.SerializeToString, + ), + 'AggregateMarketVolume': grpc.unary_unary_rpc_method_handler( + servicer.AggregateMarketVolume, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumeRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumeResponse.SerializeToString, + ), + 'AggregateMarketVolumes': grpc.unary_unary_rpc_method_handler( + servicer.AggregateMarketVolumes, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumesRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumesResponse.SerializeToString, + ), + 'DenomDecimal': grpc.unary_unary_rpc_method_handler( + servicer.DenomDecimal, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalResponse.SerializeToString, + ), + 'DenomDecimals': grpc.unary_unary_rpc_method_handler( + servicer.DenomDecimals, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalsResponse.SerializeToString, + ), + 'SpotMarkets': grpc.unary_unary_rpc_method_handler( + servicer.SpotMarkets, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketsResponse.SerializeToString, + ), + 'SpotMarket': grpc.unary_unary_rpc_method_handler( + servicer.SpotMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketResponse.SerializeToString, + ), + 'FullSpotMarkets': grpc.unary_unary_rpc_method_handler( + servicer.FullSpotMarkets, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketsResponse.SerializeToString, + ), + 'FullSpotMarket': grpc.unary_unary_rpc_method_handler( + servicer.FullSpotMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketResponse.SerializeToString, + ), + 'SpotOrderbook': grpc.unary_unary_rpc_method_handler( + servicer.SpotOrderbook, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrderbookRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrderbookResponse.SerializeToString, + ), + 'TraderSpotOrders': grpc.unary_unary_rpc_method_handler( + servicer.TraderSpotOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersResponse.SerializeToString, + ), + 'AccountAddressSpotOrders': grpc.unary_unary_rpc_method_handler( + servicer.AccountAddressSpotOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressSpotOrdersRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressSpotOrdersResponse.SerializeToString, + ), + 'SpotOrdersByHashes': grpc.unary_unary_rpc_method_handler( + servicer.SpotOrdersByHashes, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrdersByHashesRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrdersByHashesResponse.SerializeToString, + ), + 'SubaccountOrders': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrdersRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrdersResponse.SerializeToString, + ), + 'TraderSpotTransientOrders': grpc.unary_unary_rpc_method_handler( + servicer.TraderSpotTransientOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersResponse.SerializeToString, + ), + 'SpotMidPriceAndTOB': grpc.unary_unary_rpc_method_handler( + servicer.SpotMidPriceAndTOB, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMidPriceAndTOBRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMidPriceAndTOBResponse.SerializeToString, + ), + 'DerivativeMidPriceAndTOB': grpc.unary_unary_rpc_method_handler( + servicer.DerivativeMidPriceAndTOB, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMidPriceAndTOBRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMidPriceAndTOBResponse.SerializeToString, + ), + 'DerivativeOrderbook': grpc.unary_unary_rpc_method_handler( + servicer.DerivativeOrderbook, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrderbookRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrderbookResponse.SerializeToString, + ), + 'TraderDerivativeOrders': grpc.unary_unary_rpc_method_handler( + servicer.TraderDerivativeOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersResponse.SerializeToString, + ), + 'AccountAddressDerivativeOrders': grpc.unary_unary_rpc_method_handler( + servicer.AccountAddressDerivativeOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressDerivativeOrdersRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressDerivativeOrdersResponse.SerializeToString, + ), + 'DerivativeOrdersByHashes': grpc.unary_unary_rpc_method_handler( + servicer.DerivativeOrdersByHashes, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrdersByHashesRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrdersByHashesResponse.SerializeToString, + ), + 'TraderDerivativeTransientOrders': grpc.unary_unary_rpc_method_handler( + servicer.TraderDerivativeTransientOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersResponse.SerializeToString, + ), + 'DerivativeMarkets': grpc.unary_unary_rpc_method_handler( + servicer.DerivativeMarkets, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketsResponse.SerializeToString, + ), + 'DerivativeMarket': grpc.unary_unary_rpc_method_handler( + servicer.DerivativeMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketResponse.SerializeToString, + ), + 'DerivativeMarketAddress': grpc.unary_unary_rpc_method_handler( + servicer.DerivativeMarketAddress, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketAddressRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketAddressResponse.SerializeToString, + ), + 'SubaccountTradeNonce': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountTradeNonce, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountTradeNonceRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountTradeNonceResponse.SerializeToString, + ), + 'ExchangeModuleState': grpc.unary_unary_rpc_method_handler( + servicer.ExchangeModuleState, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryModuleStateRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryModuleStateResponse.SerializeToString, + ), + 'Positions': grpc.unary_unary_rpc_method_handler( + servicer.Positions, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPositionsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPositionsResponse.SerializeToString, + ), + 'SubaccountPositions': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountPositions, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionsResponse.SerializeToString, + ), + 'SubaccountPositionInMarket': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountPositionInMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionInMarketRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionInMarketResponse.SerializeToString, + ), + 'SubaccountEffectivePositionInMarket': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountEffectivePositionInMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountEffectivePositionInMarketRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountEffectivePositionInMarketResponse.SerializeToString, + ), + 'PerpetualMarketInfo': grpc.unary_unary_rpc_method_handler( + servicer.PerpetualMarketInfo, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketInfoRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketInfoResponse.SerializeToString, + ), + 'ExpiryFuturesMarketInfo': grpc.unary_unary_rpc_method_handler( + servicer.ExpiryFuturesMarketInfo, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExpiryFuturesMarketInfoRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryExpiryFuturesMarketInfoResponse.SerializeToString, + ), + 'PerpetualMarketFunding': grpc.unary_unary_rpc_method_handler( + servicer.PerpetualMarketFunding, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketFundingRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketFundingResponse.SerializeToString, + ), + 'SubaccountOrderMetadata': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountOrderMetadata, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrderMetadataRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrderMetadataResponse.SerializeToString, + ), + 'TradeRewardPoints': grpc.unary_unary_rpc_method_handler( + servicer.TradeRewardPoints, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsResponse.SerializeToString, + ), + 'PendingTradeRewardPoints': grpc.unary_unary_rpc_method_handler( + servicer.PendingTradeRewardPoints, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsResponse.SerializeToString, + ), + 'TradeRewardCampaign': grpc.unary_unary_rpc_method_handler( + servicer.TradeRewardCampaign, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardCampaignRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardCampaignResponse.SerializeToString, + ), + 'FeeDiscountAccountInfo': grpc.unary_unary_rpc_method_handler( + servicer.FeeDiscountAccountInfo, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountAccountInfoRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountAccountInfoResponse.SerializeToString, + ), + 'FeeDiscountSchedule': grpc.unary_unary_rpc_method_handler( + servicer.FeeDiscountSchedule, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountScheduleRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountScheduleResponse.SerializeToString, + ), + 'BalanceMismatches': grpc.unary_unary_rpc_method_handler( + servicer.BalanceMismatches, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceMismatchesRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceMismatchesResponse.SerializeToString, + ), + 'BalanceWithBalanceHolds': grpc.unary_unary_rpc_method_handler( + servicer.BalanceWithBalanceHolds, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceWithBalanceHoldsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceWithBalanceHoldsResponse.SerializeToString, + ), + 'FeeDiscountTierStatistics': grpc.unary_unary_rpc_method_handler( + servicer.FeeDiscountTierStatistics, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountTierStatisticsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountTierStatisticsResponse.SerializeToString, + ), + 'MitoVaultInfos': grpc.unary_unary_rpc_method_handler( + servicer.MitoVaultInfos, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.MitoVaultInfosRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.MitoVaultInfosResponse.SerializeToString, + ), + 'QueryMarketIDFromVault': grpc.unary_unary_rpc_method_handler( + servicer.QueryMarketIDFromVault, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketIDFromVaultRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketIDFromVaultResponse.SerializeToString, + ), + 'HistoricalTradeRecords': grpc.unary_unary_rpc_method_handler( + servicer.HistoricalTradeRecords, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryHistoricalTradeRecordsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryHistoricalTradeRecordsResponse.SerializeToString, + ), + 'IsOptedOutOfRewards': grpc.unary_unary_rpc_method_handler( + servicer.IsOptedOutOfRewards, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryIsOptedOutOfRewardsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryIsOptedOutOfRewardsResponse.SerializeToString, + ), + 'OptedOutOfRewardsAccounts': grpc.unary_unary_rpc_method_handler( + servicer.OptedOutOfRewardsAccounts, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryOptedOutOfRewardsAccountsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryOptedOutOfRewardsAccountsResponse.SerializeToString, + ), + 'MarketVolatility': grpc.unary_unary_rpc_method_handler( + servicer.MarketVolatility, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketVolatilityRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketVolatilityResponse.SerializeToString, + ), + 'BinaryOptionsMarkets': grpc.unary_unary_rpc_method_handler( + servicer.BinaryOptionsMarkets, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBinaryMarketsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryBinaryMarketsResponse.SerializeToString, + ), + 'TraderDerivativeConditionalOrders': grpc.unary_unary_rpc_method_handler( + servicer.TraderDerivativeConditionalOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeConditionalOrdersRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeConditionalOrdersResponse.SerializeToString, + ), + 'MarketAtomicExecutionFeeMultiplier': grpc.unary_unary_rpc_method_handler( + servicer.MarketAtomicExecutionFeeMultiplier, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketAtomicExecutionFeeMultiplierRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketAtomicExecutionFeeMultiplierResponse.SerializeToString, + ), + 'ActiveStakeGrant': grpc.unary_unary_rpc_method_handler( + servicer.ActiveStakeGrant, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryActiveStakeGrantRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryActiveStakeGrantResponse.SerializeToString, + ), + 'GrantAuthorization': grpc.unary_unary_rpc_method_handler( + servicer.GrantAuthorization, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationResponse.SerializeToString, + ), + 'GrantAuthorizations': grpc.unary_unary_rpc_method_handler( + servicer.GrantAuthorizations, + request_deserializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationsRequest.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationsResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'injective.exchange.v2.Query', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('injective.exchange.v2.Query', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class Query(object): + """Query defines the gRPC querier service. + """ + + @staticmethod + def L3DerivativeOrderBook(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/L3DerivativeOrderBook', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullDerivativeOrderbookRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullDerivativeOrderbookResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def L3SpotOrderBook(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/L3SpotOrderBook', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotOrderbookRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotOrderbookResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def QueryExchangeParams(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/QueryExchangeParams', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeParamsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeParamsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountDeposits(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SubaccountDeposits', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountDeposit(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SubaccountDeposit', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountDepositResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def ExchangeBalances(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/ExchangeBalances', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeBalancesRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryExchangeBalancesResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AggregateVolume(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/AggregateVolume', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumeRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AggregateVolumes(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/AggregateVolumes', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumesRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateVolumesResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AggregateMarketVolume(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/AggregateMarketVolume', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumeRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AggregateMarketVolumes(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/AggregateMarketVolumes', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumesRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAggregateMarketVolumesResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DenomDecimal(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/DenomDecimal', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DenomDecimals(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/DenomDecimals', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDenomDecimalsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SpotMarkets(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SpotMarkets', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SpotMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SpotMarket', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def FullSpotMarkets(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/FullSpotMarkets', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def FullSpotMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/FullSpotMarket', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFullSpotMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SpotOrderbook(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SpotOrderbook', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrderbookRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrderbookResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def TraderSpotOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/TraderSpotOrders', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AccountAddressSpotOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/AccountAddressSpotOrders', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressSpotOrdersRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressSpotOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SpotOrdersByHashes(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SpotOrdersByHashes', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrdersByHashesRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotOrdersByHashesResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SubaccountOrders', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrdersRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def TraderSpotTransientOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/TraderSpotTransientOrders', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderSpotOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SpotMidPriceAndTOB(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SpotMidPriceAndTOB', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMidPriceAndTOBRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySpotMidPriceAndTOBResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DerivativeMidPriceAndTOB(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/DerivativeMidPriceAndTOB', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMidPriceAndTOBRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMidPriceAndTOBResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DerivativeOrderbook(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/DerivativeOrderbook', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrderbookRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrderbookResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def TraderDerivativeOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/TraderDerivativeOrders', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AccountAddressDerivativeOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/AccountAddressDerivativeOrders', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressDerivativeOrdersRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryAccountAddressDerivativeOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DerivativeOrdersByHashes(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/DerivativeOrdersByHashes', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrdersByHashesRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeOrdersByHashesResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def TraderDerivativeTransientOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/TraderDerivativeTransientOrders', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DerivativeMarkets(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/DerivativeMarkets', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DerivativeMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/DerivativeMarket', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DerivativeMarketAddress(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/DerivativeMarketAddress', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketAddressRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryDerivativeMarketAddressResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountTradeNonce(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SubaccountTradeNonce', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountTradeNonceRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountTradeNonceResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def ExchangeModuleState(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/ExchangeModuleState', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryModuleStateRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryModuleStateResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def Positions(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/Positions', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryPositionsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryPositionsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountPositions(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SubaccountPositions', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountPositionInMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SubaccountPositionInMarket', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionInMarketRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountPositionInMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountEffectivePositionInMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SubaccountEffectivePositionInMarket', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountEffectivePositionInMarketRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountEffectivePositionInMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def PerpetualMarketInfo(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/PerpetualMarketInfo', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketInfoRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketInfoResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def ExpiryFuturesMarketInfo(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/ExpiryFuturesMarketInfo', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryExpiryFuturesMarketInfoRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryExpiryFuturesMarketInfoResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def PerpetualMarketFunding(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/PerpetualMarketFunding', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketFundingRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryPerpetualMarketFundingResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountOrderMetadata(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/SubaccountOrderMetadata', + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrderMetadataRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QuerySubaccountOrderMetadataResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def TradeRewardPoints(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/TradeRewardPoints', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def PendingTradeRewardPoints(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/PendingTradeRewardPoints', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardPointsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def TradeRewardCampaign(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/TradeRewardCampaign', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardCampaignRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTradeRewardCampaignResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def FeeDiscountAccountInfo(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/FeeDiscountAccountInfo', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountAccountInfoRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountAccountInfoResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def FeeDiscountSchedule(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/FeeDiscountSchedule', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountScheduleRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountScheduleResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BalanceMismatches(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/BalanceMismatches', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceMismatchesRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceMismatchesResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BalanceWithBalanceHolds(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/BalanceWithBalanceHolds', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceWithBalanceHoldsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryBalanceWithBalanceHoldsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def FeeDiscountTierStatistics(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/FeeDiscountTierStatistics', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountTierStatisticsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryFeeDiscountTierStatisticsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def MitoVaultInfos(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/MitoVaultInfos', + injective_dot_exchange_dot_v2_dot_query__pb2.MitoVaultInfosRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.MitoVaultInfosResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def QueryMarketIDFromVault(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/QueryMarketIDFromVault', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketIDFromVaultRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketIDFromVaultResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def HistoricalTradeRecords(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/HistoricalTradeRecords', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryHistoricalTradeRecordsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryHistoricalTradeRecordsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def IsOptedOutOfRewards(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/IsOptedOutOfRewards', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryIsOptedOutOfRewardsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryIsOptedOutOfRewardsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def OptedOutOfRewardsAccounts(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/OptedOutOfRewardsAccounts', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryOptedOutOfRewardsAccountsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryOptedOutOfRewardsAccountsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def MarketVolatility(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/MarketVolatility', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketVolatilityRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketVolatilityResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BinaryOptionsMarkets(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/BinaryOptionsMarkets', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryBinaryMarketsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryBinaryMarketsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def TraderDerivativeConditionalOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/TraderDerivativeConditionalOrders', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeConditionalOrdersRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryTraderDerivativeConditionalOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def MarketAtomicExecutionFeeMultiplier(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/MarketAtomicExecutionFeeMultiplier', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketAtomicExecutionFeeMultiplierRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryMarketAtomicExecutionFeeMultiplierResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def ActiveStakeGrant(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/ActiveStakeGrant', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryActiveStakeGrantRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryActiveStakeGrantResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GrantAuthorization(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/GrantAuthorization', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GrantAuthorizations(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Query/GrantAuthorizations', + injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationsRequest.SerializeToString, + injective_dot_exchange_dot_v2_dot_query__pb2.QueryGrantAuthorizationsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/pyinjective/proto/injective/exchange/v2/tx_pb2.py b/pyinjective/proto/injective/exchange/v2/tx_pb2.py new file mode 100644 index 00000000..c89e8ff9 --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/tx_pb2.py @@ -0,0 +1,441 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/exchange/v2/tx.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as cosmos_dot_base_dot_v1beta1_dot_coin__pb2 +from pyinjective.proto.cosmos.distribution.v1beta1 import distribution_pb2 as cosmos_dot_distribution_dot_v1beta1_dot_distribution__pb2 +from pyinjective.proto.cosmos.msg.v1 import msg_pb2 as cosmos_dot_msg_dot_v1_dot_msg__pb2 +from pyinjective.proto.cosmos_proto import cosmos_pb2 as cosmos__proto_dot_cosmos__pb2 +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as injective_dot_exchange_dot_v2_dot_exchange__pb2 +from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 +from pyinjective.proto.injective.exchange.v2 import market_pb2 as injective_dot_exchange_dot_v2_dot_market__pb2 +from pyinjective.proto.injective.oracle.v1beta1 import oracle_pb2 as injective_dot_oracle_dot_v1beta1_dot_oracle__pb2 +from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1einjective/exchange/v2/tx.proto\x12\x15injective.exchange.v2\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a.cosmos/distribution/v1beta1/distribution.proto\x1a\x17\x63osmos/msg/v1/msg.proto\x1a\x19\x63osmos_proto/cosmos.proto\x1a\x14gogoproto/gogo.proto\x1a$injective/exchange/v2/exchange.proto\x1a!injective/exchange/v2/order.proto\x1a\"injective/exchange/v2/market.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a\x11\x61mino/amino.proto\"\xa3\x03\n\x13MsgUpdateSpotMarket\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1d\n\nnew_ticker\x18\x03 \x01(\tR\tnewTicker\x12Y\n\x17new_min_price_tick_size\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13newMinPriceTickSize\x12_\n\x1anew_min_quantity_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16newMinQuantityTickSize\x12M\n\x10new_min_notional\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0enewMinNotional:/\xe8\xa0\x1f\x00\x82\xe7\xb0*\x05\x61\x64min\x8a\xe7\xb0*\x1c\x65xchange/MsgUpdateSpotMarket\"\x1d\n\x1bMsgUpdateSpotMarketResponse\"\xf7\x04\n\x19MsgUpdateDerivativeMarket\x12\x14\n\x05\x61\x64min\x18\x01 \x01(\tR\x05\x61\x64min\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1d\n\nnew_ticker\x18\x03 \x01(\tR\tnewTicker\x12Y\n\x17new_min_price_tick_size\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13newMinPriceTickSize\x12_\n\x1anew_min_quantity_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16newMinQuantityTickSize\x12M\n\x10new_min_notional\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0enewMinNotional\x12\\\n\x18new_initial_margin_ratio\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x15newInitialMarginRatio\x12\x64\n\x1cnew_maintenance_margin_ratio\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19newMaintenanceMarginRatio:9\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x05\x61\x64min\x8a\xe7\xb0*\"exchange/MsgUpdateDerivativeMarket\"#\n!MsgUpdateDerivativeMarketResponse\"\xb3\x01\n\x0fMsgUpdateParams\x12\x36\n\tauthority\x18\x01 \x01(\tB\x18\xd2\xb4-\x14\x63osmos.AddressStringR\tauthority\x12;\n\x06params\x18\x02 \x01(\x0b\x32\x1d.injective.exchange.v2.ParamsB\x04\xc8\xde\x1f\x00R\x06params:+\x82\xe7\xb0*\tauthority\x8a\xe7\xb0*\x18\x65xchange/MsgUpdateParams\"\x19\n\x17MsgUpdateParamsResponse\"\xaf\x01\n\nMsgDeposit\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:+\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x13\x65xchange/MsgDeposit\"\x14\n\x12MsgDepositResponse\"\xb1\x01\n\x0bMsgWithdraw\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:,\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x14\x65xchange/MsgWithdraw\"\x15\n\x13MsgWithdrawResponse\"\xa9\x01\n\x17MsgCreateSpotLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12<\n\x05order\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.SpotOrderB\x04\xc8\xde\x1f\x00R\x05order:8\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0* exchange/MsgCreateSpotLimitOrder\"\\\n\x1fMsgCreateSpotLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xb7\x01\n\x1dMsgBatchCreateSpotLimitOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12>\n\x06orders\x18\x02 \x03(\x0b\x32 .injective.exchange.v2.SpotOrderB\x04\xc8\xde\x1f\x00R\x06orders:>\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*&exchange/MsgBatchCreateSpotLimitOrders\"\xb2\x01\n%MsgBatchCreateSpotLimitOrdersResponse\x12!\n\x0corder_hashes\x18\x01 \x03(\tR\x0borderHashes\x12.\n\x13\x63reated_orders_cids\x18\x02 \x03(\tR\x11\x63reatedOrdersCids\x12,\n\x12\x66\x61iled_orders_cids\x18\x03 \x03(\tR\x10\x66\x61iledOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\x8b\x04\n\x1aMsgInstantSpotMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x03 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x04 \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional\x12#\n\rbase_decimals\x18\x08 \x01(\rR\x0c\x62\x61seDecimals\x12%\n\x0equote_decimals\x18\t \x01(\rR\rquoteDecimals:;\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*#exchange/MsgInstantSpotMarketLaunch\"$\n\"MsgInstantSpotMarketLaunchResponse\"\xb1\x07\n\x1fMsgInstantPerpetualMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x04 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x05 \x01(\tR\x0boracleQuote\x12.\n\x13oracle_scale_factor\x18\x06 \x01(\rR\x11oracleScaleFactor\x12\x45\n\x0boracle_type\x18\x07 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12I\n\x0emaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12U\n\x14initial_margin_ratio\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12R\n\x13min_price_tick_size\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:@\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*(exchange/MsgInstantPerpetualMarketLaunch\")\n\'MsgInstantPerpetualMarketLaunchResponse\"\x89\x07\n#MsgInstantBinaryOptionsMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12#\n\roracle_symbol\x18\x03 \x01(\tR\x0coracleSymbol\x12\'\n\x0foracle_provider\x18\x04 \x01(\tR\x0eoracleProvider\x12\x45\n\x0boracle_type\x18\x05 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x06 \x01(\rR\x11oracleScaleFactor\x12I\n\x0emaker_fee_rate\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\x08 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12\x31\n\x14\x65xpiration_timestamp\x18\t \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\n \x01(\x03R\x13settlementTimestamp\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x1f\n\x0bquote_denom\x18\x0c \x01(\tR\nquoteDenom\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:D\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgInstantBinaryOptionsMarketLaunch\"-\n+MsgInstantBinaryOptionsMarketLaunchResponse\"\xd1\x07\n#MsgInstantExpiryFuturesMarketLaunch\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x16\n\x06ticker\x18\x02 \x01(\tR\x06ticker\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12\x1f\n\x0boracle_base\x18\x04 \x01(\tR\noracleBase\x12!\n\x0coracle_quote\x18\x05 \x01(\tR\x0boracleQuote\x12\x45\n\x0boracle_type\x18\x06 \x01(\x0e\x32$.injective.oracle.v1beta1.OracleTypeR\noracleType\x12.\n\x13oracle_scale_factor\x18\x07 \x01(\rR\x11oracleScaleFactor\x12\x16\n\x06\x65xpiry\x18\x08 \x01(\x03R\x06\x65xpiry\x12I\n\x0emaker_fee_rate\x18\t \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0cmakerFeeRate\x12I\n\x0etaker_fee_rate\x18\n \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0ctakerFeeRate\x12U\n\x14initial_margin_ratio\x18\x0b \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x12initialMarginRatio\x12]\n\x18maintenance_margin_ratio\x18\x0c \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16maintenanceMarginRatio\x12R\n\x13min_price_tick_size\x18\r \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x10minPriceTickSize\x12X\n\x16min_quantity_tick_size\x18\x0e \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x13minQuantityTickSize\x12\x46\n\x0cmin_notional\x18\x0f \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0bminNotional:D\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgInstantExpiryFuturesMarketLaunch\"-\n+MsgInstantExpiryFuturesMarketLaunchResponse\"\xab\x01\n\x18MsgCreateSpotMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12<\n\x05order\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.SpotOrderB\x04\xc8\xde\x1f\x00R\x05order:9\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgCreateSpotMarketOrder\"\xac\x01\n MsgCreateSpotMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12M\n\x07results\x18\x02 \x01(\x0b\x32-.injective.exchange.v2.SpotMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xd5\x01\n\x16SpotMarketOrderResults\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x35\n\x03\x66\x65\x65\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xb7\x01\n\x1dMsgCreateDerivativeLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x42\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order::\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*&exchange/MsgCreateDerivativeLimitOrder\"b\n%MsgCreateDerivativeLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbd\x01\n MsgCreateBinaryOptionsLimitOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x42\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:=\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*)exchange/MsgCreateBinaryOptionsLimitOrder\"e\n(MsgCreateBinaryOptionsLimitOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x02 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xc5\x01\n#MsgBatchCreateDerivativeLimitOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x44\n\x06orders\x18\x02 \x03(\x0b\x32&.injective.exchange.v2.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x06orders:@\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*,exchange/MsgBatchCreateDerivativeLimitOrders\"\xb8\x01\n+MsgBatchCreateDerivativeLimitOrdersResponse\x12!\n\x0corder_hashes\x18\x01 \x03(\tR\x0borderHashes\x12.\n\x13\x63reated_orders_cids\x18\x02 \x03(\tR\x11\x63reatedOrdersCids\x12,\n\x12\x66\x61iled_orders_cids\x18\x03 \x03(\tR\x10\x66\x61iledOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xd0\x01\n\x12MsgCancelSpotOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id:/\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1b\x65xchange/MsgCancelSpotOrder\"\x1c\n\x1aMsgCancelSpotOrderResponse\"\xa5\x01\n\x18MsgBatchCancelSpotOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12:\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32 .injective.exchange.v2.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:5\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgBatchCancelSpotOrders\"F\n MsgBatchCancelSpotOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xb7\x01\n!MsgBatchCancelBinaryOptionsOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12:\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32 .injective.exchange.v2.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:>\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgBatchCancelBinaryOptionsOrders\"O\n)MsgBatchCancelBinaryOptionsOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xd4\x07\n\x14MsgBatchUpdateOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12?\n\x1dspot_market_ids_to_cancel_all\x18\x03 \x03(\tR\x18spotMarketIdsToCancelAll\x12K\n#derivative_market_ids_to_cancel_all\x18\x04 \x03(\tR\x1e\x64\x65rivativeMarketIdsToCancelAll\x12Y\n\x15spot_orders_to_cancel\x18\x05 \x03(\x0b\x32 .injective.exchange.v2.OrderDataB\x04\xc8\xde\x1f\x01R\x12spotOrdersToCancel\x12\x65\n\x1b\x64\x65rivative_orders_to_cancel\x18\x06 \x03(\x0b\x32 .injective.exchange.v2.OrderDataB\x04\xc8\xde\x1f\x01R\x18\x64\x65rivativeOrdersToCancel\x12Y\n\x15spot_orders_to_create\x18\x07 \x03(\x0b\x32 .injective.exchange.v2.SpotOrderB\x04\xc8\xde\x1f\x01R\x12spotOrdersToCreate\x12k\n\x1b\x64\x65rivative_orders_to_create\x18\x08 \x03(\x0b\x32&.injective.exchange.v2.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x18\x64\x65rivativeOrdersToCreate\x12l\n\x1f\x62inary_options_orders_to_cancel\x18\t \x03(\x0b\x32 .injective.exchange.v2.OrderDataB\x04\xc8\xde\x1f\x01R\x1b\x62inaryOptionsOrdersToCancel\x12R\n\'binary_options_market_ids_to_cancel_all\x18\n \x03(\tR!binaryOptionsMarketIdsToCancelAll\x12r\n\x1f\x62inary_options_orders_to_create\x18\x0b \x03(\x0b\x32&.injective.exchange.v2.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x1b\x62inaryOptionsOrdersToCreate:1\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1d\x65xchange/MsgBatchUpdateOrders\"\x88\x06\n\x1cMsgBatchUpdateOrdersResponse\x12.\n\x13spot_cancel_success\x18\x01 \x03(\x08R\x11spotCancelSuccess\x12:\n\x19\x64\x65rivative_cancel_success\x18\x02 \x03(\x08R\x17\x64\x65rivativeCancelSuccess\x12*\n\x11spot_order_hashes\x18\x03 \x03(\tR\x0fspotOrderHashes\x12\x36\n\x17\x64\x65rivative_order_hashes\x18\x04 \x03(\tR\x15\x64\x65rivativeOrderHashes\x12\x41\n\x1d\x62inary_options_cancel_success\x18\x05 \x03(\x08R\x1a\x62inaryOptionsCancelSuccess\x12=\n\x1b\x62inary_options_order_hashes\x18\x06 \x03(\tR\x18\x62inaryOptionsOrderHashes\x12\x37\n\x18\x63reated_spot_orders_cids\x18\x07 \x03(\tR\x15\x63reatedSpotOrdersCids\x12\x35\n\x17\x66\x61iled_spot_orders_cids\x18\x08 \x03(\tR\x14\x66\x61iledSpotOrdersCids\x12\x43\n\x1e\x63reated_derivative_orders_cids\x18\t \x03(\tR\x1b\x63reatedDerivativeOrdersCids\x12\x41\n\x1d\x66\x61iled_derivative_orders_cids\x18\n \x03(\tR\x1a\x66\x61iledDerivativeOrdersCids\x12J\n\"created_binary_options_orders_cids\x18\x0b \x03(\tR\x1e\x63reatedBinaryOptionsOrdersCids\x12H\n!failed_binary_options_orders_cids\x18\x0c \x03(\tR\x1d\x66\x61iledBinaryOptionsOrdersCids:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xb9\x01\n\x1eMsgCreateDerivativeMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x42\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:;\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\'exchange/MsgCreateDerivativeMarketOrder\"\xb8\x01\n&MsgCreateDerivativeMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12S\n\x07results\x18\x02 \x01(\x0b\x32\x33.injective.exchange.v2.DerivativeMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xeb\x02\n\x1c\x44\x65rivativeMarketOrderResults\x12?\n\x08quantity\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x35\n\x03\x66\x65\x65\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12Q\n\x0eposition_delta\x18\x04 \x01(\x0b\x32$.injective.exchange.v2.PositionDeltaB\x04\xc8\xde\x1f\x00R\rpositionDelta\x12;\n\x06payout\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xbf\x01\n!MsgCreateBinaryOptionsMarketOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x42\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderB\x04\xc8\xde\x1f\x00R\x05order:>\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgCreateBinaryOptionsMarketOrder\"\xbb\x01\n)MsgCreateBinaryOptionsMarketOrderResponse\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12S\n\x07results\x18\x02 \x01(\x0b\x32\x33.injective.exchange.v2.DerivativeMarketOrderResultsB\x04\xc8\xde\x1f\x01R\x07results\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\xfb\x01\n\x18MsgCancelDerivativeOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x05 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id:5\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgCancelDerivativeOrder\"\"\n MsgCancelDerivativeOrderResponse\"\x81\x02\n\x1bMsgCancelBinaryOptionsOrder\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x04 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x05 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x06 \x01(\tR\x03\x63id:8\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*$exchange/MsgCancelBinaryOptionsOrder\"%\n#MsgCancelBinaryOptionsOrderResponse\"\x9d\x01\n\tOrderData\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12\x1d\n\norder_mask\x18\x04 \x01(\x05R\torderMask\x12\x10\n\x03\x63id\x18\x05 \x01(\tR\x03\x63id\"\xb1\x01\n\x1eMsgBatchCancelDerivativeOrders\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12:\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32 .injective.exchange.v2.OrderDataB\x04\xc8\xde\x1f\x00R\x04\x64\x61ta:;\x88\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\'exchange/MsgBatchCancelDerivativeOrders\"L\n&MsgBatchCancelDerivativeOrdersResponse\x12\x18\n\x07success\x18\x01 \x03(\x08R\x07success:\x08\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\"\x86\x02\n\x15MsgSubaccountTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x37\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgSubaccountTransfer\"\x1f\n\x1dMsgSubaccountTransferResponse\"\x82\x02\n\x13MsgExternalTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x37\n\x06\x61mount\x18\x04 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount:,\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1c\x65xchange/MsgExternalTransfer\"\x1d\n\x1bMsgExternalTransferResponse\"\xe3\x01\n\x14MsgLiquidatePosition\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x42\n\x05order\x18\x04 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderB\x04\xc8\xde\x1f\x01R\x05order:-\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1d\x65xchange/MsgLiquidatePosition\"\x1e\n\x1cMsgLiquidatePositionResponse\"\xa7\x01\n\x18MsgEmergencySettleMarket\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId:1\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*!exchange/MsgEmergencySettleMarket\"\"\n MsgEmergencySettleMarketResponse\"\xaf\x02\n\x19MsgIncreasePositionMargin\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\x12;\n\x06\x61mount\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06\x61mount:2\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\"exchange/MsgIncreasePositionMargin\"#\n!MsgIncreasePositionMarginResponse\"\xaf\x02\n\x19MsgDecreasePositionMargin\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x14source_subaccount_id\x18\x02 \x01(\tR\x12sourceSubaccountId\x12:\n\x19\x64\x65stination_subaccount_id\x18\x03 \x01(\tR\x17\x64\x65stinationSubaccountId\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\x12;\n\x06\x61mount\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06\x61mount:2\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\"exchange/MsgDecreasePositionMargin\"#\n!MsgDecreasePositionMarginResponse\"\xca\x01\n\x1cMsgPrivilegedExecuteContract\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x14\n\x05\x66unds\x18\x02 \x01(\tR\x05\x66unds\x12)\n\x10\x63ontract_address\x18\x03 \x01(\tR\x0f\x63ontractAddress\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\tR\x04\x64\x61ta:=\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*%exchange/MsgPrivilegedExecuteContract\"\xa7\x01\n$MsgPrivilegedExecuteContractResponse\x12j\n\nfunds_diff\x18\x01 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\tfundsDiff:\x13\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\"]\n\x10MsgRewardsOptOut\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender:1\x88\xa0\x1f\x00\xe8\xa0\x1f\x00\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x19\x65xchange/MsgRewardsOptOut\"\x1a\n\x18MsgRewardsOptOutResponse\"\xaf\x01\n\x15MsgReclaimLockedFunds\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x30\n\x13lockedAccountPubKey\x18\x02 \x01(\x0cR\x13lockedAccountPubKey\x12\x1c\n\tsignature\x18\x03 \x01(\x0cR\tsignature:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgReclaimLockedFunds\"\x1f\n\x1dMsgReclaimLockedFundsResponse\"\x80\x01\n\x0bMsgSignData\x12S\n\x06Signer\x18\x01 \x01(\x0c\x42;\xea\xde\x1f\x06signer\xfa\xde\x1f-github.com/cosmos/cosmos-sdk/types.AccAddressR\x06Signer\x12\x1c\n\x04\x44\x61ta\x18\x02 \x01(\x0c\x42\x08\xea\xde\x1f\x04\x64\x61taR\x04\x44\x61ta\"s\n\nMsgSignDoc\x12%\n\tsign_type\x18\x01 \x01(\tB\x08\xea\xde\x1f\x04typeR\x08signType\x12>\n\x05value\x18\x02 \x01(\x0b\x32\".injective.exchange.v2.MsgSignDataB\x04\xc8\xde\x1f\x00R\x05value\"\x87\x03\n!MsgAdminUpdateBinaryOptionsMarket\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12N\n\x10settlement_price\x18\x03 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0fsettlementPrice\x12\x31\n\x14\x65xpiration_timestamp\x18\x04 \x01(\x03R\x13\x65xpirationTimestamp\x12\x31\n\x14settlement_timestamp\x18\x05 \x01(\x03R\x13settlementTimestamp\x12;\n\x06status\x18\x06 \x01(\x0e\x32#.injective.exchange.v2.MarketStatusR\x06status::\x82\xe7\xb0*\x06sender\x8a\xe7\xb0**exchange/MsgAdminUpdateBinaryOptionsMarket\"+\n)MsgAdminUpdateBinaryOptionsMarketResponse\"\xa6\x01\n\x17MsgAuthorizeStakeGrants\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x41\n\x06grants\x18\x02 \x03(\x0b\x32).injective.exchange.v2.GrantAuthorizationR\x06grants:0\x82\xe7\xb0*\x06sender\x8a\xe7\xb0* exchange/MsgAuthorizeStakeGrants\"!\n\x1fMsgAuthorizeStakeGrantsResponse\"y\n\x15MsgActivateStakeGrant\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter:.\x82\xe7\xb0*\x06sender\x8a\xe7\xb0*\x1e\x65xchange/MsgActivateStakeGrant\"\x1f\n\x1dMsgActivateStakeGrantResponse2\xee$\n\x03Msg\x12W\n\x07\x44\x65posit\x12!.injective.exchange.v2.MsgDeposit\x1a).injective.exchange.v2.MsgDepositResponse\x12Z\n\x08Withdraw\x12\".injective.exchange.v2.MsgWithdraw\x1a*.injective.exchange.v2.MsgWithdrawResponse\x12\x87\x01\n\x17InstantSpotMarketLaunch\x12\x31.injective.exchange.v2.MsgInstantSpotMarketLaunch\x1a\x39.injective.exchange.v2.MsgInstantSpotMarketLaunchResponse\x12\x96\x01\n\x1cInstantPerpetualMarketLaunch\x12\x36.injective.exchange.v2.MsgInstantPerpetualMarketLaunch\x1a>.injective.exchange.v2.MsgInstantPerpetualMarketLaunchResponse\x12\xa2\x01\n InstantExpiryFuturesMarketLaunch\x12:.injective.exchange.v2.MsgInstantExpiryFuturesMarketLaunch\x1a\x42.injective.exchange.v2.MsgInstantExpiryFuturesMarketLaunchResponse\x12~\n\x14\x43reateSpotLimitOrder\x12..injective.exchange.v2.MsgCreateSpotLimitOrder\x1a\x36.injective.exchange.v2.MsgCreateSpotLimitOrderResponse\x12\x90\x01\n\x1a\x42\x61tchCreateSpotLimitOrders\x12\x34.injective.exchange.v2.MsgBatchCreateSpotLimitOrders\x1a<.injective.exchange.v2.MsgBatchCreateSpotLimitOrdersResponse\x12\x81\x01\n\x15\x43reateSpotMarketOrder\x12/.injective.exchange.v2.MsgCreateSpotMarketOrder\x1a\x37.injective.exchange.v2.MsgCreateSpotMarketOrderResponse\x12o\n\x0f\x43\x61ncelSpotOrder\x12).injective.exchange.v2.MsgCancelSpotOrder\x1a\x31.injective.exchange.v2.MsgCancelSpotOrderResponse\x12\x81\x01\n\x15\x42\x61tchCancelSpotOrders\x12/.injective.exchange.v2.MsgBatchCancelSpotOrders\x1a\x37.injective.exchange.v2.MsgBatchCancelSpotOrdersResponse\x12u\n\x11\x42\x61tchUpdateOrders\x12+.injective.exchange.v2.MsgBatchUpdateOrders\x1a\x33.injective.exchange.v2.MsgBatchUpdateOrdersResponse\x12\x8d\x01\n\x19PrivilegedExecuteContract\x12\x33.injective.exchange.v2.MsgPrivilegedExecuteContract\x1a;.injective.exchange.v2.MsgPrivilegedExecuteContractResponse\x12\x90\x01\n\x1a\x43reateDerivativeLimitOrder\x12\x34.injective.exchange.v2.MsgCreateDerivativeLimitOrder\x1a<.injective.exchange.v2.MsgCreateDerivativeLimitOrderResponse\x12\xa2\x01\n BatchCreateDerivativeLimitOrders\x12:.injective.exchange.v2.MsgBatchCreateDerivativeLimitOrders\x1a\x42.injective.exchange.v2.MsgBatchCreateDerivativeLimitOrdersResponse\x12\x93\x01\n\x1b\x43reateDerivativeMarketOrder\x12\x35.injective.exchange.v2.MsgCreateDerivativeMarketOrder\x1a=.injective.exchange.v2.MsgCreateDerivativeMarketOrderResponse\x12\x81\x01\n\x15\x43\x61ncelDerivativeOrder\x12/.injective.exchange.v2.MsgCancelDerivativeOrder\x1a\x37.injective.exchange.v2.MsgCancelDerivativeOrderResponse\x12\x93\x01\n\x1b\x42\x61tchCancelDerivativeOrders\x12\x35.injective.exchange.v2.MsgBatchCancelDerivativeOrders\x1a=.injective.exchange.v2.MsgBatchCancelDerivativeOrdersResponse\x12\xa2\x01\n InstantBinaryOptionsMarketLaunch\x12:.injective.exchange.v2.MsgInstantBinaryOptionsMarketLaunch\x1a\x42.injective.exchange.v2.MsgInstantBinaryOptionsMarketLaunchResponse\x12\x99\x01\n\x1d\x43reateBinaryOptionsLimitOrder\x12\x37.injective.exchange.v2.MsgCreateBinaryOptionsLimitOrder\x1a?.injective.exchange.v2.MsgCreateBinaryOptionsLimitOrderResponse\x12\x9c\x01\n\x1e\x43reateBinaryOptionsMarketOrder\x12\x38.injective.exchange.v2.MsgCreateBinaryOptionsMarketOrder\x1a@.injective.exchange.v2.MsgCreateBinaryOptionsMarketOrderResponse\x12\x8a\x01\n\x18\x43\x61ncelBinaryOptionsOrder\x12\x32.injective.exchange.v2.MsgCancelBinaryOptionsOrder\x1a:.injective.exchange.v2.MsgCancelBinaryOptionsOrderResponse\x12\x9c\x01\n\x1e\x42\x61tchCancelBinaryOptionsOrders\x12\x38.injective.exchange.v2.MsgBatchCancelBinaryOptionsOrders\x1a@.injective.exchange.v2.MsgBatchCancelBinaryOptionsOrdersResponse\x12x\n\x12SubaccountTransfer\x12,.injective.exchange.v2.MsgSubaccountTransfer\x1a\x34.injective.exchange.v2.MsgSubaccountTransferResponse\x12r\n\x10\x45xternalTransfer\x12*.injective.exchange.v2.MsgExternalTransfer\x1a\x32.injective.exchange.v2.MsgExternalTransferResponse\x12u\n\x11LiquidatePosition\x12+.injective.exchange.v2.MsgLiquidatePosition\x1a\x33.injective.exchange.v2.MsgLiquidatePositionResponse\x12\x81\x01\n\x15\x45mergencySettleMarket\x12/.injective.exchange.v2.MsgEmergencySettleMarket\x1a\x37.injective.exchange.v2.MsgEmergencySettleMarketResponse\x12\x84\x01\n\x16IncreasePositionMargin\x12\x30.injective.exchange.v2.MsgIncreasePositionMargin\x1a\x38.injective.exchange.v2.MsgIncreasePositionMarginResponse\x12\x84\x01\n\x16\x44\x65\x63reasePositionMargin\x12\x30.injective.exchange.v2.MsgDecreasePositionMargin\x1a\x38.injective.exchange.v2.MsgDecreasePositionMarginResponse\x12i\n\rRewardsOptOut\x12\'.injective.exchange.v2.MsgRewardsOptOut\x1a/.injective.exchange.v2.MsgRewardsOptOutResponse\x12\x9c\x01\n\x1e\x41\x64minUpdateBinaryOptionsMarket\x12\x38.injective.exchange.v2.MsgAdminUpdateBinaryOptionsMarket\x1a@.injective.exchange.v2.MsgAdminUpdateBinaryOptionsMarketResponse\x12\x66\n\x0cUpdateParams\x12&.injective.exchange.v2.MsgUpdateParams\x1a..injective.exchange.v2.MsgUpdateParamsResponse\x12r\n\x10UpdateSpotMarket\x12*.injective.exchange.v2.MsgUpdateSpotMarket\x1a\x32.injective.exchange.v2.MsgUpdateSpotMarketResponse\x12\x84\x01\n\x16UpdateDerivativeMarket\x12\x30.injective.exchange.v2.MsgUpdateDerivativeMarket\x1a\x38.injective.exchange.v2.MsgUpdateDerivativeMarketResponse\x12~\n\x14\x41uthorizeStakeGrants\x12..injective.exchange.v2.MsgAuthorizeStakeGrants\x1a\x36.injective.exchange.v2.MsgAuthorizeStakeGrantsResponse\x12x\n\x12\x41\x63tivateStakeGrant\x12,.injective.exchange.v2.MsgActivateStakeGrant\x1a\x34.injective.exchange.v2.MsgActivateStakeGrantResponse\x1a\x05\x80\xe7\xb0*\x01\x42\xed\x01\n\x19\x63om.injective.exchange.v2B\x07TxProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.exchange.v2.tx_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\031com.injective.exchange.v2B\007TxProtoP\001ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\242\002\003IEX\252\002\025Injective.Exchange.V2\312\002\025Injective\\Exchange\\V2\342\002!Injective\\Exchange\\V2\\GPBMetadata\352\002\027Injective::Exchange::V2' + _globals['_MSGUPDATESPOTMARKET'].fields_by_name['new_min_price_tick_size']._loaded_options = None + _globals['_MSGUPDATESPOTMARKET'].fields_by_name['new_min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGUPDATESPOTMARKET'].fields_by_name['new_min_quantity_tick_size']._loaded_options = None + _globals['_MSGUPDATESPOTMARKET'].fields_by_name['new_min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGUPDATESPOTMARKET'].fields_by_name['new_min_notional']._loaded_options = None + _globals['_MSGUPDATESPOTMARKET'].fields_by_name['new_min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGUPDATESPOTMARKET']._loaded_options = None + _globals['_MSGUPDATESPOTMARKET']._serialized_options = b'\350\240\037\000\202\347\260*\005admin\212\347\260*\034exchange/MsgUpdateSpotMarket' + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_price_tick_size']._loaded_options = None + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_quantity_tick_size']._loaded_options = None + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_notional']._loaded_options = None + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_initial_margin_ratio']._loaded_options = None + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_initial_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_maintenance_margin_ratio']._loaded_options = None + _globals['_MSGUPDATEDERIVATIVEMARKET'].fields_by_name['new_maintenance_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGUPDATEDERIVATIVEMARKET']._loaded_options = None + _globals['_MSGUPDATEDERIVATIVEMARKET']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\005admin\212\347\260*\"exchange/MsgUpdateDerivativeMarket' + _globals['_MSGUPDATEPARAMS'].fields_by_name['authority']._loaded_options = None + _globals['_MSGUPDATEPARAMS'].fields_by_name['authority']._serialized_options = b'\322\264-\024cosmos.AddressString' + _globals['_MSGUPDATEPARAMS'].fields_by_name['params']._loaded_options = None + _globals['_MSGUPDATEPARAMS'].fields_by_name['params']._serialized_options = b'\310\336\037\000' + _globals['_MSGUPDATEPARAMS']._loaded_options = None + _globals['_MSGUPDATEPARAMS']._serialized_options = b'\202\347\260*\tauthority\212\347\260*\030exchange/MsgUpdateParams' + _globals['_MSGDEPOSIT'].fields_by_name['amount']._loaded_options = None + _globals['_MSGDEPOSIT'].fields_by_name['amount']._serialized_options = b'\310\336\037\000' + _globals['_MSGDEPOSIT']._loaded_options = None + _globals['_MSGDEPOSIT']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*\023exchange/MsgDeposit' + _globals['_MSGWITHDRAW'].fields_by_name['amount']._loaded_options = None + _globals['_MSGWITHDRAW'].fields_by_name['amount']._serialized_options = b'\310\336\037\000' + _globals['_MSGWITHDRAW']._loaded_options = None + _globals['_MSGWITHDRAW']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*\024exchange/MsgWithdraw' + _globals['_MSGCREATESPOTLIMITORDER'].fields_by_name['order']._loaded_options = None + _globals['_MSGCREATESPOTLIMITORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_MSGCREATESPOTLIMITORDER']._loaded_options = None + _globals['_MSGCREATESPOTLIMITORDER']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260* exchange/MsgCreateSpotLimitOrder' + _globals['_MSGCREATESPOTLIMITORDERRESPONSE']._loaded_options = None + _globals['_MSGCREATESPOTLIMITORDERRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGBATCHCREATESPOTLIMITORDERS'].fields_by_name['orders']._loaded_options = None + _globals['_MSGBATCHCREATESPOTLIMITORDERS'].fields_by_name['orders']._serialized_options = b'\310\336\037\000' + _globals['_MSGBATCHCREATESPOTLIMITORDERS']._loaded_options = None + _globals['_MSGBATCHCREATESPOTLIMITORDERS']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*&exchange/MsgBatchCreateSpotLimitOrders' + _globals['_MSGBATCHCREATESPOTLIMITORDERSRESPONSE']._loaded_options = None + _globals['_MSGBATCHCREATESPOTLIMITORDERSRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGINSTANTSPOTMARKETLAUNCH'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_MSGINSTANTSPOTMARKETLAUNCH'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTSPOTMARKETLAUNCH'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_MSGINSTANTSPOTMARKETLAUNCH'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTSPOTMARKETLAUNCH'].fields_by_name['min_notional']._loaded_options = None + _globals['_MSGINSTANTSPOTMARKETLAUNCH'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTSPOTMARKETLAUNCH']._loaded_options = None + _globals['_MSGINSTANTSPOTMARKETLAUNCH']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*#exchange/MsgInstantSpotMarketLaunch' + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['initial_margin_ratio']._loaded_options = None + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['initial_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['maintenance_margin_ratio']._loaded_options = None + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['maintenance_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['min_notional']._loaded_options = None + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH']._loaded_options = None + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*(exchange/MsgInstantPerpetualMarketLaunch' + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['min_notional']._loaded_options = None + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH']._loaded_options = None + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*,exchange/MsgInstantBinaryOptionsMarketLaunch' + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['maker_fee_rate']._loaded_options = None + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['maker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['taker_fee_rate']._loaded_options = None + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['taker_fee_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['initial_margin_ratio']._loaded_options = None + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['initial_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['maintenance_margin_ratio']._loaded_options = None + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['maintenance_margin_ratio']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['min_price_tick_size']._loaded_options = None + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['min_price_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['min_quantity_tick_size']._loaded_options = None + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['min_quantity_tick_size']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['min_notional']._loaded_options = None + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH'].fields_by_name['min_notional']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH']._loaded_options = None + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*,exchange/MsgInstantExpiryFuturesMarketLaunch' + _globals['_MSGCREATESPOTMARKETORDER'].fields_by_name['order']._loaded_options = None + _globals['_MSGCREATESPOTMARKETORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_MSGCREATESPOTMARKETORDER']._loaded_options = None + _globals['_MSGCREATESPOTMARKETORDER']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*!exchange/MsgCreateSpotMarketOrder' + _globals['_MSGCREATESPOTMARKETORDERRESPONSE'].fields_by_name['results']._loaded_options = None + _globals['_MSGCREATESPOTMARKETORDERRESPONSE'].fields_by_name['results']._serialized_options = b'\310\336\037\001' + _globals['_MSGCREATESPOTMARKETORDERRESPONSE']._loaded_options = None + _globals['_MSGCREATESPOTMARKETORDERRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_SPOTMARKETORDERRESULTS'].fields_by_name['quantity']._loaded_options = None + _globals['_SPOTMARKETORDERRESULTS'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETORDERRESULTS'].fields_by_name['price']._loaded_options = None + _globals['_SPOTMARKETORDERRESULTS'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETORDERRESULTS'].fields_by_name['fee']._loaded_options = None + _globals['_SPOTMARKETORDERRESULTS'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTMARKETORDERRESULTS']._loaded_options = None + _globals['_SPOTMARKETORDERRESULTS']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGCREATEDERIVATIVELIMITORDER'].fields_by_name['order']._loaded_options = None + _globals['_MSGCREATEDERIVATIVELIMITORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_MSGCREATEDERIVATIVELIMITORDER']._loaded_options = None + _globals['_MSGCREATEDERIVATIVELIMITORDER']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*&exchange/MsgCreateDerivativeLimitOrder' + _globals['_MSGCREATEDERIVATIVELIMITORDERRESPONSE']._loaded_options = None + _globals['_MSGCREATEDERIVATIVELIMITORDERRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGCREATEBINARYOPTIONSLIMITORDER'].fields_by_name['order']._loaded_options = None + _globals['_MSGCREATEBINARYOPTIONSLIMITORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_MSGCREATEBINARYOPTIONSLIMITORDER']._loaded_options = None + _globals['_MSGCREATEBINARYOPTIONSLIMITORDER']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*)exchange/MsgCreateBinaryOptionsLimitOrder' + _globals['_MSGCREATEBINARYOPTIONSLIMITORDERRESPONSE']._loaded_options = None + _globals['_MSGCREATEBINARYOPTIONSLIMITORDERRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS'].fields_by_name['orders']._loaded_options = None + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS'].fields_by_name['orders']._serialized_options = b'\310\336\037\000' + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS']._loaded_options = None + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*,exchange/MsgBatchCreateDerivativeLimitOrders' + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERSRESPONSE']._loaded_options = None + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERSRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGCANCELSPOTORDER']._loaded_options = None + _globals['_MSGCANCELSPOTORDER']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*\033exchange/MsgCancelSpotOrder' + _globals['_MSGBATCHCANCELSPOTORDERS'].fields_by_name['data']._loaded_options = None + _globals['_MSGBATCHCANCELSPOTORDERS'].fields_by_name['data']._serialized_options = b'\310\336\037\000' + _globals['_MSGBATCHCANCELSPOTORDERS']._loaded_options = None + _globals['_MSGBATCHCANCELSPOTORDERS']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*!exchange/MsgBatchCancelSpotOrders' + _globals['_MSGBATCHCANCELSPOTORDERSRESPONSE']._loaded_options = None + _globals['_MSGBATCHCANCELSPOTORDERSRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS'].fields_by_name['data']._loaded_options = None + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS'].fields_by_name['data']._serialized_options = b'\310\336\037\000' + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS']._loaded_options = None + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260**exchange/MsgBatchCancelBinaryOptionsOrders' + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERSRESPONSE']._loaded_options = None + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERSRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['spot_orders_to_cancel']._loaded_options = None + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['spot_orders_to_cancel']._serialized_options = b'\310\336\037\001' + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['derivative_orders_to_cancel']._loaded_options = None + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['derivative_orders_to_cancel']._serialized_options = b'\310\336\037\001' + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['spot_orders_to_create']._loaded_options = None + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['spot_orders_to_create']._serialized_options = b'\310\336\037\001' + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['derivative_orders_to_create']._loaded_options = None + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['derivative_orders_to_create']._serialized_options = b'\310\336\037\001' + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['binary_options_orders_to_cancel']._loaded_options = None + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['binary_options_orders_to_cancel']._serialized_options = b'\310\336\037\001' + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['binary_options_orders_to_create']._loaded_options = None + _globals['_MSGBATCHUPDATEORDERS'].fields_by_name['binary_options_orders_to_create']._serialized_options = b'\310\336\037\001' + _globals['_MSGBATCHUPDATEORDERS']._loaded_options = None + _globals['_MSGBATCHUPDATEORDERS']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*\035exchange/MsgBatchUpdateOrders' + _globals['_MSGBATCHUPDATEORDERSRESPONSE']._loaded_options = None + _globals['_MSGBATCHUPDATEORDERSRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGCREATEDERIVATIVEMARKETORDER'].fields_by_name['order']._loaded_options = None + _globals['_MSGCREATEDERIVATIVEMARKETORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_MSGCREATEDERIVATIVEMARKETORDER']._loaded_options = None + _globals['_MSGCREATEDERIVATIVEMARKETORDER']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*\'exchange/MsgCreateDerivativeMarketOrder' + _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE'].fields_by_name['results']._loaded_options = None + _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE'].fields_by_name['results']._serialized_options = b'\310\336\037\001' + _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE']._loaded_options = None + _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['quantity']._loaded_options = None + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['price']._loaded_options = None + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['fee']._loaded_options = None + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['position_delta']._loaded_options = None + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['position_delta']._serialized_options = b'\310\336\037\000' + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['payout']._loaded_options = None + _globals['_DERIVATIVEMARKETORDERRESULTS'].fields_by_name['payout']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEMARKETORDERRESULTS']._loaded_options = None + _globals['_DERIVATIVEMARKETORDERRESULTS']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGCREATEBINARYOPTIONSMARKETORDER'].fields_by_name['order']._loaded_options = None + _globals['_MSGCREATEBINARYOPTIONSMARKETORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_MSGCREATEBINARYOPTIONSMARKETORDER']._loaded_options = None + _globals['_MSGCREATEBINARYOPTIONSMARKETORDER']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260**exchange/MsgCreateBinaryOptionsMarketOrder' + _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE'].fields_by_name['results']._loaded_options = None + _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE'].fields_by_name['results']._serialized_options = b'\310\336\037\001' + _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE']._loaded_options = None + _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGCANCELDERIVATIVEORDER']._loaded_options = None + _globals['_MSGCANCELDERIVATIVEORDER']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*!exchange/MsgCancelDerivativeOrder' + _globals['_MSGCANCELBINARYOPTIONSORDER']._loaded_options = None + _globals['_MSGCANCELBINARYOPTIONSORDER']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*$exchange/MsgCancelBinaryOptionsOrder' + _globals['_MSGBATCHCANCELDERIVATIVEORDERS'].fields_by_name['data']._loaded_options = None + _globals['_MSGBATCHCANCELDERIVATIVEORDERS'].fields_by_name['data']._serialized_options = b'\310\336\037\000' + _globals['_MSGBATCHCANCELDERIVATIVEORDERS']._loaded_options = None + _globals['_MSGBATCHCANCELDERIVATIVEORDERS']._serialized_options = b'\210\240\037\000\202\347\260*\006sender\212\347\260*\'exchange/MsgBatchCancelDerivativeOrders' + _globals['_MSGBATCHCANCELDERIVATIVEORDERSRESPONSE']._loaded_options = None + _globals['_MSGBATCHCANCELDERIVATIVEORDERSRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000' + _globals['_MSGSUBACCOUNTTRANSFER'].fields_by_name['amount']._loaded_options = None + _globals['_MSGSUBACCOUNTTRANSFER'].fields_by_name['amount']._serialized_options = b'\310\336\037\000' + _globals['_MSGSUBACCOUNTTRANSFER']._loaded_options = None + _globals['_MSGSUBACCOUNTTRANSFER']._serialized_options = b'\202\347\260*\006sender\212\347\260*\036exchange/MsgSubaccountTransfer' + _globals['_MSGEXTERNALTRANSFER'].fields_by_name['amount']._loaded_options = None + _globals['_MSGEXTERNALTRANSFER'].fields_by_name['amount']._serialized_options = b'\310\336\037\000' + _globals['_MSGEXTERNALTRANSFER']._loaded_options = None + _globals['_MSGEXTERNALTRANSFER']._serialized_options = b'\202\347\260*\006sender\212\347\260*\034exchange/MsgExternalTransfer' + _globals['_MSGLIQUIDATEPOSITION'].fields_by_name['order']._loaded_options = None + _globals['_MSGLIQUIDATEPOSITION'].fields_by_name['order']._serialized_options = b'\310\336\037\001' + _globals['_MSGLIQUIDATEPOSITION']._loaded_options = None + _globals['_MSGLIQUIDATEPOSITION']._serialized_options = b'\202\347\260*\006sender\212\347\260*\035exchange/MsgLiquidatePosition' + _globals['_MSGEMERGENCYSETTLEMARKET']._loaded_options = None + _globals['_MSGEMERGENCYSETTLEMARKET']._serialized_options = b'\202\347\260*\006sender\212\347\260*!exchange/MsgEmergencySettleMarket' + _globals['_MSGINCREASEPOSITIONMARGIN'].fields_by_name['amount']._loaded_options = None + _globals['_MSGINCREASEPOSITIONMARGIN'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGINCREASEPOSITIONMARGIN']._loaded_options = None + _globals['_MSGINCREASEPOSITIONMARGIN']._serialized_options = b'\202\347\260*\006sender\212\347\260*\"exchange/MsgIncreasePositionMargin' + _globals['_MSGDECREASEPOSITIONMARGIN'].fields_by_name['amount']._loaded_options = None + _globals['_MSGDECREASEPOSITIONMARGIN'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGDECREASEPOSITIONMARGIN']._loaded_options = None + _globals['_MSGDECREASEPOSITIONMARGIN']._serialized_options = b'\202\347\260*\006sender\212\347\260*\"exchange/MsgDecreasePositionMargin' + _globals['_MSGPRIVILEGEDEXECUTECONTRACT']._loaded_options = None + _globals['_MSGPRIVILEGEDEXECUTECONTRACT']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*%exchange/MsgPrivilegedExecuteContract' + _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE'].fields_by_name['funds_diff']._loaded_options = None + _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE'].fields_by_name['funds_diff']._serialized_options = b'\310\336\037\000\252\337\037(github.com/cosmos/cosmos-sdk/types.Coins' + _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE']._loaded_options = None + _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender' + _globals['_MSGREWARDSOPTOUT']._loaded_options = None + _globals['_MSGREWARDSOPTOUT']._serialized_options = b'\210\240\037\000\350\240\037\000\202\347\260*\006sender\212\347\260*\031exchange/MsgRewardsOptOut' + _globals['_MSGRECLAIMLOCKEDFUNDS']._loaded_options = None + _globals['_MSGRECLAIMLOCKEDFUNDS']._serialized_options = b'\202\347\260*\006sender\212\347\260*\036exchange/MsgReclaimLockedFunds' + _globals['_MSGSIGNDATA'].fields_by_name['Signer']._loaded_options = None + _globals['_MSGSIGNDATA'].fields_by_name['Signer']._serialized_options = b'\352\336\037\006signer\372\336\037-github.com/cosmos/cosmos-sdk/types.AccAddress' + _globals['_MSGSIGNDATA'].fields_by_name['Data']._loaded_options = None + _globals['_MSGSIGNDATA'].fields_by_name['Data']._serialized_options = b'\352\336\037\004data' + _globals['_MSGSIGNDOC'].fields_by_name['sign_type']._loaded_options = None + _globals['_MSGSIGNDOC'].fields_by_name['sign_type']._serialized_options = b'\352\336\037\004type' + _globals['_MSGSIGNDOC'].fields_by_name['value']._loaded_options = None + _globals['_MSGSIGNDOC'].fields_by_name['value']._serialized_options = b'\310\336\037\000' + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET'].fields_by_name['settlement_price']._loaded_options = None + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET'].fields_by_name['settlement_price']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET']._loaded_options = None + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET']._serialized_options = b'\202\347\260*\006sender\212\347\260**exchange/MsgAdminUpdateBinaryOptionsMarket' + _globals['_MSGAUTHORIZESTAKEGRANTS']._loaded_options = None + _globals['_MSGAUTHORIZESTAKEGRANTS']._serialized_options = b'\202\347\260*\006sender\212\347\260* exchange/MsgAuthorizeStakeGrants' + _globals['_MSGACTIVATESTAKEGRANT']._loaded_options = None + _globals['_MSGACTIVATESTAKEGRANT']._serialized_options = b'\202\347\260*\006sender\212\347\260*\036exchange/MsgActivateStakeGrant' + _globals['_MSG']._loaded_options = None + _globals['_MSG']._serialized_options = b'\200\347\260*\001' + _globals['_MSGUPDATESPOTMARKET']._serialized_start=379 + _globals['_MSGUPDATESPOTMARKET']._serialized_end=798 + _globals['_MSGUPDATESPOTMARKETRESPONSE']._serialized_start=800 + _globals['_MSGUPDATESPOTMARKETRESPONSE']._serialized_end=829 + _globals['_MSGUPDATEDERIVATIVEMARKET']._serialized_start=832 + _globals['_MSGUPDATEDERIVATIVEMARKET']._serialized_end=1463 + _globals['_MSGUPDATEDERIVATIVEMARKETRESPONSE']._serialized_start=1465 + _globals['_MSGUPDATEDERIVATIVEMARKETRESPONSE']._serialized_end=1500 + _globals['_MSGUPDATEPARAMS']._serialized_start=1503 + _globals['_MSGUPDATEPARAMS']._serialized_end=1682 + _globals['_MSGUPDATEPARAMSRESPONSE']._serialized_start=1684 + _globals['_MSGUPDATEPARAMSRESPONSE']._serialized_end=1709 + _globals['_MSGDEPOSIT']._serialized_start=1712 + _globals['_MSGDEPOSIT']._serialized_end=1887 + _globals['_MSGDEPOSITRESPONSE']._serialized_start=1889 + _globals['_MSGDEPOSITRESPONSE']._serialized_end=1909 + _globals['_MSGWITHDRAW']._serialized_start=1912 + _globals['_MSGWITHDRAW']._serialized_end=2089 + _globals['_MSGWITHDRAWRESPONSE']._serialized_start=2091 + _globals['_MSGWITHDRAWRESPONSE']._serialized_end=2112 + _globals['_MSGCREATESPOTLIMITORDER']._serialized_start=2115 + _globals['_MSGCREATESPOTLIMITORDER']._serialized_end=2284 + _globals['_MSGCREATESPOTLIMITORDERRESPONSE']._serialized_start=2286 + _globals['_MSGCREATESPOTLIMITORDERRESPONSE']._serialized_end=2378 + _globals['_MSGBATCHCREATESPOTLIMITORDERS']._serialized_start=2381 + _globals['_MSGBATCHCREATESPOTLIMITORDERS']._serialized_end=2564 + _globals['_MSGBATCHCREATESPOTLIMITORDERSRESPONSE']._serialized_start=2567 + _globals['_MSGBATCHCREATESPOTLIMITORDERSRESPONSE']._serialized_end=2745 + _globals['_MSGINSTANTSPOTMARKETLAUNCH']._serialized_start=2748 + _globals['_MSGINSTANTSPOTMARKETLAUNCH']._serialized_end=3271 + _globals['_MSGINSTANTSPOTMARKETLAUNCHRESPONSE']._serialized_start=3273 + _globals['_MSGINSTANTSPOTMARKETLAUNCHRESPONSE']._serialized_end=3309 + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH']._serialized_start=3312 + _globals['_MSGINSTANTPERPETUALMARKETLAUNCH']._serialized_end=4257 + _globals['_MSGINSTANTPERPETUALMARKETLAUNCHRESPONSE']._serialized_start=4259 + _globals['_MSGINSTANTPERPETUALMARKETLAUNCHRESPONSE']._serialized_end=4300 + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH']._serialized_start=4303 + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCH']._serialized_end=5208 + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCHRESPONSE']._serialized_start=5210 + _globals['_MSGINSTANTBINARYOPTIONSMARKETLAUNCHRESPONSE']._serialized_end=5255 + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH']._serialized_start=5258 + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCH']._serialized_end=6235 + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCHRESPONSE']._serialized_start=6237 + _globals['_MSGINSTANTEXPIRYFUTURESMARKETLAUNCHRESPONSE']._serialized_end=6282 + _globals['_MSGCREATESPOTMARKETORDER']._serialized_start=6285 + _globals['_MSGCREATESPOTMARKETORDER']._serialized_end=6456 + _globals['_MSGCREATESPOTMARKETORDERRESPONSE']._serialized_start=6459 + _globals['_MSGCREATESPOTMARKETORDERRESPONSE']._serialized_end=6631 + _globals['_SPOTMARKETORDERRESULTS']._serialized_start=6634 + _globals['_SPOTMARKETORDERRESULTS']._serialized_end=6847 + _globals['_MSGCREATEDERIVATIVELIMITORDER']._serialized_start=6850 + _globals['_MSGCREATEDERIVATIVELIMITORDER']._serialized_end=7033 + _globals['_MSGCREATEDERIVATIVELIMITORDERRESPONSE']._serialized_start=7035 + _globals['_MSGCREATEDERIVATIVELIMITORDERRESPONSE']._serialized_end=7133 + _globals['_MSGCREATEBINARYOPTIONSLIMITORDER']._serialized_start=7136 + _globals['_MSGCREATEBINARYOPTIONSLIMITORDER']._serialized_end=7325 + _globals['_MSGCREATEBINARYOPTIONSLIMITORDERRESPONSE']._serialized_start=7327 + _globals['_MSGCREATEBINARYOPTIONSLIMITORDERRESPONSE']._serialized_end=7428 + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS']._serialized_start=7431 + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERS']._serialized_end=7628 + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERSRESPONSE']._serialized_start=7631 + _globals['_MSGBATCHCREATEDERIVATIVELIMITORDERSRESPONSE']._serialized_end=7815 + _globals['_MSGCANCELSPOTORDER']._serialized_start=7818 + _globals['_MSGCANCELSPOTORDER']._serialized_end=8026 + _globals['_MSGCANCELSPOTORDERRESPONSE']._serialized_start=8028 + _globals['_MSGCANCELSPOTORDERRESPONSE']._serialized_end=8056 + _globals['_MSGBATCHCANCELSPOTORDERS']._serialized_start=8059 + _globals['_MSGBATCHCANCELSPOTORDERS']._serialized_end=8224 + _globals['_MSGBATCHCANCELSPOTORDERSRESPONSE']._serialized_start=8226 + _globals['_MSGBATCHCANCELSPOTORDERSRESPONSE']._serialized_end=8296 + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS']._serialized_start=8299 + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERS']._serialized_end=8482 + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERSRESPONSE']._serialized_start=8484 + _globals['_MSGBATCHCANCELBINARYOPTIONSORDERSRESPONSE']._serialized_end=8563 + _globals['_MSGBATCHUPDATEORDERS']._serialized_start=8566 + _globals['_MSGBATCHUPDATEORDERS']._serialized_end=9546 + _globals['_MSGBATCHUPDATEORDERSRESPONSE']._serialized_start=9549 + _globals['_MSGBATCHUPDATEORDERSRESPONSE']._serialized_end=10325 + _globals['_MSGCREATEDERIVATIVEMARKETORDER']._serialized_start=10328 + _globals['_MSGCREATEDERIVATIVEMARKETORDER']._serialized_end=10513 + _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE']._serialized_start=10516 + _globals['_MSGCREATEDERIVATIVEMARKETORDERRESPONSE']._serialized_end=10700 + _globals['_DERIVATIVEMARKETORDERRESULTS']._serialized_start=10703 + _globals['_DERIVATIVEMARKETORDERRESULTS']._serialized_end=11066 + _globals['_MSGCREATEBINARYOPTIONSMARKETORDER']._serialized_start=11069 + _globals['_MSGCREATEBINARYOPTIONSMARKETORDER']._serialized_end=11260 + _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE']._serialized_start=11263 + _globals['_MSGCREATEBINARYOPTIONSMARKETORDERRESPONSE']._serialized_end=11450 + _globals['_MSGCANCELDERIVATIVEORDER']._serialized_start=11453 + _globals['_MSGCANCELDERIVATIVEORDER']._serialized_end=11704 + _globals['_MSGCANCELDERIVATIVEORDERRESPONSE']._serialized_start=11706 + _globals['_MSGCANCELDERIVATIVEORDERRESPONSE']._serialized_end=11740 + _globals['_MSGCANCELBINARYOPTIONSORDER']._serialized_start=11743 + _globals['_MSGCANCELBINARYOPTIONSORDER']._serialized_end=12000 + _globals['_MSGCANCELBINARYOPTIONSORDERRESPONSE']._serialized_start=12002 + _globals['_MSGCANCELBINARYOPTIONSORDERRESPONSE']._serialized_end=12039 + _globals['_ORDERDATA']._serialized_start=12042 + _globals['_ORDERDATA']._serialized_end=12199 + _globals['_MSGBATCHCANCELDERIVATIVEORDERS']._serialized_start=12202 + _globals['_MSGBATCHCANCELDERIVATIVEORDERS']._serialized_end=12379 + _globals['_MSGBATCHCANCELDERIVATIVEORDERSRESPONSE']._serialized_start=12381 + _globals['_MSGBATCHCANCELDERIVATIVEORDERSRESPONSE']._serialized_end=12457 + _globals['_MSGSUBACCOUNTTRANSFER']._serialized_start=12460 + _globals['_MSGSUBACCOUNTTRANSFER']._serialized_end=12722 + _globals['_MSGSUBACCOUNTTRANSFERRESPONSE']._serialized_start=12724 + _globals['_MSGSUBACCOUNTTRANSFERRESPONSE']._serialized_end=12755 + _globals['_MSGEXTERNALTRANSFER']._serialized_start=12758 + _globals['_MSGEXTERNALTRANSFER']._serialized_end=13016 + _globals['_MSGEXTERNALTRANSFERRESPONSE']._serialized_start=13018 + _globals['_MSGEXTERNALTRANSFERRESPONSE']._serialized_end=13047 + _globals['_MSGLIQUIDATEPOSITION']._serialized_start=13050 + _globals['_MSGLIQUIDATEPOSITION']._serialized_end=13277 + _globals['_MSGLIQUIDATEPOSITIONRESPONSE']._serialized_start=13279 + _globals['_MSGLIQUIDATEPOSITIONRESPONSE']._serialized_end=13309 + _globals['_MSGEMERGENCYSETTLEMARKET']._serialized_start=13312 + _globals['_MSGEMERGENCYSETTLEMARKET']._serialized_end=13479 + _globals['_MSGEMERGENCYSETTLEMARKETRESPONSE']._serialized_start=13481 + _globals['_MSGEMERGENCYSETTLEMARKETRESPONSE']._serialized_end=13515 + _globals['_MSGINCREASEPOSITIONMARGIN']._serialized_start=13518 + _globals['_MSGINCREASEPOSITIONMARGIN']._serialized_end=13821 + _globals['_MSGINCREASEPOSITIONMARGINRESPONSE']._serialized_start=13823 + _globals['_MSGINCREASEPOSITIONMARGINRESPONSE']._serialized_end=13858 + _globals['_MSGDECREASEPOSITIONMARGIN']._serialized_start=13861 + _globals['_MSGDECREASEPOSITIONMARGIN']._serialized_end=14164 + _globals['_MSGDECREASEPOSITIONMARGINRESPONSE']._serialized_start=14166 + _globals['_MSGDECREASEPOSITIONMARGINRESPONSE']._serialized_end=14201 + _globals['_MSGPRIVILEGEDEXECUTECONTRACT']._serialized_start=14204 + _globals['_MSGPRIVILEGEDEXECUTECONTRACT']._serialized_end=14406 + _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE']._serialized_start=14409 + _globals['_MSGPRIVILEGEDEXECUTECONTRACTRESPONSE']._serialized_end=14576 + _globals['_MSGREWARDSOPTOUT']._serialized_start=14578 + _globals['_MSGREWARDSOPTOUT']._serialized_end=14671 + _globals['_MSGREWARDSOPTOUTRESPONSE']._serialized_start=14673 + _globals['_MSGREWARDSOPTOUTRESPONSE']._serialized_end=14699 + _globals['_MSGRECLAIMLOCKEDFUNDS']._serialized_start=14702 + _globals['_MSGRECLAIMLOCKEDFUNDS']._serialized_end=14877 + _globals['_MSGRECLAIMLOCKEDFUNDSRESPONSE']._serialized_start=14879 + _globals['_MSGRECLAIMLOCKEDFUNDSRESPONSE']._serialized_end=14910 + _globals['_MSGSIGNDATA']._serialized_start=14913 + _globals['_MSGSIGNDATA']._serialized_end=15041 + _globals['_MSGSIGNDOC']._serialized_start=15043 + _globals['_MSGSIGNDOC']._serialized_end=15158 + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET']._serialized_start=15161 + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKET']._serialized_end=15552 + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKETRESPONSE']._serialized_start=15554 + _globals['_MSGADMINUPDATEBINARYOPTIONSMARKETRESPONSE']._serialized_end=15597 + _globals['_MSGAUTHORIZESTAKEGRANTS']._serialized_start=15600 + _globals['_MSGAUTHORIZESTAKEGRANTS']._serialized_end=15766 + _globals['_MSGAUTHORIZESTAKEGRANTSRESPONSE']._serialized_start=15768 + _globals['_MSGAUTHORIZESTAKEGRANTSRESPONSE']._serialized_end=15801 + _globals['_MSGACTIVATESTAKEGRANT']._serialized_start=15803 + _globals['_MSGACTIVATESTAKEGRANT']._serialized_end=15924 + _globals['_MSGACTIVATESTAKEGRANTRESPONSE']._serialized_start=15926 + _globals['_MSGACTIVATESTAKEGRANTRESPONSE']._serialized_end=15957 + _globals['_MSG']._serialized_start=15960 + _globals['_MSG']._serialized_end=20678 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/tx_pb2_grpc.py b/pyinjective/proto/injective/exchange/v2/tx_pb2_grpc.py new file mode 100644 index 00000000..bc2feace --- /dev/null +++ b/pyinjective/proto/injective/exchange/v2/tx_pb2_grpc.py @@ -0,0 +1,1595 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from pyinjective.proto.injective.exchange.v2 import tx_pb2 as injective_dot_exchange_dot_v2_dot_tx__pb2 + + +class MsgStub(object): + """Msg defines the exchange Msg service. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.Deposit = channel.unary_unary( + '/injective.exchange.v2.Msg/Deposit', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDeposit.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDepositResponse.FromString, + _registered_method=True) + self.Withdraw = channel.unary_unary( + '/injective.exchange.v2.Msg/Withdraw', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgWithdraw.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgWithdrawResponse.FromString, + _registered_method=True) + self.InstantSpotMarketLaunch = channel.unary_unary( + '/injective.exchange.v2.Msg/InstantSpotMarketLaunch', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantSpotMarketLaunch.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantSpotMarketLaunchResponse.FromString, + _registered_method=True) + self.InstantPerpetualMarketLaunch = channel.unary_unary( + '/injective.exchange.v2.Msg/InstantPerpetualMarketLaunch', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantPerpetualMarketLaunch.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantPerpetualMarketLaunchResponse.FromString, + _registered_method=True) + self.InstantExpiryFuturesMarketLaunch = channel.unary_unary( + '/injective.exchange.v2.Msg/InstantExpiryFuturesMarketLaunch', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantExpiryFuturesMarketLaunch.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantExpiryFuturesMarketLaunchResponse.FromString, + _registered_method=True) + self.CreateSpotLimitOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CreateSpotLimitOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotLimitOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotLimitOrderResponse.FromString, + _registered_method=True) + self.BatchCreateSpotLimitOrders = channel.unary_unary( + '/injective.exchange.v2.Msg/BatchCreateSpotLimitOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateSpotLimitOrders.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateSpotLimitOrdersResponse.FromString, + _registered_method=True) + self.CreateSpotMarketOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CreateSpotMarketOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotMarketOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotMarketOrderResponse.FromString, + _registered_method=True) + self.CancelSpotOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CancelSpotOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelSpotOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelSpotOrderResponse.FromString, + _registered_method=True) + self.BatchCancelSpotOrders = channel.unary_unary( + '/injective.exchange.v2.Msg/BatchCancelSpotOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelSpotOrders.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelSpotOrdersResponse.FromString, + _registered_method=True) + self.BatchUpdateOrders = channel.unary_unary( + '/injective.exchange.v2.Msg/BatchUpdateOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchUpdateOrders.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchUpdateOrdersResponse.FromString, + _registered_method=True) + self.PrivilegedExecuteContract = channel.unary_unary( + '/injective.exchange.v2.Msg/PrivilegedExecuteContract', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgPrivilegedExecuteContract.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgPrivilegedExecuteContractResponse.FromString, + _registered_method=True) + self.CreateDerivativeLimitOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CreateDerivativeLimitOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeLimitOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeLimitOrderResponse.FromString, + _registered_method=True) + self.BatchCreateDerivativeLimitOrders = channel.unary_unary( + '/injective.exchange.v2.Msg/BatchCreateDerivativeLimitOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateDerivativeLimitOrders.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateDerivativeLimitOrdersResponse.FromString, + _registered_method=True) + self.CreateDerivativeMarketOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CreateDerivativeMarketOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeMarketOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeMarketOrderResponse.FromString, + _registered_method=True) + self.CancelDerivativeOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CancelDerivativeOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelDerivativeOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelDerivativeOrderResponse.FromString, + _registered_method=True) + self.BatchCancelDerivativeOrders = channel.unary_unary( + '/injective.exchange.v2.Msg/BatchCancelDerivativeOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelDerivativeOrders.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelDerivativeOrdersResponse.FromString, + _registered_method=True) + self.InstantBinaryOptionsMarketLaunch = channel.unary_unary( + '/injective.exchange.v2.Msg/InstantBinaryOptionsMarketLaunch', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantBinaryOptionsMarketLaunch.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantBinaryOptionsMarketLaunchResponse.FromString, + _registered_method=True) + self.CreateBinaryOptionsLimitOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CreateBinaryOptionsLimitOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsLimitOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsLimitOrderResponse.FromString, + _registered_method=True) + self.CreateBinaryOptionsMarketOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CreateBinaryOptionsMarketOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsMarketOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsMarketOrderResponse.FromString, + _registered_method=True) + self.CancelBinaryOptionsOrder = channel.unary_unary( + '/injective.exchange.v2.Msg/CancelBinaryOptionsOrder', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelBinaryOptionsOrder.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelBinaryOptionsOrderResponse.FromString, + _registered_method=True) + self.BatchCancelBinaryOptionsOrders = channel.unary_unary( + '/injective.exchange.v2.Msg/BatchCancelBinaryOptionsOrders', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelBinaryOptionsOrders.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelBinaryOptionsOrdersResponse.FromString, + _registered_method=True) + self.SubaccountTransfer = channel.unary_unary( + '/injective.exchange.v2.Msg/SubaccountTransfer', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgSubaccountTransfer.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgSubaccountTransferResponse.FromString, + _registered_method=True) + self.ExternalTransfer = channel.unary_unary( + '/injective.exchange.v2.Msg/ExternalTransfer', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgExternalTransfer.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgExternalTransferResponse.FromString, + _registered_method=True) + self.LiquidatePosition = channel.unary_unary( + '/injective.exchange.v2.Msg/LiquidatePosition', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgLiquidatePosition.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgLiquidatePositionResponse.FromString, + _registered_method=True) + self.EmergencySettleMarket = channel.unary_unary( + '/injective.exchange.v2.Msg/EmergencySettleMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgEmergencySettleMarket.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgEmergencySettleMarketResponse.FromString, + _registered_method=True) + self.IncreasePositionMargin = channel.unary_unary( + '/injective.exchange.v2.Msg/IncreasePositionMargin', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgIncreasePositionMargin.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgIncreasePositionMarginResponse.FromString, + _registered_method=True) + self.DecreasePositionMargin = channel.unary_unary( + '/injective.exchange.v2.Msg/DecreasePositionMargin', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDecreasePositionMargin.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDecreasePositionMarginResponse.FromString, + _registered_method=True) + self.RewardsOptOut = channel.unary_unary( + '/injective.exchange.v2.Msg/RewardsOptOut', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgRewardsOptOut.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgRewardsOptOutResponse.FromString, + _registered_method=True) + self.AdminUpdateBinaryOptionsMarket = channel.unary_unary( + '/injective.exchange.v2.Msg/AdminUpdateBinaryOptionsMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAdminUpdateBinaryOptionsMarket.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAdminUpdateBinaryOptionsMarketResponse.FromString, + _registered_method=True) + self.UpdateParams = channel.unary_unary( + '/injective.exchange.v2.Msg/UpdateParams', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateParams.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateParamsResponse.FromString, + _registered_method=True) + self.UpdateSpotMarket = channel.unary_unary( + '/injective.exchange.v2.Msg/UpdateSpotMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateSpotMarket.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateSpotMarketResponse.FromString, + _registered_method=True) + self.UpdateDerivativeMarket = channel.unary_unary( + '/injective.exchange.v2.Msg/UpdateDerivativeMarket', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateDerivativeMarket.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateDerivativeMarketResponse.FromString, + _registered_method=True) + self.AuthorizeStakeGrants = channel.unary_unary( + '/injective.exchange.v2.Msg/AuthorizeStakeGrants', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAuthorizeStakeGrants.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAuthorizeStakeGrantsResponse.FromString, + _registered_method=True) + self.ActivateStakeGrant = channel.unary_unary( + '/injective.exchange.v2.Msg/ActivateStakeGrant', + request_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgActivateStakeGrant.SerializeToString, + response_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgActivateStakeGrantResponse.FromString, + _registered_method=True) + + +class MsgServicer(object): + """Msg defines the exchange Msg service. + """ + + def Deposit(self, request, context): + """Deposit defines a method for transferring coins from the sender's bank + balance into the subaccount's exchange deposits + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Withdraw(self, request, context): + """Withdraw defines a method for withdrawing coins from a subaccount's + deposits to the user's bank balance + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def InstantSpotMarketLaunch(self, request, context): + """InstantSpotMarketLaunch defines method for creating a spot market by paying + listing fee without governance + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def InstantPerpetualMarketLaunch(self, request, context): + """InstantPerpetualMarketLaunch defines a method for creating a new perpetual + futures market by paying listing fee without governance + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def InstantExpiryFuturesMarketLaunch(self, request, context): + """InstantExpiryFuturesMarketLaunch defines a method for creating a new expiry + futures market by paying listing fee without governance + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CreateSpotLimitOrder(self, request, context): + """CreateSpotLimitOrder defines a method for creating a new spot limit order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BatchCreateSpotLimitOrders(self, request, context): + """BatchCreateSpotLimitOrder defines a method for creating a new batch of spot + limit orders. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CreateSpotMarketOrder(self, request, context): + """CreateSpotMarketOrder defines a method for creating a new spot market + order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CancelSpotOrder(self, request, context): + """MsgCancelSpotOrder defines a method for cancelling a spot order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BatchCancelSpotOrders(self, request, context): + """BatchCancelSpotOrders defines a method for cancelling a batch of spot + orders in a given market. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BatchUpdateOrders(self, request, context): + """BatchUpdateOrders defines a method for updating a batch of orders. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def PrivilegedExecuteContract(self, request, context): + """PrivilegedExecuteContract defines a method for executing a Cosmwasm + contract from the exchange module with privileged capabilities. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CreateDerivativeLimitOrder(self, request, context): + """CreateDerivativeLimitOrder defines a method for creating a new derivative + limit order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BatchCreateDerivativeLimitOrders(self, request, context): + """BatchCreateDerivativeLimitOrders defines a method for creating a new batch + of derivative limit orders. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CreateDerivativeMarketOrder(self, request, context): + """MsgCreateDerivativeLimitOrder defines a method for creating a new + derivative market order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CancelDerivativeOrder(self, request, context): + """MsgCancelDerivativeOrder defines a method for cancelling a derivative + order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BatchCancelDerivativeOrders(self, request, context): + """MsgBatchCancelDerivativeOrders defines a method for cancelling a batch of + derivative limit orders. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def InstantBinaryOptionsMarketLaunch(self, request, context): + """InstantBinaryOptionsMarketLaunch defines method for creating a binary + options market by paying listing fee without governance + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CreateBinaryOptionsLimitOrder(self, request, context): + """CreateBinaryOptionsLimitOrder defines a method for creating a new binary + options limit order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CreateBinaryOptionsMarketOrder(self, request, context): + """CreateBinaryOptionsMarketOrder defines a method for creating a new binary + options market order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CancelBinaryOptionsOrder(self, request, context): + """MsgCancelBinaryOptionsOrder defines a method for cancelling a binary + options order. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def BatchCancelBinaryOptionsOrders(self, request, context): + """BatchCancelBinaryOptionsOrders defines a method for cancelling a batch of + binary options limit orders. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def SubaccountTransfer(self, request, context): + """SubaccountTransfer defines a method for transfer between subaccounts + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ExternalTransfer(self, request, context): + """ExternalTransfer defines a method for transfer between external accounts + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def LiquidatePosition(self, request, context): + """LiquidatePosition defines a method for liquidating a position + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def EmergencySettleMarket(self, request, context): + """EmergencySettleMarket defines a method for emergency settling a market + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def IncreasePositionMargin(self, request, context): + """IncreasePositionMargin defines a method for increasing margin of a position + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DecreasePositionMargin(self, request, context): + """DecreasePositionMargin defines a method for decreasing margin of a position + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def RewardsOptOut(self, request, context): + """RewardsOptOut defines a method for opting out of rewards + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AdminUpdateBinaryOptionsMarket(self, request, context): + """AdminUpdateBinaryOptionsMarket defines method for updating a binary options + market by admin + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateParams(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateSpotMarket(self, request, context): + """UpdateSpotMarket modifies certain spot market fields (admin only) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateDerivativeMarket(self, request, context): + """UpdateDerivativeMarket modifies certain derivative market fields (admin + only) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AuthorizeStakeGrants(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ActivateStakeGrant(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_MsgServicer_to_server(servicer, server): + rpc_method_handlers = { + 'Deposit': grpc.unary_unary_rpc_method_handler( + servicer.Deposit, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDeposit.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDepositResponse.SerializeToString, + ), + 'Withdraw': grpc.unary_unary_rpc_method_handler( + servicer.Withdraw, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgWithdraw.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgWithdrawResponse.SerializeToString, + ), + 'InstantSpotMarketLaunch': grpc.unary_unary_rpc_method_handler( + servicer.InstantSpotMarketLaunch, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantSpotMarketLaunch.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantSpotMarketLaunchResponse.SerializeToString, + ), + 'InstantPerpetualMarketLaunch': grpc.unary_unary_rpc_method_handler( + servicer.InstantPerpetualMarketLaunch, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantPerpetualMarketLaunch.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantPerpetualMarketLaunchResponse.SerializeToString, + ), + 'InstantExpiryFuturesMarketLaunch': grpc.unary_unary_rpc_method_handler( + servicer.InstantExpiryFuturesMarketLaunch, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantExpiryFuturesMarketLaunch.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantExpiryFuturesMarketLaunchResponse.SerializeToString, + ), + 'CreateSpotLimitOrder': grpc.unary_unary_rpc_method_handler( + servicer.CreateSpotLimitOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotLimitOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotLimitOrderResponse.SerializeToString, + ), + 'BatchCreateSpotLimitOrders': grpc.unary_unary_rpc_method_handler( + servicer.BatchCreateSpotLimitOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateSpotLimitOrders.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateSpotLimitOrdersResponse.SerializeToString, + ), + 'CreateSpotMarketOrder': grpc.unary_unary_rpc_method_handler( + servicer.CreateSpotMarketOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotMarketOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotMarketOrderResponse.SerializeToString, + ), + 'CancelSpotOrder': grpc.unary_unary_rpc_method_handler( + servicer.CancelSpotOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelSpotOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelSpotOrderResponse.SerializeToString, + ), + 'BatchCancelSpotOrders': grpc.unary_unary_rpc_method_handler( + servicer.BatchCancelSpotOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelSpotOrders.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelSpotOrdersResponse.SerializeToString, + ), + 'BatchUpdateOrders': grpc.unary_unary_rpc_method_handler( + servicer.BatchUpdateOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchUpdateOrders.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchUpdateOrdersResponse.SerializeToString, + ), + 'PrivilegedExecuteContract': grpc.unary_unary_rpc_method_handler( + servicer.PrivilegedExecuteContract, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgPrivilegedExecuteContract.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgPrivilegedExecuteContractResponse.SerializeToString, + ), + 'CreateDerivativeLimitOrder': grpc.unary_unary_rpc_method_handler( + servicer.CreateDerivativeLimitOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeLimitOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeLimitOrderResponse.SerializeToString, + ), + 'BatchCreateDerivativeLimitOrders': grpc.unary_unary_rpc_method_handler( + servicer.BatchCreateDerivativeLimitOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateDerivativeLimitOrders.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateDerivativeLimitOrdersResponse.SerializeToString, + ), + 'CreateDerivativeMarketOrder': grpc.unary_unary_rpc_method_handler( + servicer.CreateDerivativeMarketOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeMarketOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeMarketOrderResponse.SerializeToString, + ), + 'CancelDerivativeOrder': grpc.unary_unary_rpc_method_handler( + servicer.CancelDerivativeOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelDerivativeOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelDerivativeOrderResponse.SerializeToString, + ), + 'BatchCancelDerivativeOrders': grpc.unary_unary_rpc_method_handler( + servicer.BatchCancelDerivativeOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelDerivativeOrders.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelDerivativeOrdersResponse.SerializeToString, + ), + 'InstantBinaryOptionsMarketLaunch': grpc.unary_unary_rpc_method_handler( + servicer.InstantBinaryOptionsMarketLaunch, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantBinaryOptionsMarketLaunch.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantBinaryOptionsMarketLaunchResponse.SerializeToString, + ), + 'CreateBinaryOptionsLimitOrder': grpc.unary_unary_rpc_method_handler( + servicer.CreateBinaryOptionsLimitOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsLimitOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsLimitOrderResponse.SerializeToString, + ), + 'CreateBinaryOptionsMarketOrder': grpc.unary_unary_rpc_method_handler( + servicer.CreateBinaryOptionsMarketOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsMarketOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsMarketOrderResponse.SerializeToString, + ), + 'CancelBinaryOptionsOrder': grpc.unary_unary_rpc_method_handler( + servicer.CancelBinaryOptionsOrder, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelBinaryOptionsOrder.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelBinaryOptionsOrderResponse.SerializeToString, + ), + 'BatchCancelBinaryOptionsOrders': grpc.unary_unary_rpc_method_handler( + servicer.BatchCancelBinaryOptionsOrders, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelBinaryOptionsOrders.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelBinaryOptionsOrdersResponse.SerializeToString, + ), + 'SubaccountTransfer': grpc.unary_unary_rpc_method_handler( + servicer.SubaccountTransfer, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgSubaccountTransfer.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgSubaccountTransferResponse.SerializeToString, + ), + 'ExternalTransfer': grpc.unary_unary_rpc_method_handler( + servicer.ExternalTransfer, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgExternalTransfer.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgExternalTransferResponse.SerializeToString, + ), + 'LiquidatePosition': grpc.unary_unary_rpc_method_handler( + servicer.LiquidatePosition, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgLiquidatePosition.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgLiquidatePositionResponse.SerializeToString, + ), + 'EmergencySettleMarket': grpc.unary_unary_rpc_method_handler( + servicer.EmergencySettleMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgEmergencySettleMarket.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgEmergencySettleMarketResponse.SerializeToString, + ), + 'IncreasePositionMargin': grpc.unary_unary_rpc_method_handler( + servicer.IncreasePositionMargin, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgIncreasePositionMargin.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgIncreasePositionMarginResponse.SerializeToString, + ), + 'DecreasePositionMargin': grpc.unary_unary_rpc_method_handler( + servicer.DecreasePositionMargin, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDecreasePositionMargin.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDecreasePositionMarginResponse.SerializeToString, + ), + 'RewardsOptOut': grpc.unary_unary_rpc_method_handler( + servicer.RewardsOptOut, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgRewardsOptOut.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgRewardsOptOutResponse.SerializeToString, + ), + 'AdminUpdateBinaryOptionsMarket': grpc.unary_unary_rpc_method_handler( + servicer.AdminUpdateBinaryOptionsMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAdminUpdateBinaryOptionsMarket.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAdminUpdateBinaryOptionsMarketResponse.SerializeToString, + ), + 'UpdateParams': grpc.unary_unary_rpc_method_handler( + servicer.UpdateParams, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateParams.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateParamsResponse.SerializeToString, + ), + 'UpdateSpotMarket': grpc.unary_unary_rpc_method_handler( + servicer.UpdateSpotMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateSpotMarket.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateSpotMarketResponse.SerializeToString, + ), + 'UpdateDerivativeMarket': grpc.unary_unary_rpc_method_handler( + servicer.UpdateDerivativeMarket, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateDerivativeMarket.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateDerivativeMarketResponse.SerializeToString, + ), + 'AuthorizeStakeGrants': grpc.unary_unary_rpc_method_handler( + servicer.AuthorizeStakeGrants, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAuthorizeStakeGrants.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAuthorizeStakeGrantsResponse.SerializeToString, + ), + 'ActivateStakeGrant': grpc.unary_unary_rpc_method_handler( + servicer.ActivateStakeGrant, + request_deserializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgActivateStakeGrant.FromString, + response_serializer=injective_dot_exchange_dot_v2_dot_tx__pb2.MsgActivateStakeGrantResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'injective.exchange.v2.Msg', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('injective.exchange.v2.Msg', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class Msg(object): + """Msg defines the exchange Msg service. + """ + + @staticmethod + def Deposit(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/Deposit', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDeposit.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDepositResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def Withdraw(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/Withdraw', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgWithdraw.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgWithdrawResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def InstantSpotMarketLaunch(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/InstantSpotMarketLaunch', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantSpotMarketLaunch.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantSpotMarketLaunchResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def InstantPerpetualMarketLaunch(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/InstantPerpetualMarketLaunch', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantPerpetualMarketLaunch.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantPerpetualMarketLaunchResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def InstantExpiryFuturesMarketLaunch(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/InstantExpiryFuturesMarketLaunch', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantExpiryFuturesMarketLaunch.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantExpiryFuturesMarketLaunchResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CreateSpotLimitOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CreateSpotLimitOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotLimitOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotLimitOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BatchCreateSpotLimitOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/BatchCreateSpotLimitOrders', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateSpotLimitOrders.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateSpotLimitOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CreateSpotMarketOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CreateSpotMarketOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotMarketOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateSpotMarketOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CancelSpotOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CancelSpotOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelSpotOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelSpotOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BatchCancelSpotOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/BatchCancelSpotOrders', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelSpotOrders.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelSpotOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BatchUpdateOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/BatchUpdateOrders', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchUpdateOrders.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchUpdateOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def PrivilegedExecuteContract(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/PrivilegedExecuteContract', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgPrivilegedExecuteContract.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgPrivilegedExecuteContractResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CreateDerivativeLimitOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CreateDerivativeLimitOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeLimitOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeLimitOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BatchCreateDerivativeLimitOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/BatchCreateDerivativeLimitOrders', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateDerivativeLimitOrders.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCreateDerivativeLimitOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CreateDerivativeMarketOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CreateDerivativeMarketOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeMarketOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateDerivativeMarketOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CancelDerivativeOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CancelDerivativeOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelDerivativeOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelDerivativeOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BatchCancelDerivativeOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/BatchCancelDerivativeOrders', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelDerivativeOrders.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelDerivativeOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def InstantBinaryOptionsMarketLaunch(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/InstantBinaryOptionsMarketLaunch', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantBinaryOptionsMarketLaunch.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgInstantBinaryOptionsMarketLaunchResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CreateBinaryOptionsLimitOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CreateBinaryOptionsLimitOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsLimitOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsLimitOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CreateBinaryOptionsMarketOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CreateBinaryOptionsMarketOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsMarketOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCreateBinaryOptionsMarketOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def CancelBinaryOptionsOrder(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/CancelBinaryOptionsOrder', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelBinaryOptionsOrder.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgCancelBinaryOptionsOrderResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def BatchCancelBinaryOptionsOrders(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/BatchCancelBinaryOptionsOrders', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelBinaryOptionsOrders.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgBatchCancelBinaryOptionsOrdersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def SubaccountTransfer(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/SubaccountTransfer', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgSubaccountTransfer.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgSubaccountTransferResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def ExternalTransfer(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/ExternalTransfer', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgExternalTransfer.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgExternalTransferResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def LiquidatePosition(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/LiquidatePosition', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgLiquidatePosition.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgLiquidatePositionResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def EmergencySettleMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/EmergencySettleMarket', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgEmergencySettleMarket.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgEmergencySettleMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def IncreasePositionMargin(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/IncreasePositionMargin', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgIncreasePositionMargin.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgIncreasePositionMarginResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DecreasePositionMargin(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/DecreasePositionMargin', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDecreasePositionMargin.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgDecreasePositionMarginResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def RewardsOptOut(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/RewardsOptOut', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgRewardsOptOut.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgRewardsOptOutResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AdminUpdateBinaryOptionsMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/AdminUpdateBinaryOptionsMarket', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAdminUpdateBinaryOptionsMarket.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAdminUpdateBinaryOptionsMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def UpdateParams(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/UpdateParams', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateParams.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateParamsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def UpdateSpotMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/UpdateSpotMarket', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateSpotMarket.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateSpotMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def UpdateDerivativeMarket(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/UpdateDerivativeMarket', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateDerivativeMarket.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgUpdateDerivativeMarketResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AuthorizeStakeGrants(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/AuthorizeStakeGrants', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAuthorizeStakeGrants.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgAuthorizeStakeGrantsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def ActivateStakeGrant(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/injective.exchange.v2.Msg/ActivateStakeGrant', + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgActivateStakeGrant.SerializeToString, + injective_dot_exchange_dot_v2_dot_tx__pb2.MsgActivateStakeGrantResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/tests/client/chain/grpc/test_chain_grpc_auction_api.py b/tests/client/chain/grpc/test_chain_grpc_auction_api.py index 9de9c63a..9832f7cc 100644 --- a/tests/client/chain/grpc/test_chain_grpc_auction_api.py +++ b/tests/client/chain/grpc/test_chain_grpc_auction_api.py @@ -23,13 +23,23 @@ async def test_fetch_module_params( self, auction_servicer, ): - params = auction_pb.Params(auction_period=604800, min_next_bid_increment_rate="2500000000000000") + params = auction_pb.Params( + auction_period=604800, + min_next_bid_increment_rate="2500000000000000", + inj_basket_max_cap="100000", + ) auction_servicer.auction_params.append(auction_query_pb.QueryAuctionParamsResponse(params=params)) api = self._api_instance(servicer=auction_servicer) module_params = await api.fetch_module_params() - expected_params = {"params": {"auctionPeriod": "604800", "minNextBidIncrementRate": "2500000000000000"}} + expected_params = { + "params": { + "auctionPeriod": str(params.auction_period), + "minNextBidIncrementRate": params.min_next_bid_increment_rate, + "injBasketMaxCap": str(params.inj_basket_max_cap), + } + } assert expected_params == module_params @@ -38,7 +48,11 @@ async def test_fetch_module_state( self, auction_servicer, ): - params = auction_pb.Params(auction_period=604800, min_next_bid_increment_rate="2500000000000000") + params = auction_pb.Params( + auction_period=604800, + min_next_bid_increment_rate="2500000000000000", + inj_basket_max_cap="100000", + ) highest_bid = auction_pb.Bid( bidder="inj1pvt70tt7epjudnurkqlxu62flfgy46j2ytj7j5", amount="\n\003inj\022\0232347518723906280000", @@ -63,8 +77,9 @@ async def test_fetch_module_state( "bidder": "inj1pvt70tt7epjudnurkqlxu62flfgy46j2ytj7j5", }, "params": { - "auctionPeriod": "604800", - "minNextBidIncrementRate": "2500000000000000", + "auctionPeriod": str(params.auction_period), + "minNextBidIncrementRate": params.min_next_bid_increment_rate, + "injBasketMaxCap": str(params.inj_basket_max_cap), }, } } @@ -76,7 +91,11 @@ async def test_fetch_module_state_when_no_highest_bid_present( self, auction_servicer, ): - params = auction_pb.Params(auction_period=604800, min_next_bid_increment_rate="2500000000000000") + params = auction_pb.Params( + auction_period=604800, + min_next_bid_increment_rate="2500000000000000", + inj_basket_max_cap="100000", + ) state = genesis_pb.GenesisState( params=params, auction_round=50, @@ -92,8 +111,9 @@ async def test_fetch_module_state_when_no_highest_bid_present( "auctionEndingTimestamp": "1687504387", "auctionRound": "50", "params": { - "auctionPeriod": "604800", - "minNextBidIncrementRate": "2500000000000000", + "auctionPeriod": str(params.auction_period), + "minNextBidIncrementRate": params.min_next_bid_increment_rate, + "injBasketMaxCap": str(params.inj_basket_max_cap), }, } } diff --git a/tests/client/chain/grpc/test_chain_grpc_exchange_api.py b/tests/client/chain/grpc/test_chain_grpc_exchange_api.py index 7ec81981..f5db75e7 100644 --- a/tests/client/chain/grpc/test_chain_grpc_exchange_api.py +++ b/tests/client/chain/grpc/test_chain_grpc_exchange_api.py @@ -446,6 +446,8 @@ async def test_fetch_spot_markets( min_notional="5000000000000000000", admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", admin_permissions=1, + base_decimals=18, + quote_decimals=6, ) exchange_servicer.spot_markets_responses.append( exchange_query_pb.QuerySpotMarketsResponse( @@ -476,6 +478,8 @@ async def test_fetch_spot_markets( "minNotional": market.min_notional, "admin": market.admin, "adminPermissions": market.admin_permissions, + "baseDecimals": market.base_decimals, + "quoteDecimals": market.quote_decimals, } ] } @@ -501,6 +505,8 @@ async def test_fetch_spot_market( min_notional="5000000000000000000", admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", admin_permissions=1, + base_decimals=18, + quote_decimals=6, ) exchange_servicer.spot_market_responses.append( exchange_query_pb.QuerySpotMarketResponse( @@ -528,6 +534,8 @@ async def test_fetch_spot_market( "minNotional": market.min_notional, "admin": market.admin, "adminPermissions": market.admin_permissions, + "baseDecimals": market.base_decimals, + "quoteDecimals": market.quote_decimals, } } @@ -552,6 +560,8 @@ async def test_fetch_full_spot_markets( min_notional="5000000000000000000", admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", admin_permissions=1, + base_decimals=18, + quote_decimals=6, ) mid_price_and_tob = exchange_pb.MidPriceAndTOB( mid_price="2000000000000000000", @@ -593,6 +603,8 @@ async def test_fetch_full_spot_markets( "minNotional": market.min_notional, "admin": market.admin, "adminPermissions": market.admin_permissions, + "baseDecimals": market.base_decimals, + "quoteDecimals": market.quote_decimals, }, "midPriceAndTob": { "midPrice": mid_price_and_tob.mid_price, @@ -624,6 +636,8 @@ async def test_fetch_full_spot_market( min_notional="5000000000000000000", admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", admin_permissions=1, + base_decimals=18, + quote_decimals=6, ) mid_price_and_tob = exchange_pb.MidPriceAndTOB( mid_price="2000000000000000000", @@ -663,6 +677,8 @@ async def test_fetch_full_spot_market( "minNotional": market.min_notional, "admin": market.admin, "adminPermissions": market.admin_permissions, + "baseDecimals": market.base_decimals, + "quoteDecimals": market.quote_decimals, }, "midPriceAndTob": { "midPrice": mid_price_and_tob.mid_price, @@ -1234,6 +1250,7 @@ async def test_fetch_derivative_markets( min_notional="5000000000000000000", admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", admin_permissions=1, + quote_decimals=6, ) market_info = exchange_pb.PerpetualMarketInfo( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", @@ -1298,6 +1315,7 @@ async def test_fetch_derivative_markets( "minNotional": market.min_notional, "admin": market.admin, "adminPermissions": market.admin_permissions, + "quoteDecimals": market.quote_decimals, }, "perpetualInfo": { "marketInfo": { @@ -1350,6 +1368,7 @@ async def test_fetch_derivative_market( min_notional="5000000000000000000", admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", admin_permissions=1, + quote_decimals=6, ) market_info = exchange_pb.PerpetualMarketInfo( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", @@ -1412,6 +1431,7 @@ async def test_fetch_derivative_market( "minNotional": market.min_notional, "admin": market.admin, "adminPermissions": market.admin_permissions, + "quoteDecimals": market.quote_decimals, }, "perpetualInfo": { "marketInfo": { @@ -2323,6 +2343,7 @@ async def test_fetch_binary_options_markets( settlement_price="2000000000000000000", min_notional="5000000000000000000", admin_permissions=1, + quote_decimals=6, ) response = exchange_query_pb.QueryBinaryMarketsResponse( markets=[market], @@ -2354,6 +2375,7 @@ async def test_fetch_binary_options_markets( "settlementPrice": market.settlement_price, "minNotional": market.min_notional, "adminPermissions": market.admin_permissions, + "quoteDecimals": market.quote_decimals, }, ] } diff --git a/tests/test_composer.py b/tests/test_composer.py index b3dd1fda..733e171a 100644 --- a/tests/test_composer.py +++ b/tests/test_composer.py @@ -311,6 +311,8 @@ def test_msg_instant_spot_market_launch(self, basic_composer): min_price_tick_size = Decimal("0.01") min_quantity_tick_size = Decimal("1") min_notional = Decimal("2") + base_decimals = 18 + quote_decimals = 6 base_token = basic_composer.tokens[base_denom] quote_token = basic_composer.tokens[quote_denom] @@ -331,6 +333,8 @@ def test_msg_instant_spot_market_launch(self, basic_composer): min_price_tick_size=min_price_tick_size, min_quantity_tick_size=min_quantity_tick_size, min_notional=min_notional, + base_decimals=base_decimals, + quote_decimals=quote_decimals, ) expected_message = { @@ -341,6 +345,8 @@ def test_msg_instant_spot_market_launch(self, basic_composer): "minPriceTickSize": f"{expected_min_price_tick_size.normalize():f}", "minQuantityTickSize": f"{expected_min_quantity_tick_size.normalize():f}", "minNotional": f"{expected_min_notional.normalize():f}", + "baseDecimals": base_decimals, + "quoteDecimals": quote_decimals, } dict_message = json_format.MessageToDict( message=message, From 5e7082384f491ed17012aab34c6993a4bb2bf4bb Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:55:14 -0300 Subject: [PATCH 3/7] (feat) Updated proto definitions with exchange V2 from chain core to include new V2 chain stream protos. Fixed all failing tests --- buf.gen.yaml | 2 +- .../injective/auction/v1beta1/auction_pb2.py | 20 +-- .../proto/injective/exchange/v2/events_pb2.py | 10 +- .../proto/injective/stream/v2/query_pb2.py | 132 ++++++++++++++++++ .../injective/stream/v2/query_pb2_grpc.py | 80 +++++++++++ .../chain/grpc/test_chain_grpc_auction_api.py | 22 ++- 6 files changed, 244 insertions(+), 22 deletions(-) create mode 100644 pyinjective/proto/injective/stream/v2/query_pb2.py create mode 100644 pyinjective/proto/injective/stream/v2/query_pb2_grpc.py diff --git a/buf.gen.yaml b/buf.gen.yaml index 1fe323f2..4c9a0415 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -24,6 +24,6 @@ inputs: # tag: v1.13.0 # subdir: proto - git_repo: https://github.com/InjectiveLabs/injective-core - branch: feat/add_derivative_v2_upgrade_handler_logic + branch: feat/chain_stream_exchange_v2 subdir: proto - directory: proto diff --git a/pyinjective/proto/injective/auction/v1beta1/auction_pb2.py b/pyinjective/proto/injective/auction/v1beta1/auction_pb2.py index 394d1e17..d2cc528a 100644 --- a/pyinjective/proto/injective/auction/v1beta1/auction_pb2.py +++ b/pyinjective/proto/injective/auction/v1beta1/auction_pb2.py @@ -17,7 +17,7 @@ from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'injective/auction/v1beta1/auction.proto\x12\x19injective.auction.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x11\x61mino/amino.proto\"\xf7\x01\n\x06Params\x12%\n\x0e\x61uction_period\x18\x01 \x01(\x03R\rauctionPeriod\x12\x61\n\x1bmin_next_bid_increment_rate\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17minNextBidIncrementRate\x12J\n\x12inj_basket_max_cap\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0finjBasketMaxCap:\x17\xe8\xa0\x1f\x01\x8a\xe7\xb0*\x0e\x61uction/Params\"\x83\x01\n\x03\x42id\x12\x33\n\x06\x62idder\x18\x01 \x01(\tB\x1b\xea\xde\x1f\x06\x62idder\xf2\xde\x1f\ryaml:\"bidder\"R\x06\x62idder\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\"\x8a\x01\n\x11LastAuctionResult\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\x81\x01\n\x08\x45ventBid\x12\x16\n\x06\x62idder\x18\x01 \x01(\tR\x06\x62idder\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\x8b\x01\n\x12\x45ventAuctionResult\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12G\n\x06\x61mount\x18\x02 \x01(\tB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\xc0\x01\n\x11\x45ventAuctionStart\x12\x14\n\x05round\x18\x01 \x01(\x04R\x05round\x12)\n\x10\x65nding_timestamp\x18\x02 \x01(\x03R\x0f\x65ndingTimestamp\x12j\n\nnew_basket\x18\x03 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\tnewBasketB\x82\x02\n\x1d\x63om.injective.auction.v1beta1B\x0c\x41uctionProtoP\x01ZMgithub.com/InjectiveLabs/injective-core/injective-chain/modules/auction/types\xa2\x02\x03IAX\xaa\x02\x19Injective.Auction.V1beta1\xca\x02\x19Injective\\Auction\\V1beta1\xe2\x02%Injective\\Auction\\V1beta1\\GPBMetadata\xea\x02\x1bInjective::Auction::V1beta1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'injective/auction/v1beta1/auction.proto\x12\x19injective.auction.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x11\x61mino/amino.proto\"\xf7\x01\n\x06Params\x12%\n\x0e\x61uction_period\x18\x01 \x01(\x03R\rauctionPeriod\x12\x61\n\x1bmin_next_bid_increment_rate\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x17minNextBidIncrementRate\x12J\n\x12inj_basket_max_cap\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x0finjBasketMaxCap:\x17\xe8\xa0\x1f\x01\x8a\xe7\xb0*\x0e\x61uction/Params\"\x9e\x01\n\x03\x42id\x12\x33\n\x06\x62idder\x18\x01 \x01(\tB\x1b\xea\xde\x1f\x06\x62idder\xf2\xde\x1f\ryaml:\"bidder\"R\x06\x62idder\x12\x62\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\"\xa5\x01\n\x11LastAuctionResult\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12\x62\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\x9c\x01\n\x08\x45ventBid\x12\x16\n\x06\x62idder\x18\x01 \x01(\tR\x06\x62idder\x12\x62\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\xa6\x01\n\x12\x45ventAuctionResult\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12\x62\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB/\xc8\xde\x1f\x00\xda\xde\x1f\'github.com/cosmos/cosmos-sdk/types.CoinR\x06\x61mount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\"\xc0\x01\n\x11\x45ventAuctionStart\x12\x14\n\x05round\x18\x01 \x01(\x04R\x05round\x12)\n\x10\x65nding_timestamp\x18\x02 \x01(\x03R\x0f\x65ndingTimestamp\x12j\n\nnew_basket\x18\x03 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\tnewBasketB\x82\x02\n\x1d\x63om.injective.auction.v1beta1B\x0c\x41uctionProtoP\x01ZMgithub.com/InjectiveLabs/injective-core/injective-chain/modules/auction/types\xa2\x02\x03IAX\xaa\x02\x19Injective.Auction.V1beta1\xca\x02\x19Injective\\Auction\\V1beta1\xe2\x02%Injective\\Auction\\V1beta1\\GPBMetadata\xea\x02\x1bInjective::Auction::V1beta1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -46,13 +46,13 @@ _globals['_PARAMS']._serialized_start=144 _globals['_PARAMS']._serialized_end=391 _globals['_BID']._serialized_start=394 - _globals['_BID']._serialized_end=525 - _globals['_LASTAUCTIONRESULT']._serialized_start=528 - _globals['_LASTAUCTIONRESULT']._serialized_end=666 - _globals['_EVENTBID']._serialized_start=669 - _globals['_EVENTBID']._serialized_end=798 - _globals['_EVENTAUCTIONRESULT']._serialized_start=801 - _globals['_EVENTAUCTIONRESULT']._serialized_end=940 - _globals['_EVENTAUCTIONSTART']._serialized_start=943 - _globals['_EVENTAUCTIONSTART']._serialized_end=1135 + _globals['_BID']._serialized_end=552 + _globals['_LASTAUCTIONRESULT']._serialized_start=555 + _globals['_LASTAUCTIONRESULT']._serialized_end=720 + _globals['_EVENTBID']._serialized_start=723 + _globals['_EVENTBID']._serialized_end=879 + _globals['_EVENTAUCTIONRESULT']._serialized_start=882 + _globals['_EVENTAUCTIONRESULT']._serialized_end=1048 + _globals['_EVENTAUCTIONSTART']._serialized_start=1051 + _globals['_EVENTAUCTIONSTART']._serialized_end=1243 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/events_pb2.py b/pyinjective/proto/injective/exchange/v2/events_pb2.py index 0154fee0..04428a8f 100644 --- a/pyinjective/proto/injective/exchange/v2/events_pb2.py +++ b/pyinjective/proto/injective/exchange/v2/events_pb2.py @@ -20,7 +20,7 @@ from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"injective/exchange/v2/events.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a$injective/exchange/v2/exchange.proto\x1a\"injective/exchange/v2/market.proto\x1a!injective/exchange/v2/order.proto\"\xd2\x01\n\x17\x45ventBatchSpotExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12J\n\rexecutionType\x18\x03 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x37\n\x06trades\x18\x04 \x03(\x0b\x32\x1f.injective.exchange.v2.TradeLogR\x06trades\"\xdd\x02\n\x1d\x45ventBatchDerivativeExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12%\n\x0eis_liquidation\x18\x03 \x01(\x08R\risLiquidation\x12R\n\x12\x63umulative_funding\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x63umulativeFunding\x12J\n\rexecutionType\x18\x05 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x41\n\x06trades\x18\x06 \x03(\x0b\x32).injective.exchange.v2.DerivativeTradeLogR\x06trades\"\xc2\x02\n\x1d\x45ventLostFundsFromLiquidation\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12x\n\'lost_funds_from_available_during_payout\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"lostFundsFromAvailableDuringPayout\x12\x65\n\x1dlost_funds_from_order_cancels\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19lostFundsFromOrderCancels\"\x84\x01\n\x1c\x45ventBatchDerivativePosition\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\tpositions\x18\x02 \x03(\x0b\x32).injective.exchange.v2.SubaccountPositionR\tpositions\"\xbb\x01\n\x1b\x45ventDerivativeMarketPaused\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12.\n\x13total_missing_funds\x18\x03 \x01(\tR\x11totalMissingFunds\x12,\n\x12missing_funds_rate\x18\x04 \x01(\tR\x10missingFundsRate\"\x8f\x01\n\x1b\x45ventMarketBeyondBankruptcy\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12\x30\n\x14missing_market_funds\x18\x03 \x01(\tR\x12missingMarketFunds\"\x88\x01\n\x18\x45ventAllPositionsHaircut\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12,\n\x12missing_funds_rate\x18\x03 \x01(\tR\x10missingFundsRate\"j\n\x1e\x45ventBinaryOptionsMarketUpdate\x12H\n\x06market\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.BinaryOptionsMarketB\x04\xc8\xde\x1f\x00R\x06market\"\xbf\x01\n\x12\x45ventNewSpotOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x44\n\nbuy_orders\x18\x02 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\tbuyOrders\x12\x46\n\x0bsell_orders\x18\x03 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\nsellOrders\"\xd1\x01\n\x18\x45ventNewDerivativeOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\nbuy_orders\x18\x02 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\tbuyOrders\x12L\n\x0bsell_orders\x18\x03 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\nsellOrders\"v\n\x14\x45ventCancelSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"X\n\x15\x45ventSpotMarketUpdate\x12?\n\x06market\x18\x01 \x01(\x0b\x32!.injective.exchange.v2.SpotMarketB\x04\xc8\xde\x1f\x00R\x06market\"\x98\x02\n\x1a\x45ventPerpetualMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12\x64\n\x15perpetual_market_info\x18\x02 \x01(\x0b\x32*.injective.exchange.v2.PerpetualMarketInfoB\x04\xc8\xde\x1f\x01R\x13perpetualMarketInfo\x12M\n\x07\x66unding\x18\x03 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x01R\x07\x66unding\"\xda\x01\n\x1e\x45ventExpiryFuturesMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12q\n\x1a\x65xpiry_futures_market_info\x18\x03 \x01(\x0b\x32..injective.exchange.v2.ExpiryFuturesMarketInfoB\x04\xc8\xde\x1f\x01R\x17\x65xpiryFuturesMarketInfo\"\xc7\x02\n!EventPerpetualMarketFundingUpdate\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12M\n\x07\x66unding\x18\x02 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x00R\x07\x66unding\x12*\n\x11is_hourly_funding\x18\x03 \x01(\x08R\x0fisHourlyFunding\x12\x46\n\x0c\x66unding_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x66undingRate\x12\x42\n\nmark_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tmarkPrice\"\x97\x01\n\x16\x45ventSubaccountDeposit\x12\x1f\n\x0bsrc_address\x18\x01 \x01(\tR\nsrcAddress\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\x98\x01\n\x17\x45ventSubaccountWithdraw\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12\x1f\n\x0b\x64st_address\x18\x02 \x01(\tR\ndstAddress\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\xb1\x01\n\x1e\x45ventSubaccountBalanceTransfer\x12*\n\x11src_subaccount_id\x18\x01 \x01(\tR\x0fsrcSubaccountId\x12*\n\x11\x64st_subaccount_id\x18\x02 \x01(\tR\x0f\x64stSubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"h\n\x17\x45ventBatchDepositUpdate\x12M\n\x0f\x64\x65posit_updates\x18\x01 \x03(\x0b\x32$.injective.exchange.v2.DepositUpdateR\x0e\x64\x65positUpdates\"\xc2\x01\n\x1b\x44\x65rivativeMarketOrderCancel\x12U\n\x0cmarket_order\x18\x01 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\x12L\n\x0f\x63\x61ncel_quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0e\x63\x61ncelQuantity\"\x9d\x02\n\x1a\x45ventCancelDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12h\n\x13market_order_cancel\x18\x04 \x01(\x0b\x32\x32.injective.exchange.v2.DerivativeMarketOrderCancelB\x04\xc8\xde\x1f\x01R\x11marketOrderCancel\"b\n\x18\x45ventFeeDiscountSchedule\x12\x46\n\x08schedule\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountScheduleR\x08schedule\"\xd8\x01\n EventTradingRewardCampaignUpdate\x12U\n\rcampaign_info\x18\x01 \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12]\n\x15\x63\x61mpaign_reward_pools\x18\x02 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR\x13\x63\x61mpaignRewardPools\"p\n\x1e\x45ventTradingRewardDistribution\x12N\n\x0f\x61\x63\x63ount_rewards\x18\x01 \x03(\x0b\x32%.injective.exchange.v2.AccountRewardsR\x0e\x61\x63\x63ountRewards\"\xb0\x01\n\"EventNewConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12<\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderR\x05order\x12\x12\n\x04hash\x18\x03 \x01(\x0cR\x04hash\x12\x1b\n\tis_market\x18\x04 \x01(\x08R\x08isMarket\"\x95\x02\n%EventCancelConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12U\n\x0cmarket_order\x18\x04 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\"\xfb\x01\n&EventConditionalDerivativeOrderTrigger\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12&\n\x0eisLimitTrigger\x18\x02 \x01(\x08R\x0eisLimitTrigger\x12\x30\n\x14triggered_order_hash\x18\x03 \x01(\x0cR\x12triggeredOrderHash\x12*\n\x11placed_order_hash\x18\x04 \x01(\x0cR\x0fplacedOrderHash\x12.\n\x13triggered_order_cid\x18\x05 \x01(\tR\x11triggeredOrderCid\"l\n\x0e\x45ventOrderFail\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0cR\x07\x61\x63\x63ount\x12\x16\n\x06hashes\x18\x02 \x03(\x0cR\x06hashes\x12\x14\n\x05\x66lags\x18\x03 \x03(\rR\x05\x66lags\x12\x12\n\x04\x63ids\x18\x04 \x03(\tR\x04\x63ids\"\x8f\x01\n+EventAtomicMarketOrderFeeMultipliersUpdated\x12`\n\x16market_fee_multipliers\x18\x01 \x03(\x0b\x32*.injective.exchange.v2.MarketFeeMultiplierR\x14marketFeeMultipliers\"\xb8\x01\n\x14\x45ventOrderbookUpdate\x12I\n\x0cspot_updates\x18\x01 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x0bspotUpdates\x12U\n\x12\x64\x65rivative_updates\x18\x02 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x11\x64\x65rivativeUpdates\"c\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12>\n\torderbook\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.OrderbookR\torderbook\"\xa4\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12;\n\nbuy_levels\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\tbuyLevels\x12=\n\x0bsell_levels\x18\x03 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\nsellLevels\"w\n\x18\x45ventGrantAuthorizations\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x41\n\x06grants\x18\x02 \x03(\x0b\x32).injective.exchange.v2.GrantAuthorizationR\x06grants\"\x81\x01\n\x14\x45ventGrantActivation\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\x12\x35\n\x06\x61mount\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"G\n\x11\x45ventInvalidGrant\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\"\xab\x01\n\x14\x45ventOrderCancelFail\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x04 \x01(\tR\x03\x63id\x12 \n\x0b\x64\x65scription\x18\x05 \x01(\tR\x0b\x64\x65scription\"i\n$EventDerivativeLimitOrderV2Migration\x12\x41\n\x05order\x18\x01 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\x05order\"k\n%EventDerivativeMarketOrderV2Migration\x12\x42\n\x05order\x18\x01 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderR\x05order\"k\n\"EventDerivativePositionV2Migration\x12\x45\n\x08position\x18\x01 \x01(\x0b\x32).injective.exchange.v2.DerivativePositionR\x08position\"X\n\x19\x45ventSpotOrderV2Migration\x12;\n\x05order\x18\x01 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\x05orderB\xf1\x01\n\x19\x63om.injective.exchange.v2B\x0b\x45ventsProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"injective/exchange/v2/events.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a$injective/exchange/v2/exchange.proto\x1a\"injective/exchange/v2/market.proto\x1a!injective/exchange/v2/order.proto\"\xd2\x01\n\x17\x45ventBatchSpotExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12J\n\rexecutionType\x18\x03 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x37\n\x06trades\x18\x04 \x03(\x0b\x32\x1f.injective.exchange.v2.TradeLogR\x06trades\"\xdd\x02\n\x1d\x45ventBatchDerivativeExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12%\n\x0eis_liquidation\x18\x03 \x01(\x08R\risLiquidation\x12R\n\x12\x63umulative_funding\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x63umulativeFunding\x12J\n\rexecutionType\x18\x05 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x41\n\x06trades\x18\x06 \x03(\x0b\x32).injective.exchange.v2.DerivativeTradeLogR\x06trades\"\xc2\x02\n\x1d\x45ventLostFundsFromLiquidation\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12x\n\'lost_funds_from_available_during_payout\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"lostFundsFromAvailableDuringPayout\x12\x65\n\x1dlost_funds_from_order_cancels\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19lostFundsFromOrderCancels\"\x84\x01\n\x1c\x45ventBatchDerivativePosition\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\tpositions\x18\x02 \x03(\x0b\x32).injective.exchange.v2.SubaccountPositionR\tpositions\"\xbb\x01\n\x1b\x45ventDerivativeMarketPaused\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12.\n\x13total_missing_funds\x18\x03 \x01(\tR\x11totalMissingFunds\x12,\n\x12missing_funds_rate\x18\x04 \x01(\tR\x10missingFundsRate\"\x8f\x01\n\x1b\x45ventMarketBeyondBankruptcy\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12\x30\n\x14missing_market_funds\x18\x03 \x01(\tR\x12missingMarketFunds\"\x88\x01\n\x18\x45ventAllPositionsHaircut\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12,\n\x12missing_funds_rate\x18\x03 \x01(\tR\x10missingFundsRate\"j\n\x1e\x45ventBinaryOptionsMarketUpdate\x12H\n\x06market\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.BinaryOptionsMarketB\x04\xc8\xde\x1f\x00R\x06market\"\xbf\x01\n\x12\x45ventNewSpotOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x44\n\nbuy_orders\x18\x02 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\tbuyOrders\x12\x46\n\x0bsell_orders\x18\x03 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\nsellOrders\"\xd1\x01\n\x18\x45ventNewDerivativeOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\nbuy_orders\x18\x02 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\tbuyOrders\x12L\n\x0bsell_orders\x18\x03 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\nsellOrders\"v\n\x14\x45ventCancelSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"X\n\x15\x45ventSpotMarketUpdate\x12?\n\x06market\x18\x01 \x01(\x0b\x32!.injective.exchange.v2.SpotMarketB\x04\xc8\xde\x1f\x00R\x06market\"\x98\x02\n\x1a\x45ventPerpetualMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12\x64\n\x15perpetual_market_info\x18\x02 \x01(\x0b\x32*.injective.exchange.v2.PerpetualMarketInfoB\x04\xc8\xde\x1f\x01R\x13perpetualMarketInfo\x12M\n\x07\x66unding\x18\x03 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x01R\x07\x66unding\"\xda\x01\n\x1e\x45ventExpiryFuturesMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12q\n\x1a\x65xpiry_futures_market_info\x18\x03 \x01(\x0b\x32..injective.exchange.v2.ExpiryFuturesMarketInfoB\x04\xc8\xde\x1f\x01R\x17\x65xpiryFuturesMarketInfo\"\xc7\x02\n!EventPerpetualMarketFundingUpdate\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12M\n\x07\x66unding\x18\x02 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x00R\x07\x66unding\x12*\n\x11is_hourly_funding\x18\x03 \x01(\x08R\x0fisHourlyFunding\x12\x46\n\x0c\x66unding_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x66undingRate\x12\x42\n\nmark_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tmarkPrice\"\x97\x01\n\x16\x45ventSubaccountDeposit\x12\x1f\n\x0bsrc_address\x18\x01 \x01(\tR\nsrcAddress\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\x98\x01\n\x17\x45ventSubaccountWithdraw\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12\x1f\n\x0b\x64st_address\x18\x02 \x01(\tR\ndstAddress\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\xb1\x01\n\x1e\x45ventSubaccountBalanceTransfer\x12*\n\x11src_subaccount_id\x18\x01 \x01(\tR\x0fsrcSubaccountId\x12*\n\x11\x64st_subaccount_id\x18\x02 \x01(\tR\x0f\x64stSubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"h\n\x17\x45ventBatchDepositUpdate\x12M\n\x0f\x64\x65posit_updates\x18\x01 \x03(\x0b\x32$.injective.exchange.v2.DepositUpdateR\x0e\x64\x65positUpdates\"\xc2\x01\n\x1b\x44\x65rivativeMarketOrderCancel\x12U\n\x0cmarket_order\x18\x01 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\x12L\n\x0f\x63\x61ncel_quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0e\x63\x61ncelQuantity\"\x9d\x02\n\x1a\x45ventCancelDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12h\n\x13market_order_cancel\x18\x04 \x01(\x0b\x32\x32.injective.exchange.v2.DerivativeMarketOrderCancelB\x04\xc8\xde\x1f\x01R\x11marketOrderCancel\"b\n\x18\x45ventFeeDiscountSchedule\x12\x46\n\x08schedule\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountScheduleR\x08schedule\"\xd8\x01\n EventTradingRewardCampaignUpdate\x12U\n\rcampaign_info\x18\x01 \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12]\n\x15\x63\x61mpaign_reward_pools\x18\x02 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR\x13\x63\x61mpaignRewardPools\"p\n\x1e\x45ventTradingRewardDistribution\x12N\n\x0f\x61\x63\x63ount_rewards\x18\x01 \x03(\x0b\x32%.injective.exchange.v2.AccountRewardsR\x0e\x61\x63\x63ountRewards\"\xb0\x01\n\"EventNewConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12<\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderR\x05order\x12\x12\n\x04hash\x18\x03 \x01(\x0cR\x04hash\x12\x1b\n\tis_market\x18\x04 \x01(\x08R\x08isMarket\"\x95\x02\n%EventCancelConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12U\n\x0cmarket_order\x18\x04 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\"\xfb\x01\n&EventConditionalDerivativeOrderTrigger\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12&\n\x0eisLimitTrigger\x18\x02 \x01(\x08R\x0eisLimitTrigger\x12\x30\n\x14triggered_order_hash\x18\x03 \x01(\x0cR\x12triggeredOrderHash\x12*\n\x11placed_order_hash\x18\x04 \x01(\x0cR\x0fplacedOrderHash\x12.\n\x13triggered_order_cid\x18\x05 \x01(\tR\x11triggeredOrderCid\"l\n\x0e\x45ventOrderFail\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0cR\x07\x61\x63\x63ount\x12\x16\n\x06hashes\x18\x02 \x03(\x0cR\x06hashes\x12\x14\n\x05\x66lags\x18\x03 \x03(\rR\x05\x66lags\x12\x12\n\x04\x63ids\x18\x04 \x03(\tR\x04\x63ids\"\x8f\x01\n+EventAtomicMarketOrderFeeMultipliersUpdated\x12`\n\x16market_fee_multipliers\x18\x01 \x03(\x0b\x32*.injective.exchange.v2.MarketFeeMultiplierR\x14marketFeeMultipliers\"\xb8\x01\n\x14\x45ventOrderbookUpdate\x12I\n\x0cspot_updates\x18\x01 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x0bspotUpdates\x12U\n\x12\x64\x65rivative_updates\x18\x02 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x11\x64\x65rivativeUpdates\"c\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12>\n\torderbook\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.OrderbookR\torderbook\"\xa4\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12;\n\nbuy_levels\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\tbuyLevels\x12=\n\x0bsell_levels\x18\x03 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\nsellLevels\"w\n\x18\x45ventGrantAuthorizations\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x41\n\x06grants\x18\x02 \x03(\x0b\x32).injective.exchange.v2.GrantAuthorizationR\x06grants\"\x81\x01\n\x14\x45ventGrantActivation\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\x12\x35\n\x06\x61mount\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"G\n\x11\x45ventInvalidGrant\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\"\xab\x01\n\x14\x45ventOrderCancelFail\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x04 \x01(\tR\x03\x63id\x12 \n\x0b\x64\x65scription\x18\x05 \x01(\tR\x0b\x64\x65scriptionB\xf1\x01\n\x19\x63om.injective.exchange.v2B\x0b\x45ventsProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -148,12 +148,4 @@ _globals['_EVENTINVALIDGRANT']._serialized_end=6582 _globals['_EVENTORDERCANCELFAIL']._serialized_start=6585 _globals['_EVENTORDERCANCELFAIL']._serialized_end=6756 - _globals['_EVENTDERIVATIVELIMITORDERV2MIGRATION']._serialized_start=6758 - _globals['_EVENTDERIVATIVELIMITORDERV2MIGRATION']._serialized_end=6863 - _globals['_EVENTDERIVATIVEMARKETORDERV2MIGRATION']._serialized_start=6865 - _globals['_EVENTDERIVATIVEMARKETORDERV2MIGRATION']._serialized_end=6972 - _globals['_EVENTDERIVATIVEPOSITIONV2MIGRATION']._serialized_start=6974 - _globals['_EVENTDERIVATIVEPOSITIONV2MIGRATION']._serialized_end=7081 - _globals['_EVENTSPOTORDERV2MIGRATION']._serialized_start=7083 - _globals['_EVENTSPOTORDERV2MIGRATION']._serialized_end=7171 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/stream/v2/query_pb2.py b/pyinjective/proto/injective/stream/v2/query_pb2.py new file mode 100644 index 00000000..65d5ff53 --- /dev/null +++ b/pyinjective/proto/injective/stream/v2/query_pb2.py @@ -0,0 +1,132 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/stream/v2/query.proto +# Protobuf Python Version: 5.26.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as cosmos_dot_base_dot_v1beta1_dot_coin__pb2 +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 +from pyinjective.proto.injective.exchange.v2 import events_pb2 as injective_dot_exchange_dot_v2_dot_events__pb2 +from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as injective_dot_exchange_dot_v2_dot_exchange__pb2 +from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1finjective/stream/v2/query.proto\x12\x13injective.stream.v2\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x14gogoproto/gogo.proto\x1a\"injective/exchange/v2/events.proto\x1a$injective/exchange/v2/exchange.proto\x1a!injective/exchange/v2/order.proto\"\xdc\x07\n\rStreamRequest\x12_\n\x14\x62\x61nk_balances_filter\x18\x01 \x01(\x0b\x32\'.injective.stream.v2.BankBalancesFilterB\x04\xc8\xde\x1f\x01R\x12\x62\x61nkBalancesFilter\x12q\n\x1asubaccount_deposits_filter\x18\x02 \x01(\x0b\x32-.injective.stream.v2.SubaccountDepositsFilterB\x04\xc8\xde\x1f\x01R\x18subaccountDepositsFilter\x12U\n\x12spot_trades_filter\x18\x03 \x01(\x0b\x32!.injective.stream.v2.TradesFilterB\x04\xc8\xde\x1f\x01R\x10spotTradesFilter\x12\x61\n\x18\x64\x65rivative_trades_filter\x18\x04 \x01(\x0b\x32!.injective.stream.v2.TradesFilterB\x04\xc8\xde\x1f\x01R\x16\x64\x65rivativeTradesFilter\x12U\n\x12spot_orders_filter\x18\x05 \x01(\x0b\x32!.injective.stream.v2.OrdersFilterB\x04\xc8\xde\x1f\x01R\x10spotOrdersFilter\x12\x61\n\x18\x64\x65rivative_orders_filter\x18\x06 \x01(\x0b\x32!.injective.stream.v2.OrdersFilterB\x04\xc8\xde\x1f\x01R\x16\x64\x65rivativeOrdersFilter\x12`\n\x16spot_orderbooks_filter\x18\x07 \x01(\x0b\x32$.injective.stream.v2.OrderbookFilterB\x04\xc8\xde\x1f\x01R\x14spotOrderbooksFilter\x12l\n\x1c\x64\x65rivative_orderbooks_filter\x18\x08 \x01(\x0b\x32$.injective.stream.v2.OrderbookFilterB\x04\xc8\xde\x1f\x01R\x1a\x64\x65rivativeOrderbooksFilter\x12U\n\x10positions_filter\x18\t \x01(\x0b\x32$.injective.stream.v2.PositionsFilterB\x04\xc8\xde\x1f\x01R\x0fpositionsFilter\x12\\\n\x13oracle_price_filter\x18\n \x01(\x0b\x32&.injective.stream.v2.OraclePriceFilterB\x04\xc8\xde\x1f\x01R\x11oraclePriceFilter\"\xef\x06\n\x0eStreamResponse\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_time\x18\x02 \x01(\x03R\tblockTime\x12\x45\n\rbank_balances\x18\x03 \x03(\x0b\x32 .injective.stream.v2.BankBalanceR\x0c\x62\x61nkBalances\x12X\n\x13subaccount_deposits\x18\x04 \x03(\x0b\x32\'.injective.stream.v2.SubaccountDepositsR\x12subaccountDeposits\x12?\n\x0bspot_trades\x18\x05 \x03(\x0b\x32\x1e.injective.stream.v2.SpotTradeR\nspotTrades\x12Q\n\x11\x64\x65rivative_trades\x18\x06 \x03(\x0b\x32$.injective.stream.v2.DerivativeTradeR\x10\x64\x65rivativeTrades\x12\x45\n\x0bspot_orders\x18\x07 \x03(\x0b\x32$.injective.stream.v2.SpotOrderUpdateR\nspotOrders\x12W\n\x11\x64\x65rivative_orders\x18\x08 \x03(\x0b\x32*.injective.stream.v2.DerivativeOrderUpdateR\x10\x64\x65rivativeOrders\x12Z\n\x16spot_orderbook_updates\x18\t \x03(\x0b\x32$.injective.stream.v2.OrderbookUpdateR\x14spotOrderbookUpdates\x12\x66\n\x1c\x64\x65rivative_orderbook_updates\x18\n \x03(\x0b\x32$.injective.stream.v2.OrderbookUpdateR\x1a\x64\x65rivativeOrderbookUpdates\x12;\n\tpositions\x18\x0b \x03(\x0b\x32\x1d.injective.stream.v2.PositionR\tpositions\x12\x45\n\roracle_prices\x18\x0c \x03(\x0b\x32 .injective.stream.v2.OraclePriceR\x0coraclePrices\"a\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12<\n\torderbook\x18\x02 \x01(\x0b\x32\x1e.injective.stream.v2.OrderbookR\torderbook\"\xa4\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12;\n\nbuy_levels\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\tbuyLevels\x12=\n\x0bsell_levels\x18\x03 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\nsellLevels\"\x90\x01\n\x0b\x42\x61nkBalance\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12g\n\x08\x62\x61lances\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x08\x62\x61lances\"\x83\x01\n\x12SubaccountDeposits\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12H\n\x08\x64\x65posits\x18\x02 \x03(\x0b\x32&.injective.stream.v2.SubaccountDepositB\x04\xc8\xde\x1f\x00R\x08\x64\x65posits\"i\n\x11SubaccountDeposit\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12>\n\x07\x64\x65posit\x18\x02 \x01(\x0b\x32\x1e.injective.exchange.v2.DepositB\x04\xc8\xde\x1f\x00R\x07\x64\x65posit\"\xb8\x01\n\x0fSpotOrderUpdate\x12>\n\x06status\x18\x01 \x01(\x0e\x32&.injective.stream.v2.OrderUpdateStatusR\x06status\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id\x12\x34\n\x05order\x18\x04 \x01(\x0b\x32\x1e.injective.stream.v2.SpotOrderR\x05order\"k\n\tSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"\xc4\x01\n\x15\x44\x65rivativeOrderUpdate\x12>\n\x06status\x18\x01 \x01(\x0e\x32&.injective.stream.v2.OrderUpdateStatusR\x06status\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id\x12:\n\x05order\x18\x04 \x01(\x0b\x32$.injective.stream.v2.DerivativeOrderR\x05order\"\x94\x01\n\x0f\x44\x65rivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\x12\x1b\n\tis_market\x18\x03 \x01(\x08R\x08isMarket\"\x87\x03\n\x08Position\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x16\n\x06isLong\x18\x03 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12;\n\x06margin\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12]\n\x18\x63umulative_funding_entry\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16\x63umulativeFundingEntry\"t\n\x0bOraclePrice\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\"\xc3\x03\n\tSpotTrade\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12$\n\rexecutionType\x18\x03 \x01(\tR\rexecutionType\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12#\n\rsubaccount_id\x18\x06 \x01(\tR\x0csubaccountId\x12\x35\n\x03\x66\x65\x65\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x08 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\t \x01(\tB\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\n \x01(\tR\x03\x63id\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\"\xd7\x03\n\x0f\x44\x65rivativeTrade\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12$\n\rexecutionType\x18\x03 \x01(\tR\rexecutionType\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12K\n\x0eposition_delta\x18\x05 \x01(\x0b\x32$.injective.exchange.v2.PositionDeltaR\rpositionDelta\x12;\n\x06payout\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout\x12\x35\n\x03\x66\x65\x65\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x08 \x01(\tR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\t \x01(\tB\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\n \x01(\tR\x03\x63id\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\"T\n\x0cTradesFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"W\n\x0fPositionsFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"T\n\x0cOrdersFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"0\n\x0fOrderbookFilter\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"0\n\x12\x42\x61nkBalancesFilter\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\"A\n\x18SubaccountDepositsFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\"+\n\x11OraclePriceFilter\x12\x16\n\x06symbol\x18\x01 \x03(\tR\x06symbol*L\n\x11OrderUpdateStatus\x12\x0f\n\x0bUnspecified\x10\x00\x12\n\n\x06\x42ooked\x10\x01\x12\x0b\n\x07Matched\x10\x02\x12\r\n\tCancelled\x10\x03\x32_\n\x06Stream\x12U\n\x08StreamV2\x12\".injective.stream.v2.StreamRequest\x1a#.injective.stream.v2.StreamResponse0\x01\x42\xdc\x01\n\x17\x63om.injective.stream.v2B\nQueryProtoP\x01ZGgithub.com/InjectiveLabs/injective-core/injective-chain/stream/types/v2\xa2\x02\x03ISX\xaa\x02\x13Injective.Stream.V2\xca\x02\x13Injective\\Stream\\V2\xe2\x02\x1fInjective\\Stream\\V2\\GPBMetadata\xea\x02\x15Injective::Stream::V2b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.stream.v2.query_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\027com.injective.stream.v2B\nQueryProtoP\001ZGgithub.com/InjectiveLabs/injective-core/injective-chain/stream/types/v2\242\002\003ISX\252\002\023Injective.Stream.V2\312\002\023Injective\\Stream\\V2\342\002\037Injective\\Stream\\V2\\GPBMetadata\352\002\025Injective::Stream::V2' + _globals['_STREAMREQUEST'].fields_by_name['bank_balances_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['bank_balances_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['subaccount_deposits_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['subaccount_deposits_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['spot_trades_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['spot_trades_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['derivative_trades_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['derivative_trades_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['spot_orders_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['spot_orders_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['derivative_orders_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['derivative_orders_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['spot_orderbooks_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['spot_orderbooks_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['derivative_orderbooks_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['derivative_orderbooks_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['positions_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['positions_filter']._serialized_options = b'\310\336\037\001' + _globals['_STREAMREQUEST'].fields_by_name['oracle_price_filter']._loaded_options = None + _globals['_STREAMREQUEST'].fields_by_name['oracle_price_filter']._serialized_options = b'\310\336\037\001' + _globals['_BANKBALANCE'].fields_by_name['balances']._loaded_options = None + _globals['_BANKBALANCE'].fields_by_name['balances']._serialized_options = b'\310\336\037\000\252\337\037(github.com/cosmos/cosmos-sdk/types.Coins' + _globals['_SUBACCOUNTDEPOSITS'].fields_by_name['deposits']._loaded_options = None + _globals['_SUBACCOUNTDEPOSITS'].fields_by_name['deposits']._serialized_options = b'\310\336\037\000' + _globals['_SUBACCOUNTDEPOSIT'].fields_by_name['deposit']._loaded_options = None + _globals['_SUBACCOUNTDEPOSIT'].fields_by_name['deposit']._serialized_options = b'\310\336\037\000' + _globals['_SPOTORDER'].fields_by_name['order']._loaded_options = None + _globals['_SPOTORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_DERIVATIVEORDER'].fields_by_name['order']._loaded_options = None + _globals['_DERIVATIVEORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' + _globals['_POSITION'].fields_by_name['quantity']._loaded_options = None + _globals['_POSITION'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITION'].fields_by_name['entry_price']._loaded_options = None + _globals['_POSITION'].fields_by_name['entry_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITION'].fields_by_name['margin']._loaded_options = None + _globals['_POSITION'].fields_by_name['margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_POSITION'].fields_by_name['cumulative_funding_entry']._loaded_options = None + _globals['_POSITION'].fields_by_name['cumulative_funding_entry']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_ORACLEPRICE'].fields_by_name['price']._loaded_options = None + _globals['_ORACLEPRICE'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTTRADE'].fields_by_name['quantity']._loaded_options = None + _globals['_SPOTTRADE'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTTRADE'].fields_by_name['price']._loaded_options = None + _globals['_SPOTTRADE'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTTRADE'].fields_by_name['fee']._loaded_options = None + _globals['_SPOTTRADE'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTTRADE'].fields_by_name['fee_recipient_address']._loaded_options = None + _globals['_SPOTTRADE'].fields_by_name['fee_recipient_address']._serialized_options = b'\310\336\037\001' + _globals['_DERIVATIVETRADE'].fields_by_name['payout']._loaded_options = None + _globals['_DERIVATIVETRADE'].fields_by_name['payout']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVETRADE'].fields_by_name['fee']._loaded_options = None + _globals['_DERIVATIVETRADE'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVETRADE'].fields_by_name['fee_recipient_address']._loaded_options = None + _globals['_DERIVATIVETRADE'].fields_by_name['fee_recipient_address']._serialized_options = b'\310\336\037\001' + _globals['_ORDERUPDATESTATUS']._serialized_start=5305 + _globals['_ORDERUPDATESTATUS']._serialized_end=5381 + _globals['_STREAMREQUEST']._serialized_start=220 + _globals['_STREAMREQUEST']._serialized_end=1208 + _globals['_STREAMRESPONSE']._serialized_start=1211 + _globals['_STREAMRESPONSE']._serialized_end=2090 + _globals['_ORDERBOOKUPDATE']._serialized_start=2092 + _globals['_ORDERBOOKUPDATE']._serialized_end=2189 + _globals['_ORDERBOOK']._serialized_start=2192 + _globals['_ORDERBOOK']._serialized_end=2356 + _globals['_BANKBALANCE']._serialized_start=2359 + _globals['_BANKBALANCE']._serialized_end=2503 + _globals['_SUBACCOUNTDEPOSITS']._serialized_start=2506 + _globals['_SUBACCOUNTDEPOSITS']._serialized_end=2637 + _globals['_SUBACCOUNTDEPOSIT']._serialized_start=2639 + _globals['_SUBACCOUNTDEPOSIT']._serialized_end=2744 + _globals['_SPOTORDERUPDATE']._serialized_start=2747 + _globals['_SPOTORDERUPDATE']._serialized_end=2931 + _globals['_SPOTORDER']._serialized_start=2933 + _globals['_SPOTORDER']._serialized_end=3040 + _globals['_DERIVATIVEORDERUPDATE']._serialized_start=3043 + _globals['_DERIVATIVEORDERUPDATE']._serialized_end=3239 + _globals['_DERIVATIVEORDER']._serialized_start=3242 + _globals['_DERIVATIVEORDER']._serialized_end=3390 + _globals['_POSITION']._serialized_start=3393 + _globals['_POSITION']._serialized_end=3784 + _globals['_ORACLEPRICE']._serialized_start=3786 + _globals['_ORACLEPRICE']._serialized_end=3902 + _globals['_SPOTTRADE']._serialized_start=3905 + _globals['_SPOTTRADE']._serialized_end=4356 + _globals['_DERIVATIVETRADE']._serialized_start=4359 + _globals['_DERIVATIVETRADE']._serialized_end=4830 + _globals['_TRADESFILTER']._serialized_start=4832 + _globals['_TRADESFILTER']._serialized_end=4916 + _globals['_POSITIONSFILTER']._serialized_start=4918 + _globals['_POSITIONSFILTER']._serialized_end=5005 + _globals['_ORDERSFILTER']._serialized_start=5007 + _globals['_ORDERSFILTER']._serialized_end=5091 + _globals['_ORDERBOOKFILTER']._serialized_start=5093 + _globals['_ORDERBOOKFILTER']._serialized_end=5141 + _globals['_BANKBALANCESFILTER']._serialized_start=5143 + _globals['_BANKBALANCESFILTER']._serialized_end=5191 + _globals['_SUBACCOUNTDEPOSITSFILTER']._serialized_start=5193 + _globals['_SUBACCOUNTDEPOSITSFILTER']._serialized_end=5258 + _globals['_ORACLEPRICEFILTER']._serialized_start=5260 + _globals['_ORACLEPRICEFILTER']._serialized_end=5303 + _globals['_STREAM']._serialized_start=5383 + _globals['_STREAM']._serialized_end=5478 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/stream/v2/query_pb2_grpc.py b/pyinjective/proto/injective/stream/v2/query_pb2_grpc.py new file mode 100644 index 00000000..ebb3b134 --- /dev/null +++ b/pyinjective/proto/injective/stream/v2/query_pb2_grpc.py @@ -0,0 +1,80 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from pyinjective.proto.injective.stream.v2 import query_pb2 as injective_dot_stream_dot_v2_dot_query__pb2 + + +class StreamStub(object): + """ChainStream defines the gRPC streaming service. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.StreamV2 = channel.unary_stream( + '/injective.stream.v2.Stream/StreamV2', + request_serializer=injective_dot_stream_dot_v2_dot_query__pb2.StreamRequest.SerializeToString, + response_deserializer=injective_dot_stream_dot_v2_dot_query__pb2.StreamResponse.FromString, + _registered_method=True) + + +class StreamServicer(object): + """ChainStream defines the gRPC streaming service. + """ + + def StreamV2(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_StreamServicer_to_server(servicer, server): + rpc_method_handlers = { + 'StreamV2': grpc.unary_stream_rpc_method_handler( + servicer.StreamV2, + request_deserializer=injective_dot_stream_dot_v2_dot_query__pb2.StreamRequest.FromString, + response_serializer=injective_dot_stream_dot_v2_dot_query__pb2.StreamResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'injective.stream.v2.Stream', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('injective.stream.v2.Stream', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class Stream(object): + """ChainStream defines the gRPC streaming service. + """ + + @staticmethod + def StreamV2(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream( + request, + target, + '/injective.stream.v2.Stream/StreamV2', + injective_dot_stream_dot_v2_dot_query__pb2.StreamRequest.SerializeToString, + injective_dot_stream_dot_v2_dot_query__pb2.StreamResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/tests/client/chain/grpc/test_chain_grpc_auction_api.py b/tests/client/chain/grpc/test_chain_grpc_auction_api.py index 9832f7cc..79addcff 100644 --- a/tests/client/chain/grpc/test_chain_grpc_auction_api.py +++ b/tests/client/chain/grpc/test_chain_grpc_auction_api.py @@ -53,15 +53,22 @@ async def test_fetch_module_state( min_next_bid_increment_rate="2500000000000000", inj_basket_max_cap="100000", ) + coin = coin_pb.Coin(denom="inj", amount="988987297011197594664") highest_bid = auction_pb.Bid( bidder="inj1pvt70tt7epjudnurkqlxu62flfgy46j2ytj7j5", - amount="\n\003inj\022\0232347518723906280000", + amount=coin, + ) + last_auction_result = auction_pb.LastAuctionResult( + winner="inj1pvt70tt7epjudnurkqlxu62flfgy46j2ytj7j5", + amount=coin, + round=3, ) state = genesis_pb.GenesisState( params=params, auction_round=50, highest_bid=highest_bid, auction_ending_timestamp=1687504387, + last_auction_result=last_auction_result, ) auction_servicer.module_states.append(auction_query_pb.QueryModuleStateResponse(state=state)) @@ -73,7 +80,10 @@ async def test_fetch_module_state( "auctionEndingTimestamp": "1687504387", "auctionRound": "50", "highestBid": { - "amount": "\n\x03inj\x12\x132347518723906280000", + "amount": { + "denom": coin.denom, + "amount": coin.amount, + }, "bidder": "inj1pvt70tt7epjudnurkqlxu62flfgy46j2ytj7j5", }, "params": { @@ -81,6 +91,14 @@ async def test_fetch_module_state( "minNextBidIncrementRate": params.min_next_bid_increment_rate, "injBasketMaxCap": str(params.inj_basket_max_cap), }, + "lastAuctionResult": { + "winner": last_auction_result.winner, + "amount": { + "denom": coin.denom, + "amount": coin.amount, + }, + "round": str(last_auction_result.round), + }, } } From 291fe99502080e62bc94e4c0326761bbfbb736ea Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Thu, 31 Oct 2024 17:23:32 -0300 Subject: [PATCH 4/7] (feat) Added methods in AsyncClient and Composer for Exchange V2 queries and messages. Added tests for the deprecated V1 methods. Updated all example scripts related to Exchange module --- examples/chain_client/1_LocalOrderHash.py | 16 +- .../chain_client/2_StreamEventOrderFail.py | 8 +- examples/chain_client/3_MessageBroadcaster.py | 6 +- .../4_MessageBroadcasterWithGranteeAccount.py | 2 +- .../5_MessageBroadcasterWithoutSimulation.py | 6 +- ...sterWithGranteeAccountWithoutSimulation.py | 2 +- examples/chain_client/7_ChainStream.py | 22 +- examples/chain_client/authz/1_MsgGrant.py | 2 +- examples/chain_client/authz/2_MsgExec.py | 2 +- examples/chain_client/authz/3_MsgRevoke.py | 2 +- examples/chain_client/authz/query/1_Grants.py | 2 +- examples/chain_client/bank/1_MsgSend.py | 6 +- .../10_MsgCreateDerivativeLimitOrder.py | 2 +- .../11_MsgCreateDerivativeMarketOrder.py | 2 +- .../exchange/12_MsgCancelDerivativeOrder.py | 10 +- .../13_MsgInstantBinaryOptionsMarketLaunch.py | 2 +- .../14_MsgCreateBinaryOptionsLimitOrder.py | 14 +- .../15_MsgCreateBinaryOptionsMarketOrder.py | 2 +- .../16_MsgCancelBinaryOptionsOrder.py | 10 +- .../exchange/17_MsgSubaccountTransfer.py | 7 +- .../exchange/18_MsgExternalTransfer.py | 7 +- .../exchange/19_MsgLiquidatePosition.py | 4 +- .../chain_client/exchange/1_MsgDeposit.py | 4 +- .../exchange/20_MsgIncreasePositionMargin.py | 2 +- .../exchange/23_MsgDecreasePositionMargin.py | 2 +- .../exchange/24_MsgUpdateSpotMarket.py | 2 +- .../exchange/25_MsgUpdateDerivativeMarket.py | 2 +- .../chain_client/exchange/2_MsgWithdraw.py | 3 +- .../exchange/3_MsgInstantSpotMarketLaunch.py | 6 +- .../4_MsgInstantPerpetualMarketLaunch.py | 4 +- .../5_MsgInstantExpiryFuturesMarketLaunch.py | 4 +- .../exchange/6_MsgCreateSpotLimitOrder.py | 2 +- .../exchange/7_MsgCreateSpotMarketOrder.py | 2 +- .../exchange/8_MsgCancelSpotOrder.py | 2 +- .../exchange/9_MsgBatchUpdateOrders.py | 18 +- .../exchange/query/10_SpotMarkets.py | 2 +- .../exchange/query/11_SpotMarket.py | 2 +- .../exchange/query/12_FullSpotMarkets.py | 2 +- .../exchange/query/13_FullSpotMarket.py | 2 +- .../exchange/query/14_SpotOrderbook.py | 2 +- .../exchange/query/15_TraderSpotOrders.py | 2 +- .../query/16_AccountAddressSpotOrders.py | 2 +- .../exchange/query/17_SpotOrdersByHashes.py | 2 +- .../exchange/query/18_SubaccountOrders.py | 2 +- .../query/19_TraderSpotTransientOrders.py | 2 +- .../exchange/query/20_SpotMidPriceAndTOB.py | 2 +- .../query/21_DerivativeMidPriceAndTOB.py | 2 +- .../exchange/query/22_DerivativeOrderbook.py | 2 +- .../query/23_TraderDerivativeOrders.py | 2 +- .../24_AccountAddressDerivativeOrders.py | 2 +- .../query/25_DerivativeOrdersByHashes.py | 2 +- .../26_TraderDerivativeTransientOrders.py | 2 +- .../exchange/query/27_DerivativeMarkets.py | 2 +- .../exchange/query/28_DerivativeMarket.py | 2 +- .../exchange/query/31_Positions.py | 2 +- .../exchange/query/32_SubaccountPositions.py | 2 +- .../query/33_SubaccountPositionInMarket.py | 2 +- .../34_SubaccountEffectivePositionInMarket.py | 2 +- .../query/36_ExpiryFuturesMarketInfo.py | 2 +- .../query/37_PerpetualMarketFunding.py | 2 +- .../query/38_SubaccountOrderMetadata.py | 2 +- .../query/42_FeeDiscountAccountInfo.py | 2 +- .../exchange/query/43_FeeDiscountSchedule.py | 2 +- .../query/49_HistoricalTradeRecords.py | 2 +- .../exchange/query/4_AggregateVolume.py | 4 +- .../exchange/query/52_MarketVolatility.py | 2 +- .../exchange/query/53_BinaryOptionsMarkets.py | 2 +- .../54_TraderDerivativeConditionalOrders.py | 2 +- .../exchange/query/56_ActiveStakeGrant.py | 27 + .../exchange/query/57_GrantAuthorization.py | 34 + .../exchange/query/58_GrantAuthorizations.py | 32 + .../query/59_L3DerivativeOrderBook.py | 21 + .../exchange/query/5_AggregateVolumes.py | 2 +- .../exchange/query/60_L3SpotOrderBook.py | 21 + .../exchange/query/6_AggregateMarketVolume.py | 2 +- .../query/7_AggregateMarketVolumes.py | 2 +- .../ibc/transfer/1_MsgTransfer.py | 5 +- .../insurance/1_MsgCreateInsuranceFund.py | 6 +- .../chain_client/insurance/2_MsgUnderwrite.py | 11 +- examples/chain_client/peggy/1_MsgSendToEth.py | 9 +- examples/chain_client/tx/query/1_GetTx.py | 4 +- pyinjective/async_client.py | 694 ++++- .../chain/grpc/chain_grpc_exchange_api.py | 47 + .../chain/grpc/chain_grpc_exchange_v2_api.py | 626 ++++ .../grpc_stream/chain_grpc_chain_stream.py | 44 +- pyinjective/composer.py | 1740 ++++++++++- .../configurable_exchange_query_servicer.py | 30 + ...configurable_exchange_v2_query_servicer.py | 361 +++ .../grpc/test_chain_grpc_exchange_api.py | 191 ++ .../grpc/test_chain_grpc_exchange_v2_api.py | 2648 +++++++++++++++++ ...onfigurable_chain_stream_query_servicer.py | 15 + .../test_chain_grpc_chain_stream.py | 405 ++- tests/core/test_gas_limit_estimator.py | 532 +++- ...essage_based_transaction_fee_calculator.py | 8 +- .../test_async_client_deprecation_warnings.py | 985 ++++++ tests/test_composer.py | 476 +-- tests/test_composer_deprecation_warnings.py | 850 ++++++ 97 files changed, 9542 insertions(+), 543 deletions(-) create mode 100644 examples/chain_client/exchange/query/56_ActiveStakeGrant.py create mode 100644 examples/chain_client/exchange/query/57_GrantAuthorization.py create mode 100644 examples/chain_client/exchange/query/58_GrantAuthorizations.py create mode 100644 examples/chain_client/exchange/query/59_L3DerivativeOrderBook.py create mode 100644 examples/chain_client/exchange/query/60_L3SpotOrderBook.py create mode 100644 pyinjective/client/chain/grpc/chain_grpc_exchange_v2_api.py create mode 100644 tests/client/chain/grpc/configurable_exchange_v2_query_servicer.py create mode 100644 tests/client/chain/grpc/test_chain_grpc_exchange_v2_api.py create mode 100644 tests/test_async_client_deprecation_warnings.py create mode 100644 tests/test_composer_deprecation_warnings.py diff --git a/examples/chain_client/1_LocalOrderHash.py b/examples/chain_client/1_LocalOrderHash.py index fbec8988..6b34c4e3 100644 --- a/examples/chain_client/1_LocalOrderHash.py +++ b/examples/chain_client/1_LocalOrderHash.py @@ -41,7 +41,7 @@ async def main() -> None: fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" spot_orders = [ - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -50,7 +50,7 @@ async def main() -> None: order_type="BUY", cid=str(uuid.uuid4()), ), - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -62,7 +62,7 @@ async def main() -> None: ] derivative_orders = [ - composer.derivative_order( + composer.create_v2_derivative_order( market_id=deriv_market_id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -74,7 +74,7 @@ async def main() -> None: order_type="BUY", cid=str(uuid.uuid4()), ), - composer.derivative_order( + composer.create_v2_derivative_order( market_id=deriv_market_id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -89,9 +89,9 @@ async def main() -> None: ] # prepare tx msg - spot_msg = composer.msg_batch_create_spot_limit_orders(sender=address.to_acc_bech32(), orders=spot_orders) + spot_msg = composer.msg_batch_create_spot_limit_orders_v2(sender=address.to_acc_bech32(), orders=spot_orders) - deriv_msg = composer.msg_batch_create_derivative_limit_orders( + deriv_msg = composer.msg_batch_create_derivative_limit_orders_v2( sender=address.to_acc_bech32(), orders=derivative_orders ) @@ -218,9 +218,9 @@ async def main() -> None: ] # prepare tx msg - spot_msg = composer.msg_batch_create_spot_limit_orders(sender=address.to_acc_bech32(), orders=spot_orders) + spot_msg = composer.msg_batch_create_spot_limit_orders_v2(sender=address.to_acc_bech32(), orders=spot_orders) - deriv_msg = composer.msg_batch_create_derivative_limit_orders( + deriv_msg = composer.msg_batch_create_derivative_limit_orders_v2( sender=address.to_acc_bech32(), orders=derivative_orders ) diff --git a/examples/chain_client/2_StreamEventOrderFail.py b/examples/chain_client/2_StreamEventOrderFail.py index 62aed601..d9eea258 100644 --- a/examples/chain_client/2_StreamEventOrderFail.py +++ b/examples/chain_client/2_StreamEventOrderFail.py @@ -11,8 +11,8 @@ async def main() -> None: network = Network.mainnet() event_filter = ( "tm.event='Tx' AND message.sender='inj1rwv4zn3jptsqs7l8lpa3uvzhs57y8duemete9e' " - "AND message.action='/injective.exchange.v1beta1.MsgBatchUpdateOrders' " - "AND injective.exchange.v1beta1.EventOrderFail.flags EXISTS" + "AND message.action='/injective.exchange.v2.MsgBatchUpdateOrders' " + "AND injective.exchange.v2.EventOrderFail.flags EXISTS" ) query = json.dumps( { @@ -32,8 +32,8 @@ async def main() -> None: if result == {}: continue - failed_order_hashes = json.loads(result["events"]["injective.exchange.v1beta1.EventOrderFail.hashes"][0]) - failed_order_codes = json.loads(result["events"]["injective.exchange.v1beta1.EventOrderFail.flags"][0]) + failed_order_hashes = json.loads(result["events"]["injective.exchange.v2.EventOrderFail.hashes"][0]) + failed_order_codes = json.loads(result["events"]["injective.exchange.v2.EventOrderFail.flags"][0]) dict = {} for i, order_hash in enumerate(failed_order_hashes): diff --git a/examples/chain_client/3_MessageBroadcaster.py b/examples/chain_client/3_MessageBroadcaster.py index 735b92e3..39bbe5d5 100644 --- a/examples/chain_client/3_MessageBroadcaster.py +++ b/examples/chain_client/3_MessageBroadcaster.py @@ -35,7 +35,7 @@ async def main() -> None: spot_market_id_create = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" spot_orders_to_create = [ - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id_create, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -44,7 +44,7 @@ async def main() -> None: order_type="BUY", cid=(str(uuid.uuid4())), ), - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id_create, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -56,7 +56,7 @@ async def main() -> None: ] # prepare tx msg - msg = composer.msg_batch_update_orders( + msg = composer.msg_batch_update_orders_v2( sender=address.to_acc_bech32(), spot_orders_to_create=spot_orders_to_create, ) diff --git a/examples/chain_client/4_MessageBroadcasterWithGranteeAccount.py b/examples/chain_client/4_MessageBroadcasterWithGranteeAccount.py index 4e08397b..bf9ef101 100644 --- a/examples/chain_client/4_MessageBroadcasterWithGranteeAccount.py +++ b/examples/chain_client/4_MessageBroadcasterWithGranteeAccount.py @@ -41,7 +41,7 @@ async def main() -> None: granter_address = Address.from_acc_bech32(granter_inj_address) granter_subaccount_id = granter_address.get_subaccount_id(index=0) - msg = composer.msg_create_spot_limit_order( + msg = composer.msg_create_spot_limit_order_v2( market_id=market_id, sender=granter_inj_address, subaccount_id=granter_subaccount_id, diff --git a/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py b/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py index 8c4f685f..601b595d 100644 --- a/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py +++ b/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py @@ -35,7 +35,7 @@ async def main() -> None: spot_market_id_create = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" spot_orders_to_create = [ - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id_create, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -44,7 +44,7 @@ async def main() -> None: order_type="BUY", cid=str(uuid.uuid4()), ), - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id_create, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -56,7 +56,7 @@ async def main() -> None: ] # prepare tx msg - msg = composer.msg_batch_update_orders( + msg = composer.msg_batch_update_orders_v2( sender=address.to_acc_bech32(), spot_orders_to_create=spot_orders_to_create, ) diff --git a/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py b/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py index 4b7fbd2e..6f06691d 100644 --- a/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py +++ b/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py @@ -40,7 +40,7 @@ async def main() -> None: granter_address = Address.from_acc_bech32(granter_inj_address) granter_subaccount_id = granter_address.get_subaccount_id(index=0) - msg = composer.msg_create_spot_limit_order( + msg = composer.msg_create_spot_limit_order_v2( market_id=market_id, sender=granter_inj_address, subaccount_id=granter_subaccount_id, diff --git a/examples/chain_client/7_ChainStream.py b/examples/chain_client/7_ChainStream.py index 05a5bbdc..d63ff6ea 100644 --- a/examples/chain_client/7_ChainStream.py +++ b/examples/chain_client/7_ChainStream.py @@ -31,29 +31,29 @@ async def main() -> None: inj_usdt_market = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" inj_usdt_perp_market = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" - bank_balances_filter = composer.chain_stream_bank_balances_filter( + bank_balances_filter = composer.chain_stream_bank_balances_v2_filter( accounts=["inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"] ) - subaccount_deposits_filter = composer.chain_stream_subaccount_deposits_filter(subaccount_ids=[subaccount_id]) - spot_trades_filter = composer.chain_stream_trades_filter(subaccount_ids=["*"], market_ids=[inj_usdt_market]) - derivative_trades_filter = composer.chain_stream_trades_filter( + subaccount_deposits_filter = composer.chain_stream_subaccount_deposits_v2_filter(subaccount_ids=[subaccount_id]) + spot_trades_filter = composer.chain_stream_trades_v2_filter(subaccount_ids=["*"], market_ids=[inj_usdt_market]) + derivative_trades_filter = composer.chain_stream_trades_v2_filter( subaccount_ids=["*"], market_ids=[inj_usdt_perp_market] ) - spot_orders_filter = composer.chain_stream_orders_filter( + spot_orders_filter = composer.chain_stream_orders_v2_filter( subaccount_ids=[subaccount_id], market_ids=[inj_usdt_market] ) - derivative_orders_filter = composer.chain_stream_orders_filter( + derivative_orders_filter = composer.chain_stream_orders_v2_filter( subaccount_ids=[subaccount_id], market_ids=[inj_usdt_perp_market] ) - spot_orderbooks_filter = composer.chain_stream_orderbooks_filter(market_ids=[inj_usdt_market]) - derivative_orderbooks_filter = composer.chain_stream_orderbooks_filter(market_ids=[inj_usdt_perp_market]) - positions_filter = composer.chain_stream_positions_filter( + spot_orderbooks_filter = composer.chain_stream_orderbooks_v2_filter(market_ids=[inj_usdt_market]) + derivative_orderbooks_filter = composer.chain_stream_orderbooks_v2_filter(market_ids=[inj_usdt_perp_market]) + positions_filter = composer.chain_stream_positions_v2_filter( subaccount_ids=[subaccount_id], market_ids=[inj_usdt_perp_market] ) - oracle_price_filter = composer.chain_stream_oracle_price_filter(symbols=["INJ", "USDT"]) + oracle_price_filter = composer.chain_stream_oracle_price_v2_filter(symbols=["INJ", "USDT"]) task = asyncio.get_event_loop().create_task( - client.listen_chain_stream_updates( + client.listen_chain_stream_v2_updates( callback=chain_stream_event_processor, on_end_callback=stream_closed_processor, on_status_callback=stream_error_processor, diff --git a/examples/chain_client/authz/1_MsgGrant.py b/examples/chain_client/authz/1_MsgGrant.py index 111a050c..fcf88b0a 100644 --- a/examples/chain_client/authz/1_MsgGrant.py +++ b/examples/chain_client/authz/1_MsgGrant.py @@ -38,7 +38,7 @@ async def main() -> None: msg = composer.MsgGrantGeneric( granter=address.to_acc_bech32(), grantee=grantee_public_address, - msg_type="/injective.exchange.v1beta1.MsgCreateSpotLimitOrder", + msg_type="/injective.exchange.v2.MsgCreateSpotLimitOrder", expire_in=31536000, # 1 year ) diff --git a/examples/chain_client/authz/2_MsgExec.py b/examples/chain_client/authz/2_MsgExec.py index 8d9891a5..cccd7f29 100644 --- a/examples/chain_client/authz/2_MsgExec.py +++ b/examples/chain_client/authz/2_MsgExec.py @@ -38,7 +38,7 @@ async def main() -> None: granter_address = Address.from_acc_bech32(granter_inj_address) granter_subaccount_id = granter_address.get_subaccount_id(index=0) - msg0 = composer.msg_create_spot_limit_order( + msg0 = composer.msg_create_spot_limit_order_v2( sender=granter_inj_address, market_id=market_id, subaccount_id=granter_subaccount_id, diff --git a/examples/chain_client/authz/3_MsgRevoke.py b/examples/chain_client/authz/3_MsgRevoke.py index 91bb192d..cd27b02d 100644 --- a/examples/chain_client/authz/3_MsgRevoke.py +++ b/examples/chain_client/authz/3_MsgRevoke.py @@ -34,7 +34,7 @@ async def main() -> None: msg = composer.MsgRevoke( granter=address.to_acc_bech32(), grantee=grantee_public_address, - msg_type="/injective.exchange.v1beta1.MsgCreateSpotLimitOrder", + msg_type="/injective.exchange.v2.MsgCreateSpotLimitOrder", ) # build sim tx diff --git a/examples/chain_client/authz/query/1_Grants.py b/examples/chain_client/authz/query/1_Grants.py index 9ab27f22..b11fb486 100644 --- a/examples/chain_client/authz/query/1_Grants.py +++ b/examples/chain_client/authz/query/1_Grants.py @@ -14,7 +14,7 @@ async def main() -> None: network = Network.testnet() client = AsyncClient(network) - msg_type_url = "/injective.exchange.v1beta1.MsgCreateDerivativeLimitOrder" + msg_type_url = "/injective.exchange.v2.MsgCreateDerivativeLimitOrder" authorizations = await client.fetch_grants(granter=granter, grantee=grantee, msg_type_url=msg_type_url) print(authorizations) diff --git a/examples/chain_client/bank/1_MsgSend.py b/examples/chain_client/bank/1_MsgSend.py index 1d926898..fe1c20de 100644 --- a/examples/chain_client/bank/1_MsgSend.py +++ b/examples/chain_client/bank/1_MsgSend.py @@ -30,11 +30,11 @@ async def main() -> None: await client.fetch_account(address.to_acc_bech32()) # prepare tx msg - msg = composer.MsgSend( + msg = composer.msg_send( from_address=address.to_acc_bech32(), to_address="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", - amount=0.000000000000000001, - denom="INJ", + amount=1, + denom="inj", ) # build sim tx diff --git a/examples/chain_client/exchange/10_MsgCreateDerivativeLimitOrder.py b/examples/chain_client/exchange/10_MsgCreateDerivativeLimitOrder.py index 4e0ff327..80d80730 100644 --- a/examples/chain_client/exchange/10_MsgCreateDerivativeLimitOrder.py +++ b/examples/chain_client/exchange/10_MsgCreateDerivativeLimitOrder.py @@ -37,7 +37,7 @@ async def main() -> None: fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" # prepare tx msg - msg = composer.msg_create_derivative_limit_order( + msg = composer.msg_create_derivative_limit_order_v2( sender=address.to_acc_bech32(), market_id=market_id, subaccount_id=subaccount_id, diff --git a/examples/chain_client/exchange/11_MsgCreateDerivativeMarketOrder.py b/examples/chain_client/exchange/11_MsgCreateDerivativeMarketOrder.py index 7b561970..6f99d75f 100644 --- a/examples/chain_client/exchange/11_MsgCreateDerivativeMarketOrder.py +++ b/examples/chain_client/exchange/11_MsgCreateDerivativeMarketOrder.py @@ -37,7 +37,7 @@ async def main() -> None: fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" # prepare tx msg - msg = composer.msg_create_derivative_market_order( + msg = composer.msg_create_derivative_market_order_v2( sender=address.to_acc_bech32(), market_id=market_id, subaccount_id=subaccount_id, diff --git a/examples/chain_client/exchange/12_MsgCancelDerivativeOrder.py b/examples/chain_client/exchange/12_MsgCancelDerivativeOrder.py index 20be2bd0..f1471a28 100644 --- a/examples/chain_client/exchange/12_MsgCancelDerivativeOrder.py +++ b/examples/chain_client/exchange/12_MsgCancelDerivativeOrder.py @@ -35,8 +35,14 @@ async def main() -> None: order_hash = "0x667ee6f37f6d06bf473f4e1434e92ac98ff43c785405e2a511a0843daeca2de9" # prepare tx msg - msg = composer.msg_cancel_derivative_order( - sender=address.to_acc_bech32(), market_id=market_id, subaccount_id=subaccount_id, order_hash=order_hash + msg = composer.msg_cancel_derivative_order_v2( + sender=address.to_acc_bech32(), + market_id=market_id, + subaccount_id=subaccount_id, + order_hash=order_hash, + is_buy=True, + is_market_order=False, + is_conditional=False, ) # build sim tx diff --git a/examples/chain_client/exchange/13_MsgInstantBinaryOptionsMarketLaunch.py b/examples/chain_client/exchange/13_MsgInstantBinaryOptionsMarketLaunch.py index c5786e8a..9d018bb8 100644 --- a/examples/chain_client/exchange/13_MsgInstantBinaryOptionsMarketLaunch.py +++ b/examples/chain_client/exchange/13_MsgInstantBinaryOptionsMarketLaunch.py @@ -34,7 +34,7 @@ async def main() -> None: await client.fetch_account(address.to_acc_bech32()) # prepare tx msg - message = composer.msg_instant_binary_options_market_launch( + message = composer.msg_instant_binary_options_market_launch_v2( sender=address.to_acc_bech32(), ticker="UFC-KHABIB-TKO-05/30/2023", oracle_symbol="UFC-KHABIB-TKO-05/30/2023", diff --git a/examples/chain_client/exchange/14_MsgCreateBinaryOptionsLimitOrder.py b/examples/chain_client/exchange/14_MsgCreateBinaryOptionsLimitOrder.py index c15711b2..a56e3c15 100644 --- a/examples/chain_client/exchange/14_MsgCreateBinaryOptionsLimitOrder.py +++ b/examples/chain_client/exchange/14_MsgCreateBinaryOptionsLimitOrder.py @@ -10,7 +10,6 @@ from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE from pyinjective.core.network import Network from pyinjective.transaction import Transaction -from pyinjective.utils.denom import Denom from pyinjective.wallet import PrivateKey @@ -37,18 +36,8 @@ async def main() -> None: market_id = "0x767e1542fbc111e88901e223e625a4a8eb6d630c96884bbde672e8bc874075bb" fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" - # set custom denom to bypass ini file load (optional) - denom = Denom( - description="desc", - base=0, - quote=6, - min_price_tick_size=1000, - min_quantity_tick_size=0.0001, - min_notional=0, - ) - # prepare tx msg - msg = composer.msg_create_binary_options_limit_order( + msg = composer.msg_create_binary_options_limit_order_v2( sender=address.to_acc_bech32(), market_id=market_id, subaccount_id=subaccount_id, @@ -58,7 +47,6 @@ async def main() -> None: margin=Decimal("0.5"), order_type="BUY", cid=str(uuid.uuid4()), - denom=denom, ) # build sim tx diff --git a/examples/chain_client/exchange/15_MsgCreateBinaryOptionsMarketOrder.py b/examples/chain_client/exchange/15_MsgCreateBinaryOptionsMarketOrder.py index 9b68bc85..e890299b 100644 --- a/examples/chain_client/exchange/15_MsgCreateBinaryOptionsMarketOrder.py +++ b/examples/chain_client/exchange/15_MsgCreateBinaryOptionsMarketOrder.py @@ -37,7 +37,7 @@ async def main() -> None: fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" # prepare tx msg - msg = composer.msg_create_binary_options_market_order( + msg = composer.msg_create_binary_options_market_order_v2( sender=address.to_acc_bech32(), market_id=market_id, subaccount_id=subaccount_id, diff --git a/examples/chain_client/exchange/16_MsgCancelBinaryOptionsOrder.py b/examples/chain_client/exchange/16_MsgCancelBinaryOptionsOrder.py index 582c6dc6..12d3c81e 100644 --- a/examples/chain_client/exchange/16_MsgCancelBinaryOptionsOrder.py +++ b/examples/chain_client/exchange/16_MsgCancelBinaryOptionsOrder.py @@ -35,8 +35,14 @@ async def main() -> None: order_hash = "a975fbd72b874bdbf5caf5e1e8e2653937f33ce6dd14d241c06c8b1f7b56be46" # prepare tx msg - msg = composer.msg_cancel_binary_options_order( - sender=address.to_acc_bech32(), market_id=market_id, subaccount_id=subaccount_id, order_hash=order_hash + msg = composer.msg_cancel_binary_options_order_v2( + sender=address.to_acc_bech32(), + market_id=market_id, + subaccount_id=subaccount_id, + order_hash=order_hash, + is_buy=True, + is_market_order=False, + is_conditional=False, ) # build sim tx tx = ( diff --git a/examples/chain_client/exchange/17_MsgSubaccountTransfer.py b/examples/chain_client/exchange/17_MsgSubaccountTransfer.py index a50fc0cf..0c5d561f 100644 --- a/examples/chain_client/exchange/17_MsgSubaccountTransfer.py +++ b/examples/chain_client/exchange/17_MsgSubaccountTransfer.py @@ -1,6 +1,5 @@ import asyncio import os -from decimal import Decimal import dotenv from grpc import RpcError @@ -33,12 +32,12 @@ async def main() -> None: dest_subaccount_id = address.get_subaccount_id(index=1) # prepare tx msg - msg = composer.msg_subaccount_transfer( + msg = composer.msg_subaccount_transfer_v2( sender=address.to_acc_bech32(), source_subaccount_id=subaccount_id, destination_subaccount_id=dest_subaccount_id, - amount=Decimal(100), - denom="INJ", + amount=100, + denom="inj", ) # build sim tx diff --git a/examples/chain_client/exchange/18_MsgExternalTransfer.py b/examples/chain_client/exchange/18_MsgExternalTransfer.py index 2bcc86a1..5ce5cacd 100644 --- a/examples/chain_client/exchange/18_MsgExternalTransfer.py +++ b/examples/chain_client/exchange/18_MsgExternalTransfer.py @@ -1,6 +1,5 @@ import asyncio import os -from decimal import Decimal import dotenv from grpc import RpcError @@ -33,12 +32,12 @@ async def main() -> None: dest_subaccount_id = "0xaf79152ac5df276d9a8e1e2e22822f9713474902000000000000000000000000" # prepare tx msg - msg = composer.msg_external_transfer( + msg = composer.msg_external_transfer_v2( sender=address.to_acc_bech32(), source_subaccount_id=subaccount_id, destination_subaccount_id=dest_subaccount_id, - amount=Decimal(100), - denom="INJ", + amount=100, + denom="inj", ) # build sim tx diff --git a/examples/chain_client/exchange/19_MsgLiquidatePosition.py b/examples/chain_client/exchange/19_MsgLiquidatePosition.py index 9788b865..9f2b6df8 100644 --- a/examples/chain_client/exchange/19_MsgLiquidatePosition.py +++ b/examples/chain_client/exchange/19_MsgLiquidatePosition.py @@ -37,7 +37,7 @@ async def main() -> None: fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" cid = str(uuid.uuid4()) - order = composer.derivative_order( + order = composer.create_v2_derivative_order( market_id=market_id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -51,7 +51,7 @@ async def main() -> None: ) # prepare tx msg - msg = composer.msg_liquidate_position( + msg = composer.msg_liquidate_position_v2( sender=address.to_acc_bech32(), subaccount_id="0x156df4d5bc8e7dd9191433e54bd6a11eeb390921000000000000000000000000", market_id=market_id, diff --git a/examples/chain_client/exchange/1_MsgDeposit.py b/examples/chain_client/exchange/1_MsgDeposit.py index bbf64710..c48ebfc7 100644 --- a/examples/chain_client/exchange/1_MsgDeposit.py +++ b/examples/chain_client/exchange/1_MsgDeposit.py @@ -31,9 +31,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) # prepare tx msg - msg = composer.msg_deposit( - sender=address.to_acc_bech32(), subaccount_id=subaccount_id, amount=0.000001, denom="INJ" - ) + msg = composer.msg_deposit_v2(sender=address.to_acc_bech32(), subaccount_id=subaccount_id, amount=1, denom="inj") # build sim tx tx = ( diff --git a/examples/chain_client/exchange/20_MsgIncreasePositionMargin.py b/examples/chain_client/exchange/20_MsgIncreasePositionMargin.py index 276276e7..686f3634 100644 --- a/examples/chain_client/exchange/20_MsgIncreasePositionMargin.py +++ b/examples/chain_client/exchange/20_MsgIncreasePositionMargin.py @@ -35,7 +35,7 @@ async def main() -> None: market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" # prepare tx msg - msg = composer.msg_increase_position_margin( + msg = composer.msg_increase_position_margin_v2( sender=address.to_acc_bech32(), market_id=market_id, source_subaccount_id=subaccount_id, diff --git a/examples/chain_client/exchange/23_MsgDecreasePositionMargin.py b/examples/chain_client/exchange/23_MsgDecreasePositionMargin.py index 5914063d..a81a5747 100644 --- a/examples/chain_client/exchange/23_MsgDecreasePositionMargin.py +++ b/examples/chain_client/exchange/23_MsgDecreasePositionMargin.py @@ -38,7 +38,7 @@ async def main() -> None: market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" # prepare tx msg - msg = composer.msg_decrease_position_margin( + msg = composer.msg_decrease_position_margin_v2( sender=address.to_acc_bech32(), market_id=market_id, source_subaccount_id=subaccount_id, diff --git a/examples/chain_client/exchange/24_MsgUpdateSpotMarket.py b/examples/chain_client/exchange/24_MsgUpdateSpotMarket.py index 67d73a4d..b26e831e 100644 --- a/examples/chain_client/exchange/24_MsgUpdateSpotMarket.py +++ b/examples/chain_client/exchange/24_MsgUpdateSpotMarket.py @@ -35,7 +35,7 @@ async def main() -> None: await client.fetch_account(address.to_acc_bech32()) # prepare tx msg - message = composer.msg_update_spot_market( + message = composer.msg_update_spot_market_v2( admin=address.to_acc_bech32(), market_id="0x215970bfdea5c94d8e964a759d3ce6eae1d113900129cc8428267db5ccdb3d1a", new_ticker="INJ/USDC 2", diff --git a/examples/chain_client/exchange/25_MsgUpdateDerivativeMarket.py b/examples/chain_client/exchange/25_MsgUpdateDerivativeMarket.py index da2aa593..ed3e6137 100644 --- a/examples/chain_client/exchange/25_MsgUpdateDerivativeMarket.py +++ b/examples/chain_client/exchange/25_MsgUpdateDerivativeMarket.py @@ -35,7 +35,7 @@ async def main() -> None: await client.fetch_account(address.to_acc_bech32()) # prepare tx msg - message = composer.msg_update_derivative_market( + message = composer.msg_update_derivative_market_v2( admin=address.to_acc_bech32(), market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", new_ticker="INJ/USDT PERP 2", diff --git a/examples/chain_client/exchange/2_MsgWithdraw.py b/examples/chain_client/exchange/2_MsgWithdraw.py index 1070d28c..89071f01 100644 --- a/examples/chain_client/exchange/2_MsgWithdraw.py +++ b/examples/chain_client/exchange/2_MsgWithdraw.py @@ -29,9 +29,10 @@ async def main() -> None: address = pub_key.to_address() await client.fetch_account(address.to_acc_bech32()) subaccount_id = address.get_subaccount_id(index=0) + denom = "peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5" # prepare tx msg - msg = composer.msg_withdraw(sender=address.to_acc_bech32(), subaccount_id=subaccount_id, amount=1, denom="USDT") + msg = composer.msg_withdraw_v2(sender=address.to_acc_bech32(), subaccount_id=subaccount_id, amount=1, denom=denom) # build sim tx tx = ( diff --git a/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py b/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py index 53459eeb..e456eb7e 100644 --- a/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py +++ b/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py @@ -35,11 +35,11 @@ async def main() -> None: await client.fetch_account(address.to_acc_bech32()) # prepare tx msg - message = composer.msg_instant_spot_market_launch( + message = composer.msg_instant_spot_market_launch_v2( sender=address.to_acc_bech32(), ticker="INJ/USDC", - base_denom="INJ", - quote_denom="USDC", + base_denom="inj", + quote_denom="factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/usdc", min_price_tick_size=Decimal("0.001"), min_quantity_tick_size=Decimal("0.01"), min_notional=Decimal("1"), diff --git a/examples/chain_client/exchange/4_MsgInstantPerpetualMarketLaunch.py b/examples/chain_client/exchange/4_MsgInstantPerpetualMarketLaunch.py index 1cda2f20..7fde21a7 100644 --- a/examples/chain_client/exchange/4_MsgInstantPerpetualMarketLaunch.py +++ b/examples/chain_client/exchange/4_MsgInstantPerpetualMarketLaunch.py @@ -35,10 +35,10 @@ async def main() -> None: await client.fetch_account(address.to_acc_bech32()) # prepare tx msg - message = composer.msg_instant_perpetual_market_launch( + message = composer.msg_instant_perpetual_market_launch_v2( sender=address.to_acc_bech32(), ticker="INJ/USDC PERP", - quote_denom="USDC", + quote_denom="factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/usdc", oracle_base="INJ", oracle_quote="USDC", oracle_scale_factor=6, diff --git a/examples/chain_client/exchange/5_MsgInstantExpiryFuturesMarketLaunch.py b/examples/chain_client/exchange/5_MsgInstantExpiryFuturesMarketLaunch.py index 78d25d6c..a1e3264f 100644 --- a/examples/chain_client/exchange/5_MsgInstantExpiryFuturesMarketLaunch.py +++ b/examples/chain_client/exchange/5_MsgInstantExpiryFuturesMarketLaunch.py @@ -35,10 +35,10 @@ async def main() -> None: await client.fetch_account(address.to_acc_bech32()) # prepare tx msg - message = composer.msg_instant_expiry_futures_market_launch( + message = composer.msg_instant_expiry_futures_market_launch_v2( sender=address.to_acc_bech32(), ticker="INJ/USDC FUT", - quote_denom="USDC", + quote_denom="factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/usdc", oracle_base="INJ", oracle_quote="USDC", oracle_scale_factor=6, diff --git a/examples/chain_client/exchange/6_MsgCreateSpotLimitOrder.py b/examples/chain_client/exchange/6_MsgCreateSpotLimitOrder.py index 5b3b966a..4f20ee68 100644 --- a/examples/chain_client/exchange/6_MsgCreateSpotLimitOrder.py +++ b/examples/chain_client/exchange/6_MsgCreateSpotLimitOrder.py @@ -38,7 +38,7 @@ async def main() -> None: cid = str(uuid.uuid4()) # prepare tx msg - msg = composer.msg_create_spot_limit_order( + msg = composer.msg_create_spot_limit_order_v2( sender=address.to_acc_bech32(), market_id=market_id, subaccount_id=subaccount_id, diff --git a/examples/chain_client/exchange/7_MsgCreateSpotMarketOrder.py b/examples/chain_client/exchange/7_MsgCreateSpotMarketOrder.py index 36ea27de..b353f3b9 100644 --- a/examples/chain_client/exchange/7_MsgCreateSpotMarketOrder.py +++ b/examples/chain_client/exchange/7_MsgCreateSpotMarketOrder.py @@ -37,7 +37,7 @@ async def main() -> None: fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" # prepare tx msg - msg = composer.msg_create_spot_market_order( + msg = composer.msg_create_spot_market_order_v2( market_id=market_id, sender=address.to_acc_bech32(), subaccount_id=subaccount_id, diff --git a/examples/chain_client/exchange/8_MsgCancelSpotOrder.py b/examples/chain_client/exchange/8_MsgCancelSpotOrder.py index 4bcedda8..a00259b2 100644 --- a/examples/chain_client/exchange/8_MsgCancelSpotOrder.py +++ b/examples/chain_client/exchange/8_MsgCancelSpotOrder.py @@ -35,7 +35,7 @@ async def main() -> None: order_hash = "0x52888d397d5ae821869c8acde5823dfd8018802d2ef642d3aa639e5308173fcf" # prepare tx msg - msg = composer.msg_cancel_spot_order( + msg = composer.msg_cancel_spot_order_v2( sender=address.to_acc_bech32(), market_id=market_id, subaccount_id=subaccount_id, order_hash=order_hash ) diff --git a/examples/chain_client/exchange/9_MsgBatchUpdateOrders.py b/examples/chain_client/exchange/9_MsgBatchUpdateOrders.py index ac490216..5b00562c 100644 --- a/examples/chain_client/exchange/9_MsgBatchUpdateOrders.py +++ b/examples/chain_client/exchange/9_MsgBatchUpdateOrders.py @@ -44,12 +44,12 @@ async def main() -> None: spot_market_id_cancel_2 = "0x7a57e705bb4e09c88aecfc295569481dbf2fe1d5efe364651fbe72385938e9b0" derivative_orders_to_cancel = [ - composer.order_data( + composer.create_v2_order_data_without_mask( market_id=derivative_market_id_cancel, subaccount_id=subaccount_id, order_hash="0x48690013c382d5dbaff9989db04629a16a5818d7524e027d517ccc89fd068103", ), - composer.order_data( + composer.create_v2_order_data_without_mask( market_id=derivative_market_id_cancel_2, subaccount_id=subaccount_id, order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", @@ -57,12 +57,12 @@ async def main() -> None: ] spot_orders_to_cancel = [ - composer.order_data( + composer.create_v2_order_data_without_mask( market_id=spot_market_id_cancel, subaccount_id=subaccount_id, cid="0e5c3ad5-2cc4-4a2a-bbe5-b12697739163", ), - composer.order_data( + composer.create_v2_order_data_without_mask( market_id=spot_market_id_cancel_2, subaccount_id=subaccount_id, order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", @@ -70,7 +70,7 @@ async def main() -> None: ] derivative_orders_to_create = [ - composer.derivative_order( + composer.create_v2_derivative_order( market_id=derivative_market_id_create, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -82,7 +82,7 @@ async def main() -> None: order_type="BUY", cid=str(uuid.uuid4()), ), - composer.derivative_order( + composer.create_v2_derivative_order( market_id=derivative_market_id_create, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -97,7 +97,7 @@ async def main() -> None: ] spot_orders_to_create = [ - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id_create, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -106,7 +106,7 @@ async def main() -> None: order_type="BUY", cid=str(uuid.uuid4()), ), - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id_create, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -118,7 +118,7 @@ async def main() -> None: ] # prepare tx msg - msg = composer.msg_batch_update_orders( + msg = composer.msg_batch_update_orders_v2( sender=address.to_acc_bech32(), derivative_orders_to_create=derivative_orders_to_create, spot_orders_to_create=spot_orders_to_create, diff --git a/examples/chain_client/exchange/query/10_SpotMarkets.py b/examples/chain_client/exchange/query/10_SpotMarkets.py index 4cedc9d7..54d7ee9a 100644 --- a/examples/chain_client/exchange/query/10_SpotMarkets.py +++ b/examples/chain_client/exchange/query/10_SpotMarkets.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - spot_markets = await client.fetch_chain_spot_markets( + spot_markets = await client.fetch_chain_spot_markets_v2( status="Active", market_ids=["0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe"], ) diff --git a/examples/chain_client/exchange/query/11_SpotMarket.py b/examples/chain_client/exchange/query/11_SpotMarket.py index 0e774edf..e61b2c1e 100644 --- a/examples/chain_client/exchange/query/11_SpotMarket.py +++ b/examples/chain_client/exchange/query/11_SpotMarket.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - spot_market = await client.fetch_chain_spot_market( + spot_market = await client.fetch_chain_spot_market_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", ) print(spot_market) diff --git a/examples/chain_client/exchange/query/12_FullSpotMarkets.py b/examples/chain_client/exchange/query/12_FullSpotMarkets.py index cfefee28..7b035ad1 100644 --- a/examples/chain_client/exchange/query/12_FullSpotMarkets.py +++ b/examples/chain_client/exchange/query/12_FullSpotMarkets.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - spot_markets = await client.fetch_chain_full_spot_markets( + spot_markets = await client.fetch_chain_full_spot_markets_v2( status="Active", market_ids=["0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe"], with_mid_price_and_tob=True, diff --git a/examples/chain_client/exchange/query/13_FullSpotMarket.py b/examples/chain_client/exchange/query/13_FullSpotMarket.py index 6a39269d..0f19c442 100644 --- a/examples/chain_client/exchange/query/13_FullSpotMarket.py +++ b/examples/chain_client/exchange/query/13_FullSpotMarket.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - spot_market = await client.fetch_chain_full_spot_market( + spot_market = await client.fetch_chain_full_spot_market_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", with_mid_price_and_tob=True, ) diff --git a/examples/chain_client/exchange/query/14_SpotOrderbook.py b/examples/chain_client/exchange/query/14_SpotOrderbook.py index 7b5a9aa1..601b8c87 100644 --- a/examples/chain_client/exchange/query/14_SpotOrderbook.py +++ b/examples/chain_client/exchange/query/14_SpotOrderbook.py @@ -14,7 +14,7 @@ async def main() -> None: pagination = PaginationOption(limit=2) - orderbook = await client.fetch_chain_spot_orderbook( + orderbook = await client.fetch_chain_spot_orderbook_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", order_side="Buy", pagination=pagination, diff --git a/examples/chain_client/exchange/query/15_TraderSpotOrders.py b/examples/chain_client/exchange/query/15_TraderSpotOrders.py index 0cc96b6f..3d817404 100644 --- a/examples/chain_client/exchange/query/15_TraderSpotOrders.py +++ b/examples/chain_client/exchange/query/15_TraderSpotOrders.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - orders = await client.fetch_chain_trader_spot_orders( + orders = await client.fetch_chain_trader_spot_orders_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", subaccount_id=subaccount_id, ) diff --git a/examples/chain_client/exchange/query/16_AccountAddressSpotOrders.py b/examples/chain_client/exchange/query/16_AccountAddressSpotOrders.py index 8e50fa95..cfd732d4 100644 --- a/examples/chain_client/exchange/query/16_AccountAddressSpotOrders.py +++ b/examples/chain_client/exchange/query/16_AccountAddressSpotOrders.py @@ -24,7 +24,7 @@ async def main() -> None: address = pub_key.to_address() await client.fetch_account(address.to_acc_bech32()) - orders = await client.fetch_chain_account_address_spot_orders( + orders = await client.fetch_chain_account_address_spot_orders_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", account_address=address.to_acc_bech32(), ) diff --git a/examples/chain_client/exchange/query/17_SpotOrdersByHashes.py b/examples/chain_client/exchange/query/17_SpotOrdersByHashes.py index 641eb6f5..dbc4cfcd 100644 --- a/examples/chain_client/exchange/query/17_SpotOrdersByHashes.py +++ b/examples/chain_client/exchange/query/17_SpotOrdersByHashes.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - orders = await client.fetch_chain_spot_orders_by_hashes( + orders = await client.fetch_chain_spot_orders_by_hashes_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", subaccount_id=subaccount_id, order_hashes=["0x57a01cd26f1e2080860af3264e865d7c9c034a701e30946d01c1dc7a303cf2c1"], diff --git a/examples/chain_client/exchange/query/18_SubaccountOrders.py b/examples/chain_client/exchange/query/18_SubaccountOrders.py index 4983f827..75669295 100644 --- a/examples/chain_client/exchange/query/18_SubaccountOrders.py +++ b/examples/chain_client/exchange/query/18_SubaccountOrders.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - orders = await client.fetch_chain_subaccount_orders( + orders = await client.fetch_chain_subaccount_orders_v2( subaccount_id=subaccount_id, market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", ) diff --git a/examples/chain_client/exchange/query/19_TraderSpotTransientOrders.py b/examples/chain_client/exchange/query/19_TraderSpotTransientOrders.py index 2b29c2c0..557ff649 100644 --- a/examples/chain_client/exchange/query/19_TraderSpotTransientOrders.py +++ b/examples/chain_client/exchange/query/19_TraderSpotTransientOrders.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - orders = await client.fetch_chain_trader_spot_transient_orders( + orders = await client.fetch_chain_trader_spot_transient_orders_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", subaccount_id=subaccount_id, ) diff --git a/examples/chain_client/exchange/query/20_SpotMidPriceAndTOB.py b/examples/chain_client/exchange/query/20_SpotMidPriceAndTOB.py index 35493ffd..66a25482 100644 --- a/examples/chain_client/exchange/query/20_SpotMidPriceAndTOB.py +++ b/examples/chain_client/exchange/query/20_SpotMidPriceAndTOB.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - prices = await client.fetch_spot_mid_price_and_tob( + prices = await client.fetch_spot_mid_price_and_tob_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", ) print(prices) diff --git a/examples/chain_client/exchange/query/21_DerivativeMidPriceAndTOB.py b/examples/chain_client/exchange/query/21_DerivativeMidPriceAndTOB.py index 5b5c5fff..0c0acbc0 100644 --- a/examples/chain_client/exchange/query/21_DerivativeMidPriceAndTOB.py +++ b/examples/chain_client/exchange/query/21_DerivativeMidPriceAndTOB.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - prices = await client.fetch_derivative_mid_price_and_tob( + prices = await client.fetch_derivative_mid_price_and_tob_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", ) print(prices) diff --git a/examples/chain_client/exchange/query/22_DerivativeOrderbook.py b/examples/chain_client/exchange/query/22_DerivativeOrderbook.py index 465a62b6..946b099f 100644 --- a/examples/chain_client/exchange/query/22_DerivativeOrderbook.py +++ b/examples/chain_client/exchange/query/22_DerivativeOrderbook.py @@ -14,7 +14,7 @@ async def main() -> None: pagination = PaginationOption(limit=2) - orderbook = await client.fetch_chain_derivative_orderbook( + orderbook = await client.fetch_chain_derivative_orderbook_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", pagination=pagination, ) diff --git a/examples/chain_client/exchange/query/23_TraderDerivativeOrders.py b/examples/chain_client/exchange/query/23_TraderDerivativeOrders.py index 244a61b4..86d3908b 100644 --- a/examples/chain_client/exchange/query/23_TraderDerivativeOrders.py +++ b/examples/chain_client/exchange/query/23_TraderDerivativeOrders.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - orders = await client.fetch_chain_trader_derivative_orders( + orders = await client.fetch_chain_trader_derivative_orders_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", subaccount_id=subaccount_id, ) diff --git a/examples/chain_client/exchange/query/24_AccountAddressDerivativeOrders.py b/examples/chain_client/exchange/query/24_AccountAddressDerivativeOrders.py index 2ecc6e2d..639d8407 100644 --- a/examples/chain_client/exchange/query/24_AccountAddressDerivativeOrders.py +++ b/examples/chain_client/exchange/query/24_AccountAddressDerivativeOrders.py @@ -24,7 +24,7 @@ async def main() -> None: address = pub_key.to_address() await client.fetch_account(address.to_acc_bech32()) - orders = await client.fetch_chain_account_address_derivative_orders( + orders = await client.fetch_chain_account_address_derivative_orders_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", account_address=address.to_acc_bech32(), ) diff --git a/examples/chain_client/exchange/query/25_DerivativeOrdersByHashes.py b/examples/chain_client/exchange/query/25_DerivativeOrdersByHashes.py index 825f5523..7b4111d7 100644 --- a/examples/chain_client/exchange/query/25_DerivativeOrdersByHashes.py +++ b/examples/chain_client/exchange/query/25_DerivativeOrdersByHashes.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - orders = await client.fetch_chain_derivative_orders_by_hashes( + orders = await client.fetch_chain_derivative_orders_by_hashes_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", subaccount_id=subaccount_id, order_hashes=["0x57a01cd26f1e2080860af3264e865d7c9c034a701e30946d01c1dc7a303cf2c1"], diff --git a/examples/chain_client/exchange/query/26_TraderDerivativeTransientOrders.py b/examples/chain_client/exchange/query/26_TraderDerivativeTransientOrders.py index c5548d59..9bcd2e32 100644 --- a/examples/chain_client/exchange/query/26_TraderDerivativeTransientOrders.py +++ b/examples/chain_client/exchange/query/26_TraderDerivativeTransientOrders.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - orders = await client.fetch_chain_trader_derivative_transient_orders( + orders = await client.fetch_chain_trader_derivative_transient_orders_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", subaccount_id=subaccount_id, ) diff --git a/examples/chain_client/exchange/query/27_DerivativeMarkets.py b/examples/chain_client/exchange/query/27_DerivativeMarkets.py index 2f4bbc5a..ab7ba653 100644 --- a/examples/chain_client/exchange/query/27_DerivativeMarkets.py +++ b/examples/chain_client/exchange/query/27_DerivativeMarkets.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - derivative_markets = await client.fetch_chain_derivative_markets( + derivative_markets = await client.fetch_chain_derivative_markets_v2( status="Active", market_ids=["0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6"], ) diff --git a/examples/chain_client/exchange/query/28_DerivativeMarket.py b/examples/chain_client/exchange/query/28_DerivativeMarket.py index 152381f5..4e5418fe 100644 --- a/examples/chain_client/exchange/query/28_DerivativeMarket.py +++ b/examples/chain_client/exchange/query/28_DerivativeMarket.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - derivative_market = await client.fetch_chain_derivative_market( + derivative_market = await client.fetch_chain_derivative_market_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", ) print(derivative_market) diff --git a/examples/chain_client/exchange/query/31_Positions.py b/examples/chain_client/exchange/query/31_Positions.py index ae494b6a..f2011166 100644 --- a/examples/chain_client/exchange/query/31_Positions.py +++ b/examples/chain_client/exchange/query/31_Positions.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - positions = await client.fetch_chain_positions() + positions = await client.fetch_chain_positions_v2() print(positions) diff --git a/examples/chain_client/exchange/query/32_SubaccountPositions.py b/examples/chain_client/exchange/query/32_SubaccountPositions.py index 000d95b6..2103352d 100644 --- a/examples/chain_client/exchange/query/32_SubaccountPositions.py +++ b/examples/chain_client/exchange/query/32_SubaccountPositions.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - positions = await client.fetch_chain_subaccount_positions( + positions = await client.fetch_chain_subaccount_positions_v2( subaccount_id=subaccount_id, ) print(positions) diff --git a/examples/chain_client/exchange/query/33_SubaccountPositionInMarket.py b/examples/chain_client/exchange/query/33_SubaccountPositionInMarket.py index 4e0f1ddb..9bcde762 100644 --- a/examples/chain_client/exchange/query/33_SubaccountPositionInMarket.py +++ b/examples/chain_client/exchange/query/33_SubaccountPositionInMarket.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - position = await client.fetch_chain_subaccount_position_in_market( + position = await client.fetch_chain_subaccount_position_in_market_v2( subaccount_id=subaccount_id, market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", ) diff --git a/examples/chain_client/exchange/query/34_SubaccountEffectivePositionInMarket.py b/examples/chain_client/exchange/query/34_SubaccountEffectivePositionInMarket.py index e729e77c..1c4307b1 100644 --- a/examples/chain_client/exchange/query/34_SubaccountEffectivePositionInMarket.py +++ b/examples/chain_client/exchange/query/34_SubaccountEffectivePositionInMarket.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - position = await client.fetch_chain_subaccount_effective_position_in_market( + position = await client.fetch_chain_subaccount_effective_position_in_market_v2( subaccount_id=subaccount_id, market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", ) diff --git a/examples/chain_client/exchange/query/36_ExpiryFuturesMarketInfo.py b/examples/chain_client/exchange/query/36_ExpiryFuturesMarketInfo.py index 4053013c..d8bc392f 100644 --- a/examples/chain_client/exchange/query/36_ExpiryFuturesMarketInfo.py +++ b/examples/chain_client/exchange/query/36_ExpiryFuturesMarketInfo.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - market_info = await client.fetch_chain_expiry_futures_market_info( + market_info = await client.fetch_chain_expiry_futures_market_info_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", ) print(market_info) diff --git a/examples/chain_client/exchange/query/37_PerpetualMarketFunding.py b/examples/chain_client/exchange/query/37_PerpetualMarketFunding.py index 099c2a0f..d735c2c2 100644 --- a/examples/chain_client/exchange/query/37_PerpetualMarketFunding.py +++ b/examples/chain_client/exchange/query/37_PerpetualMarketFunding.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - funding = await client.fetch_chain_perpetual_market_funding( + funding = await client.fetch_chain_perpetual_market_funding_v2( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", ) print(funding) diff --git a/examples/chain_client/exchange/query/38_SubaccountOrderMetadata.py b/examples/chain_client/exchange/query/38_SubaccountOrderMetadata.py index f4af9d38..3f9caa8f 100644 --- a/examples/chain_client/exchange/query/38_SubaccountOrderMetadata.py +++ b/examples/chain_client/exchange/query/38_SubaccountOrderMetadata.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - metadata = await client.fetch_subaccount_order_metadata( + metadata = await client.fetch_subaccount_order_metadata_v2( subaccount_id=subaccount_id, ) print(metadata) diff --git a/examples/chain_client/exchange/query/42_FeeDiscountAccountInfo.py b/examples/chain_client/exchange/query/42_FeeDiscountAccountInfo.py index 15fbb7ce..ab349de3 100644 --- a/examples/chain_client/exchange/query/42_FeeDiscountAccountInfo.py +++ b/examples/chain_client/exchange/query/42_FeeDiscountAccountInfo.py @@ -24,7 +24,7 @@ async def main() -> None: address = pub_key.to_address() await client.fetch_account(address.to_acc_bech32()) - fee_discount = await client.fetch_fee_discount_account_info( + fee_discount = await client.fetch_fee_discount_account_info_v2( account=address.to_acc_bech32(), ) print(fee_discount) diff --git a/examples/chain_client/exchange/query/43_FeeDiscountSchedule.py b/examples/chain_client/exchange/query/43_FeeDiscountSchedule.py index a0ae96cb..a0856bc5 100644 --- a/examples/chain_client/exchange/query/43_FeeDiscountSchedule.py +++ b/examples/chain_client/exchange/query/43_FeeDiscountSchedule.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - schedule = await client.fetch_fee_discount_schedule() + schedule = await client.fetch_fee_discount_schedule_v2() print(schedule) diff --git a/examples/chain_client/exchange/query/49_HistoricalTradeRecords.py b/examples/chain_client/exchange/query/49_HistoricalTradeRecords.py index 6b93200f..a2d5adeb 100644 --- a/examples/chain_client/exchange/query/49_HistoricalTradeRecords.py +++ b/examples/chain_client/exchange/query/49_HistoricalTradeRecords.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - records = await client.fetch_historical_trade_records( + records = await client.fetch_historical_trade_records_v2( market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" ) print(records) diff --git a/examples/chain_client/exchange/query/4_AggregateVolume.py b/examples/chain_client/exchange/query/4_AggregateVolume.py index 35c334a5..b7ca7b59 100644 --- a/examples/chain_client/exchange/query/4_AggregateVolume.py +++ b/examples/chain_client/exchange/query/4_AggregateVolume.py @@ -25,10 +25,10 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - volume = await client.fetch_aggregate_volume(account=address.to_acc_bech32()) + volume = await client.fetch_aggregate_volume_v2(account=address.to_acc_bech32()) print(volume) - volume = await client.fetch_aggregate_volume(account=subaccount_id) + volume = await client.fetch_aggregate_volume_v2(account=subaccount_id) print(volume) diff --git a/examples/chain_client/exchange/query/52_MarketVolatility.py b/examples/chain_client/exchange/query/52_MarketVolatility.py index 3173ca39..6f532675 100644 --- a/examples/chain_client/exchange/query/52_MarketVolatility.py +++ b/examples/chain_client/exchange/query/52_MarketVolatility.py @@ -16,7 +16,7 @@ async def main() -> None: max_age = 0 include_raw_history = True include_metadata = True - volatility = await client.fetch_market_volatility( + volatility = await client.fetch_market_volatility_v2( market_id=market_id, trade_grouping_sec=trade_grouping_sec, max_age=max_age, diff --git a/examples/chain_client/exchange/query/53_BinaryOptionsMarkets.py b/examples/chain_client/exchange/query/53_BinaryOptionsMarkets.py index 4448a4ec..3068bf33 100644 --- a/examples/chain_client/exchange/query/53_BinaryOptionsMarkets.py +++ b/examples/chain_client/exchange/query/53_BinaryOptionsMarkets.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - markets = await client.fetch_chain_binary_options_markets(status="Active") + markets = await client.fetch_chain_binary_options_markets_v2(status="Active") print(markets) diff --git a/examples/chain_client/exchange/query/54_TraderDerivativeConditionalOrders.py b/examples/chain_client/exchange/query/54_TraderDerivativeConditionalOrders.py index fd65e68f..7481c7df 100644 --- a/examples/chain_client/exchange/query/54_TraderDerivativeConditionalOrders.py +++ b/examples/chain_client/exchange/query/54_TraderDerivativeConditionalOrders.py @@ -26,7 +26,7 @@ async def main() -> None: subaccount_id = address.get_subaccount_id(index=0) - orders = await client.fetch_trader_derivative_conditional_orders( + orders = await client.fetch_trader_derivative_conditional_orders_v2( subaccount_id=subaccount_id, market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", ) diff --git a/examples/chain_client/exchange/query/56_ActiveStakeGrant.py b/examples/chain_client/exchange/query/56_ActiveStakeGrant.py new file mode 100644 index 00000000..f5c66c9b --- /dev/null +++ b/examples/chain_client/exchange/query/56_ActiveStakeGrant.py @@ -0,0 +1,27 @@ +import asyncio +import os + +import dotenv + +from pyinjective.async_client import AsyncClient +from pyinjective.core.network import Network + + +async def main() -> None: + dotenv.load_dotenv() + grantee_public_address = os.getenv("INJECTIVE_GRANTEE_PUBLIC_ADDRESS") + + # select network: local, testnet, mainnet + network = Network.testnet() + + # initialize grpc client + client = AsyncClient(network) + + active_grant = await client.fetch_active_stake_grant( + grantee=grantee_public_address, + ) + print(active_grant) + + +if __name__ == "__main__": + asyncio.get_event_loop().run_until_complete(main()) diff --git a/examples/chain_client/exchange/query/57_GrantAuthorization.py b/examples/chain_client/exchange/query/57_GrantAuthorization.py new file mode 100644 index 00000000..c9509987 --- /dev/null +++ b/examples/chain_client/exchange/query/57_GrantAuthorization.py @@ -0,0 +1,34 @@ +import asyncio +import os + +import dotenv + +from pyinjective import PrivateKey +from pyinjective.async_client import AsyncClient +from pyinjective.core.network import Network + + +async def main() -> None: + dotenv.load_dotenv() + configured_private_key = os.getenv("INJECTIVE_PRIVATE_KEY") + grantee_public_address = os.getenv("INJECTIVE_GRANTEE_PUBLIC_ADDRESS") + + # select network: local, testnet, mainnet + network = Network.testnet() + + # initialize grpc client + client = AsyncClient(network) + + priv_key = PrivateKey.from_hex(configured_private_key) + pub_key = priv_key.to_public_key() + address = pub_key.to_address() + + active_grant = await client.fetch_grant_authorization( + granter=address.to_acc_bech32(), + grantee=grantee_public_address, + ) + print(active_grant) + + +if __name__ == "__main__": + asyncio.get_event_loop().run_until_complete(main()) diff --git a/examples/chain_client/exchange/query/58_GrantAuthorizations.py b/examples/chain_client/exchange/query/58_GrantAuthorizations.py new file mode 100644 index 00000000..0dc140f4 --- /dev/null +++ b/examples/chain_client/exchange/query/58_GrantAuthorizations.py @@ -0,0 +1,32 @@ +import asyncio +import os + +import dotenv + +from pyinjective import PrivateKey +from pyinjective.async_client import AsyncClient +from pyinjective.core.network import Network + + +async def main() -> None: + dotenv.load_dotenv() + configured_private_key = os.getenv("INJECTIVE_PRIVATE_KEY") + + # select network: local, testnet, mainnet + network = Network.testnet() + + # initialize grpc client + client = AsyncClient(network) + + priv_key = PrivateKey.from_hex(configured_private_key) + pub_key = priv_key.to_public_key() + address = pub_key.to_address() + + active_grant = await client.fetch_grant_authorizations( + granter=address.to_acc_bech32(), + ) + print(active_grant) + + +if __name__ == "__main__": + asyncio.get_event_loop().run_until_complete(main()) diff --git a/examples/chain_client/exchange/query/59_L3DerivativeOrderBook.py b/examples/chain_client/exchange/query/59_L3DerivativeOrderBook.py new file mode 100644 index 00000000..5d605f26 --- /dev/null +++ b/examples/chain_client/exchange/query/59_L3DerivativeOrderBook.py @@ -0,0 +1,21 @@ +import asyncio + +from pyinjective.async_client import AsyncClient +from pyinjective.core.network import Network + + +async def main() -> None: + # select network: local, testnet, mainnet + network = Network.testnet() + + # initialize grpc client + client = AsyncClient(network) + + orderbook = await client.fetch_l3_derivative_orderbook_v2( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + ) + print(orderbook) + + +if __name__ == "__main__": + asyncio.get_event_loop().run_until_complete(main()) diff --git a/examples/chain_client/exchange/query/5_AggregateVolumes.py b/examples/chain_client/exchange/query/5_AggregateVolumes.py index 6effe4be..506cea2f 100644 --- a/examples/chain_client/exchange/query/5_AggregateVolumes.py +++ b/examples/chain_client/exchange/query/5_AggregateVolumes.py @@ -23,7 +23,7 @@ async def main() -> None: pub_key = priv_key.to_public_key() address = pub_key.to_address() - volume = await client.fetch_aggregate_volumes( + volume = await client.fetch_aggregate_volumes_v2( accounts=[address.to_acc_bech32()], market_ids=["0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe"], ) diff --git a/examples/chain_client/exchange/query/60_L3SpotOrderBook.py b/examples/chain_client/exchange/query/60_L3SpotOrderBook.py new file mode 100644 index 00000000..21e55aff --- /dev/null +++ b/examples/chain_client/exchange/query/60_L3SpotOrderBook.py @@ -0,0 +1,21 @@ +import asyncio + +from pyinjective.async_client import AsyncClient +from pyinjective.core.network import Network + + +async def main() -> None: + # select network: local, testnet, mainnet + network = Network.testnet() + + # initialize grpc client + client = AsyncClient(network) + + orderbook = await client.fetch_l3_spot_orderbook_v2( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + print(orderbook) + + +if __name__ == "__main__": + asyncio.get_event_loop().run_until_complete(main()) diff --git a/examples/chain_client/exchange/query/6_AggregateMarketVolume.py b/examples/chain_client/exchange/query/6_AggregateMarketVolume.py index b3262d82..55f34d9a 100644 --- a/examples/chain_client/exchange/query/6_AggregateMarketVolume.py +++ b/examples/chain_client/exchange/query/6_AggregateMarketVolume.py @@ -13,7 +13,7 @@ async def main() -> None: market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" - volume = await client.fetch_aggregate_market_volume(market_id=market_id) + volume = await client.fetch_aggregate_market_volume_v2(market_id=market_id) print(volume) diff --git a/examples/chain_client/exchange/query/7_AggregateMarketVolumes.py b/examples/chain_client/exchange/query/7_AggregateMarketVolumes.py index 23dfa0ec..7eb22a26 100644 --- a/examples/chain_client/exchange/query/7_AggregateMarketVolumes.py +++ b/examples/chain_client/exchange/query/7_AggregateMarketVolumes.py @@ -11,7 +11,7 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) - volume = await client.fetch_aggregate_market_volumes( + volume = await client.fetch_aggregate_market_volumes_v2( market_ids=["0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe"], ) print(volume) diff --git a/examples/chain_client/ibc/transfer/1_MsgTransfer.py b/examples/chain_client/ibc/transfer/1_MsgTransfer.py index 604ece6e..a99b3fdc 100644 --- a/examples/chain_client/ibc/transfer/1_MsgTransfer.py +++ b/examples/chain_client/ibc/transfer/1_MsgTransfer.py @@ -36,7 +36,10 @@ async def main() -> None: source_port = "transfer" source_channel = "channel-126" - token_amount = composer.create_coin_amount(amount=Decimal("0.1"), token_name="INJ") + token_decimals = 18 + transfer_amount = Decimal("0.1") * Decimal(f"1e{token_decimals}") + inj_chain_denom = "inj" + token_amount = composer.coin(amount=int(transfer_amount), denom=inj_chain_denom) sender = address.to_acc_bech32() receiver = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" timeout_height = 10 diff --git a/examples/chain_client/insurance/1_MsgCreateInsuranceFund.py b/examples/chain_client/insurance/1_MsgCreateInsuranceFund.py index 99c10fc0..77ec34d4 100644 --- a/examples/chain_client/insurance/1_MsgCreateInsuranceFund.py +++ b/examples/chain_client/insurance/1_MsgCreateInsuranceFund.py @@ -30,13 +30,13 @@ async def main() -> None: address = pub_key.to_address() await client.fetch_account(address.to_acc_bech32()) - msg = composer.MsgCreateInsuranceFund( + msg = composer.msg_create_insurance_fund( sender=address.to_acc_bech32(), ticker="5202d32a9-1701406800-SF", - quote_denom="USDT", + quote_denom="peggy0xdAC17F958D2ee523a2206206994597C13D831ec7", oracle_base="Frontrunner", oracle_quote="Frontrunner", - oracle_type=11, + oracle_type="Band", expiry=-2, initial_deposit=1000, ) diff --git a/examples/chain_client/insurance/2_MsgUnderwrite.py b/examples/chain_client/insurance/2_MsgUnderwrite.py index 16b75e70..accaa1c0 100644 --- a/examples/chain_client/insurance/2_MsgUnderwrite.py +++ b/examples/chain_client/insurance/2_MsgUnderwrite.py @@ -1,5 +1,6 @@ import asyncio import os +from decimal import Decimal import dotenv from grpc import RpcError @@ -30,11 +31,15 @@ async def main() -> None: address = pub_key.to_address() await client.fetch_account(address.to_acc_bech32()) - msg = composer.MsgUnderwrite( + token_decimals = 6 + amount = 100 + chain_amount = Decimal(str(amount)) * Decimal(f"1e{token_decimals}") + + msg = composer.msg_underwrite( sender=address.to_acc_bech32(), market_id="0x141e3c92ed55107067ceb60ee412b86256cedef67b1227d6367b4cdf30c55a74", - quote_denom="USDT", - amount=100, + quote_denom="peggy0xdAC17F958D2ee523a2206206994597C13D831ec7", + amount=int(chain_amount), ) # build sim tx diff --git a/examples/chain_client/peggy/1_MsgSendToEth.py b/examples/chain_client/peggy/1_MsgSendToEth.py index 06e2d78c..b2e28047 100644 --- a/examples/chain_client/peggy/1_MsgSendToEth.py +++ b/examples/chain_client/peggy/1_MsgSendToEth.py @@ -1,5 +1,6 @@ import asyncio import os +from decimal import Decimal import dotenv import requests @@ -36,14 +37,16 @@ async def main() -> None: token_price = requests.get(coingecko_endpoint).json()[asset]["usd"] minimum_bridge_fee_usd = 10 bridge_fee = minimum_bridge_fee_usd / token_price + token_decimals = 6 + chain_bridge_fee = int(Decimal(str(bridge_fee)) * Decimal(f"1e{token_decimals}")) # prepare tx msg - msg = composer.MsgSendToEth( + msg = composer.msg_send_to_eth( sender=address.to_acc_bech32(), - denom="INJ", + denom="inj", eth_dest="0xaf79152ac5df276d9a8e1e2e22822f9713474902", amount=23, - bridge_fee=bridge_fee, + bridge_fee=chain_bridge_fee, ) # build sim tx diff --git a/examples/chain_client/tx/query/1_GetTx.py b/examples/chain_client/tx/query/1_GetTx.py index f645dba7..38d13342 100644 --- a/examples/chain_client/tx/query/1_GetTx.py +++ b/examples/chain_client/tx/query/1_GetTx.py @@ -5,9 +5,9 @@ async def main() -> None: - network = Network.testnet() + network = Network.devnet() client = AsyncClient(network) - tx_hash = "D265527E3171C47D01D7EC9B839A95F8F794D4E683F26F5564025961C96EFDDA" + tx_hash = "EA598BB5297341636DD62D378DEB87ECE6F95AFB4F45966AA6A53D36EF022DA5" tx_logs = await client.fetch_tx(hash=tx_hash) print(tx_logs) diff --git a/pyinjective/async_client.py b/pyinjective/async_client.py index 23d2012e..0d656eb8 100644 --- a/pyinjective/async_client.py +++ b/pyinjective/async_client.py @@ -2,6 +2,7 @@ from copy import deepcopy from decimal import Decimal from typing import Any, Callable, Dict, List, Optional, Tuple +from warnings import warn from google.protobuf import json_format @@ -10,6 +11,7 @@ from pyinjective.client.chain.grpc.chain_grpc_bank_api import ChainGrpcBankApi from pyinjective.client.chain.grpc.chain_grpc_distribution_api import ChainGrpcDistributionApi from pyinjective.client.chain.grpc.chain_grpc_exchange_api import ChainGrpcExchangeApi +from pyinjective.client.chain.grpc.chain_grpc_exchange_v2_api import ChainGrpcExchangeV2Api from pyinjective.client.chain.grpc.chain_grpc_permissions_api import ChainGrpcPermissionsApi from pyinjective.client.chain.grpc.chain_grpc_token_factory_api import ChainGrpcTokenFactoryApi from pyinjective.client.chain.grpc.chain_grpc_wasm_api import ChainGrpcWasmApi @@ -54,6 +56,7 @@ tendermint_pb2 as ibc_tendermint, ) from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_query +from pyinjective.proto.injective.stream.v2 import query_pb2 as chain_stream_v2_query from pyinjective.proto.injective.types.v1beta1 import account_pb2 from pyinjective.utils.logger import LoggerProvider @@ -122,6 +125,10 @@ def __init__( channel=self.chain_channel, cookie_assistant=network.chain_cookie_assistant, ) + self.chain_exchange_v2_api = ChainGrpcExchangeV2Api( + channel=self.chain_channel, + cookie_assistant=network.chain_cookie_assistant, + ) self.ibc_channel_api = IBCChannelGrpcApi( channel=self.chain_channel, cookie_assistant=network.chain_cookie_assistant, @@ -465,7 +472,7 @@ async def fetch_subaccount_deposits( subaccount_trader: Optional[str] = None, subaccount_nonce: Optional[int] = None, ) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_subaccount_deposits( + return await self.chain_exchange_v2_api.fetch_subaccount_deposits( subaccount_id=subaccount_id, subaccount_trader=subaccount_trader, subaccount_nonce=subaccount_nonce, @@ -476,15 +483,20 @@ async def fetch_subaccount_deposit( subaccount_id: str, denom: str, ) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_subaccount_deposit( + return await self.chain_exchange_v2_api.fetch_subaccount_deposit( subaccount_id=subaccount_id, denom=denom, ) async def fetch_exchange_balances(self) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_exchange_balances() + return await self.chain_exchange_v2_api.fetch_exchange_balances() async def fetch_aggregate_volume(self, account: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_aggregate_volume_v2` instead + """ + warn("This method is deprecated. Use fetch_aggregate_volume_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_aggregate_volume(account=account) async def fetch_aggregate_volumes( @@ -492,6 +504,11 @@ async def fetch_aggregate_volumes( accounts: Optional[List[str]] = None, market_ids: Optional[List[str]] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_aggregate_volumes_v2` instead + """ + warn("This method is deprecated. Use fetch_aggregate_volumes_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_aggregate_volumes( accounts=accounts, market_ids=market_ids, @@ -501,6 +518,13 @@ async def fetch_aggregate_market_volume( self, market_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_aggregate_market_volume_v2` instead + """ + warn( + "This method is deprecated. Use fetch_aggregate_market_volume_v2 instead", DeprecationWarning, stacklevel=2 + ) + return await self.chain_exchange_api.fetch_aggregate_market_volume( market_id=market_id, ) @@ -509,21 +533,33 @@ async def fetch_aggregate_market_volumes( self, market_ids: Optional[List[str]] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_aggregate_market_volumes_v2` instead + """ + warn( + "This method is deprecated. Use fetch_aggregate_market_volumes_v2 instead", DeprecationWarning, stacklevel=2 + ) + return await self.chain_exchange_api.fetch_aggregate_market_volumes( market_ids=market_ids, ) async def fetch_denom_decimal(self, denom: str) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_denom_decimal(denom=denom) + return await self.chain_exchange_v2_api.fetch_denom_decimal(denom=denom) async def fetch_denom_decimals(self, denoms: Optional[List[str]] = None) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_denom_decimals(denoms=denoms) + return await self.chain_exchange_v2_api.fetch_denom_decimals(denoms=denoms) async def fetch_chain_spot_markets( self, status: Optional[str] = None, market_ids: Optional[List[str]] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_spot_markets_v2` instead + """ + warn("This method is deprecated. Use fetch_chain_spot_markets_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_spot_markets( status=status, market_ids=market_ids, @@ -533,6 +569,11 @@ async def fetch_chain_spot_market( self, market_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_spot_market_v2` instead + """ + warn("This method is deprecated. Use fetch_chain_spot_market_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_spot_market( market_id=market_id, ) @@ -543,6 +584,13 @@ async def fetch_chain_full_spot_markets( market_ids: Optional[List[str]] = None, with_mid_price_and_tob: Optional[bool] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_full_spot_markets_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_full_spot_markets_v2 instead", DeprecationWarning, stacklevel=2 + ) + return await self.chain_exchange_api.fetch_full_spot_markets( status=status, market_ids=market_ids, @@ -554,6 +602,11 @@ async def fetch_chain_full_spot_market( market_id: str, with_mid_price_and_tob: Optional[bool] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_full_spot_market_v2` instead + """ + warn("This method is deprecated. Use fetch_chain_full_spot_market_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_full_spot_market( market_id=market_id, with_mid_price_and_tob=with_mid_price_and_tob, @@ -567,6 +620,11 @@ async def fetch_chain_spot_orderbook( limit_cumulative_quantity: Optional[str] = None, pagination: Optional[PaginationOption] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_spot_orderbook_v2` instead + """ + warn("This method is deprecated. Use fetch_chain_spot_orderbook_v2 instead", DeprecationWarning, stacklevel=2) + # Order side could be "Side_Unspecified", "Buy", "Sell" return await self.chain_exchange_api.fetch_spot_orderbook( market_id=market_id, @@ -581,6 +639,13 @@ async def fetch_chain_trader_spot_orders( market_id: str, subaccount_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_trader_spot_orders_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_trader_spot_orders_v2 instead", DeprecationWarning, stacklevel=2 + ) + return await self.chain_exchange_api.fetch_trader_spot_orders( market_id=market_id, subaccount_id=subaccount_id, @@ -591,6 +656,16 @@ async def fetch_chain_account_address_spot_orders( market_id: str, account_address: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_chain_account_address_spot_orders_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_account_address_spot_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_account_address_spot_orders( market_id=market_id, account_address=account_address, @@ -602,6 +677,15 @@ async def fetch_chain_spot_orders_by_hashes( subaccount_id: str, order_hashes: List[str], ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_spot_orders_by_hashes_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_spot_orders_by_hashes_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_spot_orders_by_hashes( market_id=market_id, subaccount_id=subaccount_id, @@ -613,6 +697,13 @@ async def fetch_chain_subaccount_orders( subaccount_id: str, market_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_subaccount_orders_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_subaccount_orders_v2 instead", DeprecationWarning, stacklevel=2 + ) + return await self.chain_exchange_api.fetch_subaccount_orders( subaccount_id=subaccount_id, market_id=market_id, @@ -623,6 +714,16 @@ async def fetch_chain_trader_spot_transient_orders( market_id: str, subaccount_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_chain_trader_spot_transient_orders_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_trader_spot_transient_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_trader_spot_transient_orders( market_id=market_id, subaccount_id=subaccount_id, @@ -632,6 +733,11 @@ async def fetch_spot_mid_price_and_tob( self, market_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_spot_mid_price_and_tob_v2` instead + """ + warn("This method is deprecated. Use fetch_spot_mid_price_and_tob_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_spot_mid_price_and_tob( market_id=market_id, ) @@ -640,6 +746,15 @@ async def fetch_derivative_mid_price_and_tob( self, market_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_derivative_mid_price_and_tob_v2` instead + """ + warn( + "This method is deprecated. Use fetch_derivative_mid_price_and_tob_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_derivative_mid_price_and_tob( market_id=market_id, ) @@ -650,6 +765,15 @@ async def fetch_chain_derivative_orderbook( limit_cumulative_notional: Optional[str] = None, pagination: Optional[PaginationOption] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_derivative_orderbook_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_derivative_orderbook_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_derivative_orderbook( market_id=market_id, limit_cumulative_notional=limit_cumulative_notional, @@ -661,6 +785,15 @@ async def fetch_chain_trader_derivative_orders( market_id: str, subaccount_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_trader_derivative_orders_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_trader_derivative_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_trader_derivative_orders( market_id=market_id, subaccount_id=subaccount_id, @@ -671,6 +804,16 @@ async def fetch_chain_account_address_derivative_orders( market_id: str, account_address: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_chain_account_address_derivative_orders_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_account_address_derivative_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_account_address_derivative_orders( market_id=market_id, account_address=account_address, @@ -682,6 +825,16 @@ async def fetch_chain_derivative_orders_by_hashes( subaccount_id: str, order_hashes: List[str], ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_chain_derivative_orders_by_hashes_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_derivative_orders_by_hashes_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_derivative_orders_by_hashes( market_id=market_id, subaccount_id=subaccount_id, @@ -693,6 +846,16 @@ async def fetch_chain_trader_derivative_transient_orders( market_id: str, subaccount_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_chain_trader_derivative_transient_orders_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_trader_derivative_transient_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_trader_derivative_transient_orders( market_id=market_id, subaccount_id=subaccount_id, @@ -704,6 +867,13 @@ async def fetch_chain_derivative_markets( market_ids: Optional[List[str]] = None, with_mid_price_and_tob: Optional[bool] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_derivative_markets_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_derivative_markets_v2 instead", DeprecationWarning, stacklevel=2 + ) + return await self.chain_exchange_api.fetch_derivative_markets( status=status, market_ids=market_ids, @@ -714,23 +884,54 @@ async def fetch_chain_derivative_market( self, market_id: str, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_derivative_market_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_derivative_market_v2 instead", DeprecationWarning, stacklevel=2 + ) + return await self.chain_exchange_api.fetch_derivative_market( market_id=market_id, ) async def fetch_derivative_market_address(self, market_id: str) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_derivative_market_address(market_id=market_id) + return await self.chain_exchange_v2_api.fetch_derivative_market_address(market_id=market_id) async def fetch_subaccount_trade_nonce(self, subaccount_id: str) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_subaccount_trade_nonce(subaccount_id=subaccount_id) + return await self.chain_exchange_v2_api.fetch_subaccount_trade_nonce(subaccount_id=subaccount_id) async def fetch_chain_positions(self) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_positions_v2` instead + """ + warn("This method is deprecated. Use fetch_chain_positions_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_positions() async def fetch_chain_subaccount_positions(self, subaccount_id: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_subaccount_positions_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_subaccount_positions_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_subaccount_positions(subaccount_id=subaccount_id) async def fetch_chain_subaccount_position_in_market(self, subaccount_id: str, market_id: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_chain_subaccount_position_in_market_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_subaccount_position_in_market_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_subaccount_position_in_market( subaccount_id=subaccount_id, market_id=market_id, @@ -739,21 +940,59 @@ async def fetch_chain_subaccount_position_in_market(self, subaccount_id: str, ma async def fetch_chain_subaccount_effective_position_in_market( self, subaccount_id: str, market_id: str ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_chain_subaccount_effective_position_in_market_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_subaccount_effective_position_in_market_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_subaccount_effective_position_in_market( subaccount_id=subaccount_id, market_id=market_id, ) async def fetch_chain_perpetual_market_info(self, market_id: str) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_perpetual_market_info(market_id=market_id) + return await self.chain_exchange_v2_api.fetch_perpetual_market_info(market_id=market_id) async def fetch_chain_expiry_futures_market_info(self, market_id: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_chain_expiry_futures_market_info_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_expiry_futures_market_info_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_expiry_futures_market_info(market_id=market_id) async def fetch_chain_perpetual_market_funding(self, market_id: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_perpetual_market_funding_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_perpetual_market_funding_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_perpetual_market_funding(market_id=market_id) async def fetch_subaccount_order_metadata(self, subaccount_id: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_subaccount_order_metadata_v2` instead + """ + warn( + "This method is deprecated. Use fetch_subaccount_order_metadata_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_subaccount_order_metadata(subaccount_id=subaccount_id) async def fetch_trade_reward_points( @@ -761,7 +1000,7 @@ async def fetch_trade_reward_points( accounts: Optional[List[str]] = None, pending_pool_timestamp: Optional[int] = None, ) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_trade_reward_points( + return await self.chain_exchange_v2_api.fetch_trade_reward_points( accounts=accounts, pending_pool_timestamp=pending_pool_timestamp, ) @@ -771,43 +1010,64 @@ async def fetch_pending_trade_reward_points( accounts: Optional[List[str]] = None, pending_pool_timestamp: Optional[int] = None, ) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_pending_trade_reward_points( + return await self.chain_exchange_v2_api.fetch_pending_trade_reward_points( accounts=accounts, pending_pool_timestamp=pending_pool_timestamp, ) async def fetch_trade_reward_campaign(self) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_trade_reward_campaign() + return await self.chain_exchange_v2_api.fetch_trade_reward_campaign() async def fetch_fee_discount_account_info(self, account: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_fee_discount_account_info_v2` instead + """ + warn( + "This method is deprecated. Use fetch_fee_discount_account_info_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_fee_discount_account_info(account=account) async def fetch_fee_discount_schedule(self) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_fee_discount_schedule_v2` instead + """ + warn("This method is deprecated. Use fetch_fee_discount_schedule_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_fee_discount_schedule() async def fetch_balance_mismatches(self, dust_factor: int) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_balance_mismatches(dust_factor=dust_factor) + return await self.chain_exchange_v2_api.fetch_balance_mismatches(dust_factor=dust_factor) async def fetch_balance_with_balance_holds(self) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_balance_with_balance_holds() + return await self.chain_exchange_v2_api.fetch_balance_with_balance_holds() async def fetch_fee_discount_tier_statistics(self) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_fee_discount_tier_statistics() + return await self.chain_exchange_v2_api.fetch_fee_discount_tier_statistics() async def fetch_mito_vault_infos(self) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_mito_vault_infos() + return await self.chain_exchange_v2_api.fetch_mito_vault_infos() async def fetch_market_id_from_vault(self, vault_address: str) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_market_id_from_vault(vault_address=vault_address) + return await self.chain_exchange_v2_api.fetch_market_id_from_vault(vault_address=vault_address) async def fetch_historical_trade_records(self, market_id: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_historical_trade_records_v2` instead + """ + warn( + "This method is deprecated. Use fetch_historical_trade_records_v2 instead", DeprecationWarning, stacklevel=2 + ) + return await self.chain_exchange_api.fetch_historical_trade_records(market_id=market_id) async def fetch_is_opted_out_of_rewards(self, account: str) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_is_opted_out_of_rewards(account=account) + return await self.chain_exchange_v2_api.fetch_is_opted_out_of_rewards(account=account) async def fetch_opted_out_of_rewards_accounts(self) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_opted_out_of_rewards_accounts() + return await self.chain_exchange_v2_api.fetch_opted_out_of_rewards_accounts() async def fetch_market_volatility( self, @@ -817,6 +1077,11 @@ async def fetch_market_volatility( include_raw_history: Optional[bool] = None, include_metadata: Optional[bool] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_market_volatility_v2` instead + """ + warn("This method is deprecated. Use fetch_market_volatility_v2 instead", DeprecationWarning, stacklevel=2) + return await self.chain_exchange_api.fetch_market_volatility( market_id=market_id, trade_grouping_sec=trade_grouping_sec, @@ -826,6 +1091,15 @@ async def fetch_market_volatility( ) async def fetch_chain_binary_options_markets(self, status: Optional[str] = None) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_chain_binary_options_markets_v2` instead + """ + warn( + "This method is deprecated. Use fetch_chain_binary_options_markets_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_binary_options_markets(status=status) async def fetch_trader_derivative_conditional_orders( @@ -833,6 +1107,16 @@ async def fetch_trader_derivative_conditional_orders( subaccount_id: Optional[str] = None, market_id: Optional[str] = None, ) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. + Please use `fetch_trader_derivative_conditional_orders_v2` instead + """ + warn( + "This method is deprecated. Use fetch_trader_derivative_conditional_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return await self.chain_exchange_api.fetch_trader_derivative_conditional_orders( subaccount_id=subaccount_id, market_id=market_id, @@ -842,10 +1126,345 @@ async def fetch_market_atomic_execution_fee_multiplier( self, market_id: str, ) -> Dict[str, Any]: - return await self.chain_exchange_api.fetch_market_atomic_execution_fee_multiplier( + return await self.chain_exchange_v2_api.fetch_market_atomic_execution_fee_multiplier( + market_id=market_id, + ) + + async def fetch_active_stake_grant(self, grantee: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_active_stake_grant(grantee=grantee) + + async def fetch_grant_authorization( + self, + granter: str, + grantee: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_grant_authorization( + granter=granter, + grantee=grantee, + ) + + async def fetch_grant_authorizations(self, granter: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_grant_authorizations(granter=granter) + + async def fetch_l3_derivative_orderbook(self, market_id: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_l3_derivative_orderbook_v2` instead + """ + warn( + "This method is deprecated. Use fetch_l3_derivative_orderbook_v2 instead", DeprecationWarning, stacklevel=2 + ) + + return await self.chain_exchange_api.fetch_l3_derivative_orderbook(market_id=market_id) + + async def fetch_l3_spot_orderbook(self, market_id: str) -> Dict[str, Any]: + """ + This method is deprecated and will be removed soon. Please use `fetch_l3_spot_orderbook_v2` instead + """ + warn("This method is deprecated. Use fetch_l3_spot_orderbook_v2 instead", DeprecationWarning, stacklevel=2) + + return await self.chain_exchange_api.fetch_l3_spot_orderbook(market_id=market_id) + + async def fetch_aggregate_volume_v2(self, account: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_aggregate_volume(account=account) + + async def fetch_aggregate_volumes_v2( + self, + accounts: Optional[List[str]] = None, + market_ids: Optional[List[str]] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_aggregate_volumes( + accounts=accounts, + market_ids=market_ids, + ) + + async def fetch_aggregate_market_volume_v2( + self, + market_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_aggregate_market_volume( + market_id=market_id, + ) + + async def fetch_aggregate_market_volumes_v2( + self, + market_ids: Optional[List[str]] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_aggregate_market_volumes( + market_ids=market_ids, + ) + + async def fetch_chain_spot_markets_v2( + self, + status: Optional[str] = None, + market_ids: Optional[List[str]] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_spot_markets( + status=status, + market_ids=market_ids, + ) + + async def fetch_chain_spot_market_v2( + self, + market_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_spot_market( + market_id=market_id, + ) + + async def fetch_chain_full_spot_markets_v2( + self, + status: Optional[str] = None, + market_ids: Optional[List[str]] = None, + with_mid_price_and_tob: Optional[bool] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_full_spot_markets( + status=status, + market_ids=market_ids, + with_mid_price_and_tob=with_mid_price_and_tob, + ) + + async def fetch_chain_full_spot_market_v2( + self, + market_id: str, + with_mid_price_and_tob: Optional[bool] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_full_spot_market( + market_id=market_id, + with_mid_price_and_tob=with_mid_price_and_tob, + ) + + async def fetch_chain_spot_orderbook_v2( + self, + market_id: str, + order_side: Optional[str] = None, + limit_cumulative_notional: Optional[str] = None, + limit_cumulative_quantity: Optional[str] = None, + pagination: Optional[PaginationOption] = None, + ) -> Dict[str, Any]: + # Order side could be "Side_Unspecified", "Buy", "Sell" + return await self.chain_exchange_v2_api.fetch_spot_orderbook( + market_id=market_id, + order_side=order_side, + limit_cumulative_notional=limit_cumulative_notional, + limit_cumulative_quantity=limit_cumulative_quantity, + pagination=pagination, + ) + + async def fetch_chain_trader_spot_orders_v2( + self, + market_id: str, + subaccount_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_trader_spot_orders( + market_id=market_id, + subaccount_id=subaccount_id, + ) + + async def fetch_chain_account_address_spot_orders_v2( + self, + market_id: str, + account_address: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_account_address_spot_orders( + market_id=market_id, + account_address=account_address, + ) + + async def fetch_chain_spot_orders_by_hashes_v2( + self, + market_id: str, + subaccount_id: str, + order_hashes: List[str], + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_spot_orders_by_hashes( + market_id=market_id, + subaccount_id=subaccount_id, + order_hashes=order_hashes, + ) + + async def fetch_chain_subaccount_orders_v2( + self, + subaccount_id: str, + market_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_subaccount_orders( + subaccount_id=subaccount_id, + market_id=market_id, + ) + + async def fetch_chain_trader_spot_transient_orders_v2( + self, + market_id: str, + subaccount_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_trader_spot_transient_orders( + market_id=market_id, + subaccount_id=subaccount_id, + ) + + async def fetch_spot_mid_price_and_tob_v2( + self, + market_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_spot_mid_price_and_tob( + market_id=market_id, + ) + + async def fetch_derivative_mid_price_and_tob_v2( + self, + market_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_derivative_mid_price_and_tob( + market_id=market_id, + ) + + async def fetch_chain_derivative_orderbook_v2( + self, + market_id: str, + limit_cumulative_notional: Optional[str] = None, + pagination: Optional[PaginationOption] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_derivative_orderbook( market_id=market_id, + limit_cumulative_notional=limit_cumulative_notional, + pagination=pagination, ) + async def fetch_chain_trader_derivative_orders_v2( + self, + market_id: str, + subaccount_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_trader_derivative_orders( + market_id=market_id, + subaccount_id=subaccount_id, + ) + + async def fetch_chain_account_address_derivative_orders_v2( + self, + market_id: str, + account_address: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_account_address_derivative_orders( + market_id=market_id, + account_address=account_address, + ) + + async def fetch_chain_derivative_orders_by_hashes_v2( + self, + market_id: str, + subaccount_id: str, + order_hashes: List[str], + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_derivative_orders_by_hashes( + market_id=market_id, + subaccount_id=subaccount_id, + order_hashes=order_hashes, + ) + + async def fetch_chain_trader_derivative_transient_orders_v2( + self, + market_id: str, + subaccount_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_trader_derivative_transient_orders( + market_id=market_id, + subaccount_id=subaccount_id, + ) + + async def fetch_chain_derivative_markets_v2( + self, + status: Optional[str] = None, + market_ids: Optional[List[str]] = None, + with_mid_price_and_tob: Optional[bool] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_derivative_markets( + status=status, + market_ids=market_ids, + with_mid_price_and_tob=with_mid_price_and_tob, + ) + + async def fetch_chain_derivative_market_v2( + self, + market_id: str, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_derivative_market( + market_id=market_id, + ) + + async def fetch_chain_positions_v2(self) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_positions() + + async def fetch_chain_subaccount_positions_v2(self, subaccount_id: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_subaccount_positions(subaccount_id=subaccount_id) + + async def fetch_chain_subaccount_position_in_market_v2(self, subaccount_id: str, market_id: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_subaccount_position_in_market( + subaccount_id=subaccount_id, + market_id=market_id, + ) + + async def fetch_chain_subaccount_effective_position_in_market_v2( + self, subaccount_id: str, market_id: str + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_subaccount_effective_position_in_market( + subaccount_id=subaccount_id, + market_id=market_id, + ) + + async def fetch_chain_expiry_futures_market_info_v2(self, market_id: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_expiry_futures_market_info(market_id=market_id) + + async def fetch_chain_perpetual_market_funding_v2(self, market_id: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_perpetual_market_funding(market_id=market_id) + + async def fetch_subaccount_order_metadata_v2(self, subaccount_id: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_subaccount_order_metadata(subaccount_id=subaccount_id) + + async def fetch_fee_discount_account_info_v2(self, account: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_fee_discount_account_info(account=account) + + async def fetch_fee_discount_schedule_v2(self) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_fee_discount_schedule() + + async def fetch_historical_trade_records_v2(self, market_id: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_historical_trade_records(market_id=market_id) + + async def fetch_market_volatility_v2( + self, + market_id: str, + trade_grouping_sec: Optional[int] = None, + max_age: Optional[int] = None, + include_raw_history: Optional[bool] = None, + include_metadata: Optional[bool] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_market_volatility( + market_id=market_id, + trade_grouping_sec=trade_grouping_sec, + max_age=max_age, + include_raw_history=include_raw_history, + include_metadata=include_metadata, + ) + + async def fetch_chain_binary_options_markets_v2(self, status: Optional[str] = None) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_binary_options_markets(status=status) + + async def fetch_trader_derivative_conditional_orders_v2( + self, + subaccount_id: Optional[str] = None, + market_id: Optional[str] = None, + ) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_trader_derivative_conditional_orders( + subaccount_id=subaccount_id, + market_id=market_id, + ) + + async def fetch_l3_derivative_orderbook_v2(self, market_id: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_l3_derivative_orderbook(market_id=market_id) + + async def fetch_l3_spot_orderbook_v2(self, market_id: str) -> Dict[str, Any]: + return await self.chain_exchange_v2_api.fetch_l3_spot_orderbook(market_id=market_id) + # Injective Exchange client methods # Auction RPC @@ -1863,6 +2482,11 @@ async def listen_chain_stream_updates( positions_filter: Optional[chain_stream_query.PositionsFilter] = None, oracle_price_filter: Optional[chain_stream_query.OraclePriceFilter] = None, ): + """ + This method is deprecated and will be removed soon. Please use `listen_chain_stream_v2_updates` instead + """ + warn("This method is deprecated. Use listen_chain_stream_v2_updates instead", DeprecationWarning, stacklevel=2) + return await self.chain_stream_api.stream( callback=callback, on_end_callback=on_end_callback, @@ -1879,6 +2503,38 @@ async def listen_chain_stream_updates( oracle_price_filter=oracle_price_filter, ) + async def listen_chain_stream_v2_updates( + self, + callback: Callable, + on_end_callback: Optional[Callable] = None, + on_status_callback: Optional[Callable] = None, + bank_balances_filter: Optional[chain_stream_v2_query.BankBalancesFilter] = None, + subaccount_deposits_filter: Optional[chain_stream_v2_query.SubaccountDepositsFilter] = None, + spot_trades_filter: Optional[chain_stream_v2_query.TradesFilter] = None, + derivative_trades_filter: Optional[chain_stream_v2_query.TradesFilter] = None, + spot_orders_filter: Optional[chain_stream_v2_query.OrdersFilter] = None, + derivative_orders_filter: Optional[chain_stream_v2_query.OrdersFilter] = None, + spot_orderbooks_filter: Optional[chain_stream_v2_query.OrderbookFilter] = None, + derivative_orderbooks_filter: Optional[chain_stream_v2_query.OrderbookFilter] = None, + positions_filter: Optional[chain_stream_v2_query.PositionsFilter] = None, + oracle_price_filter: Optional[chain_stream_v2_query.OraclePriceFilter] = None, + ): + return await self.chain_stream_api.stream_v2( + callback=callback, + on_end_callback=on_end_callback, + on_status_callback=on_status_callback, + bank_balances_filter=bank_balances_filter, + subaccount_deposits_filter=subaccount_deposits_filter, + spot_trades_filter=spot_trades_filter, + derivative_trades_filter=derivative_trades_filter, + spot_orders_filter=spot_orders_filter, + derivative_orders_filter=derivative_orders_filter, + spot_orderbooks_filter=spot_orderbooks_filter, + derivative_orderbooks_filter=derivative_orderbooks_filter, + positions_filter=positions_filter, + oracle_price_filter=oracle_price_filter, + ) + # region IBC Transfer module async def fetch_denom_trace(self, hash: str) -> Dict[str, Any]: return await self.ibc_transfer_api.fetch_denom_trace(hash=hash) diff --git a/pyinjective/client/chain/grpc/chain_grpc_exchange_api.py b/pyinjective/client/chain/grpc/chain_grpc_exchange_api.py index 6ac66a67..fa6be3c6 100644 --- a/pyinjective/client/chain/grpc/chain_grpc_exchange_api.py +++ b/pyinjective/client/chain/grpc/chain_grpc_exchange_api.py @@ -575,5 +575,52 @@ async def fetch_market_atomic_execution_fee_multiplier( return response + async def fetch_active_stake_grant(self, grantee: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryActiveStakeGrantRequest(grantee=grantee) + response = await self._execute_call(call=self._stub.ActiveStakeGrant, request=request) + + return response + + async def fetch_grant_authorization( + self, + granter: str, + grantee: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryGrantAuthorizationRequest( + granter=granter, + grantee=grantee, + ) + response = await self._execute_call(call=self._stub.GrantAuthorization, request=request) + + return response + + async def fetch_grant_authorizations(self, granter: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryGrantAuthorizationsRequest(granter=granter) + response = await self._execute_call(call=self._stub.GrantAuthorizations, request=request) + + return response + + async def fetch_l3_derivative_orderbook( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryFullDerivativeOrderbookRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.L3DerivativeOrderBook, request=request) + + return response + + async def fetch_l3_spot_orderbook( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryFullSpotOrderbookRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.L3SpotOrderBook, request=request) + + return response + async def _execute_call(self, call: Callable, request) -> Dict[str, Any]: return await self._assistant.execute_call(call=call, request=request) diff --git a/pyinjective/client/chain/grpc/chain_grpc_exchange_v2_api.py b/pyinjective/client/chain/grpc/chain_grpc_exchange_v2_api.py new file mode 100644 index 00000000..d931701b --- /dev/null +++ b/pyinjective/client/chain/grpc/chain_grpc_exchange_v2_api.py @@ -0,0 +1,626 @@ +from typing import Any, Callable, Dict, List, Optional + +from grpc.aio import Channel + +from pyinjective.client.model.pagination import PaginationOption +from pyinjective.core.network import CookieAssistant +from pyinjective.proto.injective.exchange.v2 import ( + query_pb2 as exchange_query_pb, + query_pb2_grpc as exchange_query_grpc, +) +from pyinjective.utils.grpc_api_request_assistant import GrpcApiRequestAssistant + + +class ChainGrpcExchangeV2Api: + def __init__(self, channel: Channel, cookie_assistant: CookieAssistant): + self._stub = exchange_query_grpc.QueryStub(channel) + self._assistant = GrpcApiRequestAssistant(cookie_assistant=cookie_assistant) + + async def fetch_exchange_params(self) -> Dict[str, Any]: + request = exchange_query_pb.QueryExchangeParamsRequest() + response = await self._execute_call(call=self._stub.QueryExchangeParams, request=request) + + return response + + async def fetch_subaccount_deposits( + self, + subaccount_id: Optional[str] = None, + subaccount_trader: Optional[str] = None, + subaccount_nonce: Optional[int] = None, + ) -> Dict[str, Any]: + subaccount = None + if subaccount_trader is not None or subaccount_nonce is not None: + subaccount = exchange_query_pb.Subaccount( + trader=subaccount_trader, + subaccount_nonce=subaccount_nonce, + ) + + request = exchange_query_pb.QuerySubaccountDepositsRequest(subaccount_id=subaccount_id, subaccount=subaccount) + response = await self._execute_call(call=self._stub.SubaccountDeposits, request=request) + + return response + + async def fetch_subaccount_deposit( + self, + subaccount_id: str, + denom: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QuerySubaccountDepositRequest( + subaccount_id=subaccount_id, + denom=denom, + ) + response = await self._execute_call(call=self._stub.SubaccountDeposit, request=request) + + return response + + async def fetch_exchange_balances(self) -> Dict[str, Any]: + request = exchange_query_pb.QueryExchangeBalancesRequest() + response = await self._execute_call(call=self._stub.ExchangeBalances, request=request) + + return response + + async def fetch_aggregate_volume(self, account: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryAggregateVolumeRequest(account=account) + response = await self._execute_call(call=self._stub.AggregateVolume, request=request) + + return response + + async def fetch_aggregate_volumes( + self, + accounts: Optional[List[str]] = None, + market_ids: Optional[List[str]] = None, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryAggregateVolumesRequest(accounts=accounts, market_ids=market_ids) + response = await self._execute_call(call=self._stub.AggregateVolumes, request=request) + + return response + + async def fetch_aggregate_market_volume(self, market_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryAggregateMarketVolumeRequest(market_id=market_id) + response = await self._execute_call(call=self._stub.AggregateMarketVolume, request=request) + + return response + + async def fetch_aggregate_market_volumes(self, market_ids: Optional[List[str]] = None) -> Dict[str, Any]: + request = exchange_query_pb.QueryAggregateMarketVolumesRequest(market_ids=market_ids) + response = await self._execute_call(call=self._stub.AggregateMarketVolumes, request=request) + + return response + + async def fetch_denom_decimal(self, denom: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryDenomDecimalRequest(denom=denom) + response = await self._execute_call(call=self._stub.DenomDecimal, request=request) + + return response + + async def fetch_denom_decimals(self, denoms: Optional[List[str]] = None) -> Dict[str, Any]: + request = exchange_query_pb.QueryDenomDecimalsRequest(denoms=denoms) + response = await self._execute_call(call=self._stub.DenomDecimals, request=request) + + return response + + async def fetch_spot_markets( + self, + status: Optional[str] = None, + market_ids: Optional[List[str]] = None, + ) -> Dict[str, Any]: + request = exchange_query_pb.QuerySpotMarketsRequest( + status=status, + market_ids=market_ids, + ) + response = await self._execute_call(call=self._stub.SpotMarkets, request=request) + + return response + + async def fetch_spot_market(self, market_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QuerySpotMarketRequest(market_id=market_id) + response = await self._execute_call(call=self._stub.SpotMarket, request=request) + + return response + + async def fetch_full_spot_markets( + self, + status: Optional[str] = None, + market_ids: Optional[List[str]] = None, + with_mid_price_and_tob: Optional[bool] = None, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryFullSpotMarketsRequest( + status=status, + market_ids=market_ids, + with_mid_price_and_tob=with_mid_price_and_tob, + ) + response = await self._execute_call(call=self._stub.FullSpotMarkets, request=request) + + return response + + async def fetch_full_spot_market( + self, + market_id: str, + with_mid_price_and_tob: Optional[bool] = None, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryFullSpotMarketRequest( + market_id=market_id, + with_mid_price_and_tob=with_mid_price_and_tob, + ) + response = await self._execute_call(call=self._stub.FullSpotMarket, request=request) + + return response + + async def fetch_spot_orderbook( + self, + market_id: str, + order_side: Optional[str] = None, + limit_cumulative_notional: Optional[str] = None, + limit_cumulative_quantity: Optional[str] = None, + pagination: Optional[PaginationOption] = None, + ) -> Dict[str, Any]: + limit = None + if pagination is not None: + limit = pagination.limit + request = exchange_query_pb.QuerySpotOrderbookRequest( + market_id=market_id, + order_side=order_side, + limit=limit, + limit_cumulative_notional=limit_cumulative_notional, + limit_cumulative_quantity=limit_cumulative_quantity, + ) + response = await self._execute_call(call=self._stub.SpotOrderbook, request=request) + + return response + + async def fetch_trader_spot_orders( + self, + market_id: str, + subaccount_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryTraderSpotOrdersRequest( + market_id=market_id, + subaccount_id=subaccount_id, + ) + response = await self._execute_call(call=self._stub.TraderSpotOrders, request=request) + + return response + + async def fetch_account_address_spot_orders( + self, + market_id: str, + account_address: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryAccountAddressSpotOrdersRequest( + market_id=market_id, + account_address=account_address, + ) + response = await self._execute_call(call=self._stub.AccountAddressSpotOrders, request=request) + + return response + + async def fetch_spot_orders_by_hashes( + self, + market_id: str, + subaccount_id: str, + order_hashes: List[str], + ) -> Dict[str, Any]: + request = exchange_query_pb.QuerySpotOrdersByHashesRequest( + market_id=market_id, + subaccount_id=subaccount_id, + order_hashes=order_hashes, + ) + response = await self._execute_call(call=self._stub.SpotOrdersByHashes, request=request) + + return response + + async def fetch_subaccount_orders( + self, + subaccount_id: str, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QuerySubaccountOrdersRequest( + subaccount_id=subaccount_id, + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.SubaccountOrders, request=request) + + return response + + async def fetch_trader_spot_transient_orders( + self, + market_id: str, + subaccount_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryTraderSpotOrdersRequest( + market_id=market_id, + subaccount_id=subaccount_id, + ) + response = await self._execute_call(call=self._stub.TraderSpotTransientOrders, request=request) + + return response + + async def fetch_spot_mid_price_and_tob( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QuerySpotMidPriceAndTOBRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.SpotMidPriceAndTOB, request=request) + + return response + + async def fetch_derivative_mid_price_and_tob( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryDerivativeMidPriceAndTOBRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.DerivativeMidPriceAndTOB, request=request) + + return response + + async def fetch_derivative_orderbook( + self, + market_id: str, + limit_cumulative_notional: Optional[str] = None, + pagination: Optional[PaginationOption] = None, + ) -> Dict[str, Any]: + limit = None + if pagination is not None: + limit = pagination.limit + request = exchange_query_pb.QueryDerivativeOrderbookRequest( + market_id=market_id, + limit=limit, + limit_cumulative_notional=limit_cumulative_notional, + ) + response = await self._execute_call(call=self._stub.DerivativeOrderbook, request=request) + + return response + + async def fetch_trader_derivative_orders( + self, + market_id: str, + subaccount_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryTraderDerivativeOrdersRequest( + market_id=market_id, + subaccount_id=subaccount_id, + ) + response = await self._execute_call(call=self._stub.TraderDerivativeOrders, request=request) + + return response + + async def fetch_account_address_derivative_orders( + self, + market_id: str, + account_address: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryAccountAddressDerivativeOrdersRequest( + market_id=market_id, + account_address=account_address, + ) + response = await self._execute_call(call=self._stub.AccountAddressDerivativeOrders, request=request) + + return response + + async def fetch_derivative_orders_by_hashes( + self, + market_id: str, + subaccount_id: str, + order_hashes: List[str], + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryDerivativeOrdersByHashesRequest( + market_id=market_id, + subaccount_id=subaccount_id, + order_hashes=order_hashes, + ) + response = await self._execute_call(call=self._stub.DerivativeOrdersByHashes, request=request) + + return response + + async def fetch_trader_derivative_transient_orders( + self, + market_id: str, + subaccount_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryTraderDerivativeOrdersRequest( + market_id=market_id, + subaccount_id=subaccount_id, + ) + response = await self._execute_call(call=self._stub.TraderDerivativeTransientOrders, request=request) + + return response + + async def fetch_derivative_markets( + self, + status: Optional[str] = None, + market_ids: Optional[List[str]] = None, + with_mid_price_and_tob: Optional[bool] = None, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryDerivativeMarketsRequest( + status=status, + market_ids=market_ids, + with_mid_price_and_tob=with_mid_price_and_tob, + ) + response = await self._execute_call(call=self._stub.DerivativeMarkets, request=request) + + return response + + async def fetch_derivative_market( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryDerivativeMarketRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.DerivativeMarket, request=request) + + return response + + async def fetch_derivative_market_address( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryDerivativeMarketAddressRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.DerivativeMarketAddress, request=request) + + return response + + async def fetch_subaccount_trade_nonce(self, subaccount_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QuerySubaccountTradeNonceRequest(subaccount_id=subaccount_id) + response = await self._execute_call(call=self._stub.SubaccountTradeNonce, request=request) + + return response + + async def fetch_positions(self) -> Dict[str, Any]: + request = exchange_query_pb.QueryPositionsRequest() + response = await self._execute_call(call=self._stub.Positions, request=request) + + return response + + async def fetch_subaccount_positions(self, subaccount_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QuerySubaccountPositionsRequest(subaccount_id=subaccount_id) + response = await self._execute_call(call=self._stub.SubaccountPositions, request=request) + + return response + + async def fetch_subaccount_position_in_market(self, subaccount_id: str, market_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QuerySubaccountPositionInMarketRequest( + subaccount_id=subaccount_id, + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.SubaccountPositionInMarket, request=request) + + return response + + async def fetch_subaccount_effective_position_in_market(self, subaccount_id: str, market_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QuerySubaccountEffectivePositionInMarketRequest( + subaccount_id=subaccount_id, + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.SubaccountEffectivePositionInMarket, request=request) + + return response + + async def fetch_perpetual_market_info(self, market_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryPerpetualMarketInfoRequest(market_id=market_id) + response = await self._execute_call(call=self._stub.PerpetualMarketInfo, request=request) + + return response + + async def fetch_expiry_futures_market_info(self, market_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryExpiryFuturesMarketInfoRequest(market_id=market_id) + response = await self._execute_call(call=self._stub.ExpiryFuturesMarketInfo, request=request) + + return response + + async def fetch_perpetual_market_funding(self, market_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryPerpetualMarketFundingRequest(market_id=market_id) + response = await self._execute_call(call=self._stub.PerpetualMarketFunding, request=request) + + return response + + async def fetch_subaccount_order_metadata(self, subaccount_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QuerySubaccountOrderMetadataRequest(subaccount_id=subaccount_id) + response = await self._execute_call(call=self._stub.SubaccountOrderMetadata, request=request) + + return response + + async def fetch_trade_reward_points( + self, + accounts: Optional[List[str]] = None, + pending_pool_timestamp: Optional[int] = None, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryTradeRewardPointsRequest( + accounts=accounts, + pending_pool_timestamp=pending_pool_timestamp, + ) + response = await self._execute_call(call=self._stub.TradeRewardPoints, request=request) + + return response + + async def fetch_pending_trade_reward_points( + self, + accounts: Optional[List[str]] = None, + pending_pool_timestamp: Optional[int] = None, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryTradeRewardPointsRequest( + accounts=accounts, + pending_pool_timestamp=pending_pool_timestamp, + ) + response = await self._execute_call(call=self._stub.PendingTradeRewardPoints, request=request) + + return response + + async def fetch_trade_reward_campaign(self) -> Dict[str, Any]: + request = exchange_query_pb.QueryTradeRewardCampaignRequest() + response = await self._execute_call(call=self._stub.TradeRewardCampaign, request=request) + + return response + + async def fetch_fee_discount_account_info( + self, + account: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryFeeDiscountAccountInfoRequest(account=account) + response = await self._execute_call(call=self._stub.FeeDiscountAccountInfo, request=request) + + return response + + async def fetch_fee_discount_schedule(self) -> Dict[str, Any]: + request = exchange_query_pb.QueryFeeDiscountScheduleRequest() + response = await self._execute_call(call=self._stub.FeeDiscountSchedule, request=request) + + return response + + async def fetch_balance_mismatches(self, dust_factor: int) -> Dict[str, Any]: + request = exchange_query_pb.QueryBalanceMismatchesRequest(dust_factor=dust_factor) + response = await self._execute_call(call=self._stub.BalanceMismatches, request=request) + + return response + + async def fetch_balance_with_balance_holds(self) -> Dict[str, Any]: + request = exchange_query_pb.QueryBalanceWithBalanceHoldsRequest() + response = await self._execute_call(call=self._stub.BalanceWithBalanceHolds, request=request) + + return response + + async def fetch_fee_discount_tier_statistics(self) -> Dict[str, Any]: + request = exchange_query_pb.QueryFeeDiscountTierStatisticsRequest() + response = await self._execute_call(call=self._stub.FeeDiscountTierStatistics, request=request) + + return response + + async def fetch_mito_vault_infos(self) -> Dict[str, Any]: + request = exchange_query_pb.MitoVaultInfosRequest() + response = await self._execute_call(call=self._stub.MitoVaultInfos, request=request) + + return response + + async def fetch_market_id_from_vault(self, vault_address: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryMarketIDFromVaultRequest(vault_address=vault_address) + response = await self._execute_call(call=self._stub.QueryMarketIDFromVault, request=request) + + return response + + async def fetch_historical_trade_records(self, market_id: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryHistoricalTradeRecordsRequest(market_id=market_id) + response = await self._execute_call(call=self._stub.HistoricalTradeRecords, request=request) + + return response + + async def fetch_is_opted_out_of_rewards(self, account: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryIsOptedOutOfRewardsRequest(account=account) + response = await self._execute_call(call=self._stub.IsOptedOutOfRewards, request=request) + + return response + + async def fetch_opted_out_of_rewards_accounts(self) -> Dict[str, Any]: + request = exchange_query_pb.QueryOptedOutOfRewardsAccountsRequest() + response = await self._execute_call(call=self._stub.OptedOutOfRewardsAccounts, request=request) + + return response + + async def fetch_market_volatility( + self, + market_id: str, + trade_grouping_sec: Optional[int] = None, + max_age: Optional[int] = None, + include_raw_history: Optional[bool] = None, + include_metadata: Optional[bool] = None, + ) -> Dict[str, Any]: + trade_history_options = exchange_query_pb.TradeHistoryOptions() + if trade_grouping_sec is not None: + trade_history_options.trade_grouping_sec = trade_grouping_sec + if max_age is not None: + trade_history_options.max_age = max_age + if include_raw_history is not None: + trade_history_options.include_raw_history = include_raw_history + if include_metadata is not None: + trade_history_options.include_metadata = include_metadata + request = exchange_query_pb.QueryMarketVolatilityRequest( + market_id=market_id, trade_history_options=trade_history_options + ) + response = await self._execute_call(call=self._stub.MarketVolatility, request=request) + + return response + + async def fetch_binary_options_markets(self, status: Optional[str] = None) -> Dict[str, Any]: + request = exchange_query_pb.QueryBinaryMarketsRequest(status=status) + response = await self._execute_call(call=self._stub.BinaryOptionsMarkets, request=request) + + return response + + async def fetch_trader_derivative_conditional_orders( + self, + subaccount_id: Optional[str] = None, + market_id: Optional[str] = None, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryTraderDerivativeConditionalOrdersRequest( + subaccount_id=subaccount_id, + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.TraderDerivativeConditionalOrders, request=request) + + return response + + async def fetch_market_atomic_execution_fee_multiplier( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryMarketAtomicExecutionFeeMultiplierRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.MarketAtomicExecutionFeeMultiplier, request=request) + + return response + + async def fetch_active_stake_grant(self, grantee: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryActiveStakeGrantRequest(grantee=grantee) + response = await self._execute_call(call=self._stub.ActiveStakeGrant, request=request) + + return response + + async def fetch_grant_authorization( + self, + granter: str, + grantee: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryGrantAuthorizationRequest( + granter=granter, + grantee=grantee, + ) + response = await self._execute_call(call=self._stub.GrantAuthorization, request=request) + + return response + + async def fetch_grant_authorizations(self, granter: str) -> Dict[str, Any]: + request = exchange_query_pb.QueryGrantAuthorizationsRequest(granter=granter) + response = await self._execute_call(call=self._stub.GrantAuthorizations, request=request) + + return response + + async def fetch_l3_derivative_orderbook( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryFullDerivativeOrderbookRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.L3DerivativeOrderBook, request=request) + + return response + + async def fetch_l3_spot_orderbook( + self, + market_id: str, + ) -> Dict[str, Any]: + request = exchange_query_pb.QueryFullSpotOrderbookRequest( + market_id=market_id, + ) + response = await self._execute_call(call=self._stub.L3SpotOrderBook, request=request) + + return response + + async def _execute_call(self, call: Callable, request) -> Dict[str, Any]: + return await self._assistant.execute_call(call=call, request=request) diff --git a/pyinjective/client/chain/grpc_stream/chain_grpc_chain_stream.py b/pyinjective/client/chain/grpc_stream/chain_grpc_chain_stream.py index 019ecc31..4f86599a 100644 --- a/pyinjective/client/chain/grpc_stream/chain_grpc_chain_stream.py +++ b/pyinjective/client/chain/grpc_stream/chain_grpc_chain_stream.py @@ -4,12 +4,17 @@ from pyinjective.core.network import CookieAssistant from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_pb, query_pb2_grpc as chain_stream_grpc +from pyinjective.proto.injective.stream.v2 import ( + query_pb2 as chain_stream_v2_pb, + query_pb2_grpc as chain_stream_v2_grpc, +) from pyinjective.utils.grpc_api_stream_assistant import GrpcApiStreamAssistant class ChainGrpcChainStream: def __init__(self, channel: Channel, cookie_assistant: CookieAssistant): - self._stub = self._stub = chain_stream_grpc.StreamStub(channel) + self._stub = chain_stream_grpc.StreamStub(channel) + self._stub_v2 = chain_stream_v2_grpc.StreamStub(channel) self._assistant = GrpcApiStreamAssistant(cookie_assistant=cookie_assistant) async def stream( @@ -48,3 +53,40 @@ async def stream( on_end_callback=on_end_callback, on_status_callback=on_status_callback, ) + + async def stream_v2( + self, + callback: Callable, + on_end_callback: Optional[Callable] = None, + on_status_callback: Optional[Callable] = None, + bank_balances_filter: Optional[chain_stream_v2_pb.BankBalancesFilter] = None, + subaccount_deposits_filter: Optional[chain_stream_v2_pb.SubaccountDepositsFilter] = None, + spot_trades_filter: Optional[chain_stream_v2_pb.TradesFilter] = None, + derivative_trades_filter: Optional[chain_stream_v2_pb.TradesFilter] = None, + spot_orders_filter: Optional[chain_stream_v2_pb.OrdersFilter] = None, + derivative_orders_filter: Optional[chain_stream_v2_pb.OrdersFilter] = None, + spot_orderbooks_filter: Optional[chain_stream_v2_pb.OrderbookFilter] = None, + derivative_orderbooks_filter: Optional[chain_stream_v2_pb.OrderbookFilter] = None, + positions_filter: Optional[chain_stream_v2_pb.PositionsFilter] = None, + oracle_price_filter: Optional[chain_stream_v2_pb.OraclePriceFilter] = None, + ): + request = chain_stream_v2_pb.StreamRequest( + bank_balances_filter=bank_balances_filter, + subaccount_deposits_filter=subaccount_deposits_filter, + spot_trades_filter=spot_trades_filter, + derivative_trades_filter=derivative_trades_filter, + spot_orders_filter=spot_orders_filter, + derivative_orders_filter=derivative_orders_filter, + spot_orderbooks_filter=spot_orderbooks_filter, + derivative_orderbooks_filter=derivative_orderbooks_filter, + positions_filter=positions_filter, + oracle_price_filter=oracle_price_filter, + ) + + await self._assistant.listen_stream( + call=self._stub_v2.StreamV2, + request=request, + callback=callback, + on_end_callback=on_end_callback, + on_status_callback=on_status_callback, + ) diff --git a/pyinjective/composer.py b/pyinjective/composer.py index 9bdcaf5a..0c82d801 100644 --- a/pyinjective/composer.py +++ b/pyinjective/composer.py @@ -3,6 +3,7 @@ from decimal import Decimal from time import time from typing import Any, Dict, List, Optional +from warnings import warn from google.protobuf import any_pb2, json_format, timestamp_pb2 @@ -30,6 +31,12 @@ exchange_pb2 as injective_exchange_pb, tx_pb2 as injective_exchange_tx_pb, ) +from pyinjective.proto.injective.exchange.v2 import ( + authz_pb2 as injective_authz_v2_pb, + exchange_pb2 as injective_exchange_v2_pb, + order_pb2 as injective_order_v2_pb, + tx_pb2 as injective_exchange_tx_v2_pb, +) from pyinjective.proto.injective.insurance.v1beta1 import tx_pb2 as injective_insurance_tx_pb from pyinjective.proto.injective.oracle.v1beta1 import ( oracle_pb2 as injective_oracle_pb, @@ -41,65 +48,261 @@ tx_pb2 as injective_permissions_tx_pb, ) from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_query +from pyinjective.proto.injective.stream.v2 import query_pb2 as chain_stream_v2_query from pyinjective.proto.injective.tokenfactory.v1beta1 import tx_pb2 as token_factory_tx_pb from pyinjective.proto.injective.wasmx.v1 import tx_pb2 as wasmx_tx_pb from pyinjective.utils.denom import Denom +# fmt: off REQUEST_TO_RESPONSE_TYPE_MAP = { - "MsgCreateSpotLimitOrder": injective_exchange_tx_pb.MsgCreateSpotLimitOrderResponse, - "MsgCreateSpotMarketOrder": injective_exchange_tx_pb.MsgCreateSpotMarketOrderResponse, - "MsgCreateDerivativeLimitOrder": injective_exchange_tx_pb.MsgCreateDerivativeLimitOrderResponse, - "MsgCreateDerivativeMarketOrder": injective_exchange_tx_pb.MsgCreateDerivativeMarketOrderResponse, - "MsgCancelSpotOrder": injective_exchange_tx_pb.MsgCancelSpotOrderResponse, - "MsgCancelDerivativeOrder": injective_exchange_tx_pb.MsgCancelDerivativeOrderResponse, - "MsgBatchCancelSpotOrders": injective_exchange_tx_pb.MsgBatchCancelSpotOrdersResponse, - "MsgBatchCancelDerivativeOrders": injective_exchange_tx_pb.MsgBatchCancelDerivativeOrdersResponse, - "MsgBatchCreateSpotLimitOrders": injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrdersResponse, - "MsgBatchCreateDerivativeLimitOrders": injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrdersResponse, - "MsgBatchUpdateOrders": injective_exchange_tx_pb.MsgBatchUpdateOrdersResponse, - "MsgDeposit": injective_exchange_tx_pb.MsgDepositResponse, - "MsgWithdraw": injective_exchange_tx_pb.MsgWithdrawResponse, - "MsgSubaccountTransfer": injective_exchange_tx_pb.MsgSubaccountTransferResponse, - "MsgLiquidatePosition": injective_exchange_tx_pb.MsgLiquidatePositionResponse, - "MsgIncreasePositionMargin": injective_exchange_tx_pb.MsgIncreasePositionMarginResponse, - "MsgCreateBinaryOptionsLimitOrder": injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrderResponse, - "MsgCreateBinaryOptionsMarketOrder": injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrderResponse, - "MsgCancelBinaryOptionsOrder": injective_exchange_tx_pb.MsgCancelBinaryOptionsOrderResponse, - "MsgAdminUpdateBinaryOptionsMarket": injective_exchange_tx_pb.MsgAdminUpdateBinaryOptionsMarketResponse, - "MsgInstantBinaryOptionsMarketLaunch": injective_exchange_tx_pb.MsgInstantBinaryOptionsMarketLaunchResponse, + "MsgCreateSpotLimitOrder": + injective_exchange_tx_v2_pb.MsgCreateSpotLimitOrderResponse, + "MsgCreateSpotMarketOrder": + injective_exchange_tx_v2_pb.MsgCreateSpotMarketOrderResponse, + "MsgCreateDerivativeLimitOrder": + injective_exchange_tx_v2_pb.MsgCreateDerivativeLimitOrderResponse, + "MsgCreateDerivativeMarketOrder": + injective_exchange_tx_v2_pb.MsgCreateDerivativeMarketOrderResponse, + "MsgCancelSpotOrder": + injective_exchange_tx_v2_pb.MsgCancelSpotOrderResponse, + "MsgCancelDerivativeOrder": + injective_exchange_tx_v2_pb.MsgCancelDerivativeOrderResponse, + "MsgBatchCancelSpotOrders": + injective_exchange_tx_v2_pb.MsgBatchCancelSpotOrdersResponse, + "MsgBatchCancelDerivativeOrders": + injective_exchange_tx_v2_pb.MsgBatchCancelDerivativeOrdersResponse, + "MsgBatchCreateSpotLimitOrders": + injective_exchange_tx_v2_pb.MsgBatchCreateSpotLimitOrdersResponse, + "MsgBatchCreateDerivativeLimitOrders": + injective_exchange_tx_v2_pb.MsgBatchCreateDerivativeLimitOrdersResponse, + "MsgBatchUpdateOrders": + injective_exchange_tx_v2_pb.MsgBatchUpdateOrdersResponse, + "MsgDeposit": + injective_exchange_tx_v2_pb.MsgDepositResponse, + "MsgWithdraw": + injective_exchange_tx_v2_pb.MsgWithdrawResponse, + "MsgSubaccountTransfer": + injective_exchange_tx_v2_pb.MsgSubaccountTransferResponse, + "MsgLiquidatePosition": + injective_exchange_tx_v2_pb.MsgLiquidatePositionResponse, + "MsgIncreasePositionMargin": + injective_exchange_tx_v2_pb.MsgIncreasePositionMarginResponse, + "MsgCreateBinaryOptionsLimitOrder": + injective_exchange_tx_v2_pb.MsgCreateBinaryOptionsLimitOrderResponse, + "MsgCreateBinaryOptionsMarketOrder": + injective_exchange_tx_v2_pb.MsgCreateBinaryOptionsMarketOrderResponse, + "MsgCancelBinaryOptionsOrder": + injective_exchange_tx_v2_pb.MsgCancelBinaryOptionsOrderResponse, + "MsgAdminUpdateBinaryOptionsMarket": + injective_exchange_tx_v2_pb.MsgAdminUpdateBinaryOptionsMarketResponse, + "MsgInstantBinaryOptionsMarketLaunch": + injective_exchange_tx_v2_pb.MsgInstantBinaryOptionsMarketLaunchResponse, } GRPC_MESSAGE_TYPE_TO_CLASS_MAP = { - "/injective.exchange.v1beta1.MsgCreateSpotLimitOrder": injective_exchange_tx_pb.MsgCreateSpotLimitOrder, - "/injective.exchange.v1beta1.MsgCreateSpotMarketOrder": injective_exchange_tx_pb.MsgCreateSpotMarketOrder, - "/injective.exchange.v1beta1.MsgCreateDerivativeLimitOrder": injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder, - "/injective.exchange.v1beta1.MsgCreateDerivativeMarketOrder": injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder, # noqa: 121 - "/injective.exchange.v1beta1.MsgCancelSpotOrder": injective_exchange_tx_pb.MsgCancelSpotOrder, - "/injective.exchange.v1beta1.MsgCancelDerivativeOrder": injective_exchange_tx_pb.MsgCancelDerivativeOrder, - "/injective.exchange.v1beta1.MsgBatchCancelSpotOrders": injective_exchange_tx_pb.MsgBatchCancelSpotOrders, - "/injective.exchange.v1beta1.MsgBatchCancelDerivativeOrders": injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders, # noqa: 121 - "/injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrders": injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders, - "/injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrders": injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders, # noqa: 121 - "/injective.exchange.v1beta1.MsgBatchUpdateOrders": injective_exchange_tx_pb.MsgBatchUpdateOrders, - "/injective.exchange.v1beta1.MsgDeposit": injective_exchange_tx_pb.MsgDeposit, - "/injective.exchange.v1beta1.MsgWithdraw": injective_exchange_tx_pb.MsgWithdraw, - "/injective.exchange.v1beta1.MsgSubaccountTransfer": injective_exchange_tx_pb.MsgSubaccountTransfer, - "/injective.exchange.v1beta1.MsgLiquidatePosition": injective_exchange_tx_pb.MsgLiquidatePosition, - "/injective.exchange.v1beta1.MsgIncreasePositionMargin": injective_exchange_tx_pb.MsgIncreasePositionMargin, - "/injective.auction.v1beta1.MsgBid": injective_auction_tx_pb.MsgBid, - "/injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrder": injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrder, # noqa: 121 - "/injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrder": injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder, # noqa: 121 - "/injective.exchange.v1beta1.MsgCancelBinaryOptionsOrder": injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder, - "/injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarket": injective_exchange_tx_pb.MsgAdminUpdateBinaryOptionsMarket, # noqa: 121 - "/injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunch": injective_exchange_tx_pb.MsgInstantBinaryOptionsMarketLaunch, # noqa: 121 - "/cosmos.bank.v1beta1.MsgSend": cosmos_bank_tx_pb.MsgSend, - "/cosmos.authz.v1beta1.MsgGrant": cosmos_authz_tx_pb.MsgGrant, - "/cosmos.authz.v1beta1.MsgExec": cosmos_authz_tx_pb.MsgExec, - "/cosmos.authz.v1beta1.MsgRevoke": cosmos_authz_tx_pb.MsgRevoke, - "/injective.oracle.v1beta1.MsgRelayPriceFeedPrice": injective_oracle_tx_pb.MsgRelayPriceFeedPrice, - "/injective.oracle.v1beta1.MsgRelayProviderPrices": injective_oracle_tx_pb.MsgRelayProviderPrices, + "/injective.exchange.v1beta1.MsgCreateSpotLimitOrder": + injective_exchange_tx_pb.MsgCreateSpotLimitOrder, + "/injective.exchange.v1beta1.MsgCreateSpotMarketOrder": + injective_exchange_tx_pb.MsgCreateSpotMarketOrder, + "/injective.exchange.v1beta1.MsgCreateDerivativeLimitOrder": + injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder, + "/injective.exchange.v1beta1.MsgCreateDerivativeMarketOrder": + injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder, + "/injective.exchange.v1beta1.MsgCancelSpotOrder": + injective_exchange_tx_pb.MsgCancelSpotOrder, + "/injective.exchange.v1beta1.MsgCancelDerivativeOrder": + injective_exchange_tx_pb.MsgCancelDerivativeOrder, + "/injective.exchange.v1beta1.MsgBatchCancelSpotOrders": + injective_exchange_tx_pb.MsgBatchCancelSpotOrders, + "/injective.exchange.v1beta1.MsgBatchCancelDerivativeOrders": + injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders, + "/injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrders": + injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders, + "/injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrders": + injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders, # noqa: 121 + "/injective.exchange.v1beta1.MsgBatchUpdateOrders": + injective_exchange_tx_pb.MsgBatchUpdateOrders, + "/injective.exchange.v1beta1.MsgDeposit": + injective_exchange_tx_pb.MsgDeposit, + "/injective.exchange.v1beta1.MsgWithdraw": + injective_exchange_tx_pb.MsgWithdraw, + "/injective.exchange.v1beta1.MsgSubaccountTransfer": + injective_exchange_tx_pb.MsgSubaccountTransfer, + "/injective.exchange.v1beta1.MsgLiquidatePosition": + injective_exchange_tx_pb.MsgLiquidatePosition, + "/injective.exchange.v1beta1.MsgIncreasePositionMargin": + injective_exchange_tx_pb.MsgIncreasePositionMargin, + "/injective.auction.v1beta1.MsgBid": + injective_auction_tx_pb.MsgBid, + "/injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrder": + injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrder, + "/injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrder": + injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder, + "/injective.exchange.v1beta1.MsgCancelBinaryOptionsOrder": + injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder, + "/injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarket": + injective_exchange_tx_pb.MsgAdminUpdateBinaryOptionsMarket, + "/injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunch": + injective_exchange_tx_pb.MsgInstantBinaryOptionsMarketLaunch, + "/cosmos.bank.v1beta1.MsgSend": + cosmos_bank_tx_pb.MsgSend, + "/cosmos.authz.v1beta1.MsgGrant": + cosmos_authz_tx_pb.MsgGrant, + "/cosmos.authz.v1beta1.MsgExec": + cosmos_authz_tx_pb.MsgExec, + "/cosmos.authz.v1beta1.MsgRevoke": + cosmos_authz_tx_pb.MsgRevoke, + "/injective.oracle.v1beta1.MsgRelayPriceFeedPrice": + injective_oracle_tx_pb.MsgRelayPriceFeedPrice, + "/injective.oracle.v1beta1.MsgRelayProviderPrices": + injective_oracle_tx_pb.MsgRelayProviderPrices, + "/injective.exchange.v2.MsgCreateSpotLimitOrder": + injective_exchange_tx_v2_pb.MsgCreateSpotLimitOrder, + "/injective.exchange.v2.MsgCreateSpotMarketOrder": + injective_exchange_tx_v2_pb.MsgCreateSpotMarketOrder, + "/injective.exchange.v2.MsgCreateDerivativeLimitOrder": + injective_exchange_tx_v2_pb.MsgCreateDerivativeLimitOrder, + "/injective.exchange.v2.MsgCreateDerivativeMarketOrder": + injective_exchange_tx_v2_pb.MsgCreateDerivativeMarketOrder, + "/injective.exchange.v2.MsgCancelSpotOrder": + injective_exchange_tx_v2_pb.MsgCancelSpotOrder, + "/injective.exchange.v2.MsgCancelDerivativeOrder": + injective_exchange_tx_v2_pb.MsgCancelDerivativeOrder, + "/injective.exchange.v2.MsgBatchCancelSpotOrders": + injective_exchange_tx_v2_pb.MsgBatchCancelSpotOrders, + "/injective.exchange.v2.MsgBatchCancelDerivativeOrders": + injective_exchange_tx_v2_pb.MsgBatchCancelDerivativeOrders, + "/injective.exchange.v2.MsgBatchCreateSpotLimitOrders": + injective_exchange_tx_v2_pb.MsgBatchCreateSpotLimitOrders, + "/injective.exchange.v2.MsgBatchCreateDerivativeLimitOrders": + injective_exchange_tx_v2_pb.MsgBatchCreateDerivativeLimitOrders, + "/injective.exchange.v2.MsgBatchUpdateOrders": + injective_exchange_tx_v2_pb.MsgBatchUpdateOrders, + "/injective.exchange.v2.MsgDeposit": + injective_exchange_tx_v2_pb.MsgDeposit, + "/injective.exchange.v2.MsgWithdraw": + injective_exchange_tx_v2_pb.MsgWithdraw, + "/injective.exchange.v2.MsgSubaccountTransfer": + injective_exchange_tx_v2_pb.MsgSubaccountTransfer, + "/injective.exchange.v2.MsgLiquidatePosition": + injective_exchange_tx_v2_pb.MsgLiquidatePosition, + "/injective.exchange.v2.MsgIncreasePositionMargin": + injective_exchange_tx_v2_pb.MsgIncreasePositionMargin, + "/injective.exchange.v2.MsgCreateBinaryOptionsLimitOrder": + injective_exchange_tx_v2_pb.MsgCreateBinaryOptionsLimitOrder, + "/injective.exchange.v2.MsgCreateBinaryOptionsMarketOrder": + injective_exchange_tx_v2_pb.MsgCreateBinaryOptionsMarketOrder, + "/injective.exchange.v2.MsgCancelBinaryOptionsOrder": + injective_exchange_tx_v2_pb.MsgCancelBinaryOptionsOrder, + "/injective.exchange.v2.MsgAdminUpdateBinaryOptionsMarket": + injective_exchange_tx_v2_pb.MsgAdminUpdateBinaryOptionsMarket, + "/injective.exchange.v2.MsgInstantBinaryOptionsMarketLaunch": + injective_exchange_tx_v2_pb.MsgInstantBinaryOptionsMarketLaunch, +} + +GRPC_RESPONSE_TYPE_TO_CLASS_MAP = { + "/injective.exchange.v1beta1.MsgCreateSpotLimitOrderResponse": + injective_exchange_tx_pb.MsgCreateSpotLimitOrderResponse, + "/injective.exchange.v1beta1.MsgCreateSpotMarketOrderResponse": + injective_exchange_tx_pb.MsgCreateSpotMarketOrderResponse, + "/injective.exchange.v1beta1.MsgCreateDerivativeLimitOrderResponse": + injective_exchange_tx_pb.MsgCreateDerivativeLimitOrderResponse, + "/injective.exchange.v1beta1.MsgCreateDerivativeMarketOrderResponse": + injective_exchange_tx_pb.MsgCreateDerivativeMarketOrderResponse, + "/injective.exchange.v1beta1.MsgCancelSpotOrderResponse": + injective_exchange_tx_pb.MsgCancelSpotOrderResponse, + "/injective.exchange.v1beta1.MsgCancelDerivativeOrderResponse": + injective_exchange_tx_pb.MsgCancelDerivativeOrderResponse, + "/injective.exchange.v1beta1.MsgBatchCancelSpotOrdersResponse": + injective_exchange_tx_pb.MsgBatchCancelSpotOrdersResponse, + "/injective.exchange.v1beta1.MsgBatchCancelDerivativeOrdersResponse": + injective_exchange_tx_pb.MsgBatchCancelDerivativeOrdersResponse, + "/injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrdersResponse": + injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrdersResponse, + "/injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrdersResponse": + injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrdersResponse, + "/injective.exchange.v1beta1.MsgBatchUpdateOrdersResponse": + injective_exchange_tx_pb.MsgBatchUpdateOrdersResponse, + "/injective.exchange.v1beta1.MsgDepositResponse": + injective_exchange_tx_pb.MsgDepositResponse, + "/injective.exchange.v1beta1.MsgWithdrawResponse": + injective_exchange_tx_pb.MsgWithdrawResponse, + "/injective.exchange.v1beta1.MsgSubaccountTransferResponse": + injective_exchange_tx_pb.MsgSubaccountTransferResponse, + "/injective.exchange.v1beta1.MsgLiquidatePositionResponse": + injective_exchange_tx_pb.MsgLiquidatePositionResponse, + "/injective.exchange.v1beta1.MsgIncreasePositionMarginResponse": + injective_exchange_tx_pb.MsgIncreasePositionMarginResponse, + "/injective.auction.v1beta1.MsgBidResponse": + injective_auction_tx_pb.MsgBidResponse, + "/injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrderResponse": + injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrderResponse, + "/injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrderResponse": + injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrderResponse, + "/injective.exchange.v1beta1.MsgCancelBinaryOptionsOrderResponse": + injective_exchange_tx_pb.MsgCancelBinaryOptionsOrderResponse, + "/injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarketResponse": + injective_exchange_tx_pb.MsgAdminUpdateBinaryOptionsMarketResponse, + "/injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunchResponse": + injective_exchange_tx_pb.MsgInstantBinaryOptionsMarketLaunchResponse, + "/cosmos.bank.v1beta1.MsgSendResponse": + cosmos_bank_tx_pb.MsgSendResponse, + "/cosmos.authz.v1beta1.MsgGrantResponse": + cosmos_authz_tx_pb.MsgGrantResponse, + "/cosmos.authz.v1beta1.MsgExecResponse": + cosmos_authz_tx_pb.MsgExecResponse, + "/cosmos.authz.v1beta1.MsgRevokeResponse": + cosmos_authz_tx_pb.MsgRevokeResponse, + "/injective.oracle.v1beta1.MsgRelayPriceFeedPriceResponse": + injective_oracle_tx_pb.MsgRelayPriceFeedPriceResponse, + "/injective.oracle.v1beta1.MsgRelayProviderPricesResponse": + injective_oracle_tx_pb.MsgRelayProviderPrices, + "/injective.exchange.v2.MsgCreateSpotLimitOrderResponse": + injective_exchange_tx_v2_pb.MsgCreateSpotLimitOrderResponse, + "/injective.exchange.v2.MsgCreateSpotMarketOrderResponse": + injective_exchange_tx_v2_pb.MsgCreateSpotMarketOrderResponse, + "/injective.exchange.v2.MsgCreateDerivativeLimitOrderResponse": + injective_exchange_tx_v2_pb.MsgCreateDerivativeLimitOrderResponse, + "/injective.exchange.v2.MsgCreateDerivativeMarketOrderResponse": + injective_exchange_tx_v2_pb.MsgCreateDerivativeMarketOrderResponse, + "/injective.exchange.v2.MsgCancelSpotOrderResponse": + injective_exchange_tx_v2_pb.MsgCancelSpotOrderResponse, + "/injective.exchange.v2.MsgCancelDerivativeOrderResponse": + injective_exchange_tx_v2_pb.MsgCancelDerivativeOrderResponse, + "/injective.exchange.v2.MsgBatchCancelSpotOrdersResponse": + injective_exchange_tx_v2_pb.MsgBatchCancelSpotOrdersResponse, + "/injective.exchange.v2.MsgBatchCancelDerivativeOrdersResponse": + injective_exchange_tx_v2_pb.MsgBatchCancelDerivativeOrdersResponse, + "/injective.exchange.v2.MsgBatchCreateSpotLimitOrdersResponse": + injective_exchange_tx_v2_pb.MsgBatchCreateSpotLimitOrdersResponse, + "/injective.exchange.v2.MsgBatchCreateDerivativeLimitOrdersResponse": + injective_exchange_tx_v2_pb.MsgBatchCreateDerivativeLimitOrdersResponse, + "/injective.exchange.v2.MsgBatchUpdateOrdersResponse": + injective_exchange_tx_v2_pb.MsgBatchUpdateOrdersResponse, + "/injective.exchange.v2.MsgDepositResponse": + injective_exchange_tx_v2_pb.MsgDepositResponse, + "/injective.exchange.v2.MsgWithdrawResponse": + injective_exchange_tx_v2_pb.MsgWithdrawResponse, + "/injective.exchange.v2.MsgSubaccountTransferResponse": + injective_exchange_tx_v2_pb.MsgSubaccountTransferResponse, + "/injective.exchange.v2.MsgLiquidatePositionResponse": + injective_exchange_tx_v2_pb.MsgLiquidatePositionResponse, + "/injective.exchange.v2.MsgIncreasePositionMarginResponse": + injective_exchange_tx_v2_pb.MsgIncreasePositionMarginResponse, + "/injective.exchange.v2.MsgCreateBinaryOptionsLimitOrderResponse": + injective_exchange_tx_v2_pb.MsgCreateBinaryOptionsLimitOrderResponse, + "/injective.exchange.v2.MsgCreateBinaryOptionsMarketOrderResponse": + injective_exchange_tx_v2_pb.MsgCreateBinaryOptionsMarketOrderResponse, + "/injective.exchange.v2.MsgCancelBinaryOptionsOrderResponse": + injective_exchange_tx_v2_pb.MsgCancelBinaryOptionsOrderResponse, + "/injective.exchange.v2.MsgAdminUpdateBinaryOptionsMarketResponse": + injective_exchange_tx_v2_pb.MsgAdminUpdateBinaryOptionsMarketResponse, + "/injective.exchange.v2.MsgInstantBinaryOptionsMarketLaunchResponse": + injective_exchange_tx_v2_pb.MsgInstantBinaryOptionsMarketLaunchResponse, } +# fmt: on + class Composer: DEFAULT_PERMISSIONS_EVERYONE_ROLE = "EVERYONE" @@ -174,6 +377,11 @@ def order_data( is_buy: Optional[bool] = False, is_market_order: Optional[bool] = False, ) -> injective_exchange_tx_pb.OrderData: + """ + This method is deprecated and will be removed soon. Please use `create_v2_order_data` instead + """ + warn("This method is deprecated. Use create_v2_order_data instead", DeprecationWarning, stacklevel=2) + order_mask = self._order_mask(is_conditional=is_conditional, is_buy=is_buy, is_market_order=is_market_order) return injective_exchange_tx_pb.OrderData( @@ -191,6 +399,13 @@ def order_data_without_mask( order_hash: Optional[str] = None, cid: Optional[str] = None, ) -> injective_exchange_tx_pb.OrderData: + """ + This method is deprecated and will be removed soon. Please use `create_v2_order_data_without_mask` instead + """ + warn( + "This method is deprecated. Use create_v2_order_data_without_mask instead", DeprecationWarning, stacklevel=2 + ) + return injective_exchange_tx_pb.OrderData( market_id=market_id, subaccount_id=subaccount_id, @@ -199,6 +414,41 @@ def order_data_without_mask( cid=cid, ) + def create_v2_order_data( + self, + market_id: str, + subaccount_id: str, + is_buy: bool, + is_market_order: bool, + is_conditional: bool, + order_hash: Optional[str] = None, + cid: Optional[str] = None, + ) -> injective_exchange_tx_v2_pb.OrderData: + order_mask = self._order_mask(is_conditional=is_conditional, is_buy=is_buy, is_market_order=is_market_order) + + return injective_exchange_tx_v2_pb.OrderData( + market_id=market_id, + subaccount_id=subaccount_id, + order_hash=order_hash, + order_mask=order_mask, + cid=cid, + ) + + def create_v2_order_data_without_mask( + self, + market_id: str, + subaccount_id: str, + order_hash: Optional[str] = None, + cid: Optional[str] = None, + ) -> injective_exchange_tx_v2_pb.OrderData: + return injective_exchange_tx_v2_pb.OrderData( + market_id=market_id, + subaccount_id=subaccount_id, + order_hash=order_hash, + order_mask=1, + cid=cid, + ) + def spot_order( self, market_id: str, @@ -210,6 +460,11 @@ def spot_order( cid: Optional[str] = None, trigger_price: Optional[Decimal] = None, ) -> injective_exchange_pb.SpotOrder: + """ + This method is deprecated and will be removed soon. Please use `create_v2_spot_order` instead + """ + warn("This method is deprecated. Use create_v2_spot_order instead", DeprecationWarning, stacklevel=2) + market = self.spot_markets[market_id] chain_quantity = f"{market.quantity_to_chain_format(human_readable_value=quantity).normalize():f}" @@ -233,6 +488,36 @@ def spot_order( trigger_price=chain_trigger_price, ) + def create_v2_spot_order( + self, + market_id: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_order_v2_pb.SpotOrder: + trigger_price = trigger_price or Decimal(0) + chain_order_type = injective_order_v2_pb.OrderType.Value(order_type) + chain_quantity = f"{self.convert_value_to_chain_format(value=quantity).normalize():f}" + chain_price = f"{self.convert_value_to_chain_format(value=price).normalize():f}" + chain_trigger_price = f"{self.convert_value_to_chain_format(value=trigger_price).normalize():f}" + + return injective_order_v2_pb.SpotOrder( + market_id=market_id, + order_info=injective_order_v2_pb.OrderInfo( + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=chain_price, + quantity=chain_quantity, + cid=cid, + ), + order_type=chain_order_type, + trigger_price=chain_trigger_price, + ) + def calculate_margin( self, quantity: Decimal, price: Decimal, leverage: Decimal, is_reduce_only: bool = False ) -> Decimal: @@ -255,6 +540,11 @@ def derivative_order( cid: Optional[str] = None, trigger_price: Optional[Decimal] = None, ) -> injective_exchange_pb.DerivativeOrder: + """ + This method is deprecated and will be removed soon. Please use `create_v2_derivative_order` instead + """ + warn("This method is deprecated. Use create_v2_derivative_order instead", DeprecationWarning, stacklevel=2) + market = self.derivative_markets[market_id] chain_quantity = market.quantity_to_chain_format(human_readable_value=quantity) @@ -276,6 +566,32 @@ def derivative_order( chain_trigger_price=chain_trigger_price, ) + def create_v2_derivative_order( + self, + market_id: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + margin: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_order_v2_pb.DerivativeOrder: + trigger_price = trigger_price or Decimal(0) + + return self._basic_v2_derivative_order( + market_id=market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=price, + quantity=quantity, + margin=margin, + order_type=order_type, + cid=cid, + trigger_price=trigger_price, + ) + def binary_options_order( self, market_id: str, @@ -289,6 +605,11 @@ def binary_options_order( trigger_price: Optional[Decimal] = None, denom: Optional[Denom] = None, ) -> injective_exchange_pb.DerivativeOrder: + """ + This method is deprecated and will be removed soon. Please use `create_v2_binary_options_order` instead + """ + warn("This method is deprecated. Use create_v2_binary_options_order instead", DeprecationWarning, stacklevel=2) + market = self.binary_option_markets[market_id] chain_quantity = market.quantity_to_chain_format(human_readable_value=quantity, special_denom=denom) @@ -310,13 +631,39 @@ def binary_options_order( chain_trigger_price=chain_trigger_price, ) - def create_grant_authorization(self, grantee: str, amount: Decimal) -> injective_exchange_pb.GrantAuthorization: + def create_v2_binary_options_order( + self, + market_id: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + margin: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_order_v2_pb.DerivativeOrder: + trigger_price = trigger_price or Decimal(0) + + return self._basic_v2_derivative_order( + market_id=market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=price, + quantity=quantity, + margin=margin, + order_type=order_type, + cid=cid, + trigger_price=trigger_price, + ) + + def create_grant_authorization(self, grantee: str, amount: Decimal) -> injective_exchange_v2_pb.GrantAuthorization: chain_formatted_amount = int(amount * Decimal(f"1e{INJ_DECIMALS}")) - return injective_exchange_pb.GrantAuthorization(grantee=grantee, amount=str(chain_formatted_amount)) + return injective_exchange_v2_pb.GrantAuthorization(grantee=grantee, amount=str(chain_formatted_amount)) # region Auction module def MsgBid(self, sender: str, bid_amount: float, round: float): - be_amount = Decimal(str(bid_amount)) * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + be_amount = self.convert_value_to_chain_format(value=Decimal(str(bid_amount))) return injective_auction_tx_pb.MsgBid( sender=sender, @@ -365,6 +712,11 @@ def msg_execute_contract_compat(self, sender: str, contract: str, msg: str, fund # region Bank module def MsgSend(self, from_address: str, to_address: str, amount: float, denom: str): + """ + This method is deprecated and will be removed soon. Please use `msg_send` instead + """ + warn("This method is deprecated. Use msg_send instead", DeprecationWarning, stacklevel=2) + coin = self.create_coin_amount(amount=Decimal(str(amount)), token_name=denom) return cosmos_bank_tx_pb.MsgSend( @@ -373,10 +725,27 @@ def MsgSend(self, from_address: str, to_address: str, amount: float, denom: str) amount=[coin], ) + def msg_send(self, from_address: str, to_address: str, amount: int, denom: str): + chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + coin = self.coin(amount=int(chain_amount), denom=denom) + + return cosmos_bank_tx_pb.MsgSend( + from_address=from_address, + to_address=to_address, + amount=[coin], + ) + # endregion # region Chain Exchange module - def msg_deposit(self, sender: str, subaccount_id: str, amount: Decimal, denom: str): + def msg_deposit( + self, sender: str, subaccount_id: str, amount: Decimal, denom: str + ) -> injective_exchange_tx_pb.MsgDeposit: + """ + This method is deprecated and will be removed soon. Please use `msg_deposit_v2` instead + """ + warn("This method is deprecated. Use msg_deposit_v2 instead", DeprecationWarning, stacklevel=2) + coin = self.create_coin_amount(amount=amount, token_name=denom) return injective_exchange_tx_pb.MsgDeposit( @@ -385,7 +754,26 @@ def msg_deposit(self, sender: str, subaccount_id: str, amount: Decimal, denom: s amount=coin, ) - def msg_withdraw(self, sender: str, subaccount_id: str, amount: Decimal, denom: str): + def msg_deposit_v2( + self, sender: str, subaccount_id: str, amount: int, denom: str + ) -> injective_exchange_tx_v2_pb.MsgDeposit: + chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + coin = self.coin(amount=int(chain_amount), denom=denom) + + return injective_exchange_tx_v2_pb.MsgDeposit( + sender=sender, + subaccount_id=subaccount_id, + amount=coin, + ) + + def msg_withdraw( + self, sender: str, subaccount_id: str, amount: Decimal, denom: str + ) -> injective_exchange_tx_pb.MsgWithdraw: + """ + This method is deprecated and will be removed soon. Please use `msg_withdraw_v2` instead + """ + warn("This method is deprecated. Use msg_withdraw_v2 instead", DeprecationWarning, stacklevel=2) + be_amount = self.create_coin_amount(amount=amount, token_name=denom) return injective_exchange_tx_pb.MsgWithdraw( @@ -394,6 +782,22 @@ def msg_withdraw(self, sender: str, subaccount_id: str, amount: Decimal, denom: amount=be_amount, ) + def msg_withdraw_v2( + self, + sender: str, + subaccount_id: str, + amount: int, + denom: str, + ) -> injective_exchange_tx_v2_pb.MsgWithdraw: + chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + coin = self.coin(amount=int(chain_amount), denom=denom) + + return injective_exchange_tx_v2_pb.MsgWithdraw( + sender=sender, + subaccount_id=subaccount_id, + amount=coin, + ) + def msg_instant_spot_market_launch( self, sender: str, @@ -406,6 +810,13 @@ def msg_instant_spot_market_launch( base_decimals: int, quote_decimals: int, ) -> injective_exchange_tx_pb.MsgInstantSpotMarketLaunch: + """ + This method is deprecated and will be removed soon. Please use `msg_instant_spot_market_launch_v2` instead + """ + warn( + "This method is deprecated. Use msg_instant_spot_market_launch_v2 instead", DeprecationWarning, stacklevel=2 + ) + base_token = self.tokens[base_denom] quote_token = self.tokens[quote_denom] @@ -431,6 +842,36 @@ def msg_instant_spot_market_launch( quote_decimals=quote_decimals, ) + def msg_instant_spot_market_launch_v2( + self, + sender: str, + ticker: str, + base_denom: str, + quote_denom: str, + min_price_tick_size: Decimal, + min_quantity_tick_size: Decimal, + min_notional: Decimal, + base_decimals: int, + quote_decimals: int, + ) -> injective_exchange_tx_v2_pb.MsgInstantSpotMarketLaunch: + chain_min_price_tick_size = f"{self.convert_value_to_chain_format(value=min_price_tick_size).normalize():f}" + chain_min_quantity_tick_size = ( + f"{self.convert_value_to_chain_format(value=min_quantity_tick_size).normalize():f}" + ) + chain_min_notional = f"{self.convert_value_to_chain_format(value=min_notional).normalize():f}" + + return injective_exchange_tx_v2_pb.MsgInstantSpotMarketLaunch( + sender=sender, + ticker=ticker, + base_denom=base_denom, + quote_denom=quote_denom, + min_price_tick_size=chain_min_price_tick_size, + min_quantity_tick_size=chain_min_quantity_tick_size, + min_notional=chain_min_notional, + base_decimals=base_decimals, + quote_decimals=quote_decimals, + ) + def msg_instant_perpetual_market_launch( self, sender: str, @@ -448,6 +889,15 @@ def msg_instant_perpetual_market_launch( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_pb.MsgInstantPerpetualMarketLaunch: + """ + This method is deprecated and will be removed soon. Please use `msg_instant_perpetual_market_launch_v2` instead + """ + warn( + "This method is deprecated. Use msg_instant_perpetual_market_launch_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + quote_token = self.tokens[quote_denom] chain_min_price_tick_size = quote_token.chain_formatted_value(min_price_tick_size) * Decimal( @@ -479,6 +929,48 @@ def msg_instant_perpetual_market_launch( min_notional=f"{chain_min_notional.normalize():f}", ) + def msg_instant_perpetual_market_launch_v2( + self, + sender: str, + ticker: str, + quote_denom: str, + oracle_base: str, + oracle_quote: str, + oracle_scale_factor: int, + oracle_type: str, + maker_fee_rate: Decimal, + taker_fee_rate: Decimal, + initial_margin_ratio: Decimal, + maintenance_margin_ratio: Decimal, + min_price_tick_size: Decimal, + min_quantity_tick_size: Decimal, + min_notional: Decimal, + ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: + chain_min_price_tick_size = self.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_maker_fee_rate = self.convert_value_to_chain_format(value=maker_fee_rate) + chain_taker_fee_rate = self.convert_value_to_chain_format(value=taker_fee_rate) + chain_initial_margin_ratio = self.convert_value_to_chain_format(value=initial_margin_ratio) + chain_maintenance_margin_ratio = self.convert_value_to_chain_format(value=maintenance_margin_ratio) + chain_min_notional = self.convert_value_to_chain_format(value=min_notional) + + return injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch( + sender=sender, + ticker=ticker, + quote_denom=quote_denom, + oracle_base=oracle_base, + oracle_quote=oracle_quote, + oracle_scale_factor=oracle_scale_factor, + oracle_type=injective_oracle_pb.OracleType.Value(oracle_type), + maker_fee_rate=f"{chain_maker_fee_rate.normalize():f}", + taker_fee_rate=f"{chain_taker_fee_rate.normalize():f}", + initial_margin_ratio=f"{chain_initial_margin_ratio.normalize():f}", + maintenance_margin_ratio=f"{chain_maintenance_margin_ratio.normalize():f}", + min_price_tick_size=f"{chain_min_price_tick_size.normalize():f}", + min_quantity_tick_size=f"{chain_min_quantity_tick_size.normalize():f}", + min_notional=f"{chain_min_notional.normalize():f}", + ) + def msg_instant_expiry_futures_market_launch( self, sender: str, @@ -497,6 +989,16 @@ def msg_instant_expiry_futures_market_launch( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_pb.MsgInstantPerpetualMarketLaunch: + """ + This method is deprecated and will be removed soon. + Please use `msg_instant_expiry_futures_market_launch_v2` instead + """ + warn( + "This method is deprecated. Use msg_instant_expiry_futures_market_launch_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + quote_token = self.tokens[quote_denom] chain_min_price_tick_size = quote_token.chain_formatted_value(min_price_tick_size) * Decimal( @@ -529,6 +1031,50 @@ def msg_instant_expiry_futures_market_launch( min_notional=f"{chain_min_notional.normalize():f}", ) + def msg_instant_expiry_futures_market_launch_v2( + self, + sender: str, + ticker: str, + quote_denom: str, + oracle_base: str, + oracle_quote: str, + oracle_scale_factor: int, + oracle_type: str, + expiry: int, + maker_fee_rate: Decimal, + taker_fee_rate: Decimal, + initial_margin_ratio: Decimal, + maintenance_margin_ratio: Decimal, + min_price_tick_size: Decimal, + min_quantity_tick_size: Decimal, + min_notional: Decimal, + ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: + chain_min_price_tick_size = self.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_maker_fee_rate = self.convert_value_to_chain_format(value=maker_fee_rate) + chain_taker_fee_rate = self.convert_value_to_chain_format(value=taker_fee_rate) + chain_initial_margin_ratio = self.convert_value_to_chain_format(value=initial_margin_ratio) + chain_maintenance_margin_ratio = self.convert_value_to_chain_format(value=maintenance_margin_ratio) + chain_min_notional = self.convert_value_to_chain_format(value=min_notional) + + return injective_exchange_tx_v2_pb.MsgInstantExpiryFuturesMarketLaunch( + sender=sender, + ticker=ticker, + quote_denom=quote_denom, + oracle_base=oracle_base, + oracle_quote=oracle_quote, + oracle_scale_factor=oracle_scale_factor, + oracle_type=injective_oracle_pb.OracleType.Value(oracle_type), + expiry=expiry, + maker_fee_rate=f"{chain_maker_fee_rate.normalize():f}", + taker_fee_rate=f"{chain_taker_fee_rate.normalize():f}", + initial_margin_ratio=f"{chain_initial_margin_ratio.normalize():f}", + maintenance_margin_ratio=f"{chain_maintenance_margin_ratio.normalize():f}", + min_price_tick_size=f"{chain_min_price_tick_size.normalize():f}", + min_quantity_tick_size=f"{chain_min_quantity_tick_size.normalize():f}", + min_notional=f"{chain_min_notional.normalize():f}", + ) + def msg_create_spot_limit_order( self, market_id: str, @@ -541,6 +1087,11 @@ def msg_create_spot_limit_order( cid: Optional[str] = None, trigger_price: Optional[Decimal] = None, ) -> injective_exchange_tx_pb.MsgCreateSpotLimitOrder: + """ + This method is deprecated and will be removed soon. Please use `msg_create_spot_limit_order_v2` instead + """ + warn("This method is deprecated. Use msg_create_spot_limit_order_v2 instead", DeprecationWarning, stacklevel=2) + return injective_exchange_tx_pb.MsgCreateSpotLimitOrder( sender=sender, order=self.spot_order( @@ -555,12 +1106,7 @@ def msg_create_spot_limit_order( ), ) - def msg_batch_create_spot_limit_orders( - self, sender: str, orders: List[injective_exchange_pb.SpotOrder] - ) -> injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders: - return injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders(sender=sender, orders=orders) - - def msg_create_spot_market_order( + def msg_create_spot_limit_order_v2( self, market_id: str, sender: str, @@ -571,10 +1117,10 @@ def msg_create_spot_market_order( order_type: str, cid: Optional[str] = None, trigger_price: Optional[Decimal] = None, - ) -> injective_exchange_tx_pb.MsgCreateSpotMarketOrder: - return injective_exchange_tx_pb.MsgCreateSpotMarketOrder( + ) -> injective_exchange_tx_v2_pb.MsgCreateSpotLimitOrder: + return injective_exchange_tx_v2_pb.MsgCreateSpotLimitOrder( sender=sender, - order=self.spot_order( + order=self.create_v2_spot_order( market_id=market_id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -586,14 +1132,95 @@ def msg_create_spot_market_order( ), ) - def msg_cancel_spot_order( + def msg_batch_create_spot_limit_orders( + self, sender: str, orders: List[injective_exchange_pb.SpotOrder] + ) -> injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders: + """ + This method is deprecated and will be removed soon. Please use `msg_batch_create_spot_limit_orders_v2` instead + """ + warn( + "This method is deprecated. Use msg_batch_create_spot_limit_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + + return injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders(sender=sender, orders=orders) + + def msg_batch_create_spot_limit_orders_v2( + self, sender: str, orders: List[injective_order_v2_pb.SpotOrder] + ) -> injective_exchange_tx_v2_pb.MsgBatchCreateSpotLimitOrders: + return injective_exchange_tx_v2_pb.MsgBatchCreateSpotLimitOrders(sender=sender, orders=orders) + + def msg_create_spot_market_order( self, market_id: str, sender: str, subaccount_id: str, - order_hash: Optional[str] = None, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_exchange_tx_pb.MsgCreateSpotMarketOrder: + """ + This method is deprecated and will be removed soon. Please use `msg_create_spot_market_order_v2` instead + """ + warn("This method is deprecated. Use msg_create_spot_market_order_v2 instead", DeprecationWarning, stacklevel=2) + + return injective_exchange_tx_pb.MsgCreateSpotMarketOrder( + sender=sender, + order=self.spot_order( + market_id=market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=price, + quantity=quantity, + order_type=order_type, + cid=cid, + trigger_price=trigger_price, + ), + ) + + def msg_create_spot_market_order_v2( + self, + market_id: str, + sender: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_exchange_tx_v2_pb.MsgCreateSpotMarketOrder: + return injective_exchange_tx_v2_pb.MsgCreateSpotMarketOrder( + sender=sender, + order=self.create_v2_spot_order( + market_id=market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=price, + quantity=quantity, + order_type=order_type, + cid=cid, + trigger_price=trigger_price, + ), + ) + + def msg_cancel_spot_order( + self, + market_id: str, + sender: str, + subaccount_id: str, + order_hash: Optional[str] = None, cid: Optional[str] = None, ) -> injective_exchange_tx_pb.MsgCancelSpotOrder: + """ + This method is deprecated and will be removed soon. Please use `msg_cancel_spot_order_v2` instead + """ + warn("This method is deprecated. Use msg_cancel_spot_order_v2 instead", DeprecationWarning, stacklevel=2) + return injective_exchange_tx_pb.MsgCancelSpotOrder( sender=sender, market_id=market_id, @@ -602,11 +1229,37 @@ def msg_cancel_spot_order( cid=cid, ) + def msg_cancel_spot_order_v2( + self, + market_id: str, + sender: str, + subaccount_id: str, + order_hash: Optional[str] = None, + cid: Optional[str] = None, + ) -> injective_exchange_tx_v2_pb.MsgCancelSpotOrder: + return injective_exchange_tx_v2_pb.MsgCancelSpotOrder( + sender=sender, + market_id=market_id, + subaccount_id=subaccount_id, + order_hash=order_hash, + cid=cid, + ) + def msg_batch_cancel_spot_orders( self, sender: str, orders_data: List[injective_exchange_tx_pb.OrderData] ) -> injective_exchange_tx_pb.MsgBatchCancelSpotOrders: + """ + This method is deprecated and will be removed soon. Please use `msg_batch_cancel_spot_orders_v2` instead + """ + warn("This method is deprecated. Use msg_batch_cancel_spot_orders_v2 instead", DeprecationWarning, stacklevel=2) + return injective_exchange_tx_pb.MsgBatchCancelSpotOrders(sender=sender, data=orders_data) + def msg_batch_cancel_spot_orders_v2( + self, sender: str, orders_data: List[injective_exchange_tx_v2_pb.OrderData] + ) -> injective_exchange_tx_v2_pb.MsgBatchCancelSpotOrders: + return injective_exchange_tx_v2_pb.MsgBatchCancelSpotOrders(sender=sender, data=orders_data) + def msg_batch_update_orders( self, sender: str, @@ -621,6 +1274,11 @@ def msg_batch_update_orders( binary_options_market_ids_to_cancel_all: Optional[List[str]] = None, binary_options_orders_to_create: Optional[List[injective_exchange_pb.DerivativeOrder]] = None, ) -> injective_exchange_tx_pb.MsgBatchUpdateOrders: + """ + This method is deprecated and will be removed soon. Please use `msg_batch_update_orders_v2` instead + """ + warn("This method is deprecated. Use msg_batch_update_orders_v2 instead", DeprecationWarning, stacklevel=2) + return injective_exchange_tx_pb.MsgBatchUpdateOrders( sender=sender, subaccount_id=subaccount_id, @@ -635,6 +1293,34 @@ def msg_batch_update_orders( binary_options_orders_to_create=binary_options_orders_to_create, ) + def msg_batch_update_orders_v2( + self, + sender: str, + subaccount_id: Optional[str] = None, + spot_market_ids_to_cancel_all: Optional[List[str]] = None, + derivative_market_ids_to_cancel_all: Optional[List[str]] = None, + spot_orders_to_cancel: Optional[List[injective_exchange_tx_v2_pb.OrderData]] = None, + derivative_orders_to_cancel: Optional[List[injective_exchange_tx_v2_pb.OrderData]] = None, + spot_orders_to_create: Optional[List[injective_order_v2_pb.SpotOrder]] = None, + derivative_orders_to_create: Optional[List[injective_order_v2_pb.DerivativeOrder]] = None, + binary_options_orders_to_cancel: Optional[List[injective_exchange_tx_v2_pb.OrderData]] = None, + binary_options_market_ids_to_cancel_all: Optional[List[str]] = None, + binary_options_orders_to_create: Optional[List[injective_order_v2_pb.DerivativeOrder]] = None, + ) -> injective_exchange_tx_v2_pb.MsgBatchUpdateOrders: + return injective_exchange_tx_v2_pb.MsgBatchUpdateOrders( + sender=sender, + subaccount_id=subaccount_id, + spot_market_ids_to_cancel_all=spot_market_ids_to_cancel_all, + derivative_market_ids_to_cancel_all=derivative_market_ids_to_cancel_all, + spot_orders_to_cancel=spot_orders_to_cancel, + derivative_orders_to_cancel=derivative_orders_to_cancel, + spot_orders_to_create=spot_orders_to_create, + derivative_orders_to_create=derivative_orders_to_create, + binary_options_orders_to_cancel=binary_options_orders_to_cancel, + binary_options_market_ids_to_cancel_all=binary_options_market_ids_to_cancel_all, + binary_options_orders_to_create=binary_options_orders_to_create, + ) + def msg_privileged_execute_contract( self, sender: str, @@ -642,6 +1328,15 @@ def msg_privileged_execute_contract( data: str, funds: Optional[str] = None, ) -> injective_exchange_tx_pb.MsgPrivilegedExecuteContract: + """ + This method is deprecated and will be removed soon. Please use `msg_privileged_execute_contract_v2` instead + """ + warn( + "This method is deprecated. Use msg_privileged_execute_contract_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + # funds is a string of Coin strings, comma separated, e.g. 100000inj,20000000000usdt return injective_exchange_tx_pb.MsgPrivilegedExecuteContract( sender=sender, @@ -650,6 +1345,20 @@ def msg_privileged_execute_contract( funds=funds, ) + def msg_privileged_execute_contract_v2( + self, + sender: str, + contract_address: str, + data: str, + funds: Optional[str] = None, + ) -> injective_exchange_tx_v2_pb.MsgPrivilegedExecuteContract: + return injective_exchange_tx_v2_pb.MsgPrivilegedExecuteContract( + sender=sender, + contract_address=contract_address, + data=data, + funds=funds, + ) + def msg_create_derivative_limit_order( self, market_id: str, @@ -663,6 +1372,15 @@ def msg_create_derivative_limit_order( cid: Optional[str] = None, trigger_price: Optional[Decimal] = None, ) -> injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder: + """ + This method is deprecated and will be removed soon. Please use `msg_create_derivative_limit_order_v2` instead + """ + warn( + "This method is deprecated. Use msg_create_derivative_limit_order_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder( sender=sender, order=self.derivative_order( @@ -678,13 +1396,58 @@ def msg_create_derivative_limit_order( ), ) + def msg_create_derivative_limit_order_v2( + self, + market_id: str, + sender: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + margin: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_exchange_tx_v2_pb.MsgCreateDerivativeLimitOrder: + return injective_exchange_tx_v2_pb.MsgCreateDerivativeLimitOrder( + sender=sender, + order=self.create_v2_derivative_order( + market_id=market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=price, + quantity=quantity, + margin=margin, + order_type=order_type, + cid=cid, + trigger_price=trigger_price, + ), + ) + def msg_batch_create_derivative_limit_orders( self, sender: str, orders: List[injective_exchange_pb.DerivativeOrder], ) -> injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders: + """ + This method is deprecated and will be removed soon. + Please use `msg_batch_create_derivative_limit_orders_v2` instead + """ + warn( + "This method is deprecated. Use msg_batch_create_derivative_limit_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders(sender=sender, orders=orders) + def msg_batch_create_derivative_limit_orders_v2( + self, + sender: str, + orders: List[injective_order_v2_pb.DerivativeOrder], + ) -> injective_exchange_tx_v2_pb.MsgBatchCreateDerivativeLimitOrders: + return injective_exchange_tx_v2_pb.MsgBatchCreateDerivativeLimitOrders(sender=sender, orders=orders) + def msg_create_derivative_market_order( self, market_id: str, @@ -698,6 +1461,15 @@ def msg_create_derivative_market_order( cid: Optional[str] = None, trigger_price: Optional[Decimal] = None, ) -> injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder: + """ + This method is deprecated and will be removed soon. Please use `msg_create_derivative_market_order_v2` instead + """ + warn( + "This method is deprecated. Use msg_create_derivative_market_order_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder( sender=sender, order=self.derivative_order( @@ -713,6 +1485,34 @@ def msg_create_derivative_market_order( ), ) + def msg_create_derivative_market_order_v2( + self, + market_id: str, + sender: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + margin: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_exchange_tx_v2_pb.MsgCreateDerivativeMarketOrder: + return injective_exchange_tx_v2_pb.MsgCreateDerivativeMarketOrder( + sender=sender, + order=self.create_v2_derivative_order( + market_id=market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=price, + quantity=quantity, + margin=margin, + order_type=order_type, + cid=cid, + trigger_price=trigger_price, + ), + ) + def msg_cancel_derivative_order( self, market_id: str, @@ -724,6 +1524,11 @@ def msg_cancel_derivative_order( is_buy: Optional[bool] = False, is_market_order: Optional[bool] = False, ) -> injective_exchange_tx_pb.MsgCancelDerivativeOrder: + """ + This method is deprecated and will be removed soon. Please use `msg_cancel_derivative_order_v2` instead + """ + warn("This method is deprecated. Use msg_cancel_derivative_order_v2 instead", DeprecationWarning, stacklevel=2) + order_mask = self._order_mask(is_conditional=is_conditional, is_buy=is_buy, is_market_order=is_market_order) return injective_exchange_tx_pb.MsgCancelDerivativeOrder( @@ -735,11 +1540,48 @@ def msg_cancel_derivative_order( cid=cid, ) + def msg_cancel_derivative_order_v2( + self, + market_id: str, + sender: str, + subaccount_id: str, + is_buy: bool, + is_market_order: bool, + is_conditional: bool, + order_hash: Optional[str] = None, + cid: Optional[str] = None, + ) -> injective_exchange_tx_v2_pb.MsgCancelDerivativeOrder: + order_mask = self._order_mask(is_conditional=is_conditional, is_buy=is_buy, is_market_order=is_market_order) + + return injective_exchange_tx_v2_pb.MsgCancelDerivativeOrder( + sender=sender, + market_id=market_id, + subaccount_id=subaccount_id, + order_hash=order_hash, + order_mask=order_mask, + cid=cid, + ) + def msg_batch_cancel_derivative_orders( self, sender: str, orders_data: List[injective_exchange_tx_pb.OrderData] ) -> injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders: + """ + This method is deprecated and will be removed soon. + Please use `msg_batch_cancel_derivative_orders_v2` instead + """ + warn( + "This method is deprecated. Use msg_batch_cancel_derivative_orders_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders(sender=sender, data=orders_data) + def msg_batch_cancel_derivative_orders_v2( + self, sender: str, orders_data: List[injective_exchange_tx_v2_pb.OrderData] + ) -> injective_exchange_tx_v2_pb.MsgBatchCancelDerivativeOrders: + return injective_exchange_tx_v2_pb.MsgBatchCancelDerivativeOrders(sender=sender, data=orders_data) + def msg_instant_binary_options_market_launch( self, sender: str, @@ -758,6 +1600,16 @@ def msg_instant_binary_options_market_launch( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_pb.MsgInstantPerpetualMarketLaunch: + """ + This method is deprecated and will be removed soon. + Please use `msg_instant_binary_options_market_launch_v2` instead + """ + warn( + "This method is deprecated. Use msg_instant_binary_options_market_launch_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + quote_token = self.tokens[quote_denom] chain_min_price_tick_size = min_price_tick_size * Decimal( @@ -788,6 +1640,48 @@ def msg_instant_binary_options_market_launch( min_notional=f"{chain_min_notional.normalize():f}", ) + def msg_instant_binary_options_market_launch_v2( + self, + sender: str, + ticker: str, + oracle_symbol: str, + oracle_provider: str, + oracle_type: str, + oracle_scale_factor: int, + maker_fee_rate: Decimal, + taker_fee_rate: Decimal, + expiration_timestamp: int, + settlement_timestamp: int, + admin: str, + quote_denom: str, + min_price_tick_size: Decimal, + min_quantity_tick_size: Decimal, + min_notional: Decimal, + ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: + chain_min_price_tick_size = self.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_maker_fee_rate = self.convert_value_to_chain_format(value=maker_fee_rate) + chain_taker_fee_rate = self.convert_value_to_chain_format(value=taker_fee_rate) + chain_min_notional = self.convert_value_to_chain_format(value=min_notional) + + return injective_exchange_tx_v2_pb.MsgInstantBinaryOptionsMarketLaunch( + sender=sender, + ticker=ticker, + oracle_symbol=oracle_symbol, + oracle_provider=oracle_provider, + oracle_type=injective_oracle_pb.OracleType.Value(oracle_type), + oracle_scale_factor=oracle_scale_factor, + maker_fee_rate=f"{chain_maker_fee_rate.normalize():f}", + taker_fee_rate=f"{chain_taker_fee_rate.normalize():f}", + expiration_timestamp=expiration_timestamp, + settlement_timestamp=settlement_timestamp, + admin=admin, + quote_denom=quote_denom, + min_price_tick_size=f"{chain_min_price_tick_size.normalize():f}", + min_quantity_tick_size=f"{chain_min_quantity_tick_size.normalize():f}", + min_notional=f"{chain_min_notional.normalize():f}", + ) + def msg_create_binary_options_limit_order( self, market_id: str, @@ -802,6 +1696,16 @@ def msg_create_binary_options_limit_order( trigger_price: Optional[Decimal] = None, denom: Optional[Denom] = None, ) -> injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder: + """ + This method is deprecated and will be removed soon. + Please use `msg_create_binary_options_limit_order_v2` instead + """ + warn( + "This method is deprecated. Use msg_create_binary_options_limit_order_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder( sender=sender, order=self.binary_options_order( @@ -818,6 +1722,34 @@ def msg_create_binary_options_limit_order( ), ) + def msg_create_binary_options_limit_order_v2( + self, + market_id: str, + sender: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + margin: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_exchange_tx_v2_pb.MsgCreateDerivativeLimitOrder: + return injective_exchange_tx_v2_pb.MsgCreateDerivativeLimitOrder( + sender=sender, + order=self.create_v2_binary_options_order( + market_id=market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=price, + quantity=quantity, + margin=margin, + order_type=order_type, + cid=cid, + trigger_price=trigger_price, + ), + ) + def msg_create_binary_options_market_order( self, market_id: str, @@ -831,7 +1763,17 @@ def msg_create_binary_options_market_order( cid: Optional[str] = None, trigger_price: Optional[Decimal] = None, denom: Optional[Denom] = None, - ): + ) -> injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder: + """ + This method is deprecated and will be removed soon. + Please use `msg_create_binary_options_market_order_v2` instead + """ + warn( + "This method is deprecated. Use msg_create_binary_options_market_order_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + return injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder( sender=sender, order=self.binary_options_order( @@ -848,6 +1790,34 @@ def msg_create_binary_options_market_order( ), ) + def msg_create_binary_options_market_order_v2( + self, + market_id: str, + sender: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + margin: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_exchange_tx_v2_pb.MsgCreateBinaryOptionsMarketOrder: + return injective_exchange_tx_v2_pb.MsgCreateBinaryOptionsMarketOrder( + sender=sender, + order=self.create_v2_binary_options_order( + market_id=market_id, + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=price, + quantity=quantity, + margin=margin, + order_type=order_type, + cid=cid, + trigger_price=trigger_price, + ), + ) + def msg_cancel_binary_options_order( self, market_id: str, @@ -859,6 +1829,15 @@ def msg_cancel_binary_options_order( is_buy: Optional[bool] = False, is_market_order: Optional[bool] = False, ) -> injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder: + """ + This method is deprecated and will be removed soon. Please use `msg_cancel_binary_options_order_v2` instead + """ + warn( + "This method is deprecated. Use msg_cancel_binary_options_order_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + order_mask = self._order_mask(is_conditional=is_conditional, is_buy=is_buy, is_market_order=is_market_order) return injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder( @@ -870,6 +1849,28 @@ def msg_cancel_binary_options_order( cid=cid, ) + def msg_cancel_binary_options_order_v2( + self, + market_id: str, + sender: str, + subaccount_id: str, + is_buy: bool, + is_market_order: bool, + is_conditional: bool, + order_hash: Optional[str] = None, + cid: Optional[str] = None, + ) -> injective_exchange_tx_v2_pb.MsgCancelBinaryOptionsOrder: + order_mask = self._order_mask(is_conditional=is_conditional, is_buy=is_buy, is_market_order=is_market_order) + + return injective_exchange_tx_v2_pb.MsgCancelBinaryOptionsOrder( + sender=sender, + market_id=market_id, + subaccount_id=subaccount_id, + order_hash=order_hash, + order_mask=order_mask, + cid=cid, + ) + def msg_subaccount_transfer( self, sender: str, @@ -878,6 +1879,11 @@ def msg_subaccount_transfer( amount: Decimal, denom: str, ) -> injective_exchange_tx_pb.MsgSubaccountTransfer: + """ + This method is deprecated and will be removed soon. Please use `msg_subaccount_transfer_v2` instead + """ + warn("This method is deprecated. Use msg_subaccount_transfer_v2 instead", DeprecationWarning, stacklevel=2) + be_amount = self.create_coin_amount(amount=amount, token_name=denom) return injective_exchange_tx_pb.MsgSubaccountTransfer( @@ -887,6 +1893,24 @@ def msg_subaccount_transfer( amount=be_amount, ) + def msg_subaccount_transfer_v2( + self, + sender: str, + source_subaccount_id: str, + destination_subaccount_id: str, + amount: int, + denom: str, + ) -> injective_exchange_tx_v2_pb.MsgSubaccountTransfer: + chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + amount_coin = self.coin(amount=int(chain_amount), denom=denom) + + return injective_exchange_tx_v2_pb.MsgSubaccountTransfer( + sender=sender, + source_subaccount_id=source_subaccount_id, + destination_subaccount_id=destination_subaccount_id, + amount=amount_coin, + ) + def msg_external_transfer( self, sender: str, @@ -895,6 +1919,11 @@ def msg_external_transfer( amount: Decimal, denom: str, ) -> injective_exchange_tx_pb.MsgExternalTransfer: + """ + This method is deprecated and will be removed soon. Please use `msg_external_transfer_v2` instead + """ + warn("This method is deprecated. Use msg_external_transfer_v2 instead", DeprecationWarning, stacklevel=2) + coin = self.create_coin_amount(amount=amount, token_name=denom) return injective_exchange_tx_pb.MsgExternalTransfer( @@ -904,6 +1933,24 @@ def msg_external_transfer( amount=coin, ) + def msg_external_transfer_v2( + self, + sender: str, + source_subaccount_id: str, + destination_subaccount_id: str, + amount: int, + denom: str, + ) -> injective_exchange_tx_v2_pb.MsgExternalTransfer: + chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + coin = self.coin(amount=int(chain_amount), denom=denom) + + return injective_exchange_tx_v2_pb.MsgExternalTransfer( + sender=sender, + source_subaccount_id=source_subaccount_id, + destination_subaccount_id=destination_subaccount_id, + amount=coin, + ) + def msg_liquidate_position( self, sender: str, @@ -911,20 +1958,51 @@ def msg_liquidate_position( market_id: str, order: Optional[injective_exchange_pb.DerivativeOrder] = None, ) -> injective_exchange_tx_pb.MsgLiquidatePosition: + """ + This method is deprecated and will be removed soon. Please use `msg_liquidate_position_v2` instead + """ + warn("This method is deprecated. Use msg_liquidate_position_v2 instead", DeprecationWarning, stacklevel=2) + return injective_exchange_tx_pb.MsgLiquidatePosition( sender=sender, subaccount_id=subaccount_id, market_id=market_id, order=order ) + def msg_liquidate_position_v2( + self, + sender: str, + subaccount_id: str, + market_id: str, + order: Optional[injective_order_v2_pb.DerivativeOrder] = None, + ) -> injective_exchange_tx_v2_pb.MsgLiquidatePosition: + return injective_exchange_tx_v2_pb.MsgLiquidatePosition( + sender=sender, subaccount_id=subaccount_id, market_id=market_id, order=order + ) + def msg_emergency_settle_market( self, sender: str, subaccount_id: str, market_id: str, ) -> injective_exchange_tx_pb.MsgEmergencySettleMarket: + """ + This method is deprecated and will be removed soon. Please use `msg_emergency_settle_market_v2` instead + """ + warn("This method is deprecated. Use msg_emergency_settle_market_v2 instead", DeprecationWarning, stacklevel=2) + return injective_exchange_tx_pb.MsgEmergencySettleMarket( sender=sender, subaccount_id=subaccount_id, market_id=market_id ) + def msg_emergency_settle_market_v2( + self, + sender: str, + subaccount_id: str, + market_id: str, + ) -> injective_exchange_tx_v2_pb.MsgEmergencySettleMarket: + return injective_exchange_tx_v2_pb.MsgEmergencySettleMarket( + sender=sender, subaccount_id=subaccount_id, market_id=market_id + ) + def msg_increase_position_margin( self, sender: str, @@ -932,7 +2010,12 @@ def msg_increase_position_margin( destination_subaccount_id: str, market_id: str, amount: Decimal, - ): + ) -> injective_exchange_tx_pb.MsgIncreasePositionMargin: + """ + This method is deprecated and will be removed soon. Please use `msg_increase_position_margin_v2` instead + """ + warn("This method is deprecated. Use msg_increase_position_margin_v2 instead", DeprecationWarning, stacklevel=2) + market = self.derivative_markets[market_id] additional_margin = market.margin_to_chain_format(human_readable_value=amount) @@ -944,8 +2027,25 @@ def msg_increase_position_margin( amount=str(int(additional_margin)), ) - def msg_rewards_opt_out(self, sender: str) -> injective_exchange_tx_pb.MsgRewardsOptOut: - return injective_exchange_tx_pb.MsgRewardsOptOut(sender=sender) + def msg_increase_position_margin_v2( + self, + sender: str, + source_subaccount_id: str, + destination_subaccount_id: str, + market_id: str, + amount: Decimal, + ) -> injective_exchange_tx_v2_pb.MsgIncreasePositionMargin: + additional_margin = self.convert_value_to_chain_format(value=amount) + return injective_exchange_tx_v2_pb.MsgIncreasePositionMargin( + sender=sender, + source_subaccount_id=source_subaccount_id, + destination_subaccount_id=destination_subaccount_id, + market_id=market_id, + amount=f"{additional_margin.normalize():f}", + ) + + def msg_rewards_opt_out(self, sender: str) -> injective_exchange_tx_v2_pb.MsgRewardsOptOut: + return injective_exchange_tx_v2_pb.MsgRewardsOptOut(sender=sender) def msg_admin_update_binary_options_market( self, @@ -956,6 +2056,16 @@ def msg_admin_update_binary_options_market( expiration_timestamp: Optional[int] = None, settlement_timestamp: Optional[int] = None, ) -> injective_exchange_tx_pb.MsgAdminUpdateBinaryOptionsMarket: + """ + This method is deprecated and will be removed soon. + Please use `msg_admin_update_binary_options_market_v2` instead + """ + warn( + "This method is deprecated. Use msg_admin_update_binary_options_market_v2 instead", + DeprecationWarning, + stacklevel=2, + ) + market = self.binary_option_markets[market_id] if settlement_price is not None: @@ -973,6 +2083,29 @@ def msg_admin_update_binary_options_market( status=status, ) + def msg_admin_update_binary_options_market_v2( + self, + sender: str, + market_id: str, + status: str, + settlement_price: Optional[Decimal] = None, + expiration_timestamp: Optional[int] = None, + settlement_timestamp: Optional[int] = None, + ) -> injective_exchange_tx_v2_pb.MsgAdminUpdateBinaryOptionsMarket: + message = injective_exchange_tx_v2_pb.MsgAdminUpdateBinaryOptionsMarket( + sender=sender, + market_id=market_id, + expiration_timestamp=expiration_timestamp, + settlement_timestamp=settlement_timestamp, + status=status, + ) + + if settlement_price is not None: + chain_settlement_price = self.convert_value_to_chain_format(value=settlement_price) + message.settlement_price = f"{chain_settlement_price.normalize():f}" + + return message + def msg_decrease_position_margin( self, sender: str, @@ -981,6 +2114,11 @@ def msg_decrease_position_margin( market_id: str, amount: Decimal, ) -> injective_exchange_tx_pb.MsgDecreasePositionMargin: + """ + This method is deprecated and will be removed soon. Please use `msg_decrease_position_margin_v2` instead + """ + warn("This method is deprecated. Use msg_decrease_position_margin_v2 instead", DeprecationWarning, stacklevel=2) + market = self.derivative_markets[market_id] additional_margin = market.margin_to_chain_format(human_readable_value=amount) @@ -992,6 +2130,23 @@ def msg_decrease_position_margin( amount=str(int(additional_margin)), ) + def msg_decrease_position_margin_v2( + self, + sender: str, + source_subaccount_id: str, + destination_subaccount_id: str, + market_id: str, + amount: Decimal, + ) -> injective_exchange_tx_v2_pb.MsgDecreasePositionMargin: + additional_margin = self.convert_value_to_chain_format(value=amount) + return injective_exchange_tx_v2_pb.MsgDecreasePositionMargin( + sender=sender, + source_subaccount_id=source_subaccount_id, + destination_subaccount_id=destination_subaccount_id, + market_id=market_id, + amount=f"{additional_margin.normalize():f}", + ) + def msg_update_spot_market( self, admin: str, @@ -1001,6 +2156,11 @@ def msg_update_spot_market( new_min_quantity_tick_size: Decimal, new_min_notional: Decimal, ) -> injective_exchange_tx_pb.MsgUpdateSpotMarket: + """ + This method is deprecated and will be removed soon. Please use `msg_update_spot_market_v2` instead + """ + warn("This method is deprecated. Use msg_update_spot_market_v2 instead", DeprecationWarning, stacklevel=2) + market = self.spot_markets[market_id] chain_min_price_tick_size = new_min_price_tick_size * Decimal( @@ -1022,6 +2182,28 @@ def msg_update_spot_market( new_min_notional=f"{chain_min_notional.normalize():f}", ) + def msg_update_spot_market_v2( + self, + admin: str, + market_id: str, + new_ticker: str, + new_min_price_tick_size: Decimal, + new_min_quantity_tick_size: Decimal, + new_min_notional: Decimal, + ) -> injective_exchange_tx_v2_pb.MsgUpdateSpotMarket: + chain_min_price_tick_size = self.convert_value_to_chain_format(value=new_min_price_tick_size) + chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=new_min_quantity_tick_size) + chain_min_notional = self.convert_value_to_chain_format(value=new_min_notional) + + return injective_exchange_tx_v2_pb.MsgUpdateSpotMarket( + admin=admin, + market_id=market_id, + new_ticker=new_ticker, + new_min_price_tick_size=f"{chain_min_price_tick_size.normalize():f}", + new_min_quantity_tick_size=f"{chain_min_quantity_tick_size.normalize():f}", + new_min_notional=f"{chain_min_notional.normalize():f}", + ) + def msg_update_derivative_market( self, admin: str, @@ -1033,6 +2215,11 @@ def msg_update_derivative_market( new_initial_margin_ratio: Decimal, new_maintenance_margin_ratio: Decimal, ) -> injective_exchange_tx_pb.MsgUpdateDerivativeMarket: + """ + This method is deprecated and will be removed soon. Please use `msg_update_derivative_market_v2` instead + """ + warn("This method is deprecated. Use msg_update_derivative_market_v2 instead", DeprecationWarning, stacklevel=2) + market = self.derivative_markets[market_id] chain_min_price_tick_size = new_min_price_tick_size * Decimal( @@ -1056,16 +2243,44 @@ def msg_update_derivative_market( new_maintenance_margin_ratio=f"{chain_maintenance_margin_ratio.normalize():f}", ) + def msg_update_derivative_market_v2( + self, + admin: str, + market_id: str, + new_ticker: str, + new_min_price_tick_size: Decimal, + new_min_quantity_tick_size: Decimal, + new_min_notional: Decimal, + new_initial_margin_ratio: Decimal, + new_maintenance_margin_ratio: Decimal, + ) -> injective_exchange_tx_v2_pb.MsgUpdateDerivativeMarket: + chain_min_price_tick_size = self.convert_value_to_chain_format(value=new_min_price_tick_size) + chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=new_min_quantity_tick_size) + chain_min_notional = self.convert_value_to_chain_format(value=new_min_notional) + chain_initial_margin_ratio = self.convert_value_to_chain_format(value=new_initial_margin_ratio) + chain_maintenance_margin_ratio = self.convert_value_to_chain_format(value=new_maintenance_margin_ratio) + + return injective_exchange_tx_v2_pb.MsgUpdateDerivativeMarket( + admin=admin, + market_id=market_id, + new_ticker=new_ticker, + new_min_price_tick_size=f"{chain_min_price_tick_size.normalize():f}", + new_min_quantity_tick_size=f"{chain_min_quantity_tick_size.normalize():f}", + new_min_notional=f"{chain_min_notional.normalize():f}", + new_initial_margin_ratio=f"{chain_initial_margin_ratio.normalize():f}", + new_maintenance_margin_ratio=f"{chain_maintenance_margin_ratio.normalize():f}", + ) + def msg_authorize_stake_grants( - self, sender: str, grants: List[injective_exchange_pb.GrantAuthorization] - ) -> injective_exchange_tx_pb.MsgAuthorizeStakeGrants: - return injective_exchange_tx_pb.MsgAuthorizeStakeGrants( + self, sender: str, grants: List[injective_exchange_v2_pb.GrantAuthorization] + ) -> injective_exchange_tx_v2_pb.MsgAuthorizeStakeGrants: + return injective_exchange_tx_v2_pb.MsgAuthorizeStakeGrants( sender=sender, grants=grants, ) - def msg_activate_stake_grant(self, sender: str, granter: str) -> injective_exchange_tx_pb.MsgActivateStakeGrant: - return injective_exchange_tx_pb.MsgActivateStakeGrant( + def msg_activate_stake_grant(self, sender: str, granter: str) -> injective_exchange_tx_v2_pb.MsgActivateStakeGrant: + return injective_exchange_tx_v2_pb.MsgActivateStakeGrant( sender=sender, granter=granter, ) @@ -1084,6 +2299,11 @@ def MsgCreateInsuranceFund( expiry: int, initial_deposit: int, ): + """ + This method is deprecated and will be removed soon. Please use `msg_create_insurance_fund` instead + """ + warn("This method is deprecated. Use msg_create_insurance_fund instead", DeprecationWarning, stacklevel=2) + token = self.tokens[quote_denom] deposit = self.create_coin_amount(Decimal(str(initial_deposit)), quote_denom) @@ -1098,6 +2318,31 @@ def MsgCreateInsuranceFund( initial_deposit=deposit, ) + def msg_create_insurance_fund( + self, + sender: str, + ticker: str, + quote_denom: str, + oracle_base: str, + oracle_quote: str, + oracle_type: str, + expiry: int, + initial_deposit: int, + ) -> injective_insurance_tx_pb.MsgCreateInsuranceFund: + chain_initial_deposit = self.convert_value_to_chain_format(value=Decimal(str(initial_deposit))) + deposit = self.coin(amount=int(chain_initial_deposit), denom=quote_denom) + + return injective_insurance_tx_pb.MsgCreateInsuranceFund( + sender=sender, + ticker=ticker, + quote_denom=quote_denom, + oracle_base=oracle_base, + oracle_quote=oracle_quote, + oracle_type=injective_oracle_pb.OracleType.Value(oracle_type), + expiry=expiry, + initial_deposit=deposit, + ) + def MsgUnderwrite( self, sender: str, @@ -1105,6 +2350,11 @@ def MsgUnderwrite( quote_denom: str, amount: int, ): + """ + This method is deprecated and will be removed soon. Please use `msg_underwrite` instead + """ + warn("This method is deprecated. Use msg_underwrite instead", DeprecationWarning, stacklevel=2) + be_amount = self.create_coin_amount(amount=Decimal(str(amount)), token_name=quote_denom) return injective_insurance_tx_pb.MsgUnderwrite( @@ -1113,6 +2363,22 @@ def MsgUnderwrite( deposit=be_amount, ) + def msg_underwrite( + self, + sender: str, + market_id: str, + quote_denom: str, + amount: int, + ): + chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + coin = self.coin(amount=int(chain_amount), denom=quote_denom) + + return injective_insurance_tx_pb.MsgUnderwrite( + sender=sender, + market_id=market_id, + deposit=coin, + ) + def MsgRequestRedemption( self, sender: str, @@ -1120,10 +2386,11 @@ def MsgRequestRedemption( share_denom: str, amount: int, ): + chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) return injective_insurance_tx_pb.MsgRequestRedemption( sender=sender, market_id=market_id, - amount=self.coin(amount=amount, denom=share_denom), + amount=self.coin(amount=int(chain_amount), denom=share_denom), ) # endregion @@ -1148,6 +2415,11 @@ def MsgRelayPriceFeedPrice(self, sender: list, base: list, quote: list, price: l # region Peggy module def MsgSendToEth(self, denom: str, sender: str, eth_dest: str, amount: float, bridge_fee: float): + """ + This method is deprecated and will be removed soon. Please use `msg_send_to_eth` instead + """ + warn("This method is deprecated. Use msg_send_to_eth instead", DeprecationWarning, stacklevel=2) + be_amount = self.create_coin_amount(amount=Decimal(str(amount)), token_name=denom) be_bridge_fee = self.create_coin_amount(amount=Decimal(str(bridge_fee)), token_name=denom) @@ -1158,11 +2430,24 @@ def MsgSendToEth(self, denom: str, sender: str, eth_dest: str, amount: float, br bridge_fee=be_bridge_fee, ) + def msg_send_to_eth(self, denom: str, sender: str, eth_dest: str, amount: int, bridge_fee: int): + chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_bridge_fee = self.convert_value_to_chain_format(value=Decimal(str(bridge_fee))) + amount_coin = self.coin(amount=int(chain_amount), denom=denom) + bridge_fee_coin = self.coin(amount=int(chain_bridge_fee), denom=denom) + + return injective_peggy_tx_pb.MsgSendToEth( + sender=sender, + eth_dest=eth_dest, + amount=amount_coin, + bridge_fee=bridge_fee_coin, + ) + # endregion # region Staking module def MsgDelegate(self, delegator_address: str, validator_address: str, amount: float): - be_amount = Decimal(str(amount)) * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + be_amount = self.convert_value_to_chain_format(Decimal(str(amount))) return cosmos_staking_tx_pb.MsgDelegate( delegator_address=delegator_address, @@ -1286,6 +2571,11 @@ def MsgGrantTyped( subaccount_id: str, **kwargs, ): + """ + This method is deprecated and will be removed soon. Please use `fetch_l3_spot_orderbook_v2` instead + """ + warn("This method is deprecated. Use create_typed_msg_grant instead", DeprecationWarning, stacklevel=2) + if self._ofac_checker.is_blacklisted(granter): raise Exception(f"Address {granter} is in the OFAC list") @@ -1347,6 +2637,72 @@ def MsgGrantTyped( return cosmos_authz_tx_pb.MsgGrant(granter=granter, grantee=grantee, grant=grant) + def create_typed_msg_grant( + self, + granter: str, + grantee: str, + msg_type: str, + expiration_time_seconds: int, + subaccount_id: str, + market_ids: Optional[List[str]] = None, + spot_markets: Optional[List[str]] = None, + derivative_markets: Optional[List[str]] = None, + ) -> cosmos_authz_tx_pb.MsgGrant: + if self._ofac_checker.is_blacklisted(granter): + raise Exception(f"Address {granter} is in the OFAC list") + + market_ids = market_ids or [] + auth = None + if msg_type == "CreateSpotLimitOrderAuthz": + auth = injective_authz_v2_pb.CreateSpotLimitOrderAuthz(subaccount_id=subaccount_id, market_ids=market_ids) + elif msg_type == "CreateSpotMarketOrderAuthz": + auth = injective_authz_v2_pb.CreateSpotMarketOrderAuthz(subaccount_id=subaccount_id, market_ids=market_ids) + elif msg_type == "BatchCreateSpotLimitOrdersAuthz": + auth = injective_authz_v2_pb.BatchCreateSpotLimitOrdersAuthz( + subaccount_id=subaccount_id, market_ids=market_ids + ) + elif msg_type == "CancelSpotOrderAuthz": + auth = injective_authz_v2_pb.CancelSpotOrderAuthz(subaccount_id=subaccount_id, market_ids=market_ids) + elif msg_type == "BatchCancelSpotOrdersAuthz": + auth = injective_authz_v2_pb.BatchCancelSpotOrdersAuthz(subaccount_id=subaccount_id, market_ids=market_ids) + elif msg_type == "CreateDerivativeLimitOrderAuthz": + auth = injective_authz_v2_pb.CreateDerivativeLimitOrderAuthz( + subaccount_id=subaccount_id, market_ids=market_ids + ) + elif msg_type == "CreateDerivativeMarketOrderAuthz": + auth = injective_authz_v2_pb.CreateDerivativeMarketOrderAuthz( + subaccount_id=subaccount_id, market_ids=market_ids + ) + elif msg_type == "BatchCreateDerivativeLimitOrdersAuthz": + auth = injective_authz_v2_pb.BatchCreateDerivativeLimitOrdersAuthz( + subaccount_id=subaccount_id, market_ids=market_ids + ) + elif msg_type == "CancelDerivativeOrderAuthz": + auth = injective_authz_v2_pb.CancelDerivativeOrderAuthz(subaccount_id=subaccount_id, market_ids=market_ids) + elif msg_type == "BatchCancelDerivativeOrdersAuthz": + auth = injective_authz_v2_pb.BatchCancelDerivativeOrdersAuthz( + subaccount_id=subaccount_id, market_ids=market_ids + ) + elif msg_type == "BatchUpdateOrdersAuthz": + spot_markets_ids = spot_markets or [] + derivative_markets_ids = derivative_markets or [] + + auth = injective_authz_v2_pb.BatchUpdateOrdersAuthz( + subaccount_id=subaccount_id, + spot_markets=spot_markets_ids, + derivative_markets=derivative_markets_ids, + ) + + any_auth = any_pb2.Any() + any_auth.Pack(auth, type_url_prefix="") + + grant = cosmos_authz_pb.Grant( + authorization=any_auth, + expiration=timestamp_pb2.Timestamp(seconds=(int(time()) + expiration_time_seconds)), + ) + + return cosmos_authz_tx_pb.MsgGrant(granter=granter, grantee=grantee, grant=grant) + def MsgVote( self, proposal_id: str, @@ -1355,9 +2711,21 @@ def MsgVote( ): return cosmos_gov_tx_pb.MsgVote(proposal_id=proposal_id, voter=voter, option=option) + # ------------------------------------------------ + # region Chain stream module's messages + def chain_stream_bank_balances_filter( self, accounts: Optional[List[str]] = None ) -> chain_stream_query.BankBalancesFilter: + """ + This method is deprecated and will be removed soon. Please use `chain_stream_bank_balances_v2_filter` instead + """ + warn( + "This method is deprecated. Use chain_stream_bank_balances_v2_filter instead", + DeprecationWarning, + stacklevel=2, + ) + accounts = accounts or ["*"] return chain_stream_query.BankBalancesFilter(accounts=accounts) @@ -1365,6 +2733,16 @@ def chain_stream_subaccount_deposits_filter( self, subaccount_ids: Optional[List[str]] = None, ) -> chain_stream_query.SubaccountDepositsFilter: + """ + This method is deprecated and will be removed soon. + Please use `chain_stream_subaccount_deposits_v2_filter` instead + """ + warn( + "This method is deprecated. Use chain_stream_subaccount_deposits_v2_filter instead", + DeprecationWarning, + stacklevel=2, + ) + subaccount_ids = subaccount_ids or ["*"] return chain_stream_query.SubaccountDepositsFilter(subaccount_ids=subaccount_ids) @@ -1373,6 +2751,11 @@ def chain_stream_trades_filter( subaccount_ids: Optional[List[str]] = None, market_ids: Optional[List[str]] = None, ) -> chain_stream_query.TradesFilter: + """ + This method is deprecated and will be removed soon. Please use `chain_stream_trades_v2_filter` instead + """ + warn("This method is deprecated. Use chain_stream_trades_v2_filter instead", DeprecationWarning, stacklevel=2) + subaccount_ids = subaccount_ids or ["*"] market_ids = market_ids or ["*"] return chain_stream_query.TradesFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) @@ -1382,6 +2765,11 @@ def chain_stream_orders_filter( subaccount_ids: Optional[List[str]] = None, market_ids: Optional[List[str]] = None, ) -> chain_stream_query.OrdersFilter: + """ + This method is deprecated and will be removed soon. Please use `chain_stream_orders_v2_filter` instead + """ + warn("This method is deprecated. Use chain_stream_orders_v2_filter instead", DeprecationWarning, stacklevel=2) + subaccount_ids = subaccount_ids or ["*"] market_ids = market_ids or ["*"] return chain_stream_query.OrdersFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) @@ -1390,6 +2778,13 @@ def chain_stream_orderbooks_filter( self, market_ids: Optional[List[str]] = None, ) -> chain_stream_query.OrderbookFilter: + """ + This method is deprecated and will be removed soon. Please use `chain_stream_orderbooks_v2_filter` instead + """ + warn( + "This method is deprecated. Use chain_stream_orderbooks_v2_filter instead", DeprecationWarning, stacklevel=2 + ) + market_ids = market_ids or ["*"] return chain_stream_query.OrderbookFilter(market_ids=market_ids) @@ -1398,6 +2793,13 @@ def chain_stream_positions_filter( subaccount_ids: Optional[List[str]] = None, market_ids: Optional[List[str]] = None, ) -> chain_stream_query.PositionsFilter: + """ + This method is deprecated and will be removed soon. Please use `chain_stream_positions_v2_filter` instead + """ + warn( + "This method is deprecated. Use chain_stream_positions_v2_filter instead", DeprecationWarning, stacklevel=2 + ) + subaccount_ids = subaccount_ids or ["*"] market_ids = market_ids or ["*"] return chain_stream_query.PositionsFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) @@ -1406,9 +2808,74 @@ def chain_stream_oracle_price_filter( self, symbols: Optional[List[str]] = None, ) -> chain_stream_query.PositionsFilter: + """ + This method is deprecated and will be removed soon. Please use `chain_stream_oracle_price_v2_filter` instead + """ + warn( + "This method is deprecated. Use chain_stream_oracle_price_v2_filter instead", + DeprecationWarning, + stacklevel=2, + ) + symbols = symbols or ["*"] return chain_stream_query.OraclePriceFilter(symbol=symbols) + def chain_stream_bank_balances_v2_filter( + self, accounts: Optional[List[str]] = None + ) -> chain_stream_v2_query.BankBalancesFilter: + accounts = accounts or ["*"] + return chain_stream_v2_query.BankBalancesFilter(accounts=accounts) + + def chain_stream_subaccount_deposits_v2_filter( + self, + subaccount_ids: Optional[List[str]] = None, + ) -> chain_stream_v2_query.SubaccountDepositsFilter: + subaccount_ids = subaccount_ids or ["*"] + return chain_stream_v2_query.SubaccountDepositsFilter(subaccount_ids=subaccount_ids) + + def chain_stream_trades_v2_filter( + self, + subaccount_ids: Optional[List[str]] = None, + market_ids: Optional[List[str]] = None, + ) -> chain_stream_v2_query.TradesFilter: + subaccount_ids = subaccount_ids or ["*"] + market_ids = market_ids or ["*"] + return chain_stream_v2_query.TradesFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) + + def chain_stream_orders_v2_filter( + self, + subaccount_ids: Optional[List[str]] = None, + market_ids: Optional[List[str]] = None, + ) -> chain_stream_v2_query.OrdersFilter: + subaccount_ids = subaccount_ids or ["*"] + market_ids = market_ids or ["*"] + return chain_stream_v2_query.OrdersFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) + + def chain_stream_orderbooks_v2_filter( + self, + market_ids: Optional[List[str]] = None, + ) -> chain_stream_v2_query.OrderbookFilter: + market_ids = market_ids or ["*"] + return chain_stream_v2_query.OrderbookFilter(market_ids=market_ids) + + def chain_stream_positions_v2_filter( + self, + subaccount_ids: Optional[List[str]] = None, + market_ids: Optional[List[str]] = None, + ) -> chain_stream_v2_query.PositionsFilter: + subaccount_ids = subaccount_ids or ["*"] + market_ids = market_ids or ["*"] + return chain_stream_v2_query.PositionsFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) + + def chain_stream_oracle_price_v2_filter( + self, + symbols: Optional[List[str]] = None, + ) -> chain_stream_v2_query.PositionsFilter: + symbols = symbols or ["*"] + return chain_stream_v2_query.OraclePriceFilter(symbol=symbols) + + # endregion + # ------------------------------------------------ # region Distribution module's messages @@ -1438,6 +2905,8 @@ def msg_update_distribution_params(self, authority: str, community_tax: str, wit def msg_community_pool_spend(self, authority: str, recipient: str, amount: List[base_coin_pb.Coin]): return cosmos_distribution_tx_pb.MsgCommunityPoolSpend(authority=authority, recipient=recipient, amount=amount) + # endregion + # region IBC Transfer module def msg_ibc_transfer( self, @@ -1574,69 +3043,10 @@ def MsgResponses(response, simulation=False): data = response.result if not simulation: data = bytes.fromhex(data) - # fmt: off - header_map = { - "/injective.exchange.v1beta1.MsgCreateSpotLimitOrderResponse": - injective_exchange_tx_pb.MsgCreateSpotLimitOrderResponse, - "/injective.exchange.v1beta1.MsgCreateSpotMarketOrderResponse": - injective_exchange_tx_pb.MsgCreateSpotMarketOrderResponse, - "/injective.exchange.v1beta1.MsgCreateDerivativeLimitOrderResponse": - injective_exchange_tx_pb.MsgCreateDerivativeLimitOrderResponse, - "/injective.exchange.v1beta1.MsgCreateDerivativeMarketOrderResponse": - injective_exchange_tx_pb.MsgCreateDerivativeMarketOrderResponse, - "/injective.exchange.v1beta1.MsgCancelSpotOrderResponse": - injective_exchange_tx_pb.MsgCancelSpotOrderResponse, - "/injective.exchange.v1beta1.MsgCancelDerivativeOrderResponse": - injective_exchange_tx_pb.MsgCancelDerivativeOrderResponse, - "/injective.exchange.v1beta1.MsgBatchCancelSpotOrdersResponse": - injective_exchange_tx_pb.MsgBatchCancelSpotOrdersResponse, - "/injective.exchange.v1beta1.MsgBatchCancelDerivativeOrdersResponse": - injective_exchange_tx_pb.MsgBatchCancelDerivativeOrdersResponse, - "/injective.exchange.v1beta1.MsgBatchCreateSpotLimitOrdersResponse": - injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrdersResponse, - "/injective.exchange.v1beta1.MsgBatchCreateDerivativeLimitOrdersResponse": - injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrdersResponse, - "/injective.exchange.v1beta1.MsgBatchUpdateOrdersResponse": - injective_exchange_tx_pb.MsgBatchUpdateOrdersResponse, - "/injective.exchange.v1beta1.MsgDepositResponse": - injective_exchange_tx_pb.MsgDepositResponse, - "/injective.exchange.v1beta1.MsgWithdrawResponse": - injective_exchange_tx_pb.MsgWithdrawResponse, - "/injective.exchange.v1beta1.MsgSubaccountTransferResponse": - injective_exchange_tx_pb.MsgSubaccountTransferResponse, - "/injective.exchange.v1beta1.MsgLiquidatePositionResponse": - injective_exchange_tx_pb.MsgLiquidatePositionResponse, - "/injective.exchange.v1beta1.MsgIncreasePositionMarginResponse": - injective_exchange_tx_pb.MsgIncreasePositionMarginResponse, - "/injective.auction.v1beta1.MsgBidResponse": - injective_auction_tx_pb.MsgBidResponse, - "/injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrderResponse": - injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrderResponse, - "/injective.exchange.v1beta1.MsgCreateBinaryOptionsMarketOrderResponse": - injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrderResponse, - "/injective.exchange.v1beta1.MsgCancelBinaryOptionsOrderResponse": - injective_exchange_tx_pb.MsgCancelBinaryOptionsOrderResponse, - "/injective.exchange.v1beta1.MsgAdminUpdateBinaryOptionsMarketResponse": - injective_exchange_tx_pb.MsgAdminUpdateBinaryOptionsMarketResponse, - "/injective.exchange.v1beta1.MsgInstantBinaryOptionsMarketLaunchResponse": - injective_exchange_tx_pb.MsgInstantBinaryOptionsMarketLaunchResponse, - "/cosmos.bank.v1beta1.MsgSendResponse": - cosmos_bank_tx_pb.MsgSendResponse, - "/cosmos.authz.v1beta1.MsgGrantResponse": - cosmos_authz_tx_pb.MsgGrantResponse, - "/cosmos.authz.v1beta1.MsgExecResponse": - cosmos_authz_tx_pb.MsgExecResponse, - "/cosmos.authz.v1beta1.MsgRevokeResponse": - cosmos_authz_tx_pb.MsgRevokeResponse, - "/injective.oracle.v1beta1.MsgRelayPriceFeedPriceResponse": - injective_oracle_tx_pb.MsgRelayPriceFeedPriceResponse, - "/injective.oracle.v1beta1.MsgRelayProviderPricesResponse": - injective_oracle_tx_pb.MsgRelayProviderPrices, - } - # fmt: on + msgs = [] for msg in data.msg_responses: - msgs.append(header_map[msg.type_url].FromString(msg.value)) + msgs.append(GRPC_RESPONSE_TYPE_TO_CLASS_MAP[msg.type_url].FromString(msg.value)) return msgs @@ -1783,19 +3193,19 @@ def _order_mask(self, is_conditional: bool, is_buy: bool, is_market_order: bool) order_mask = 0 if is_conditional: - order_mask += injective_exchange_pb.OrderMask.CONDITIONAL + order_mask += injective_order_v2_pb.OrderMask.CONDITIONAL else: - order_mask += injective_exchange_pb.OrderMask.REGULAR + order_mask += injective_order_v2_pb.OrderMask.REGULAR if is_buy: - order_mask += injective_exchange_pb.OrderMask.DIRECTION_BUY_OR_HIGHER + order_mask += injective_order_v2_pb.OrderMask.DIRECTION_BUY_OR_HIGHER else: - order_mask += injective_exchange_pb.OrderMask.DIRECTION_SELL_OR_LOWER + order_mask += injective_order_v2_pb.OrderMask.DIRECTION_SELL_OR_LOWER if is_market_order: - order_mask += injective_exchange_pb.OrderMask.TYPE_MARKET + order_mask += injective_order_v2_pb.OrderMask.TYPE_MARKET else: - order_mask += injective_exchange_pb.OrderMask.TYPE_LIMIT + order_mask += injective_order_v2_pb.OrderMask.TYPE_LIMIT if order_mask == 0: order_mask = 1 @@ -1814,6 +3224,11 @@ def _basic_derivative_order( cid: Optional[str] = None, chain_trigger_price: Optional[Decimal] = None, ) -> injective_exchange_pb.DerivativeOrder: + """ + This method is deprecated and will be removed soon. Please use `_basic_v2_derivative_order` instead + """ + warn("This method is deprecated. Use _basic_v2_derivative_order instead", DeprecationWarning, stacklevel=2) + formatted_quantity = f"{chain_quantity.normalize():f}" formatted_price = f"{chain_price.normalize():f}" formatted_margin = f"{chain_margin.normalize():f}" @@ -1836,3 +3251,42 @@ def _basic_derivative_order( margin=formatted_margin, trigger_price=formatted_trigger_price, ) + + def _basic_v2_derivative_order( + self, + market_id: str, + subaccount_id: str, + fee_recipient: str, + price: Decimal, + quantity: Decimal, + margin: Decimal, + order_type: str, + cid: Optional[str] = None, + trigger_price: Optional[Decimal] = None, + ) -> injective_order_v2_pb.DerivativeOrder: + trigger_price = trigger_price or Decimal(0) + chain_quantity = f"{self.convert_value_to_chain_format(value=quantity).normalize():f}" + chain_price = f"{self.convert_value_to_chain_format(value=price).normalize():f}" + chain_margin = f"{self.convert_value_to_chain_format(value=margin).normalize():f}" + chain_trigger_price = f"{self.convert_value_to_chain_format(value=trigger_price).normalize():f}" + chain_order_type = injective_order_v2_pb.OrderType.Value(order_type) + + return injective_order_v2_pb.DerivativeOrder( + market_id=market_id, + order_info=injective_order_v2_pb.OrderInfo( + subaccount_id=subaccount_id, + fee_recipient=fee_recipient, + price=chain_price, + quantity=chain_quantity, + cid=cid, + ), + order_type=chain_order_type, + margin=chain_margin, + trigger_price=chain_trigger_price, + ) + + def convert_value_to_chain_format(self, value: Decimal) -> Decimal: + return value * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + + def convert_value_from_chain_format(self, value: Decimal) -> Decimal: + return value / Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") diff --git a/tests/client/chain/grpc/configurable_exchange_query_servicer.py b/tests/client/chain/grpc/configurable_exchange_query_servicer.py index 23ded1de..6ac2e8c2 100644 --- a/tests/client/chain/grpc/configurable_exchange_query_servicer.py +++ b/tests/client/chain/grpc/configurable_exchange_query_servicer.py @@ -65,6 +65,11 @@ def __init__(self): self.binary_options_markets_responses = deque() self.trader_derivative_conditional_orders_responses = deque() self.market_atomic_execution_fee_multiplier_responses = deque() + self.active_stake_grant_responses = deque() + self.grant_authorization_responses = deque() + self.grant_authorizations_responses = deque() + self.l3_derivative_orderbook_responses = deque() + self.l3_spot_orderbook_responses = deque() async def QueryExchangeParams( self, request: exchange_query_pb.QueryExchangeParamsRequest, context=None, metadata=None @@ -329,3 +334,28 @@ async def MarketAtomicExecutionFeeMultiplier( self, request: exchange_query_pb.QueryMarketAtomicExecutionFeeMultiplierRequest, context=None, metadata=None ): return self.market_atomic_execution_fee_multiplier_responses.pop() + + async def ActiveStakeGrant( + self, request: exchange_query_pb.QueryActiveStakeGrantRequest, context=None, metadata=None + ): + return self.active_stake_grant_responses.pop() + + async def GrantAuthorization( + self, request: exchange_query_pb.QueryGrantAuthorizationRequest, context=None, metadata=None + ): + return self.grant_authorization_responses.pop() + + async def GrantAuthorizations( + self, request: exchange_query_pb.QueryGrantAuthorizationsRequest, context=None, metadata=None + ): + return self.grant_authorizations_responses.pop() + + async def L3DerivativeOrderBook( + self, request: exchange_query_pb.QueryFullDerivativeOrderbookRequest, context=None, metadata=None + ): + return self.l3_derivative_orderbook_responses.pop() + + async def L3SpotOrderBook( + self, request: exchange_query_pb.QueryFullSpotOrderbookRequest, context=None, metadata=None + ): + return self.l3_spot_orderbook_responses.pop() diff --git a/tests/client/chain/grpc/configurable_exchange_v2_query_servicer.py b/tests/client/chain/grpc/configurable_exchange_v2_query_servicer.py new file mode 100644 index 00000000..c3da9415 --- /dev/null +++ b/tests/client/chain/grpc/configurable_exchange_v2_query_servicer.py @@ -0,0 +1,361 @@ +from collections import deque + +from pyinjective.proto.injective.exchange.v2 import ( + query_pb2 as exchange_query_pb, + query_pb2_grpc as exchange_query_grpc, +) + + +class ConfigurableExchangeV2QueryServicer(exchange_query_grpc.QueryServicer): + def __init__(self): + super().__init__() + self.exchange_params = deque() + self.subaccount_deposits_responses = deque() + self.subaccount_deposit_responses = deque() + self.exchange_balances_responses = deque() + self.aggregate_volume_responses = deque() + self.aggregate_volumes_responses = deque() + self.aggregate_market_volume_responses = deque() + self.aggregate_market_volumes_responses = deque() + self.denom_decimal_responses = deque() + self.denom_decimals_responses = deque() + self.spot_markets_responses = deque() + self.spot_market_responses = deque() + self.full_spot_markets_responses = deque() + self.full_spot_market_responses = deque() + self.spot_orderbook_responses = deque() + self.trader_spot_orders_responses = deque() + self.account_address_spot_orders_responses = deque() + self.spot_orders_by_hashes_responses = deque() + self.subaccount_orders_responses = deque() + self.trader_spot_transient_orders_responses = deque() + self.spot_mid_price_and_tob_responses = deque() + self.derivative_mid_price_and_tob_responses = deque() + self.derivative_orderbook_responses = deque() + self.trader_derivative_orders_responses = deque() + self.account_address_derivative_orders_responses = deque() + self.derivative_orders_by_hashes_responses = deque() + self.trader_derivative_transient_orders_responses = deque() + self.derivative_markets_responses = deque() + self.derivative_market_responses = deque() + self.derivative_market_address_responses = deque() + self.subaccount_trade_nonce_responses = deque() + self.positions_responses = deque() + self.subaccount_positions_responses = deque() + self.subaccount_position_in_market_responses = deque() + self.subaccount_effective_position_in_market_responses = deque() + self.perpetual_market_info_responses = deque() + self.expiry_futures_market_info_responses = deque() + self.perpetual_market_funding_responses = deque() + self.subaccount_order_metadata_responses = deque() + self.trade_reward_points_responses = deque() + self.pending_trade_reward_points_responses = deque() + self.trade_reward_campaign_responses = deque() + self.fee_discount_account_info_responses = deque() + self.fee_discount_schedule_responses = deque() + self.balance_mismatches_responses = deque() + self.balance_with_balance_holds_responses = deque() + self.fee_discount_tier_statistics_responses = deque() + self.mito_vault_infos_responses = deque() + self.market_id_from_vault_responses = deque() + self.historical_trade_records_responses = deque() + self.is_opted_out_of_rewards_responses = deque() + self.opted_out_of_rewards_accounts_responses = deque() + self.market_volatility_responses = deque() + self.binary_options_markets_responses = deque() + self.trader_derivative_conditional_orders_responses = deque() + self.market_atomic_execution_fee_multiplier_responses = deque() + self.active_stake_grant_responses = deque() + self.grant_authorization_responses = deque() + self.grant_authorizations_responses = deque() + self.l3_derivative_orderbook_responses = deque() + self.l3_spot_orderbook_responses = deque() + + async def QueryExchangeParams( + self, request: exchange_query_pb.QueryExchangeParamsRequest, context=None, metadata=None + ): + return self.exchange_params.pop() + + async def SubaccountDeposits( + self, request: exchange_query_pb.QuerySubaccountDepositsRequest, context=None, metadata=None + ): + return self.subaccount_deposits_responses.pop() + + async def SubaccountDeposit( + self, request: exchange_query_pb.QuerySubaccountDepositRequest, context=None, metadata=None + ): + return self.subaccount_deposit_responses.pop() + + async def ExchangeBalances( + self, request: exchange_query_pb.QueryExchangeBalancesRequest, context=None, metadata=None + ): + return self.exchange_balances_responses.pop() + + async def AggregateVolume( + self, request: exchange_query_pb.QueryAggregateVolumeRequest, context=None, metadata=None + ): + return self.aggregate_volume_responses.pop() + + async def AggregateVolumes( + self, request: exchange_query_pb.QueryAggregateVolumesRequest, context=None, metadata=None + ): + return self.aggregate_volumes_responses.pop() + + async def AggregateMarketVolume( + self, request: exchange_query_pb.QueryAggregateMarketVolumeRequest, context=None, metadata=None + ): + return self.aggregate_market_volume_responses.pop() + + async def AggregateMarketVolumes( + self, request: exchange_query_pb.QueryAggregateMarketVolumesRequest, context=None, metadata=None + ): + return self.aggregate_market_volumes_responses.pop() + + async def DenomDecimal(self, request: exchange_query_pb.QueryDenomDecimalRequest, context=None, metadata=None): + return self.denom_decimal_responses.pop() + + async def DenomDecimals(self, request: exchange_query_pb.QueryDenomDecimalsRequest, context=None, metadata=None): + return self.denom_decimals_responses.pop() + + async def SpotMarkets(self, request: exchange_query_pb.QuerySpotMarketsRequest, context=None, metadata=None): + return self.spot_markets_responses.pop() + + async def SpotMarket(self, request: exchange_query_pb.QuerySpotMarketRequest, context=None, metadata=None): + return self.spot_market_responses.pop() + + async def FullSpotMarkets( + self, request: exchange_query_pb.QueryFullSpotMarketsRequest, context=None, metadata=None + ): + return self.full_spot_markets_responses.pop() + + async def FullSpotMarket(self, request: exchange_query_pb.QueryFullSpotMarketRequest, context=None, metadata=None): + return self.full_spot_market_responses.pop() + + async def SpotOrderbook(self, request: exchange_query_pb.QuerySpotOrderbookRequest, context=None, metadata=None): + return self.spot_orderbook_responses.pop() + + async def TraderSpotOrders( + self, request: exchange_query_pb.QueryTraderSpotOrdersRequest, context=None, metadata=None + ): + return self.trader_spot_orders_responses.pop() + + async def AccountAddressSpotOrders( + self, request: exchange_query_pb.QueryAccountAddressSpotOrdersRequest, context=None, metadata=None + ): + return self.account_address_spot_orders_responses.pop() + + async def SpotOrdersByHashes( + self, request: exchange_query_pb.QuerySpotOrdersByHashesRequest, context=None, metadata=None + ): + return self.spot_orders_by_hashes_responses.pop() + + async def SubaccountOrders( + self, request: exchange_query_pb.QuerySubaccountOrdersRequest, context=None, metadata=None + ): + return self.subaccount_orders_responses.pop() + + async def TraderSpotTransientOrders( + self, request: exchange_query_pb.QueryTraderSpotOrdersRequest, context=None, metadata=None + ): + return self.trader_spot_transient_orders_responses.pop() + + async def SpotMidPriceAndTOB( + self, request: exchange_query_pb.QuerySpotMidPriceAndTOBRequest, context=None, metadata=None + ): + return self.spot_mid_price_and_tob_responses.pop() + + async def DerivativeMidPriceAndTOB( + self, request: exchange_query_pb.QueryDerivativeMidPriceAndTOBRequest, context=None, metadata=None + ): + return self.derivative_mid_price_and_tob_responses.pop() + + async def DerivativeOrderbook( + self, request: exchange_query_pb.QueryDerivativeOrderbookRequest, context=None, metadata=None + ): + return self.derivative_orderbook_responses.pop() + + async def TraderDerivativeOrders( + self, request: exchange_query_pb.QueryTraderDerivativeOrdersRequest, context=None, metadata=None + ): + return self.trader_derivative_orders_responses.pop() + + async def AccountAddressDerivativeOrders( + self, request: exchange_query_pb.QueryAccountAddressDerivativeOrdersRequest, context=None, metadata=None + ): + return self.account_address_derivative_orders_responses.pop() + + async def DerivativeOrdersByHashes( + self, request: exchange_query_pb.QueryDerivativeOrdersByHashesRequest, context=None, metadata=None + ): + return self.derivative_orders_by_hashes_responses.pop() + + async def TraderDerivativeTransientOrders( + self, request: exchange_query_pb.QueryTraderDerivativeOrdersRequest, context=None, metadata=None + ): + return self.trader_derivative_transient_orders_responses.pop() + + async def DerivativeMarkets( + self, request: exchange_query_pb.QueryDerivativeMarketsRequest, context=None, metadata=None + ): + return self.derivative_markets_responses.pop() + + async def DerivativeMarket( + self, request: exchange_query_pb.QueryDerivativeMarketRequest, context=None, metadata=None + ): + return self.derivative_market_responses.pop() + + async def DerivativeMarketAddress( + self, request: exchange_query_pb.QueryDerivativeMarketAddressRequest, context=None, metadata=None + ): + return self.derivative_market_address_responses.pop() + + async def SubaccountTradeNonce( + self, request: exchange_query_pb.QuerySubaccountTradeNonceRequest, context=None, metadata=None + ): + return self.subaccount_trade_nonce_responses.pop() + + async def Positions(self, request: exchange_query_pb.QueryPositionsRequest, context=None, metadata=None): + return self.positions_responses.pop() + + async def SubaccountPositions( + self, request: exchange_query_pb.QuerySubaccountPositionsRequest, context=None, metadata=None + ): + return self.subaccount_positions_responses.pop() + + async def SubaccountPositionInMarket( + self, request: exchange_query_pb.QuerySubaccountPositionInMarketRequest, context=None, metadata=None + ): + return self.subaccount_position_in_market_responses.pop() + + async def SubaccountEffectivePositionInMarket( + self, request: exchange_query_pb.QuerySubaccountEffectivePositionInMarketRequest, context=None, metadata=None + ): + return self.subaccount_effective_position_in_market_responses.pop() + + async def PerpetualMarketInfo( + self, request: exchange_query_pb.QueryPerpetualMarketInfoRequest, context=None, metadata=None + ): + return self.perpetual_market_info_responses.pop() + + async def ExpiryFuturesMarketInfo( + self, request: exchange_query_pb.QueryExpiryFuturesMarketInfoRequest, context=None, metadata=None + ): + return self.expiry_futures_market_info_responses.pop() + + async def PerpetualMarketFunding( + self, request: exchange_query_pb.QueryPerpetualMarketFundingRequest, context=None, metadata=None + ): + return self.perpetual_market_funding_responses.pop() + + async def SubaccountOrderMetadata( + self, request: exchange_query_pb.QuerySubaccountOrderMetadataRequest, context=None, metadata=None + ): + return self.subaccount_order_metadata_responses.pop() + + async def TradeRewardPoints( + self, request: exchange_query_pb.QueryTradeRewardPointsRequest, context=None, metadata=None + ): + return self.trade_reward_points_responses.pop() + + async def PendingTradeRewardPoints( + self, request: exchange_query_pb.QueryTradeRewardPointsRequest, context=None, metadata=None + ): + return self.pending_trade_reward_points_responses.pop() + + async def TradeRewardCampaign( + self, request: exchange_query_pb.QueryTradeRewardCampaignRequest, context=None, metadata=None + ): + return self.trade_reward_campaign_responses.pop() + + async def FeeDiscountAccountInfo( + self, request: exchange_query_pb.QueryFeeDiscountAccountInfoRequest, context=None, metadata=None + ): + return self.fee_discount_account_info_responses.pop() + + async def FeeDiscountSchedule( + self, request: exchange_query_pb.QueryFeeDiscountScheduleRequest, context=None, metadata=None + ): + return self.fee_discount_schedule_responses.pop() + + async def BalanceMismatches( + self, request: exchange_query_pb.QueryBalanceMismatchesRequest, context=None, metadata=None + ): + return self.balance_mismatches_responses.pop() + + async def BalanceWithBalanceHolds( + self, request: exchange_query_pb.QueryBalanceWithBalanceHoldsRequest, context=None, metadata=None + ): + return self.balance_with_balance_holds_responses.pop() + + async def FeeDiscountTierStatistics( + self, request: exchange_query_pb.QueryFeeDiscountTierStatisticsRequest, context=None, metadata=None + ): + return self.fee_discount_tier_statistics_responses.pop() + + async def MitoVaultInfos(self, request: exchange_query_pb.MitoVaultInfosRequest, context=None, metadata=None): + return self.mito_vault_infos_responses.pop() + + async def QueryMarketIDFromVault( + self, request: exchange_query_pb.QueryMarketIDFromVaultRequest, context=None, metadata=None + ): + return self.market_id_from_vault_responses.pop() + + async def HistoricalTradeRecords( + self, request: exchange_query_pb.QueryHistoricalTradeRecordsRequest, context=None, metadata=None + ): + return self.historical_trade_records_responses.pop() + + async def IsOptedOutOfRewards( + self, request: exchange_query_pb.QueryIsOptedOutOfRewardsRequest, context=None, metadata=None + ): + return self.is_opted_out_of_rewards_responses.pop() + + async def OptedOutOfRewardsAccounts( + self, request: exchange_query_pb.QueryOptedOutOfRewardsAccountsRequest, context=None, metadata=None + ): + return self.opted_out_of_rewards_accounts_responses.pop() + + async def MarketVolatility( + self, request: exchange_query_pb.QueryMarketVolatilityRequest, context=None, metadata=None + ): + return self.market_volatility_responses.pop() + + async def BinaryOptionsMarkets( + self, request: exchange_query_pb.QueryBinaryMarketsRequest, context=None, metadata=None + ): + return self.binary_options_markets_responses.pop() + + async def TraderDerivativeConditionalOrders( + self, request: exchange_query_pb.QueryTraderDerivativeConditionalOrdersRequest, context=None, metadata=None + ): + return self.trader_derivative_conditional_orders_responses.pop() + + async def MarketAtomicExecutionFeeMultiplier( + self, request: exchange_query_pb.QueryMarketAtomicExecutionFeeMultiplierRequest, context=None, metadata=None + ): + return self.market_atomic_execution_fee_multiplier_responses.pop() + + async def ActiveStakeGrant( + self, request: exchange_query_pb.QueryActiveStakeGrantRequest, context=None, metadata=None + ): + return self.active_stake_grant_responses.pop() + + async def GrantAuthorization( + self, request: exchange_query_pb.QueryGrantAuthorizationRequest, context=None, metadata=None + ): + return self.grant_authorization_responses.pop() + + async def GrantAuthorizations( + self, request: exchange_query_pb.QueryGrantAuthorizationsRequest, context=None, metadata=None + ): + return self.grant_authorizations_responses.pop() + + async def L3DerivativeOrderBook( + self, request: exchange_query_pb.QueryFullDerivativeOrderbookRequest, context=None, metadata=None + ): + return self.l3_derivative_orderbook_responses.pop() + + async def L3SpotOrderBook( + self, request: exchange_query_pb.QueryFullSpotOrderbookRequest, context=None, metadata=None + ): + return self.l3_spot_orderbook_responses.pop() diff --git a/tests/client/chain/grpc/test_chain_grpc_exchange_api.py b/tests/client/chain/grpc/test_chain_grpc_exchange_api.py index f5db75e7..b703e9d4 100644 --- a/tests/client/chain/grpc/test_chain_grpc_exchange_api.py +++ b/tests/client/chain/grpc/test_chain_grpc_exchange_api.py @@ -2444,6 +2444,197 @@ async def test_fetch_market_atomic_execution_fee_multiplier( assert multiplier == expected_multiplier + @pytest.mark.asyncio + async def test_fetch_active_stake_grant( + self, + exchange_servicer, + ): + grant = exchange_pb.ActiveGrant( + granter="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + amount="1000000000000000", + ) + effective_grant = exchange_pb.EffectiveGrant( + granter="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + net_granted_stake="2000000000000000", + is_valid=True, + ) + response = exchange_query_pb.QueryActiveStakeGrantResponse( + grant=grant, + effective_grant=effective_grant, + ) + exchange_servicer.active_stake_grant_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + active_grant = await api.fetch_active_stake_grant( + grantee="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + ) + expected_grant = { + "grant": { + "granter": grant.granter, + "amount": grant.amount, + }, + "effectiveGrant": { + "granter": effective_grant.granter, + "netGrantedStake": effective_grant.net_granted_stake, + "isValid": effective_grant.is_valid, + }, + } + + assert active_grant == expected_grant + + @pytest.mark.asyncio + async def test_fetch_grant_authorization( + self, + exchange_servicer, + ): + response = exchange_query_pb.QueryGrantAuthorizationResponse( + amount="1000000000000000", + ) + exchange_servicer.grant_authorization_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + active_grant = await api.fetch_grant_authorization( + granter="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + grantee="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + ) + expected_grant = { + "amount": response.amount, + } + + assert active_grant == expected_grant + + @pytest.mark.asyncio + async def test_fetch_grant_authorizations( + self, + exchange_servicer, + ): + grant = exchange_pb.GrantAuthorization( + grantee="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + amount="1000000000000000", + ) + response = exchange_query_pb.QueryGrantAuthorizationsResponse( + total_grant_amount="1000000000000000", + grants=[grant], + ) + exchange_servicer.grant_authorizations_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + active_grant = await api.fetch_grant_authorizations( + granter="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + ) + expected_grant = { + "totalGrantAmount": response.total_grant_amount, + "grants": [ + { + "grantee": grant.grantee, + "amount": grant.amount, + }, + ], + } + + assert active_grant == expected_grant + + @pytest.mark.asyncio + async def test_fetch_l3_derivative_orderbook( + self, + exchange_servicer, + ): + bid = exchange_query_pb.TrimmedLimitOrder( + price="2000000000000000000", + quantity="1000000000000000", + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + ask = exchange_query_pb.TrimmedLimitOrder( + price="5000000000000000000", + quantity="3000000000000000", + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abf7", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000002", + ) + response = exchange_query_pb.QueryFullDerivativeOrderbookResponse( + Bids=[bid], + Asks=[ask], + ) + exchange_servicer.l3_derivative_orderbook_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + orderbook = await api.fetch_l3_derivative_orderbook( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + ) + expected_orderbook = { + "Bids": [ + { + "price": bid.price, + "quantity": bid.quantity, + "orderHash": bid.order_hash, + "subaccountId": bid.subaccount_id, + } + ], + "Asks": [ + { + "price": ask.price, + "quantity": ask.quantity, + "orderHash": ask.order_hash, + "subaccountId": ask.subaccount_id, + } + ], + } + + assert orderbook == expected_orderbook + + @pytest.mark.asyncio + async def test_fetch_l3_spot_orderbook( + self, + exchange_servicer, + ): + bid = exchange_query_pb.TrimmedLimitOrder( + price="2000000000000000000", + quantity="1000000000000000", + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + ask = exchange_query_pb.TrimmedLimitOrder( + price="5000000000000000000", + quantity="3000000000000000", + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abf7", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000002", + ) + response = exchange_query_pb.QueryFullSpotOrderbookResponse( + Bids=[bid], + Asks=[ask], + ) + exchange_servicer.l3_spot_orderbook_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + orderbook = await api.fetch_l3_spot_orderbook( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + ) + expected_orderbook = { + "Bids": [ + { + "price": bid.price, + "quantity": bid.quantity, + "orderHash": bid.order_hash, + "subaccountId": bid.subaccount_id, + } + ], + "Asks": [ + { + "price": ask.price, + "quantity": ask.quantity, + "orderHash": ask.order_hash, + "subaccountId": ask.subaccount_id, + } + ], + } + + assert orderbook == expected_orderbook + def _api_instance(self, servicer): network = Network.devnet() channel = grpc.aio.insecure_channel(network.grpc_endpoint) diff --git a/tests/client/chain/grpc/test_chain_grpc_exchange_v2_api.py b/tests/client/chain/grpc/test_chain_grpc_exchange_v2_api.py new file mode 100644 index 00000000..c8cb7f97 --- /dev/null +++ b/tests/client/chain/grpc/test_chain_grpc_exchange_v2_api.py @@ -0,0 +1,2648 @@ +import base64 + +import grpc +import pytest + +from pyinjective.client.chain.grpc.chain_grpc_exchange_v2_api import ChainGrpcExchangeV2Api +from pyinjective.client.model.pagination import PaginationOption +from pyinjective.core.network import DisabledCookieAssistant, Network +from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as coin_pb +from pyinjective.proto.injective.exchange.v2 import ( + exchange_pb2 as exchange_pb, + market_pb2 as market_pb, + order_pb2 as order_pb, + orderbook_pb2 as orderbook_pb, + query_pb2 as exchange_query_pb, +) +from pyinjective.proto.injective.oracle.v1beta1 import oracle_pb2 as oracle_pb +from tests.client.chain.grpc.configurable_exchange_v2_query_servicer import ConfigurableExchangeV2QueryServicer + + +@pytest.fixture +def exchange_servicer(): + return ConfigurableExchangeV2QueryServicer() + + +class TestChainGrpcBankApi: + @pytest.mark.asyncio + async def test_fetch_exchange_params( + self, + exchange_servicer, + ): + spot_market_instant_listing_fee = coin_pb.Coin(denom="inj", amount="10000000000000000000") + derivative_market_instant_listing_fee = coin_pb.Coin(denom="inj", amount="2000000000000000000000") + binary_options_market_instant_listing_fee = coin_pb.Coin(denom="inj", amount="30000000000000000000") + admin = "inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr" + params = exchange_pb.Params( + spot_market_instant_listing_fee=spot_market_instant_listing_fee, + derivative_market_instant_listing_fee=derivative_market_instant_listing_fee, + default_spot_maker_fee_rate="-0.000100000000000000", + default_spot_taker_fee_rate="0.001000000000000000", + default_derivative_maker_fee_rate="-0.000100000000000000", + default_derivative_taker_fee_rate="0.001000000000000000", + default_initial_margin_ratio="0.050000000000000000", + default_maintenance_margin_ratio="0.020000000000000000", + default_funding_interval=3600, + funding_multiple=4600, + relayer_fee_share_rate="0.400000000000000000", + default_hourly_funding_rate_cap="0.000625000000000000", + default_hourly_interest_rate="0.000004166660000000", + max_derivative_order_side_count=20, + inj_reward_staked_requirement_threshold="25000000000000000000", + trading_rewards_vesting_duration=1209600, + liquidator_reward_share_rate="0.050000000000000000", + binary_options_market_instant_listing_fee=binary_options_market_instant_listing_fee, + atomic_market_order_access_level=2, + spot_atomic_market_order_fee_multiplier="2.000000000000000000", + derivative_atomic_market_order_fee_multiplier="2.000000000000000000", + binary_options_atomic_market_order_fee_multiplier="2.000000000000000000", + minimal_protocol_fee_rate="0.000010000000000000", + is_instant_derivative_market_launch_enabled=False, + post_only_mode_height_threshold=57078000, + margin_decrease_price_timestamp_threshold_seconds=10, + exchange_admins=[admin], + inj_auction_max_cap="1000000000000000000000", + ) + exchange_servicer.exchange_params.append(exchange_query_pb.QueryExchangeParamsResponse(params=params)) + + api = self._api_instance(servicer=exchange_servicer) + + module_params = await api.fetch_exchange_params() + expected_params = { + "params": { + "spotMarketInstantListingFee": { + "amount": spot_market_instant_listing_fee.amount, + "denom": spot_market_instant_listing_fee.denom, + }, + "derivativeMarketInstantListingFee": { + "amount": derivative_market_instant_listing_fee.amount, + "denom": derivative_market_instant_listing_fee.denom, + }, + "defaultSpotMakerFeeRate": params.default_spot_maker_fee_rate, + "defaultSpotTakerFeeRate": params.default_spot_taker_fee_rate, + "defaultDerivativeMakerFeeRate": params.default_derivative_maker_fee_rate, + "defaultDerivativeTakerFeeRate": params.default_derivative_taker_fee_rate, + "defaultInitialMarginRatio": params.default_initial_margin_ratio, + "defaultMaintenanceMarginRatio": params.default_maintenance_margin_ratio, + "defaultFundingInterval": str(params.default_funding_interval), + "fundingMultiple": str(params.funding_multiple), + "relayerFeeShareRate": params.relayer_fee_share_rate, + "defaultHourlyFundingRateCap": params.default_hourly_funding_rate_cap, + "defaultHourlyInterestRate": params.default_hourly_interest_rate, + "maxDerivativeOrderSideCount": params.max_derivative_order_side_count, + "injRewardStakedRequirementThreshold": params.inj_reward_staked_requirement_threshold, + "tradingRewardsVestingDuration": str(params.trading_rewards_vesting_duration), + "liquidatorRewardShareRate": "0.050000000000000000", + "binaryOptionsMarketInstantListingFee": { + "amount": binary_options_market_instant_listing_fee.amount, + "denom": binary_options_market_instant_listing_fee.denom, + }, + "atomicMarketOrderAccessLevel": order_pb.AtomicMarketOrderAccessLevel.Name( + params.atomic_market_order_access_level + ), + "spotAtomicMarketOrderFeeMultiplier": params.spot_atomic_market_order_fee_multiplier, + "derivativeAtomicMarketOrderFeeMultiplier": params.derivative_atomic_market_order_fee_multiplier, + "binaryOptionsAtomicMarketOrderFeeMultiplier": params.binary_options_atomic_market_order_fee_multiplier, + "minimalProtocolFeeRate": params.minimal_protocol_fee_rate, + "isInstantDerivativeMarketLaunchEnabled": params.is_instant_derivative_market_launch_enabled, + "postOnlyModeHeightThreshold": str(params.post_only_mode_height_threshold), + "marginDecreasePriceTimestampThresholdSeconds": str( + params.margin_decrease_price_timestamp_threshold_seconds + ), + "exchangeAdmins": [admin], + "injAuctionMaxCap": params.inj_auction_max_cap, + } + } + + assert module_params == expected_params + + @pytest.mark.asyncio + async def test_fetch_subaccount_deposits( + self, + exchange_servicer, + ): + deposit_denom = "inj" + deposit = exchange_pb.Deposit( + available_balance="1000000000000000000", + total_balance="2000000000000000000", + ) + exchange_servicer.subaccount_deposits_responses.append( + exchange_query_pb.QuerySubaccountDepositsResponse(deposits={deposit_denom: deposit}) + ) + + api = self._api_instance(servicer=exchange_servicer) + + deposits = await api.fetch_subaccount_deposits( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + subaccount_trader="inj1ady3s7whq30l4fx8sj3x6muv5mx4dfdlcpv8n7", + subaccount_nonce=1, + ) + expected_deposits = { + "deposits": { + deposit_denom: { + "availableBalance": deposit.available_balance, + "totalBalance": deposit.total_balance, + }, + } + } + + assert deposits == expected_deposits + + @pytest.mark.asyncio + async def test_fetch_subaccount_deposit( + self, + exchange_servicer, + ): + deposit = exchange_pb.Deposit( + available_balance="1000000000000000000", + total_balance="2000000000000000000", + ) + exchange_servicer.subaccount_deposit_responses.append( + exchange_query_pb.QuerySubaccountDepositResponse(deposits=deposit) + ) + + api = self._api_instance(servicer=exchange_servicer) + + deposit_response = await api.fetch_subaccount_deposit( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + denom="inj", + ) + expected_deposit = { + "deposits": { + "availableBalance": deposit.available_balance, + "totalBalance": deposit.total_balance, + } + } + + assert deposit_response == expected_deposit + + @pytest.mark.asyncio + async def test_fetch_exchange_balances( + self, + exchange_servicer, + ): + deposit = exchange_pb.Deposit( + available_balance="1000000000000000000", + total_balance="2000000000000000000", + ) + balance = exchange_pb.Balance( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + denom="inj", + deposits=deposit, + ) + exchange_servicer.exchange_balances_responses.append( + exchange_query_pb.QueryExchangeBalancesResponse(balances=[balance]) + ) + + api = self._api_instance(servicer=exchange_servicer) + + balances_response = await api.fetch_exchange_balances() + expected_balances = { + "balances": [ + { + "subaccountId": balance.subaccount_id, + "denom": balance.denom, + "deposits": { + "availableBalance": deposit.available_balance, + "totalBalance": deposit.total_balance, + }, + }, + ] + } + + assert balances_response == expected_balances + + @pytest.mark.asyncio + async def test_fetch_aggregate_volume( + self, + exchange_servicer, + ): + volume = market_pb.VolumeRecord( + maker_volume="1000000000000000000", + taker_volume="2000000000000000000", + ) + market_volume = market_pb.MarketVolume( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + volume=volume, + ) + exchange_servicer.aggregate_volume_responses.append( + exchange_query_pb.QueryAggregateVolumeResponse( + aggregate_volumes=[market_volume], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + volume_response = await api.fetch_aggregate_volume(account="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r") + expected_volume = { + "aggregateVolumes": [ + { + "marketId": market_volume.market_id, + "volume": { + "makerVolume": volume.maker_volume, + "takerVolume": volume.taker_volume, + }, + }, + ] + } + + assert volume_response == expected_volume + + @pytest.mark.asyncio + async def test_fetch_aggregate_volumes( + self, + exchange_servicer, + ): + acc_volume = market_pb.VolumeRecord( + maker_volume="1000000000000000000", + taker_volume="2000000000000000000", + ) + account_market_volume = market_pb.MarketVolume( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + volume=acc_volume, + ) + account_volume = exchange_pb.AggregateAccountVolumeRecord( + account="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + market_volumes=[account_market_volume], + ) + volume = market_pb.VolumeRecord( + maker_volume="3000000000000000000", + taker_volume="4000000000000000000", + ) + market_volume = market_pb.MarketVolume( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + volume=volume, + ) + exchange_servicer.aggregate_volumes_responses.append( + exchange_query_pb.QueryAggregateVolumesResponse( + aggregate_account_volumes=[account_volume], + aggregate_market_volumes=[market_volume], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + volume_response = await api.fetch_aggregate_volumes( + accounts=[account_volume.account], + market_ids=[account_market_volume.market_id], + ) + expected_volume = { + "aggregateAccountVolumes": [ + { + "account": account_volume.account, + "marketVolumes": [ + { + "marketId": account_market_volume.market_id, + "volume": { + "makerVolume": acc_volume.maker_volume, + "takerVolume": acc_volume.taker_volume, + }, + }, + ], + }, + ], + "aggregateMarketVolumes": [ + { + "marketId": market_volume.market_id, + "volume": { + "makerVolume": volume.maker_volume, + "takerVolume": volume.taker_volume, + }, + }, + ], + } + + assert volume_response == expected_volume + + @pytest.mark.asyncio + async def test_fetch_aggregate_market_volume( + self, + exchange_servicer, + ): + volume = market_pb.VolumeRecord( + maker_volume="1000000000000000000", + taker_volume="2000000000000000000", + ) + exchange_servicer.aggregate_market_volume_responses.append( + exchange_query_pb.QueryAggregateMarketVolumeResponse( + volume=volume, + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + volume_response = await api.fetch_aggregate_market_volume( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + ) + expected_volume = { + "volume": { + "makerVolume": volume.maker_volume, + "takerVolume": volume.taker_volume, + } + } + + assert volume_response == expected_volume + + @pytest.mark.asyncio + async def test_fetch_aggregate_market_volumes( + self, + exchange_servicer, + ): + volume = market_pb.VolumeRecord( + maker_volume="3000000000000000000", + taker_volume="4000000000000000000", + ) + market_volume = market_pb.MarketVolume( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + volume=volume, + ) + exchange_servicer.aggregate_market_volumes_responses.append( + exchange_query_pb.QueryAggregateMarketVolumesResponse( + volumes=[market_volume], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + volume_response = await api.fetch_aggregate_market_volumes( + market_ids=[market_volume.market_id], + ) + expected_volume = { + "volumes": [ + { + "marketId": market_volume.market_id, + "volume": { + "makerVolume": volume.maker_volume, + "takerVolume": volume.taker_volume, + }, + }, + ], + } + + assert volume_response == expected_volume + + @pytest.mark.asyncio + async def test_fetch_denom_decimal( + self, + exchange_servicer, + ): + decimal = 18 + exchange_servicer.denom_decimal_responses.append( + exchange_query_pb.QueryDenomDecimalResponse( + decimal=decimal, + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + denom_decimal = await api.fetch_denom_decimal(denom="inj") + expected_decimal = {"decimal": str(decimal)} + + assert denom_decimal == expected_decimal + + @pytest.mark.asyncio + async def test_fetch_denom_decimals( + self, + exchange_servicer, + ): + denom_decimal = exchange_pb.DenomDecimals( + denom="inj", + decimals=18, + ) + exchange_servicer.denom_decimals_responses.append( + exchange_query_pb.QueryDenomDecimalsResponse( + denom_decimals=[denom_decimal], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + denom_decimals = await api.fetch_denom_decimals(denoms=[denom_decimal.denom]) + expected_decimals = { + "denomDecimals": [ + { + "denom": denom_decimal.denom, + "decimals": str(denom_decimal.decimals), + } + ] + } + + assert denom_decimals == expected_decimals + + @pytest.mark.asyncio + async def test_fetch_spot_markets( + self, + exchange_servicer, + ): + market = market_pb.SpotMarket( + ticker="INJ/USDT", + base_denom="inj", + quote_denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + maker_fee_rate="-0.0001", + taker_fee_rate="0.001", + relayer_fee_share_rate="0.4", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + status=1, + min_price_tick_size="0.000000000000001", + min_quantity_tick_size="1000000000000000", + min_notional="5000000000000000000", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + base_decimals=18, + quote_decimals=6, + ) + exchange_servicer.spot_markets_responses.append( + exchange_query_pb.QuerySpotMarketsResponse( + markets=[market], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + status_string = market_pb.MarketStatus.Name(market.status) + markets = await api.fetch_spot_markets( + status=status_string, + market_ids=[market.market_id], + ) + expected_markets = { + "markets": [ + { + "ticker": market.ticker, + "baseDenom": market.base_denom, + "quoteDenom": market.quote_denom, + "makerFeeRate": market.maker_fee_rate, + "takerFeeRate": market.taker_fee_rate, + "relayerFeeShareRate": market.relayer_fee_share_rate, + "marketId": market.market_id, + "status": status_string, + "minPriceTickSize": market.min_price_tick_size, + "minQuantityTickSize": market.min_quantity_tick_size, + "minNotional": market.min_notional, + "admin": market.admin, + "adminPermissions": market.admin_permissions, + "baseDecimals": market.base_decimals, + "quoteDecimals": market.quote_decimals, + } + ] + } + + assert markets == expected_markets + + @pytest.mark.asyncio + async def test_fetch_spot_market( + self, + exchange_servicer, + ): + market = market_pb.SpotMarket( + ticker="INJ/USDT", + base_denom="inj", + quote_denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + maker_fee_rate="-0.0001", + taker_fee_rate="0.001", + relayer_fee_share_rate="0.4", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + status=1, + min_price_tick_size="0.000000000000001", + min_quantity_tick_size="1000000000000000", + min_notional="5000000000000000000", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + base_decimals=18, + quote_decimals=6, + ) + exchange_servicer.spot_market_responses.append( + exchange_query_pb.QuerySpotMarketResponse( + market=market, + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + response_market = await api.fetch_spot_market( + market_id=market.market_id, + ) + expected_market = { + "market": { + "ticker": market.ticker, + "baseDenom": market.base_denom, + "quoteDenom": market.quote_denom, + "makerFeeRate": market.maker_fee_rate, + "takerFeeRate": market.taker_fee_rate, + "relayerFeeShareRate": market.relayer_fee_share_rate, + "marketId": market.market_id, + "status": market_pb.MarketStatus.Name(market.status), + "minPriceTickSize": market.min_price_tick_size, + "minQuantityTickSize": market.min_quantity_tick_size, + "minNotional": market.min_notional, + "admin": market.admin, + "adminPermissions": market.admin_permissions, + "baseDecimals": market.base_decimals, + "quoteDecimals": market.quote_decimals, + } + } + + assert response_market == expected_market + + @pytest.mark.asyncio + async def test_fetch_full_spot_markets( + self, + exchange_servicer, + ): + market = market_pb.SpotMarket( + ticker="INJ/USDT", + base_denom="inj", + quote_denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + maker_fee_rate="-0.0001", + taker_fee_rate="0.001", + relayer_fee_share_rate="0.4", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + status=1, + min_price_tick_size="0.000000000000001", + min_quantity_tick_size="1000000000000000", + min_notional="5000000000000000000", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + base_decimals=18, + quote_decimals=6, + ) + mid_price_and_tob = exchange_pb.MidPriceAndTOB( + mid_price="2000000000000000000", + best_buy_price="1000000000000000000", + best_sell_price="3000000000000000000", + ) + full_market = exchange_query_pb.FullSpotMarket( + market=market, + mid_price_and_tob=mid_price_and_tob, + ) + exchange_servicer.full_spot_markets_responses.append( + exchange_query_pb.QueryFullSpotMarketsResponse( + markets=[full_market], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + status_string = market_pb.MarketStatus.Name(market.status) + markets = await api.fetch_full_spot_markets( + status=status_string, + market_ids=[market.market_id], + with_mid_price_and_tob=True, + ) + expected_markets = { + "markets": [ + { + "market": { + "ticker": market.ticker, + "baseDenom": market.base_denom, + "quoteDenom": market.quote_denom, + "makerFeeRate": market.maker_fee_rate, + "takerFeeRate": market.taker_fee_rate, + "relayerFeeShareRate": market.relayer_fee_share_rate, + "marketId": market.market_id, + "status": status_string, + "minPriceTickSize": market.min_price_tick_size, + "minQuantityTickSize": market.min_quantity_tick_size, + "minNotional": market.min_notional, + "admin": market.admin, + "adminPermissions": market.admin_permissions, + "baseDecimals": market.base_decimals, + "quoteDecimals": market.quote_decimals, + }, + "midPriceAndTob": { + "midPrice": mid_price_and_tob.mid_price, + "bestBuyPrice": mid_price_and_tob.best_buy_price, + "bestSellPrice": mid_price_and_tob.best_sell_price, + }, + } + ] + } + + assert markets == expected_markets + + @pytest.mark.asyncio + async def test_fetch_full_spot_market( + self, + exchange_servicer, + ): + market = market_pb.SpotMarket( + ticker="INJ/USDT", + base_denom="inj", + quote_denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + maker_fee_rate="-0.0001", + taker_fee_rate="0.001", + relayer_fee_share_rate="0.4", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + status=1, + min_price_tick_size="0.000000000000001", + min_quantity_tick_size="1000000000000000", + min_notional="5000000000000000000", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + base_decimals=18, + quote_decimals=6, + ) + mid_price_and_tob = exchange_pb.MidPriceAndTOB( + mid_price="2000000000000000000", + best_buy_price="1000000000000000000", + best_sell_price="3000000000000000000", + ) + full_market = exchange_query_pb.FullSpotMarket( + market=market, + mid_price_and_tob=mid_price_and_tob, + ) + exchange_servicer.full_spot_market_responses.append( + exchange_query_pb.QueryFullSpotMarketResponse( + market=full_market, + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + status_string = market_pb.MarketStatus.Name(market.status) + market_response = await api.fetch_full_spot_market( + market_id=market.market_id, + with_mid_price_and_tob=True, + ) + expected_market = { + "market": { + "market": { + "ticker": market.ticker, + "baseDenom": market.base_denom, + "quoteDenom": market.quote_denom, + "makerFeeRate": market.maker_fee_rate, + "takerFeeRate": market.taker_fee_rate, + "relayerFeeShareRate": market.relayer_fee_share_rate, + "marketId": market.market_id, + "status": status_string, + "minPriceTickSize": market.min_price_tick_size, + "minQuantityTickSize": market.min_quantity_tick_size, + "minNotional": market.min_notional, + "admin": market.admin, + "adminPermissions": market.admin_permissions, + "baseDecimals": market.base_decimals, + "quoteDecimals": market.quote_decimals, + }, + "midPriceAndTob": { + "midPrice": mid_price_and_tob.mid_price, + "bestBuyPrice": mid_price_and_tob.best_buy_price, + "bestSellPrice": mid_price_and_tob.best_sell_price, + }, + } + } + + assert market_response == expected_market + + @pytest.mark.asyncio + async def test_fetch_spot_orderbook( + self, + exchange_servicer, + ): + buy_price_level = exchange_pb.Level( + p="1000000000000000000", + q="1000000000000000", + ) + sell_price_level = exchange_pb.Level( + p="2000000000000000000", + q="2000000000000000", + ) + exchange_servicer.spot_orderbook_responses.append( + exchange_query_pb.QuerySpotOrderbookResponse( + buys_price_level=[buy_price_level], + sells_price_level=[sell_price_level], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orderbook = await api.fetch_spot_orderbook( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + order_side="Side_Unspecified", + limit_cumulative_notional="1000000000000000000", + limit_cumulative_quantity="1000000000000000", + pagination=PaginationOption(limit=100), + ) + expected_orderbook = { + "buysPriceLevel": [ + { + "p": buy_price_level.p, + "q": buy_price_level.q, + } + ], + "sellsPriceLevel": [ + { + "p": sell_price_level.p, + "q": sell_price_level.q, + } + ], + } + + assert orderbook == expected_orderbook + + @pytest.mark.asyncio + async def test_fetch_trader_spot_orders( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedSpotLimitOrder( + price="1000000000000000000", + quantity="1000000000000000", + fillable="1000000000000000", + isBuy=True, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849", + cid="order_cid", + ) + exchange_servicer.trader_spot_orders_responses.append( + exchange_query_pb.QueryTraderSpotOrdersResponse( + orders=[order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_trader_spot_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "fillable": order.fillable, + "isBuy": order.isBuy, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_account_address_spot_orders( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedSpotLimitOrder( + price="1000000000000000000", + quantity="1000000000000000", + fillable="1000000000000000", + isBuy=True, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849", + cid="order_cid", + ) + exchange_servicer.account_address_spot_orders_responses.append( + exchange_query_pb.QueryAccountAddressSpotOrdersResponse( + orders=[order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_account_address_spot_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + account_address="inj1ady3s7whq30l4fx8sj3x6muv5mx4dfdlcpv8n7", + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "fillable": order.fillable, + "isBuy": order.isBuy, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_spot_orders_by_hashes( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedSpotLimitOrder( + price="1000000000000000000", + quantity="1000000000000000", + fillable="1000000000000000", + isBuy=True, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849", + cid="order_cid", + ) + exchange_servicer.spot_orders_by_hashes_responses.append( + exchange_query_pb.QuerySpotOrdersByHashesResponse( + orders=[order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_spot_orders_by_hashes( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + order_hashes=[order.order_hash], + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "fillable": order.fillable, + "isBuy": order.isBuy, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_subaccount_orders( + self, + exchange_servicer, + ): + buy_subaccount_order = exchange_pb.SubaccountOrder( + price="1000000000000000000", + quantity="1000000000000000", + isReduceOnly=False, + cid="buy_cid", + ) + buy_order = exchange_pb.SubaccountOrderData( + order=buy_subaccount_order, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849".encode(), + ) + sell_subaccount_order = exchange_pb.SubaccountOrder( + price="2000000000000000000", + quantity="2000000000000000", + isReduceOnly=False, + cid="sell_cid", + ) + sell_order = exchange_pb.SubaccountOrderData( + order=sell_subaccount_order, + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2".encode(), + ) + exchange_servicer.subaccount_orders_responses.append( + exchange_query_pb.QuerySubaccountOrdersResponse( + buy_orders=[buy_order], + sell_orders=[sell_order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_subaccount_orders( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + expected_orders = { + "buyOrders": [ + { + "order": { + "price": buy_subaccount_order.price, + "quantity": buy_subaccount_order.quantity, + "isReduceOnly": buy_subaccount_order.isReduceOnly, + "cid": buy_subaccount_order.cid, + }, + "orderHash": base64.b64encode(buy_order.order_hash).decode(), + } + ], + "sellOrders": [ + { + "order": { + "price": sell_subaccount_order.price, + "quantity": sell_subaccount_order.quantity, + "isReduceOnly": sell_subaccount_order.isReduceOnly, + "cid": sell_subaccount_order.cid, + }, + "orderHash": base64.b64encode(sell_order.order_hash).decode(), + } + ], + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_trader_spot_transient_orders( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedSpotLimitOrder( + price="1000000000000000000", + quantity="1000000000000000", + fillable="1000000000000000", + isBuy=True, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849", + cid="order_cid", + ) + exchange_servicer.trader_spot_transient_orders_responses.append( + exchange_query_pb.QueryTraderSpotOrdersResponse( + orders=[order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_trader_spot_transient_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "fillable": order.fillable, + "isBuy": order.isBuy, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_spot_mid_price_and_tob( + self, + exchange_servicer, + ): + response = exchange_query_pb.QuerySpotMidPriceAndTOBResponse( + mid_price="2000000000000000000", + best_buy_price="1000000000000000000", + best_sell_price="3000000000000000000", + ) + exchange_servicer.spot_mid_price_and_tob_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + prices = await api.fetch_spot_mid_price_and_tob( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + expected_prices = { + "midPrice": response.mid_price, + "bestBuyPrice": response.best_buy_price, + "bestSellPrice": response.best_sell_price, + } + + assert prices == expected_prices + + @pytest.mark.asyncio + async def test_fetch_derivative_mid_price_and_tob( + self, + exchange_servicer, + ): + response = exchange_query_pb.QueryDerivativeMidPriceAndTOBResponse( + mid_price="2000000000000000000", + best_buy_price="1000000000000000000", + best_sell_price="3000000000000000000", + ) + exchange_servicer.derivative_mid_price_and_tob_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + prices = await api.fetch_derivative_mid_price_and_tob( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + expected_prices = { + "midPrice": response.mid_price, + "bestBuyPrice": response.best_buy_price, + "bestSellPrice": response.best_sell_price, + } + + assert prices == expected_prices + + @pytest.mark.asyncio + async def test_fetch_derivative_orderbook( + self, + exchange_servicer, + ): + buy_price_level = exchange_pb.Level( + p="1000000000000000000", + q="1000000000000000", + ) + sell_price_level = exchange_pb.Level( + p="2000000000000000000", + q="2000000000000000", + ) + exchange_servicer.derivative_orderbook_responses.append( + exchange_query_pb.QueryDerivativeOrderbookResponse( + buys_price_level=[buy_price_level], + sells_price_level=[sell_price_level], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orderbook = await api.fetch_derivative_orderbook( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + limit_cumulative_notional="1000000000000000000", + pagination=PaginationOption(limit=100), + ) + expected_orderbook = { + "buysPriceLevel": [ + { + "p": buy_price_level.p, + "q": buy_price_level.q, + } + ], + "sellsPriceLevel": [ + { + "p": sell_price_level.p, + "q": sell_price_level.q, + } + ], + } + + assert orderbook == expected_orderbook + + @pytest.mark.asyncio + async def test_fetch_trader_derivative_orders( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedDerivativeLimitOrder( + price="1000000000000000000", + quantity="1000000000000000", + margin="1000000000000000000000000000000000", + fillable="1000000000000000", + isBuy=True, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849", + cid="order_cid", + ) + exchange_servicer.trader_derivative_orders_responses.append( + exchange_query_pb.QueryTraderDerivativeOrdersResponse( + orders=[order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_trader_derivative_orders( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "margin": order.margin, + "fillable": order.fillable, + "isBuy": order.isBuy, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_account_address_derivative_orders( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedDerivativeLimitOrder( + price="1000000000000000000", + quantity="1000000000000000", + margin="1000000000000000000000000000000000", + fillable="1000000000000000", + isBuy=True, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849", + cid="order_cid", + ) + exchange_servicer.account_address_derivative_orders_responses.append( + exchange_query_pb.QueryAccountAddressDerivativeOrdersResponse( + orders=[order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_account_address_derivative_orders( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + account_address="inj1ady3s7whq30l4fx8sj3x6muv5mx4dfdlcpv8n7", + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "margin": order.margin, + "fillable": order.fillable, + "isBuy": order.isBuy, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_derivative_orders_by_hashes( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedDerivativeLimitOrder( + price="1000000000000000000", + quantity="1000000000000000", + margin="1000000000000000000000000000000000", + fillable="1000000000000000", + isBuy=True, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849", + cid="order_cid", + ) + exchange_servicer.derivative_orders_by_hashes_responses.append( + exchange_query_pb.QueryDerivativeOrdersByHashesResponse( + orders=[order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_derivative_orders_by_hashes( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + order_hashes=[order.order_hash], + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "margin": order.margin, + "fillable": order.fillable, + "isBuy": order.isBuy, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_trader_derivative_transient_orders( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedDerivativeLimitOrder( + price="1000000000000000000", + quantity="1000000000000000", + margin="1000000000000000000000000000000000", + fillable="1000000000000000", + isBuy=True, + order_hash="0x14e43adbb3302db28bcd0619068227ebca880cdd66cdfc8b4a662bcac0777849", + cid="order_cid", + ) + exchange_servicer.trader_derivative_transient_orders_responses.append( + exchange_query_pb.QueryTraderDerivativeOrdersResponse( + orders=[order], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_trader_derivative_transient_orders( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "margin": order.margin, + "fillable": order.fillable, + "isBuy": order.isBuy, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_derivative_markets( + self, + exchange_servicer, + ): + market = market_pb.DerivativeMarket( + ticker="20250608/USDT", + oracle_base="0x2d9315a88f3019f8efa88dfe9c0f0843712da0bac814461e27733f6b83eb51b3", + oracle_quote="0x1fc18861232290221461220bd4e2acd1dcdfbc89c84092c93c18bdc7756c1588", + oracle_type=9, + oracle_scale_factor=6, + quote_denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + initial_margin_ratio="50000000000000000", + maintenance_margin_ratio="20000000000000000", + maker_fee_rate="-0.0001", + taker_fee_rate="0.001", + relayer_fee_share_rate="400000000000000000", + isPerpetual=True, + status=1, + min_price_tick_size="100000000000000000000", + min_quantity_tick_size="1000000000000000", + min_notional="5000000000000000000", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + quote_decimals=6, + ) + market_info = market_pb.PerpetualMarketInfo( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + hourly_funding_rate_cap="625000000000000", + hourly_interest_rate="4166660000000", + next_funding_timestamp=1708099200, + funding_interval=3600, + ) + funding_info = market_pb.PerpetualMarketFunding( + cumulative_funding="-107853477278881692857461", + cumulative_price="0", + last_timestamp=1708099200, + ) + perpetual_info = exchange_query_pb.PerpetualMarketState( + market_info=market_info, + funding_info=funding_info, + ) + mid_price_and_tob = exchange_pb.MidPriceAndTOB( + mid_price="2000000000000000000", + best_buy_price="1000000000000000000", + best_sell_price="3000000000000000000", + ) + full_market = exchange_query_pb.FullDerivativeMarket( + market=market, + perpetual_info=perpetual_info, + mark_price="33803835513327368963000000", + mid_price_and_tob=mid_price_and_tob, + ) + exchange_servicer.derivative_markets_responses.append( + exchange_query_pb.QueryDerivativeMarketsResponse( + markets=[full_market], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + status_string = market_pb.MarketStatus.Name(market.status) + markets = await api.fetch_derivative_markets( + status=status_string, + market_ids=[market.market_id], + ) + expected_markets = { + "markets": [ + { + "market": { + "ticker": market.ticker, + "oracleBase": market.oracle_base, + "oracleQuote": market.oracle_quote, + "oracleType": oracle_pb.OracleType.Name(market.oracle_type), + "oracleScaleFactor": market.oracle_scale_factor, + "quoteDenom": market.quote_denom, + "marketId": market.market_id, + "initialMarginRatio": market.initial_margin_ratio, + "maintenanceMarginRatio": market.maintenance_margin_ratio, + "makerFeeRate": market.maker_fee_rate, + "takerFeeRate": market.taker_fee_rate, + "relayerFeeShareRate": market.relayer_fee_share_rate, + "isPerpetual": market.isPerpetual, + "status": status_string, + "minPriceTickSize": market.min_price_tick_size, + "minQuantityTickSize": market.min_quantity_tick_size, + "minNotional": market.min_notional, + "admin": market.admin, + "adminPermissions": market.admin_permissions, + "quoteDecimals": market.quote_decimals, + }, + "perpetualInfo": { + "marketInfo": { + "marketId": market_info.market_id, + "hourlyFundingRateCap": market_info.hourly_funding_rate_cap, + "hourlyInterestRate": market_info.hourly_interest_rate, + "nextFundingTimestamp": str(market_info.next_funding_timestamp), + "fundingInterval": str(market_info.funding_interval), + }, + "fundingInfo": { + "cumulativeFunding": funding_info.cumulative_funding, + "cumulativePrice": funding_info.cumulative_price, + "lastTimestamp": str(funding_info.last_timestamp), + }, + }, + "markPrice": full_market.mark_price, + "midPriceAndTob": { + "midPrice": mid_price_and_tob.mid_price, + "bestBuyPrice": mid_price_and_tob.best_buy_price, + "bestSellPrice": mid_price_and_tob.best_sell_price, + }, + } + ] + } + + assert markets == expected_markets + + @pytest.mark.asyncio + async def test_fetch_derivative_market( + self, + exchange_servicer, + ): + market = market_pb.DerivativeMarket( + ticker="INJ/USDT PERP", + oracle_base="0x2d9315a88f3019f8efa88dfe9c0f0843712da0bac814461e27733f6b83eb51b3", + oracle_quote="0x1fc18861232290221461220bd4e2acd1dcdfbc89c84092c93c18bdc7756c1588", + oracle_type=9, + oracle_scale_factor=6, + quote_denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + initial_margin_ratio="50000000000000000", + maintenance_margin_ratio="20000000000000000", + maker_fee_rate="-0.0001", + taker_fee_rate="0.001", + relayer_fee_share_rate="400000000000000000", + isPerpetual=True, + status=1, + min_price_tick_size="100000000000000000000", + min_quantity_tick_size="1000000000000000", + min_notional="5000000000000000000", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + quote_decimals=6, + ) + market_info = market_pb.PerpetualMarketInfo( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + hourly_funding_rate_cap="625000000000000", + hourly_interest_rate="4166660000000", + next_funding_timestamp=1708099200, + funding_interval=3600, + ) + funding_info = market_pb.PerpetualMarketFunding( + cumulative_funding="-107853477278881692857461", + cumulative_price="0", + last_timestamp=1708099200, + ) + perpetual_info = exchange_query_pb.PerpetualMarketState( + market_info=market_info, + funding_info=funding_info, + ) + mid_price_and_tob = exchange_pb.MidPriceAndTOB( + mid_price="2000000000000000000", + best_buy_price="1000000000000000000", + best_sell_price="3000000000000000000", + ) + full_market = exchange_query_pb.FullDerivativeMarket( + market=market, + perpetual_info=perpetual_info, + mark_price="33803835513327368963000000", + mid_price_and_tob=mid_price_and_tob, + ) + exchange_servicer.derivative_market_responses.append( + exchange_query_pb.QueryDerivativeMarketResponse( + market=full_market, + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + status_string = market_pb.MarketStatus.Name(market.status) + market_response = await api.fetch_derivative_market( + market_id=market.market_id, + ) + expected_market = { + "market": { + "market": { + "ticker": market.ticker, + "oracleBase": market.oracle_base, + "oracleQuote": market.oracle_quote, + "oracleType": oracle_pb.OracleType.Name(market.oracle_type), + "oracleScaleFactor": market.oracle_scale_factor, + "quoteDenom": market.quote_denom, + "marketId": market.market_id, + "initialMarginRatio": market.initial_margin_ratio, + "maintenanceMarginRatio": market.maintenance_margin_ratio, + "makerFeeRate": market.maker_fee_rate, + "takerFeeRate": market.taker_fee_rate, + "relayerFeeShareRate": market.relayer_fee_share_rate, + "isPerpetual": market.isPerpetual, + "status": status_string, + "minPriceTickSize": market.min_price_tick_size, + "minQuantityTickSize": market.min_quantity_tick_size, + "minNotional": market.min_notional, + "admin": market.admin, + "adminPermissions": market.admin_permissions, + "quoteDecimals": market.quote_decimals, + }, + "perpetualInfo": { + "marketInfo": { + "marketId": market_info.market_id, + "hourlyFundingRateCap": market_info.hourly_funding_rate_cap, + "hourlyInterestRate": market_info.hourly_interest_rate, + "nextFundingTimestamp": str(market_info.next_funding_timestamp), + "fundingInterval": str(market_info.funding_interval), + }, + "fundingInfo": { + "cumulativeFunding": funding_info.cumulative_funding, + "cumulativePrice": funding_info.cumulative_price, + "lastTimestamp": str(funding_info.last_timestamp), + }, + }, + "markPrice": full_market.mark_price, + "midPriceAndTob": { + "midPrice": mid_price_and_tob.mid_price, + "bestBuyPrice": mid_price_and_tob.best_buy_price, + "bestSellPrice": mid_price_and_tob.best_sell_price, + }, + } + } + + assert market_response == expected_market + + @pytest.mark.asyncio + async def test_fetch_derivative_market_address( + self, + exchange_servicer, + ): + response = exchange_query_pb.QueryDerivativeMarketAddressResponse( + address="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + subaccount_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20000000000000000000000000", + ) + exchange_servicer.derivative_market_address_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + address = await api.fetch_derivative_market_address( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + ) + expected_address = { + "address": response.address, + "subaccountId": response.subaccount_id, + } + + assert address == expected_address + + @pytest.mark.asyncio + async def test_fetch_subaccount_trade_nonce( + self, + exchange_servicer, + ): + response = exchange_query_pb.QuerySubaccountTradeNonceResponse(nonce=1234567879) + exchange_servicer.subaccount_trade_nonce_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + nonce = await api.fetch_subaccount_trade_nonce( + subaccount_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20000000000000000000000000", + ) + expected_nonce = { + "nonce": response.nonce, + } + + assert nonce == expected_nonce + + @pytest.mark.asyncio + async def test_fetch_positions( + self, + exchange_servicer, + ): + position = exchange_pb.Position( + isLong=True, + quantity="1000000000000000", + entry_price="2000000000000000000", + margin="2000000000000000000000000000000000", + cumulative_funding_entry="4000000", + ) + derivative_position = exchange_pb.DerivativePosition( + subaccount_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20000000000000000000000000", + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + position=position, + ) + exchange_servicer.positions_responses.append( + exchange_query_pb.QueryPositionsResponse(state=[derivative_position]) + ) + + api = self._api_instance(servicer=exchange_servicer) + + positions = await api.fetch_positions() + expected_positions = { + "state": [ + { + "subaccountId": derivative_position.subaccount_id, + "marketId": derivative_position.market_id, + "position": { + "isLong": position.isLong, + "quantity": position.quantity, + "entryPrice": position.entry_price, + "margin": position.margin, + "cumulativeFundingEntry": position.cumulative_funding_entry, + }, + }, + ], + } + + assert positions == expected_positions + + @pytest.mark.asyncio + async def test_fetch_subaccount_positions( + self, + exchange_servicer, + ): + position = exchange_pb.Position( + isLong=True, + quantity="1000000000000000", + entry_price="2000000000000000000", + margin="2000000000000000000000000000000000", + cumulative_funding_entry="4000000", + ) + derivative_position = exchange_pb.DerivativePosition( + subaccount_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20000000000000000000000000", + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + position=position, + ) + exchange_servicer.subaccount_positions_responses.append( + exchange_query_pb.QuerySubaccountPositionsResponse(state=[derivative_position]) + ) + + api = self._api_instance(servicer=exchange_servicer) + + positions = await api.fetch_subaccount_positions(subaccount_id=derivative_position.subaccount_id) + expected_positions = { + "state": [ + { + "subaccountId": derivative_position.subaccount_id, + "marketId": derivative_position.market_id, + "position": { + "isLong": position.isLong, + "quantity": position.quantity, + "entryPrice": position.entry_price, + "margin": position.margin, + "cumulativeFundingEntry": position.cumulative_funding_entry, + }, + }, + ], + } + + assert positions == expected_positions + + @pytest.mark.asyncio + async def test_fetch_subaccount_position_in_market( + self, + exchange_servicer, + ): + subaccount_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20000000000000000000000000" + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + position = exchange_pb.Position( + isLong=True, + quantity="1000000000000000", + entry_price="2000000000000000000", + margin="2000000000000000000000000000000000", + cumulative_funding_entry="4000000", + ) + exchange_servicer.subaccount_position_in_market_responses.append( + exchange_query_pb.QuerySubaccountPositionInMarketResponse(state=position) + ) + + api = self._api_instance(servicer=exchange_servicer) + + position_response = await api.fetch_subaccount_position_in_market( + subaccount_id=subaccount_id, + market_id=market_id, + ) + expected_position = { + "state": { + "isLong": position.isLong, + "quantity": position.quantity, + "entryPrice": position.entry_price, + "margin": position.margin, + "cumulativeFundingEntry": position.cumulative_funding_entry, + }, + } + + assert position_response == expected_position + + @pytest.mark.asyncio + async def test_fetch_subaccount_effective_position_in_market( + self, + exchange_servicer, + ): + subaccount_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20000000000000000000000000" + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + + effective_position = exchange_query_pb.EffectivePosition( + is_long=True, + quantity="1000000000000000", + entry_price="2000000000000000000", + effective_margin="2000000000000000000000000000000000", + ) + exchange_servicer.subaccount_effective_position_in_market_responses.append( + exchange_query_pb.QuerySubaccountEffectivePositionInMarketResponse(state=effective_position) + ) + + api = self._api_instance(servicer=exchange_servicer) + + position_response = await api.fetch_subaccount_effective_position_in_market( + subaccount_id=subaccount_id, + market_id=market_id, + ) + expected_position = { + "state": { + "isLong": effective_position.is_long, + "quantity": effective_position.quantity, + "entryPrice": effective_position.entry_price, + "effectiveMargin": effective_position.effective_margin, + }, + } + + assert position_response == expected_position + + @pytest.mark.asyncio + async def test_fetch_perpetual_market_info( + self, + exchange_servicer, + ): + perpetual_market_info = market_pb.PerpetualMarketInfo( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + hourly_funding_rate_cap="625000000000000", + hourly_interest_rate="4166660000000", + next_funding_timestamp=1708099200, + funding_interval=3600, + ) + exchange_servicer.perpetual_market_info_responses.append( + exchange_query_pb.QueryPerpetualMarketInfoResponse(info=perpetual_market_info) + ) + + api = self._api_instance(servicer=exchange_servicer) + + market_info = await api.fetch_perpetual_market_info(market_id=perpetual_market_info.market_id) + expected_market_info = { + "info": { + "marketId": perpetual_market_info.market_id, + "hourlyFundingRateCap": perpetual_market_info.hourly_funding_rate_cap, + "hourlyInterestRate": perpetual_market_info.hourly_interest_rate, + "nextFundingTimestamp": str(perpetual_market_info.next_funding_timestamp), + "fundingInterval": str(perpetual_market_info.funding_interval), + } + } + + assert market_info == expected_market_info + + @pytest.mark.asyncio + async def test_fetch_expiry_futures_market_info( + self, + exchange_servicer, + ): + expiry_futures_market_info = market_pb.ExpiryFuturesMarketInfo( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + expiration_timestamp=1708099200, + twap_start_timestamp=1705566200, + expiration_twap_start_price_cumulative="1000000000000000000", + settlement_price="2000000000000000000", + ) + exchange_servicer.expiry_futures_market_info_responses.append( + exchange_query_pb.QueryExpiryFuturesMarketInfoResponse(info=expiry_futures_market_info) + ) + + api = self._api_instance(servicer=exchange_servicer) + + market_info = await api.fetch_expiry_futures_market_info(market_id=expiry_futures_market_info.market_id) + expected_market_info = { + "info": { + "marketId": expiry_futures_market_info.market_id, + "expirationTimestamp": str(expiry_futures_market_info.expiration_timestamp), + "twapStartTimestamp": str(expiry_futures_market_info.twap_start_timestamp), + "expirationTwapStartPriceCumulative": expiry_futures_market_info.expiration_twap_start_price_cumulative, + "settlementPrice": expiry_futures_market_info.settlement_price, + } + } + + assert market_info == expected_market_info + + @pytest.mark.asyncio + async def test_fetch_perpetual_market_funding( + self, + exchange_servicer, + ): + perpetual_market_funding = market_pb.PerpetualMarketFunding( + cumulative_funding="-107853477278881692857461", + cumulative_price="0", + last_timestamp=1708099200, + ) + exchange_servicer.perpetual_market_funding_responses.append( + exchange_query_pb.QueryPerpetualMarketFundingResponse(state=perpetual_market_funding) + ) + + api = self._api_instance(servicer=exchange_servicer) + + funding = await api.fetch_perpetual_market_funding( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + ) + expected_funding = { + "state": { + "cumulativeFunding": perpetual_market_funding.cumulative_funding, + "cumulativePrice": perpetual_market_funding.cumulative_price, + "lastTimestamp": str(perpetual_market_funding.last_timestamp), + } + } + + assert funding == expected_funding + + @pytest.mark.asyncio + async def test_fetch_subaccount_order_metadata( + self, + exchange_servicer, + ): + metadata = orderbook_pb.SubaccountOrderbookMetadata( + vanilla_limit_order_count=1, + reduce_only_limit_order_count=2, + aggregate_reduce_only_quantity="1000000000000000", + aggregate_vanilla_quantity="2000000000000000", + vanilla_conditional_order_count=3, + reduce_only_conditional_order_count=4, + ) + subaccount_order_metadata = exchange_query_pb.SubaccountOrderbookMetadataWithMarket( + metadata=metadata, + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + isBuy=True, + ) + exchange_servicer.subaccount_order_metadata_responses.append( + exchange_query_pb.QuerySubaccountOrderMetadataResponse(metadata=[subaccount_order_metadata]) + ) + + api = self._api_instance(servicer=exchange_servicer) + + metadata_response = await api.fetch_subaccount_order_metadata( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001" + ) + expected_metadata = { + "metadata": [ + { + "metadata": { + "vanillaLimitOrderCount": metadata.vanilla_limit_order_count, + "reduceOnlyLimitOrderCount": metadata.reduce_only_limit_order_count, + "aggregateReduceOnlyQuantity": metadata.aggregate_reduce_only_quantity, + "aggregateVanillaQuantity": metadata.aggregate_vanilla_quantity, + "vanillaConditionalOrderCount": metadata.vanilla_conditional_order_count, + "reduceOnlyConditionalOrderCount": metadata.reduce_only_conditional_order_count, + }, + "marketId": subaccount_order_metadata.market_id, + "isBuy": subaccount_order_metadata.isBuy, + }, + ] + } + + assert metadata_response == expected_metadata + + @pytest.mark.asyncio + async def test_fetch_trade_reward_points( + self, + exchange_servicer, + ): + points = "40" + response = exchange_query_pb.QueryTradeRewardPointsResponse(account_trade_reward_points=[points]) + exchange_servicer.trade_reward_points_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + trade_reward_points = await api.fetch_trade_reward_points( + accounts=["inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"], + pending_pool_timestamp=1708099200, + ) + expected_trade_reward_points = {"accountTradeRewardPoints": [points]} + + assert trade_reward_points == expected_trade_reward_points + + @pytest.mark.asyncio + async def test_fetch_pending_trade_reward_points( + self, + exchange_servicer, + ): + points = "40" + response = exchange_query_pb.QueryTradeRewardPointsResponse(account_trade_reward_points=[points]) + exchange_servicer.pending_trade_reward_points_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + trade_reward_points = await api.fetch_pending_trade_reward_points( + accounts=["inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"], + pending_pool_timestamp=1708099200, + ) + expected_trade_reward_points = {"accountTradeRewardPoints": [points]} + + assert trade_reward_points == expected_trade_reward_points + + @pytest.mark.asyncio + async def test_fetch_trade_reward_campaign( + self, + exchange_servicer, + ): + spot_market_multiplier = exchange_pb.PointsMultiplier( + maker_points_multiplier="10.0", + taker_points_multiplier="5.0", + ) + derivative_market_multiplier = exchange_pb.PointsMultiplier( + maker_points_multiplier="9.0", + taker_points_multiplier="6.0", + ) + trading_reward_boost_info = exchange_pb.TradingRewardCampaignBoostInfo( + boosted_spot_market_ids=["0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00aaf7"], + spot_market_multipliers=[spot_market_multiplier], + boosted_derivative_market_ids=["0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6"], + derivative_market_multipliers=[derivative_market_multiplier], + ) + trading_reward_campaign_info = exchange_pb.TradingRewardCampaignInfo( + campaign_duration_seconds=3600, + quote_denoms=["peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5"], + trading_reward_boost_info=trading_reward_boost_info, + disqualified_market_ids=["0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00aaf7"], + ) + reward = coin_pb.Coin( + amount="1000000000000000000", + denom="inj", + ) + trading_reward_pool_campaign_schedule = exchange_pb.CampaignRewardPool( + start_timestamp=1708099200, + max_campaign_rewards=[reward], + ) + total_trade_reward_points = "40" + pending_reward = coin_pb.Coin( + amount="2000000000000000000", + denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + ) + pending_trading_reward_pool_campaign_schedule = exchange_pb.CampaignRewardPool( + start_timestamp=1709099200, + max_campaign_rewards=[pending_reward], + ) + pending_total_trade_reward_points = "80" + response = exchange_query_pb.QueryTradeRewardCampaignResponse( + trading_reward_campaign_info=trading_reward_campaign_info, + trading_reward_pool_campaign_schedule=[trading_reward_pool_campaign_schedule], + total_trade_reward_points=total_trade_reward_points, + pending_trading_reward_pool_campaign_schedule=[pending_trading_reward_pool_campaign_schedule], + pending_total_trade_reward_points=[pending_total_trade_reward_points], + ) + exchange_servicer.trade_reward_campaign_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + trade_reward_campaign = await api.fetch_trade_reward_campaign() + expected_campaign = { + "tradingRewardCampaignInfo": { + "campaignDurationSeconds": str(trading_reward_campaign_info.campaign_duration_seconds), + "quoteDenoms": trading_reward_campaign_info.quote_denoms, + "tradingRewardBoostInfo": { + "boostedSpotMarketIds": ( + trading_reward_campaign_info.trading_reward_boost_info.boosted_spot_market_ids + ), + "spotMarketMultipliers": [ + { + "makerPointsMultiplier": spot_market_multiplier.maker_points_multiplier, + "takerPointsMultiplier": spot_market_multiplier.taker_points_multiplier, + }, + ], + "boostedDerivativeMarketIds": ( + trading_reward_campaign_info.trading_reward_boost_info.boosted_derivative_market_ids + ), + "derivativeMarketMultipliers": [ + { + "makerPointsMultiplier": derivative_market_multiplier.maker_points_multiplier, + "takerPointsMultiplier": derivative_market_multiplier.taker_points_multiplier, + }, + ], + }, + "disqualifiedMarketIds": trading_reward_campaign_info.disqualified_market_ids, + }, + "tradingRewardPoolCampaignSchedule": [ + { + "startTimestamp": str(trading_reward_pool_campaign_schedule.start_timestamp), + "maxCampaignRewards": [ + { + "amount": trading_reward_pool_campaign_schedule.max_campaign_rewards[0].amount, + "denom": trading_reward_pool_campaign_schedule.max_campaign_rewards[0].denom, + }, + ], + }, + ], + "totalTradeRewardPoints": total_trade_reward_points, + "pendingTradingRewardPoolCampaignSchedule": [ + { + "startTimestamp": str(pending_trading_reward_pool_campaign_schedule.start_timestamp), + "maxCampaignRewards": [ + { + "amount": pending_trading_reward_pool_campaign_schedule.max_campaign_rewards[0].amount, + "denom": pending_trading_reward_pool_campaign_schedule.max_campaign_rewards[0].denom, + }, + ], + }, + ], + "pendingTotalTradeRewardPoints": [pending_total_trade_reward_points], + } + + assert trade_reward_campaign == expected_campaign + + @pytest.mark.asyncio + async def test_fetch_fee_discount_account_info( + self, + exchange_servicer, + ): + account_info = exchange_pb.FeeDiscountTierInfo( + maker_discount_rate="0.0001", + taker_discount_rate="0.0002", + staked_amount="1000000000", + volume="1000000000000000000", + ) + account_ttl = exchange_pb.FeeDiscountTierTTL( + tier=3, + ttl_timestamp=1708099200, + ) + response = exchange_query_pb.QueryFeeDiscountAccountInfoResponse( + tier_level=3, + account_info=account_info, + account_ttl=account_ttl, + ) + exchange_servicer.fee_discount_account_info_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + fee_discount = await api.fetch_fee_discount_account_info(account="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r") + expected_fee_discount = { + "tierLevel": str(response.tier_level), + "accountInfo": { + "makerDiscountRate": account_info.maker_discount_rate, + "takerDiscountRate": account_info.taker_discount_rate, + "stakedAmount": account_info.staked_amount, + "volume": account_info.volume, + }, + "accountTtl": { + "tier": str(account_ttl.tier), + "ttlTimestamp": str(account_ttl.ttl_timestamp), + }, + } + + assert fee_discount == expected_fee_discount + + @pytest.mark.asyncio + async def test_fetch_fee_discount_schedule( + self, + exchange_servicer, + ): + fee_discount_tier_info = exchange_pb.FeeDiscountTierInfo( + maker_discount_rate="0.0001", + taker_discount_rate="0.0002", + staked_amount="1000000000", + volume="1000000000000000000", + ) + fee_discount_schedule = exchange_pb.FeeDiscountSchedule( + bucket_count=3, + bucket_duration=3600, + quote_denoms=["peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5"], + tier_infos=[fee_discount_tier_info], + disqualified_market_ids=["0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6"], + ) + exchange_servicer.fee_discount_schedule_responses.append( + exchange_query_pb.QueryFeeDiscountScheduleResponse( + fee_discount_schedule=fee_discount_schedule, + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + schedule = await api.fetch_fee_discount_schedule() + expected_schedule = { + "feeDiscountSchedule": { + "bucketCount": str(fee_discount_schedule.bucket_count), + "bucketDuration": str(fee_discount_schedule.bucket_duration), + "quoteDenoms": fee_discount_schedule.quote_denoms, + "tierInfos": [ + { + "makerDiscountRate": fee_discount_tier_info.maker_discount_rate, + "takerDiscountRate": fee_discount_tier_info.taker_discount_rate, + "stakedAmount": fee_discount_tier_info.staked_amount, + "volume": fee_discount_tier_info.volume, + } + ], + "disqualifiedMarketIds": fee_discount_schedule.disqualified_market_ids, + }, + } + + assert schedule == expected_schedule + + @pytest.mark.asyncio + async def test_fetch_balance_mismatches( + self, + exchange_servicer, + ): + balance_mismatch = exchange_query_pb.BalanceMismatch( + subaccountId="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + available="1000000000000000", + total="2000000000000000", + balance_hold="3000000000000000", + expected_total="4000000000000000", + difference="500000000000000", + ) + exchange_servicer.balance_mismatches_responses.append( + exchange_query_pb.QueryBalanceMismatchesResponse( + balance_mismatches=[balance_mismatch], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + mismatches = await api.fetch_balance_mismatches(dust_factor=20) + expected_mismatches = { + "balanceMismatches": [ + { + "subaccountId": balance_mismatch.subaccountId, + "denom": balance_mismatch.denom, + "available": balance_mismatch.available, + "total": balance_mismatch.total, + "balanceHold": balance_mismatch.balance_hold, + "expectedTotal": balance_mismatch.expected_total, + "difference": balance_mismatch.difference, + } + ], + } + + assert mismatches == expected_mismatches + + @pytest.mark.asyncio + async def test_fetch_balance_with_balance_holds( + self, + exchange_servicer, + ): + balance_with_balance_hold = exchange_query_pb.BalanceWithMarginHold( + subaccountId="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + available="1000000000000000", + total="2000000000000000", + balance_hold="3000000000000000", + ) + exchange_servicer.balance_with_balance_holds_responses.append( + exchange_query_pb.QueryBalanceWithBalanceHoldsResponse( + balance_with_balance_holds=[balance_with_balance_hold], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + balance = await api.fetch_balance_with_balance_holds() + expected_balance = { + "balanceWithBalanceHolds": [ + { + "subaccountId": balance_with_balance_hold.subaccountId, + "denom": balance_with_balance_hold.denom, + "available": balance_with_balance_hold.available, + "total": balance_with_balance_hold.total, + "balanceHold": balance_with_balance_hold.balance_hold, + } + ], + } + + assert balance == expected_balance + + @pytest.mark.asyncio + async def test_fetch_fee_discount_tier_statistics( + self, + exchange_servicer, + ): + tier_statistics = exchange_query_pb.TierStatistic( + tier=3, + count=30, + ) + exchange_servicer.fee_discount_tier_statistics_responses.append( + exchange_query_pb.QueryFeeDiscountTierStatisticsResponse( + statistics=[tier_statistics], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + statistics = await api.fetch_fee_discount_tier_statistics() + expected_statistics = { + "statistics": [ + { + "tier": str(tier_statistics.tier), + "count": str(tier_statistics.count), + } + ], + } + + assert statistics == expected_statistics + + @pytest.mark.asyncio + async def test_fetch_mito_vault_infos( + self, + exchange_servicer, + ): + master_address = "inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9" + derivative_address = "inj1zlh5" + spot_address = "inj1zlh6" + cw20_address = "inj1zlh7" + response = exchange_query_pb.MitoVaultInfosResponse( + master_addresses=[master_address], + derivative_addresses=[derivative_address], + spot_addresses=[spot_address], + cw20_addresses=[cw20_address], + ) + exchange_servicer.mito_vault_infos_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + mito_vaults = await api.fetch_mito_vault_infos() + expected_mito_vaults = { + "masterAddresses": [master_address], + "derivativeAddresses": [derivative_address], + "spotAddresses": [spot_address], + "cw20Addresses": [cw20_address], + } + + assert mito_vaults == expected_mito_vaults + + @pytest.mark.asyncio + async def test_fetch_market_id_from_vault( + self, + exchange_servicer, + ): + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + exchange_servicer.market_id_from_vault_responses.append( + exchange_query_pb.QueryMarketIDFromVaultResponse( + market_id=market_id, + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + market_id_response = await api.fetch_market_id_from_vault( + vault_address="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9" + ) + expected_market_id = { + "marketId": market_id, + } + + assert market_id_response == expected_market_id + + @pytest.mark.asyncio + async def test_fetch_historical_trade_records( + self, + exchange_servicer, + ): + latest_trade_record = exchange_pb.TradeRecord( + timestamp=1708099200, + price="2000000000000000000", + quantity="1000000000000000", + ) + trade_record = exchange_pb.TradeRecords( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + latest_trade_records=[latest_trade_record], + ) + exchange_servicer.historical_trade_records_responses.append( + exchange_query_pb.QueryHistoricalTradeRecordsResponse( + trade_records=[trade_record], + ) + ) + + api = self._api_instance(servicer=exchange_servicer) + + records = await api.fetch_historical_trade_records(market_id=trade_record.market_id) + expected_records = { + "tradeRecords": [ + { + "marketId": trade_record.market_id, + "latestTradeRecords": [ + { + "timestamp": str(latest_trade_record.timestamp), + "price": latest_trade_record.price, + "quantity": latest_trade_record.quantity, + } + ], + }, + ], + } + + assert records == expected_records + + @pytest.mark.asyncio + async def test_fetch_is_opted_out_of_rewards( + self, + exchange_servicer, + ): + response = exchange_query_pb.QueryIsOptedOutOfRewardsResponse( + is_opted_out=False, + ) + exchange_servicer.is_opted_out_of_rewards_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + is_opted_out = await api.fetch_is_opted_out_of_rewards(account="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9") + expected_is_opted_out = { + "isOptedOut": response.is_opted_out, + } + + assert is_opted_out == expected_is_opted_out + + @pytest.mark.asyncio + async def test_fetch_opted_out_of_rewards_accounts( + self, + exchange_servicer, + ): + response = exchange_query_pb.QueryOptedOutOfRewardsAccountsResponse( + accounts=["inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9"], + ) + exchange_servicer.opted_out_of_rewards_accounts_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + opted_out = await api.fetch_opted_out_of_rewards_accounts() + expected_opted_out = { + "accounts": response.accounts, + } + + assert opted_out == expected_opted_out + + @pytest.mark.asyncio + async def test_fetch_market_volatility( + self, + exchange_servicer, + ): + history_metadata = oracle_pb.MetadataStatistics( + group_count=2, + records_sample_size=10, + mean="0.0001", + twap="0.0005", + first_timestamp=1702399200, + last_timestamp=1708099200, + min_price="1000000000000", + max_price="3000000000000", + median_price="2000000000000", + ) + trade_record = exchange_pb.TradeRecord( + timestamp=1708099200, + price="2000000000000000000", + quantity="1000000000000000", + ) + response = exchange_query_pb.QueryMarketVolatilityResponse( + volatility="0.0001", history_metadata=history_metadata, raw_history=[trade_record] + ) + exchange_servicer.market_volatility_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + volatility = await api.fetch_market_volatility( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + trade_grouping_sec=0, + max_age=28000000, + include_raw_history=True, + include_metadata=True, + ) + expected_volatility = { + "volatility": response.volatility, + "historyMetadata": { + "groupCount": history_metadata.group_count, + "recordsSampleSize": history_metadata.records_sample_size, + "mean": history_metadata.mean, + "twap": history_metadata.twap, + "firstTimestamp": str(history_metadata.first_timestamp), + "lastTimestamp": str(history_metadata.last_timestamp), + "minPrice": history_metadata.min_price, + "maxPrice": history_metadata.max_price, + "medianPrice": history_metadata.median_price, + }, + "rawHistory": [ + { + "timestamp": str(trade_record.timestamp), + "price": trade_record.price, + "quantity": trade_record.quantity, + } + ], + } + + assert volatility == expected_volatility + + @pytest.mark.asyncio + async def test_fetch_binary_options_markets( + self, + exchange_servicer, + ): + market = market_pb.BinaryOptionsMarket( + ticker="20250608/USDT", + oracle_symbol="0x2d9315a88f3019f8efa88dfe9c0f0843712da0bac814461e27733f6b83eb51b3", + oracle_provider="Pyth", + oracle_type=9, + oracle_scale_factor=6, + expiration_timestamp=1708099200, + settlement_timestamp=1707099200, + admin="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + quote_denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + maker_fee_rate="-0.0001", + taker_fee_rate="0.001", + relayer_fee_share_rate="400000000000000000", + status=1, + min_price_tick_size="100000000000000000000", + min_quantity_tick_size="1000000000000000", + settlement_price="2000000000000000000", + min_notional="5000000000000000000", + admin_permissions=1, + quote_decimals=6, + ) + response = exchange_query_pb.QueryBinaryMarketsResponse( + markets=[market], + ) + exchange_servicer.binary_options_markets_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + markets = await api.fetch_binary_options_markets(status="Active") + expected_markets = { + "markets": [ + { + "ticker": market.ticker, + "oracleSymbol": market.oracle_symbol, + "oracleProvider": market.oracle_provider, + "oracleType": oracle_pb.OracleType.Name(market.oracle_type), + "oracleScaleFactor": market.oracle_scale_factor, + "expirationTimestamp": str(market.expiration_timestamp), + "settlementTimestamp": str(market.settlement_timestamp), + "admin": market.admin, + "quoteDenom": market.quote_denom, + "marketId": market.market_id, + "makerFeeRate": market.maker_fee_rate, + "takerFeeRate": market.taker_fee_rate, + "relayerFeeShareRate": market.relayer_fee_share_rate, + "status": market_pb.MarketStatus.Name(market.status), + "minPriceTickSize": market.min_price_tick_size, + "minQuantityTickSize": market.min_quantity_tick_size, + "settlementPrice": market.settlement_price, + "minNotional": market.min_notional, + "adminPermissions": market.admin_permissions, + "quoteDecimals": market.quote_decimals, + }, + ] + } + + assert markets == expected_markets + + @pytest.mark.asyncio + async def test_fetch_trader_derivative_conditional_orders( + self, + exchange_servicer, + ): + order = exchange_query_pb.TrimmedDerivativeConditionalOrder( + price="2000000000000000000", + quantity="1000000000000000", + margin="2000000000000000000000000000000000", + triggerPrice="3000000000000000000", + isBuy=True, + isLimit=True, + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + cid="order_cid", + ) + response = exchange_query_pb.QueryTraderDerivativeConditionalOrdersResponse(orders=[order]) + exchange_servicer.trader_derivative_conditional_orders_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + orders = await api.fetch_trader_derivative_conditional_orders( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + ) + expected_orders = { + "orders": [ + { + "price": order.price, + "quantity": order.quantity, + "margin": order.margin, + "triggerPrice": order.triggerPrice, + "isBuy": order.isBuy, + "isLimit": order.isLimit, + "orderHash": order.order_hash, + "cid": order.cid, + } + ] + } + + assert orders == expected_orders + + @pytest.mark.asyncio + async def test_fetch_market_atomic_execution_fee_multiplier( + self, + exchange_servicer, + ): + response = exchange_query_pb.QueryMarketAtomicExecutionFeeMultiplierResponse( + multiplier="100", + ) + exchange_servicer.market_atomic_execution_fee_multiplier_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + multiplier = await api.fetch_market_atomic_execution_fee_multiplier( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + ) + expected_multiplier = { + "multiplier": response.multiplier, + } + + assert multiplier == expected_multiplier + + @pytest.mark.asyncio + async def test_fetch_active_stake_grant( + self, + exchange_servicer, + ): + grant = exchange_pb.ActiveGrant( + granter="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + amount="1000000000000000", + ) + effective_grant = exchange_pb.EffectiveGrant( + granter="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + net_granted_stake="2000000000000000", + is_valid=True, + ) + response = exchange_query_pb.QueryActiveStakeGrantResponse( + grant=grant, + effective_grant=effective_grant, + ) + exchange_servicer.active_stake_grant_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + active_grant = await api.fetch_active_stake_grant( + grantee="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + ) + expected_grant = { + "grant": { + "granter": grant.granter, + "amount": grant.amount, + }, + "effectiveGrant": { + "granter": effective_grant.granter, + "netGrantedStake": effective_grant.net_granted_stake, + "isValid": effective_grant.is_valid, + }, + } + + assert active_grant == expected_grant + + @pytest.mark.asyncio + async def test_fetch_grant_authorization( + self, + exchange_servicer, + ): + response = exchange_query_pb.QueryGrantAuthorizationResponse( + amount="1000000000000000", + ) + exchange_servicer.grant_authorization_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + active_grant = await api.fetch_grant_authorization( + granter="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + grantee="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + ) + expected_grant = { + "amount": response.amount, + } + + assert active_grant == expected_grant + + @pytest.mark.asyncio + async def test_fetch_grant_authorizations( + self, + exchange_servicer, + ): + grant = exchange_pb.GrantAuthorization( + grantee="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + amount="1000000000000000", + ) + response = exchange_query_pb.QueryGrantAuthorizationsResponse( + total_grant_amount="1000000000000000", + grants=[grant], + ) + exchange_servicer.grant_authorizations_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + active_grant = await api.fetch_grant_authorizations( + granter="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", + ) + expected_grant = { + "totalGrantAmount": response.total_grant_amount, + "grants": [ + { + "grantee": grant.grantee, + "amount": grant.amount, + }, + ], + } + + assert active_grant == expected_grant + + @pytest.mark.asyncio + async def test_fetch_l3_derivative_orderbook( + self, + exchange_servicer, + ): + bid = exchange_query_pb.TrimmedLimitOrder( + price="2000000000000000000", + quantity="1000000000000000", + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + ask = exchange_query_pb.TrimmedLimitOrder( + price="5000000000000000000", + quantity="3000000000000000", + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abf7", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000002", + ) + response = exchange_query_pb.QueryFullDerivativeOrderbookResponse( + Bids=[bid], + Asks=[ask], + ) + exchange_servicer.l3_derivative_orderbook_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + orderbook = await api.fetch_l3_derivative_orderbook( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + ) + expected_orderbook = { + "Bids": [ + { + "price": bid.price, + "quantity": bid.quantity, + "orderHash": bid.order_hash, + "subaccountId": bid.subaccount_id, + } + ], + "Asks": [ + { + "price": ask.price, + "quantity": ask.quantity, + "orderHash": ask.order_hash, + "subaccountId": ask.subaccount_id, + } + ], + } + + assert orderbook == expected_orderbook + + @pytest.mark.asyncio + async def test_fetch_l3_spot_orderbook( + self, + exchange_servicer, + ): + bid = exchange_query_pb.TrimmedLimitOrder( + price="2000000000000000000", + quantity="1000000000000000", + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + ask = exchange_query_pb.TrimmedLimitOrder( + price="5000000000000000000", + quantity="3000000000000000", + order_hash="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abf7", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000002", + ) + response = exchange_query_pb.QueryFullSpotOrderbookResponse( + Bids=[bid], + Asks=[ask], + ) + exchange_servicer.l3_spot_orderbook_responses.append(response) + + api = self._api_instance(servicer=exchange_servicer) + + orderbook = await api.fetch_l3_spot_orderbook( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + ) + expected_orderbook = { + "Bids": [ + { + "price": bid.price, + "quantity": bid.quantity, + "orderHash": bid.order_hash, + "subaccountId": bid.subaccount_id, + } + ], + "Asks": [ + { + "price": ask.price, + "quantity": ask.quantity, + "orderHash": ask.order_hash, + "subaccountId": ask.subaccount_id, + } + ], + } + + assert orderbook == expected_orderbook + + def _api_instance(self, servicer): + network = Network.devnet() + channel = grpc.aio.insecure_channel(network.grpc_endpoint) + cookie_assistant = DisabledCookieAssistant() + + api = ChainGrpcExchangeV2Api(channel=channel, cookie_assistant=cookie_assistant) + api._stub = servicer + + return api diff --git a/tests/client/chain/stream_grpc/configurable_chain_stream_query_servicer.py b/tests/client/chain/stream_grpc/configurable_chain_stream_query_servicer.py index fe27f667..943b91c0 100644 --- a/tests/client/chain/stream_grpc/configurable_chain_stream_query_servicer.py +++ b/tests/client/chain/stream_grpc/configurable_chain_stream_query_servicer.py @@ -1,13 +1,28 @@ from collections import deque from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_pb, query_pb2_grpc as chain_stream_grpc +from pyinjective.proto.injective.stream.v2 import ( + query_pb2 as chain_stream_v2_pb, + query_pb2_grpc as chain_stream_v2_grpc, +) class ConfigurableChainStreamQueryServicer(chain_stream_grpc.StreamServicer): def __init__(self): super().__init__() self.stream_responses = deque() + self.stream_v2_responses = deque() async def Stream(self, request: chain_stream_pb.StreamRequest, context=None, metadata=None): for event in self.stream_responses: yield event + + +class ConfigurableChainStreamV2QueryServicer(chain_stream_v2_grpc.StreamServicer): + def __init__(self): + super().__init__() + self.stream_responses = deque() + + async def StreamV2(self, request: chain_stream_v2_pb.StreamRequest, context=None, metadata=None): + for event in self.stream_responses: + yield event diff --git a/tests/client/chain/stream_grpc/test_chain_grpc_chain_stream.py b/tests/client/chain/stream_grpc/test_chain_grpc_chain_stream.py index 39513fdc..bbbcad52 100644 --- a/tests/client/chain/stream_grpc/test_chain_grpc_chain_stream.py +++ b/tests/client/chain/stream_grpc/test_chain_grpc_chain_stream.py @@ -9,8 +9,13 @@ from pyinjective.core.network import DisabledCookieAssistant, Network from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as coin_pb from pyinjective.proto.injective.exchange.v1beta1 import exchange_pb2 as exchange_pb +from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as exchange_v2_pb, order_pb2 as order_v2_pb from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_pb -from tests.client.chain.stream_grpc.configurable_chain_stream_query_servicer import ConfigurableChainStreamQueryServicer +from pyinjective.proto.injective.stream.v2 import query_pb2 as chain_stream_v2_pb +from tests.client.chain.stream_grpc.configurable_chain_stream_query_servicer import ( + ConfigurableChainStreamQueryServicer, + ConfigurableChainStreamV2QueryServicer, +) @pytest.fixture @@ -18,11 +23,17 @@ def chain_stream_servicer(): return ConfigurableChainStreamQueryServicer() +@pytest.fixture +def chain_stream_v2_servicer(): + return ConfigurableChainStreamV2QueryServicer() + + class TestChainGrpcChainStream: @pytest.mark.asyncio async def test_stream( self, chain_stream_servicer, + chain_stream_v2_servicer, ): block_height = 19114391 block_time = 1701457189786 @@ -194,7 +205,7 @@ async def test_stream( network = Network.devnet() composer = Composer(network=network.string()) - api = self._api_instance(servicer=chain_stream_servicer) + api = self._api_instance(servicer=chain_stream_servicer, servicer_v2=chain_stream_v2_servicer) events = asyncio.Queue() end_event = asyncio.Event() @@ -405,12 +416,400 @@ async def test_stream( assert first_update == expected_update assert end_event.is_set() - def _api_instance(self, servicer): + @pytest.mark.asyncio + async def test_stream_v2( + self, + chain_stream_servicer, + chain_stream_v2_servicer, + ): + block_height = 19114391 + block_time = 1701457189786 + balance_coin = coin_pb.Coin( + denom="inj", + amount="6941221373191000000000", + ) + bank_balance = chain_stream_v2_pb.BankBalance( + account="inj1qaq7mkvuc474k2nyjm2suwyes06fdm4kt26ks4", + balances=[balance_coin], + ) + deposit = exchange_v2_pb.Deposit( + available_balance="112292968420000000000000", + total_balance="73684013968420000000000000", + ) + subaccount_deposit = chain_stream_v2_pb.SubaccountDeposit( + denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + deposit=deposit, + ) + subaccount_deposits = chain_stream_v2_pb.SubaccountDeposits( + subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000007", + deposits=[subaccount_deposit], + ) + spot_trade = chain_stream_v2_pb.SpotTrade( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + is_buy=False, + executionType="LimitMatchNewOrder", + quantity="70", + price="18.215", + subaccount_id="0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001", + fee="7.6503", + order_hash=b"\xaa\xb0Ju\xa3)@\xfe\xd58N\xba\xdfG\xfd\xd8}\xe4\r\xf4\xf8a\xd9\n\xa9\xd6x+V\x9b\x02&", + fee_recipient_address="inj13ylj40uqx338u5xtccujxystzy39q08q2gz3dx", + cid="HBOTSIJUT60b77b9c56f0456af96c5c6c0d8", + trade_id=f"{block_height}_0", + ) + position_delta = exchange_v2_pb.PositionDelta( + is_long=True, + execution_quantity="5", + execution_price="13.9456", + execution_margin="69.728", + ) + derivative_trade = chain_stream_v2_pb.DerivativeTrade( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + is_buy=False, + executionType="LimitMatchNewOrder", + subaccount_id="0xc7dca7c15c364865f77a4fb67ab11dc95502e6fe000000000000000000000001", + position_delta=position_delta, + payout="0", + fee="7.6503", + order_hash="0xe549e4750287c93fcc8dec24f319c15025e07e89a8d0937be2b3865ed79d9da7", + fee_recipient_address="inj1clw20s2uxeyxtam6f7m84vgae92s9eh7vygagt", + cid="cid1", + trade_id=f"{block_height}_1", + ) + spot_order_info = order_v2_pb.OrderInfo( + subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000004", + fee_recipient="inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy", + price="18.775", + quantity="54.606542", + cid="cid2", + ) + spot_limit_order = order_v2_pb.SpotLimitOrder( + order_info=spot_order_info, + order_type=order_v2_pb.OrderType.SELL_PO, + fillable="54.606542", + trigger_price="", + order_hash=( + b"\xf9\xc7\xd8v8\x84-\x9b\x99s\xf5\xdfX\xc9\xf9V\x9a\xf7\xf9\xc3\xa1\x00h\t\xc17<\xd1k\x9d\x12\xed" + ), + ) + spot_order = chain_stream_v2_pb.SpotOrder( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + order=spot_limit_order, + ) + spot_order_update = chain_stream_v2_pb.SpotOrderUpdate( + status="Booked", + order_hash=( + b"\xf9\xc7\xd8v8\x84-\x9b\x99s\xf5\xdfX\xc9\xf9V\x9a\xf7\xf9\xc3\xa1\x00h\t\xc17<\xd1k\x9d\x12\xed" + ), + cid="cid2", + order=spot_order, + ) + derivative_order_info = order_v2_pb.OrderInfo( + subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000004", + fee_recipient="inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy", + price="18.775", + quantity="54.606542", + cid="cid2", + ) + derivative_limit_order = order_v2_pb.DerivativeLimitOrder( + order_info=derivative_order_info, + order_type=order_v2_pb.OrderType.SELL_PO, + margin="546.06542", + fillable="54.606542", + trigger_price="", + order_hash=b"\x03\xc9\xf8G*Q-G%\xf1\xbcF3\xe89g\xbe\xeag\xd8Y\x7f\x87\x8a\xa5\xac\x8ew\x8a\x91\xa2F", + ) + derivative_order = chain_stream_v2_pb.DerivativeOrder( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + order=derivative_limit_order, + is_market=False, + ) + derivative_order_update = chain_stream_v2_pb.DerivativeOrderUpdate( + status="Booked", + order_hash=b"\x03\xc9\xf8G*Q-G%\xf1\xbcF3\xe89g\xbe\xeag\xd8Y\x7f\x87\x8a\xa5\xac\x8ew\x8a\x91\xa2F", + cid="cid3", + order=derivative_order, + ) + spot_buy_level = exchange_v2_pb.Level(p="17.28", q="445577.34") + spot_sell_level = exchange_v2_pb.Level( + p="18.207", + q="221963.95", + ) + spot_orderbook = chain_stream_v2_pb.Orderbook( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + buy_levels=[spot_buy_level], + sell_levels=[spot_sell_level], + ) + spot_orderbook_update = chain_stream_v2_pb.OrderbookUpdate( + seq=6645013, + orderbook=spot_orderbook, + ) + derivative_buy_level = exchange_v2_pb.Level(p="17.28", q="445577.34") + derivative_sell_level = exchange_v2_pb.Level( + p="18.207", + q="221963.95", + ) + derivative_orderbook = chain_stream_v2_pb.Orderbook( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + buy_levels=[derivative_buy_level], + sell_levels=[derivative_sell_level], + ) + derivative_orderbook_update = chain_stream_v2_pb.OrderbookUpdate( + seq=6645013, + orderbook=derivative_orderbook, + ) + position = chain_stream_v2_pb.Position( + market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", + subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000004", + isLong=True, + quantity="221.96395", + entry_price="18.207", + margin="2219.6395", + cumulative_funding_entry="0", + ) + oracle_price = chain_stream_v2_pb.OraclePrice( + symbol="0x41f3625971ca2ed2263e78573fe5ce23e13d2558ed3f2e47ab0f84fb9e7ae722", + price="99.991086", + type="pyth", + ) + + chain_stream_v2_servicer.stream_responses.append( + chain_stream_v2_pb.StreamResponse( + block_height=block_height, + block_time=block_time, + bank_balances=[bank_balance], + subaccount_deposits=[subaccount_deposits], + spot_trades=[spot_trade], + derivative_trades=[derivative_trade], + spot_orders=[spot_order_update], + derivative_orders=[derivative_order_update], + spot_orderbook_updates=[spot_orderbook_update], + derivative_orderbook_updates=[derivative_orderbook_update], + positions=[position], + oracle_prices=[oracle_price], + ) + ) + + network = Network.devnet() + composer = Composer(network=network.string()) + api = self._api_instance(servicer=chain_stream_servicer, servicer_v2=chain_stream_v2_servicer) + + events = asyncio.Queue() + end_event = asyncio.Event() + + callback = lambda update: events.put_nowait(update) + error_callback = lambda exception: pytest.fail(str(exception)) + end_callback = lambda: end_event.set() + + bank_balances_filter = composer.chain_stream_bank_balances_v2_filter() + subaccount_deposits_filter = composer.chain_stream_subaccount_deposits_v2_filter() + spot_trades_filter = composer.chain_stream_trades_v2_filter() + derivative_trades_filter = composer.chain_stream_trades_v2_filter() + spot_orders_filter = composer.chain_stream_orders_v2_filter() + derivative_orders_filter = composer.chain_stream_orders_v2_filter() + spot_orderbooks_filter = composer.chain_stream_orderbooks_v2_filter() + derivative_orderbooks_filter = composer.chain_stream_orderbooks_v2_filter() + positions_filter = composer.chain_stream_positions_v2_filter() + oracle_price_filter = composer.chain_stream_oracle_price_v2_filter() + + expected_update = { + "blockHeight": str(block_height), + "blockTime": str(block_time), + "bankBalances": [ + { + "account": bank_balance.account, + "balances": [ + { + "denom": balance_coin.denom, + "amount": balance_coin.amount, + } + ], + }, + ], + "subaccountDeposits": [ + { + "subaccountId": subaccount_deposits.subaccount_id, + "deposits": [ + { + "denom": subaccount_deposit.denom, + "deposit": { + "availableBalance": deposit.available_balance, + "totalBalance": deposit.total_balance, + }, + } + ], + } + ], + "spotTrades": [ + { + "marketId": spot_trade.market_id, + "isBuy": spot_trade.is_buy, + "executionType": spot_trade.executionType, + "quantity": spot_trade.quantity, + "price": spot_trade.price, + "subaccountId": spot_trade.subaccount_id, + "fee": spot_trade.fee, + "orderHash": base64.b64encode(spot_trade.order_hash).decode(), + "feeRecipientAddress": spot_trade.fee_recipient_address, + "cid": spot_trade.cid, + "tradeId": spot_trade.trade_id, + }, + ], + "derivativeTrades": [ + { + "marketId": derivative_trade.market_id, + "isBuy": derivative_trade.is_buy, + "executionType": derivative_trade.executionType, + "subaccountId": derivative_trade.subaccount_id, + "positionDelta": { + "isLong": position_delta.is_long, + "executionMargin": position_delta.execution_margin, + "executionQuantity": position_delta.execution_quantity, + "executionPrice": position_delta.execution_price, + }, + "payout": derivative_trade.payout, + "fee": derivative_trade.fee, + "orderHash": derivative_trade.order_hash, + "feeRecipientAddress": derivative_trade.fee_recipient_address, + "cid": derivative_trade.cid, + "tradeId": derivative_trade.trade_id, + } + ], + "spotOrders": [ + { + "status": "Booked", + "orderHash": base64.b64encode(spot_order_update.order_hash).decode(), + "cid": spot_order_update.cid, + "order": { + "marketId": spot_order.market_id, + "order": { + "orderInfo": { + "subaccountId": spot_order_info.subaccount_id, + "feeRecipient": spot_order_info.fee_recipient, + "price": spot_order_info.price, + "quantity": spot_order_info.quantity, + "cid": spot_order_info.cid, + }, + "orderType": "SELL_PO", + "fillable": spot_limit_order.fillable, + "triggerPrice": spot_limit_order.trigger_price, + "orderHash": base64.b64encode(spot_limit_order.order_hash).decode(), + }, + }, + }, + ], + "derivativeOrders": [ + { + "status": "Booked", + "orderHash": base64.b64encode(derivative_order_update.order_hash).decode(), + "cid": derivative_order_update.cid, + "order": { + "marketId": derivative_order.market_id, + "order": { + "orderInfo": { + "subaccountId": derivative_order_info.subaccount_id, + "feeRecipient": derivative_order_info.fee_recipient, + "price": derivative_order_info.price, + "quantity": derivative_order_info.quantity, + "cid": derivative_order_info.cid, + }, + "orderType": "SELL_PO", + "margin": derivative_limit_order.margin, + "fillable": derivative_limit_order.fillable, + "triggerPrice": derivative_limit_order.trigger_price, + "orderHash": base64.b64encode(derivative_limit_order.order_hash).decode(), + }, + "isMarket": derivative_order.is_market, + }, + }, + ], + "spotOrderbookUpdates": [ + { + "seq": str(spot_orderbook_update.seq), + "orderbook": { + "marketId": spot_orderbook.market_id, + "buyLevels": [ + { + "p": spot_buy_level.p, + "q": spot_buy_level.q, + }, + ], + "sellLevels": [ + {"p": spot_sell_level.p, "q": spot_sell_level.q}, + ], + }, + }, + ], + "derivativeOrderbookUpdates": [ + { + "seq": str(derivative_orderbook_update.seq), + "orderbook": { + "marketId": derivative_orderbook.market_id, + "buyLevels": [ + { + "p": derivative_buy_level.p, + "q": derivative_buy_level.q, + }, + ], + "sellLevels": [ + { + "p": derivative_sell_level.p, + "q": derivative_sell_level.q, + }, + ], + }, + }, + ], + "positions": [ + { + "marketId": position.market_id, + "subaccountId": position.subaccount_id, + "isLong": position.isLong, + "quantity": position.quantity, + "entryPrice": position.entry_price, + "margin": position.margin, + "cumulativeFundingEntry": position.cumulative_funding_entry, + } + ], + "oraclePrices": [ + { + "symbol": oracle_price.symbol, + "price": oracle_price.price, + "type": oracle_price.type, + }, + ], + } + + asyncio.get_event_loop().create_task( + api.stream_v2( + callback=callback, + on_end_callback=end_callback, + on_status_callback=error_callback, + bank_balances_filter=bank_balances_filter, + subaccount_deposits_filter=subaccount_deposits_filter, + spot_trades_filter=spot_trades_filter, + derivative_trades_filter=derivative_trades_filter, + spot_orders_filter=spot_orders_filter, + derivative_orders_filter=derivative_orders_filter, + spot_orderbooks_filter=spot_orderbooks_filter, + derivative_orderbooks_filter=derivative_orderbooks_filter, + positions_filter=positions_filter, + oracle_price_filter=oracle_price_filter, + ) + ) + + first_update = await asyncio.wait_for(events.get(), timeout=1) + + assert first_update == expected_update + assert end_event.is_set() + + def _api_instance(self, servicer, servicer_v2): network = Network.devnet() channel = grpc.aio.insecure_channel(network.grpc_endpoint) cookie_assistant = DisabledCookieAssistant() api = ChainGrpcChainStream(channel=channel, cookie_assistant=cookie_assistant) api._stub = servicer + api._stub_v2 = servicer_v2 return api diff --git a/tests/core/test_gas_limit_estimator.py b/tests/core/test_gas_limit_estimator.py index 09f50a77..c3cff5ef 100644 --- a/tests/core/test_gas_limit_estimator.py +++ b/tests/core/test_gas_limit_estimator.py @@ -24,7 +24,7 @@ class TestGasLimitEstimator: def test_estimation_for_message_without_applying_rule(self): composer = Composer(network="testnet") - message = composer.MsgSend(from_address="from_address", to_address="to_address", amount=1, denom="INJ") + message = composer.msg_send(from_address="from_address", to_address="to_address", amount=1, denom="inj") estimator = GasLimitEstimator.for_message(message=message) @@ -32,6 +32,45 @@ def test_estimation_for_message_without_applying_rule(self): assert expected_message_gas_limit == estimator.gas_limit() + def test_estimation_for_privileged_execute_contract_message(self): + message = injective_exchange_tx_pb.MsgPrivilegedExecuteContract() + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_limit = 900_000 + + assert expected_gas_limit == estimator.gas_limit() + + def test_estimation_for_execute_contract_message(self): + composer = Composer(network="testnet") + message = composer.MsgExecuteContract( + sender="", + contract="", + msg="", + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_limit = 375_000 + + assert expected_gas_limit == estimator.gas_limit() + + def test_estimation_for_wasm_message(self): + message = wasm_tx_pb.MsgInstantiateContract2() + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_limit = 225_000 + + assert expected_gas_limit == estimator.gas_limit() + + def test_estimation_for_governance_message(self): + message = gov_tx_pb.MsgDeposit() + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_limit = 2_250_000 + + assert expected_gas_limit == estimator.gas_limit() + + +class TestGasLimitEstimatorForV1ExchangeMessages: def test_estimation_for_batch_create_spot_limit_orders(self): spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" composer = Composer(network="testnet") @@ -65,17 +104,17 @@ def test_estimation_for_batch_cancel_spot_orders(self): spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" composer = Composer(network="testnet") orders = [ - composer.order_data( + composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data( + composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data( + composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", @@ -124,17 +163,17 @@ def test_estimation_for_batch_cancel_derivative_orders(self): spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" composer = Composer(network="testnet") orders = [ - composer.order_data( + composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data( + composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data( + composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", @@ -281,17 +320,17 @@ def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self): market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" composer = Composer(network="testnet") orders = [ - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", @@ -315,17 +354,17 @@ def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self): market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" composer = Composer(network="testnet") orders = [ - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", @@ -349,17 +388,17 @@ def test_estimation_for_batch_update_orders_to_cancel_binary_orders(self): market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" composer = Composer(network="testnet") orders = [ - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data( + composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", @@ -473,46 +512,469 @@ def test_estimation_for_exec_message(self): == estimator.gas_limit() ) - def test_estimation_for_privileged_execute_contract_message(self): - message = injective_exchange_tx_pb.MsgPrivilegedExecuteContract() + def test_estimation_for_generic_exchange_message(self): + composer = Composer(network="testnet") + message = composer.msg_create_spot_limit_order( + sender="sender", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + order_type="BUY", + ) estimator = GasLimitEstimator.for_message(message=message) - expected_gas_limit = 900_000 + expected_gas_limit = 120_000 assert expected_gas_limit == estimator.gas_limit() - def test_estimation_for_execute_contract_message(self): + +class TestGasLimitEstimatorForV2ExchangeMessages: + def test_estimation_for_batch_create_spot_limit_orders(self): + spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" composer = Composer(network="testnet") - message = composer.MsgExecuteContract( - sender="", - contract="", - msg="", + orders = [ + composer.create_v2_spot_order( + market_id=spot_market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("5"), + quantity=Decimal("1"), + order_type="BUY", + ), + composer.create_v2_spot_order( + market_id=spot_market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("4"), + quantity=Decimal("1"), + order_type="BUY", + ), + ] + message = composer.msg_batch_create_spot_limit_orders_v2(sender="sender", orders=orders) + estimator = GasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + expected_message_gas_limit = BatchCreateSpotLimitOrdersGasLimitEstimator.GENERAL_MESSAGE_GAS_LIMIT + + assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_cancel_spot_orders(self): + spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_order_data_without_mask( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.create_v2_order_data_without_mask( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.create_v2_order_data_without_mask( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_cancel_spot_orders_v2(sender="sender", orders_data=orders) + estimator = GasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CANCELATION_GAS_LIMIT + expected_message_gas_limit = BatchCancelSpotOrdersGasLimitEstimator.GENERAL_MESSAGE_GAS_LIMIT + + assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_create_derivative_limit_orders(self): + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_derivative_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal(3), + quantity=Decimal(1), + margin=Decimal(3), + order_type="BUY", + ), + composer.create_v2_derivative_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal(20), + quantity=Decimal(1), + margin=Decimal(20), + order_type="SELL", + ), + ] + message = composer.msg_batch_create_derivative_limit_orders_v2(sender="sender", orders=orders) + estimator = GasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + expected_message_gas_limit = BatchCreateDerivativeLimitOrdersGasLimitEstimator.GENERAL_MESSAGE_GAS_LIMIT + + assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_cancel_derivative_orders(self): + spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_order_data_without_mask( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.create_v2_order_data_without_mask( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.create_v2_order_data_without_mask( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_cancel_derivative_orders_v2(sender="sender", orders_data=orders) + estimator = GasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + expected_message_gas_limit = BatchCancelDerivativeOrdersGasLimitEstimator.GENERAL_MESSAGE_GAS_LIMIT + + assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_create_spot_orders(self): + market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_spot_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("5"), + quantity=Decimal("1"), + order_type="BUY", + ), + composer.create_v2_spot_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("4"), + quantity=Decimal("1"), + order_type="BUY", + ), + ] + message = composer.msg_batch_update_orders_v2( + sender="senders", + derivative_orders_to_create=[], + spot_orders_to_create=orders, + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], ) estimator = GasLimitEstimator.for_message(message=message) - expected_gas_limit = 375_000 + expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert expected_gas_limit == estimator.gas_limit() + assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_wasm_message(self): - message = wasm_tx_pb.MsgInstantiateContract2() + def test_estimation_for_batch_update_orders_to_create_derivative_orders(self): + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_derivative_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal(3), + quantity=Decimal(1), + margin=Decimal(3), + order_type="BUY", + ), + composer.create_v2_derivative_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal(20), + quantity=Decimal(1), + margin=Decimal(20), + order_type="SELL", + ), + ] + message = composer.msg_batch_update_orders_v2( + sender="senders", + derivative_orders_to_create=orders, + spot_orders_to_create=[], + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], + ) estimator = GasLimitEstimator.for_message(message=message) - expected_gas_limit = 225_000 + expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert expected_gas_limit == estimator.gas_limit() + assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_governance_message(self): - message = gov_tx_pb.MsgDeposit() + def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_token): + market_id = "0x230dcce315364ff6360097838701b14713e2f4007d704df20ed3d81d09eec957" + composer = Composer(network="testnet") + market = BinaryOptionMarket( + id=market_id, + status="active", + ticker="5fdbe0b1-1707800399-WAS", + oracle_symbol="Frontrunner", + oracle_provider="Frontrunner", + oracle_type="provider", + oracle_scale_factor=6, + expiration_timestamp=1707800399, + settlement_timestamp=1707843599, + quote_token=usdt_token, + maker_fee_rate=Decimal("0"), + taker_fee_rate=Decimal("0"), + service_provider_fee=Decimal("0.4"), + min_price_tick_size=Decimal("10000"), + min_quantity_tick_size=Decimal("1"), + min_notional=Decimal(0), + ) + composer.binary_option_markets[market.id] = market + orders = [ + composer.create_v2_binary_options_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal(3), + quantity=Decimal(1), + margin=Decimal(3), + order_type="BUY", + ), + composer.create_v2_binary_options_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal(20), + quantity=Decimal(1), + margin=Decimal(20), + order_type="SELL", + ), + ] + message = composer.msg_batch_update_orders_v2( + sender="senders", + derivative_orders_to_create=[], + spot_orders_to_create=[], + binary_options_orders_to_create=orders, + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], + ) estimator = GasLimitEstimator.for_message(message=message) - expected_gas_limit = 2_250_000 + expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert expected_gas_limit == estimator.gas_limit() + assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self): + market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_update_orders_v2( + sender="senders", + derivative_orders_to_create=[], + spot_orders_to_create=[], + derivative_orders_to_cancel=[], + spot_orders_to_cancel=orders, + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CANCELATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + + assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self): + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_update_orders_v2( + sender="senders", + derivative_orders_to_create=[], + spot_orders_to_create=[], + derivative_orders_to_cancel=orders, + spot_orders_to_cancel=[], + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + + assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_binary_orders(self): + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.create_v2_order_data_without_mask( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_update_orders_v2( + sender="senders", + derivative_orders_to_create=[], + spot_orders_to_create=[], + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], + binary_options_orders_to_cancel=orders, + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + + assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_all_for_spot_market(self): + market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + + message = composer.msg_batch_update_orders_v2( + sender="senders", + subaccount_id="subaccount_id", + spot_market_ids_to_cancel_all=[market_id], + derivative_orders_to_create=[], + spot_orders_to_create=[], + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_limit = BatchUpdateOrdersGasLimitEstimator.CANCEL_ALL_SPOT_MARKET_GAS_LIMIT * 20 + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + + assert expected_gas_limit + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_all_for_derivative_market(self): + market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + + message = composer.msg_batch_update_orders_v2( + sender="senders", + subaccount_id="subaccount_id", + derivative_market_ids_to_cancel_all=[market_id], + derivative_orders_to_create=[], + spot_orders_to_create=[], + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_limit = BatchUpdateOrdersGasLimitEstimator.CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT * 20 + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + + assert expected_gas_limit + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_all_for_binary_options_market(self): + market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + + message = composer.msg_batch_update_orders_v2( + sender="senders", + subaccount_id="subaccount_id", + binary_options_market_ids_to_cancel_all=[market_id], + derivative_orders_to_create=[], + spot_orders_to_create=[], + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_limit = BatchUpdateOrdersGasLimitEstimator.CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT * 20 + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + + assert expected_gas_limit + expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_exec_message(self): + market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + orders = [ + composer.create_v2_spot_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("5"), + quantity=Decimal("1"), + order_type="BUY", + ), + ] + inner_message = composer.msg_batch_update_orders_v2( + sender="senders", + derivative_orders_to_create=[], + spot_orders_to_create=orders, + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], + ) + message = composer.MsgExec(grantee="grantee", msgs=[inner_message]) + + estimator = GasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + expected_inner_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + expected_exec_message_gas_limit = ExecGasLimitEstimator.DEFAULT_GAS_LIMIT + + assert ( + expected_order_gas_limit + expected_inner_message_gas_limit + expected_exec_message_gas_limit + == estimator.gas_limit() + ) def test_estimation_for_generic_exchange_message(self): composer = Composer(network="testnet") - message = composer.msg_create_spot_limit_order( + message = composer.msg_create_spot_limit_order_v2( sender="sender", market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", subaccount_id="subaccount_id", diff --git a/tests/core/test_message_based_transaction_fee_calculator.py b/tests/core/test_message_based_transaction_fee_calculator.py index 5c26f06c..d46d6bee 100644 --- a/tests/core/test_message_based_transaction_fee_calculator.py +++ b/tests/core/test_message_based_transaction_fee_calculator.py @@ -125,7 +125,7 @@ async def test_gas_fee_for_exchange_message(self): gas_price=5_000_000, ) - message = composer.msg_create_spot_limit_order( + message = composer.msg_create_spot_limit_order_v2( sender="sender", market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", subaccount_id="subaccount_id", @@ -155,7 +155,7 @@ async def test_gas_fee_for_msg_exec_message(self): gas_price=5_000_000, ) - inner_message = composer.msg_create_spot_limit_order( + inner_message = composer.msg_create_spot_limit_order_v2( sender="sender", market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", subaccount_id="subaccount_id", @@ -190,7 +190,7 @@ async def test_gas_fee_for_two_messages_in_one_transaction(self): gas_price=5_000_000, ) - inner_message = composer.msg_create_spot_limit_order( + inner_message = composer.msg_create_spot_limit_order_v2( sender="sender", market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", subaccount_id="subaccount_id", @@ -201,7 +201,7 @@ async def test_gas_fee_for_two_messages_in_one_transaction(self): ) message = composer.MsgExec(grantee="grantee", msgs=[inner_message]) - send_message = composer.MsgSend(from_address="address", to_address="to_address", amount=1, denom="INJ") + send_message = composer.msg_send(from_address="address", to_address="to_address", amount=1, denom="INJ") transaction = Transaction() transaction.with_messages(message, send_message) diff --git a/tests/test_async_client_deprecation_warnings.py b/tests/test_async_client_deprecation_warnings.py new file mode 100644 index 00000000..425a60b9 --- /dev/null +++ b/tests/test_async_client_deprecation_warnings.py @@ -0,0 +1,985 @@ +from warnings import catch_warnings + +import pytest + +from pyinjective.async_client import AsyncClient +from pyinjective.core.network import Network +from pyinjective.proto.injective.exchange.v1beta1 import query_pb2 as exchange_query_pb +from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_pb +from tests.client.chain.grpc.configurable_exchange_query_servicer import ConfigurableExchangeQueryServicer +from tests.client.chain.stream_grpc.configurable_chain_stream_query_servicer import ConfigurableChainStreamQueryServicer + + +@pytest.fixture +def chain_stream_servicer(): + return ConfigurableChainStreamQueryServicer() + + +@pytest.fixture +def exchange_servicer(): + return ConfigurableExchangeQueryServicer() + + +class TestAsyncClientDeprecationWarnings: + @pytest.mark.asyncio + async def test_listen_chain_stream_updates_deprecation_warning( + self, + chain_stream_servicer, + ): + async def callback(event): + pass + + client = AsyncClient( + network=Network.local(), + ) + client.chain_stream_api._stub = chain_stream_servicer + chain_stream_servicer.stream_responses.append(chain_stream_pb.StreamResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.listen_chain_stream_updates(callback=callback) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use listen_chain_stream_v2_updates instead" + ) + + @pytest.mark.asyncio + async def test_fetch_aggregate_volume_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.aggregate_volume_responses.append(exchange_query_pb.QueryAggregateVolumeResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_aggregate_volume( + account="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_aggregate_volume_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_aggregate_volumes_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.aggregate_volumes_responses.append(exchange_query_pb.QueryAggregateVolumesResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_aggregate_volumes( + accounts=["inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"], + market_ids=["0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe"], + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_aggregate_volumes_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_aggregate_market_volume_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.aggregate_market_volume_responses.append( + exchange_query_pb.QueryAggregateMarketVolumeResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_aggregate_market_volume( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_aggregate_market_volume_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_aggregate_market_volumes_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.aggregate_market_volumes_responses.append( + exchange_query_pb.QueryAggregateMarketVolumesResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_aggregate_market_volumes( + market_ids=["0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe"], + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_aggregate_market_volumes_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_spot_markets_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.spot_markets_responses.append(exchange_query_pb.QuerySpotMarketsResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_spot_markets() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_chain_spot_markets_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_spot_market_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.spot_market_responses.append(exchange_query_pb.QuerySpotMarketResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_spot_market( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_chain_spot_market_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_full_spot_markets_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.full_spot_markets_responses.append(exchange_query_pb.QueryFullSpotMarketsResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_full_spot_markets() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_full_spot_markets_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_full_spot_markets_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.full_spot_market_responses.append(exchange_query_pb.QueryFullSpotMarketResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_full_spot_market( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_full_spot_market_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_spot_orderbook_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.spot_orderbook_responses.append(exchange_query_pb.QuerySpotOrderbookResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_spot_orderbook( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_spot_orderbook_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_trader_spot_orders_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.trader_spot_orders_responses.append(exchange_query_pb.QueryTraderSpotOrdersResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_trader_spot_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_trader_spot_orders_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_account_address_spot_orders_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.account_address_spot_orders_responses.append( + exchange_query_pb.QueryAccountAddressSpotOrdersResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_account_address_spot_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + account_address="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_account_address_spot_orders_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_spot_orders_by_hashes_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.spot_orders_by_hashes_responses.append(exchange_query_pb.QuerySpotOrdersByHashesResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_spot_orders_by_hashes( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + order_hashes=["0x57a01cd26f1e2080860af3264e865d7c9c034a701e30946d01c1dc7a303cf2c1"], + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_spot_orders_by_hashes_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_subaccount_orders_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.subaccount_orders_responses.append(exchange_query_pb.QuerySubaccountOrdersResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_subaccount_orders( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_subaccount_orders_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_trader_spot_transient_orders_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.trader_spot_transient_orders_responses.append( + exchange_query_pb.QueryTraderSpotOrdersResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_trader_spot_transient_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_trader_spot_transient_orders_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_spot_mid_price_and_tob_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.spot_mid_price_and_tob_responses.append(exchange_query_pb.QuerySpotMidPriceAndTOBResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_spot_mid_price_and_tob( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_spot_mid_price_and_tob_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_derivative_mid_price_and_tob_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.derivative_mid_price_and_tob_responses.append( + exchange_query_pb.QueryDerivativeMidPriceAndTOBResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_derivative_mid_price_and_tob( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_derivative_mid_price_and_tob_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_derivative_orderbook_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.derivative_orderbook_responses.append(exchange_query_pb.QueryDerivativeOrderbookResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_derivative_orderbook( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_derivative_orderbook_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_trader_derivative_orders_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.trader_derivative_orders_responses.append( + exchange_query_pb.QueryTraderDerivativeOrdersResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_trader_derivative_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_trader_derivative_orders_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_account_address_derivative_orders_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.account_address_derivative_orders_responses.append( + exchange_query_pb.QueryAccountAddressDerivativeOrdersResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_account_address_derivative_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + account_address="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_account_address_derivative_orders_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_derivative_orders_by_hashes_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.derivative_orders_by_hashes_responses.append( + exchange_query_pb.QueryDerivativeOrdersByHashesResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_derivative_orders_by_hashes( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + order_hashes=["0x57a01cd26f1e2080860af3264e865d7c9c034a701e30946d01c1dc7a303cf2c1"], + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_derivative_orders_by_hashes_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_trader_derivative_transient_orders_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.trader_derivative_transient_orders_responses.append( + exchange_query_pb.QueryTraderDerivativeOrdersResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_trader_derivative_transient_orders( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_trader_derivative_transient_orders_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_derivative_markets_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.derivative_markets_responses.append(exchange_query_pb.QueryDerivativeMarketsResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_derivative_markets() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_derivative_markets_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_derivative_market_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.derivative_market_responses.append(exchange_query_pb.QueryDerivativeMarketResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_derivative_market( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_derivative_market_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_positions_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.positions_responses.append(exchange_query_pb.QueryPositionsResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_positions() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_chain_positions_v2 instead" + + @pytest.mark.asyncio + async def test_fetch_chain_subaccount_positions_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.subaccount_positions_responses.append(exchange_query_pb.QuerySubaccountPositionsResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_subaccount_positions( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_subaccount_positions_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_subaccount_position_in_market_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.subaccount_position_in_market_responses.append( + exchange_query_pb.QuerySubaccountPositionInMarketResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_subaccount_position_in_market( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_subaccount_position_in_market_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_subaccount_effective_position_in_market_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.subaccount_effective_position_in_market_responses.append( + exchange_query_pb.QuerySubaccountEffectivePositionInMarketResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_subaccount_effective_position_in_market( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_subaccount_effective_position_in_market_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_expiry_futures_market_info_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.expiry_futures_market_info_responses.append( + exchange_query_pb.QueryExpiryFuturesMarketInfoResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_expiry_futures_market_info( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_expiry_futures_market_info_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_perpetual_market_funding_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.perpetual_market_funding_responses.append( + exchange_query_pb.QueryPerpetualMarketFundingResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_perpetual_market_funding( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_perpetual_market_funding_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_subaccount_order_metadata_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.subaccount_order_metadata_responses.append( + exchange_query_pb.QuerySubaccountOrderMetadataResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_subaccount_order_metadata( + subaccount_id="0x5303d92e49a619bb29de8fb6f59c0e7589213cc8000000000000000000000001", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_subaccount_order_metadata_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_fee_discount_account_info_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.fee_discount_account_info_responses.append( + exchange_query_pb.QueryFeeDiscountAccountInfoResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_fee_discount_account_info( + account="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_fee_discount_account_info_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_fee_discount_schedule_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.fee_discount_schedule_responses.append(exchange_query_pb.QueryFeeDiscountScheduleResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_fee_discount_schedule() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_fee_discount_schedule_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_historical_trade_records_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.historical_trade_records_responses.append( + exchange_query_pb.QueryHistoricalTradeRecordsResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_historical_trade_records( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_historical_trade_records_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_market_volatility_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.market_volatility_responses.append(exchange_query_pb.QueryMarketVolatilityResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_market_volatility( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_market_volatility_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_chain_binary_options_markets_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.binary_options_markets_responses.append(exchange_query_pb.QueryBinaryMarketsResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_chain_binary_options_markets() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_chain_binary_options_markets_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_trader_derivative_conditional_orders_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.trader_derivative_conditional_orders_responses.append( + exchange_query_pb.QueryTraderDerivativeConditionalOrdersResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_trader_derivative_conditional_orders() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_trader_derivative_conditional_orders_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_l3_derivative_orderbook_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.l3_derivative_orderbook_responses.append( + exchange_query_pb.QueryFullDerivativeOrderbookResponse() + ) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_l3_derivative_orderbook( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use fetch_l3_derivative_orderbook_v2 instead" + ) + + @pytest.mark.asyncio + async def test_fetch_l3_spot_orderbook_deprecation_warning( + self, + exchange_servicer, + ): + client = AsyncClient( + network=Network.local(), + ) + client.chain_exchange_api._stub = exchange_servicer + + exchange_servicer.l3_spot_orderbook_responses.append(exchange_query_pb.QueryFullSpotOrderbookResponse()) + + with catch_warnings(record=True) as all_warnings: + await client.fetch_l3_spot_orderbook( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use fetch_l3_spot_orderbook_v2 instead" + ) diff --git a/tests/test_composer.py b/tests/test_composer.py index 733e171a..d1eaa8f0 100644 --- a/tests/test_composer.py +++ b/tests/test_composer.py @@ -244,14 +244,12 @@ def test_msg_execute_contract_compat(self, basic_composer): def test_msg_deposit(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" subaccount_id = "0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001" - amount = Decimal(100) - denom = "INJ" - - token = basic_composer.tokens[denom] + amount = 100 + denom = "inj" - expected_amount = token.chain_formatted_value(human_readable_value=Decimal(amount)) + expected_amount = basic_composer.convert_value_to_chain_format(value=Decimal(str(amount))) - message = basic_composer.msg_deposit( + message = basic_composer.msg_deposit_v2( sender=sender, subaccount_id=subaccount_id, amount=amount, @@ -263,7 +261,7 @@ def test_msg_deposit(self, basic_composer): "subaccountId": subaccount_id, "amount": { "amount": f"{expected_amount.normalize():f}", - "denom": token.denom, + "denom": denom, }, } dict_message = json_format.MessageToDict( @@ -275,14 +273,10 @@ def test_msg_deposit(self, basic_composer): def test_msg_withdraw(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" subaccount_id = "0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001" - amount = Decimal(100) - denom = "INJ" - - token = basic_composer.tokens[denom] - - expected_amount = token.chain_formatted_value(human_readable_value=Decimal(amount)) + amount = 100 + denom = "inj" - message = basic_composer.msg_withdraw( + message = basic_composer.msg_withdraw_v2( sender=sender, subaccount_id=subaccount_id, amount=amount, @@ -293,8 +287,8 @@ def test_msg_withdraw(self, basic_composer): "sender": sender, "subaccountId": subaccount_id, "amount": { - "amount": f"{expected_amount.normalize():f}", - "denom": token.denom, + "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(str(amount))):f}", + "denom": denom, }, } dict_message = json_format.MessageToDict( @@ -306,26 +300,15 @@ def test_msg_withdraw(self, basic_composer): def test_msg_instant_spot_market_launch(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" ticker = "INJ/USDT" - base_denom = "INJ" - quote_denom = "USDT" + base_denom = "inj" + quote_denom = "peggy0xdAC17F958D2ee523a2206206994597C13D831ec7" min_price_tick_size = Decimal("0.01") min_quantity_tick_size = Decimal("1") min_notional = Decimal("2") base_decimals = 18 quote_decimals = 6 - base_token = basic_composer.tokens[base_denom] - quote_token = basic_composer.tokens[quote_denom] - - expected_min_price_tick_size = min_price_tick_size * Decimal( - f"1e{quote_token.decimals - base_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) - expected_min_quantity_tick_size = min_quantity_tick_size * Decimal( - f"1e{base_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) - expected_min_notional = min_notional * Decimal(f"1e{quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - - message = basic_composer.msg_instant_spot_market_launch( + message = basic_composer.msg_instant_spot_market_launch_v2( sender=sender, ticker=ticker, base_denom=base_denom, @@ -337,14 +320,18 @@ def test_msg_instant_spot_market_launch(self, basic_composer): quote_decimals=quote_decimals, ) + chain_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) + expected_message = { "sender": sender, "ticker": ticker, - "baseDenom": base_token.denom, - "quoteDenom": quote_token.denom, - "minPriceTickSize": f"{expected_min_price_tick_size.normalize():f}", - "minQuantityTickSize": f"{expected_min_quantity_tick_size.normalize():f}", - "minNotional": f"{expected_min_notional.normalize():f}", + "baseDenom": base_denom, + "quoteDenom": quote_denom, + "minPriceTickSize": f"{chain_min_price_tick_size.normalize():f}", + "minQuantityTickSize": f"{chain_min_quantity_tick_size.normalize():f}", + "minNotional": f"{chain_min_notional.normalize():f}", "baseDecimals": base_decimals, "quoteDecimals": quote_decimals, } @@ -357,7 +344,7 @@ def test_msg_instant_spot_market_launch(self, basic_composer): def test_msg_instant_perpetual_market_launch(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" ticker = "BTC/INJ PERP" - quote_denom = "INJ" + quote_denom = "inj" oracle_base = "BTC" oracle_quote = "INJ" oracle_scale_factor = 6 @@ -370,19 +357,15 @@ def test_msg_instant_perpetual_market_launch(self, basic_composer): maintenance_margin_ratio = Decimal("0.03") min_notional = Decimal("2") - quote_token = basic_composer.tokens[quote_denom] - - expected_min_price_tick_size = min_price_tick_size * Decimal( - f"1e{quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) + expected_min_price_tick_size = min_price_tick_size * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") expected_min_quantity_tick_size = min_quantity_tick_size * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") expected_maker_fee_rate = maker_fee_rate * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") expected_taker_fee_rate = taker_fee_rate * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") expected_initial_margin_ratio = initial_margin_ratio * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") expected_maintenance_margin_ratio = maintenance_margin_ratio * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_min_notional = min_notional * Decimal(f"1e{quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + expected_min_notional = min_notional * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - message = basic_composer.msg_instant_perpetual_market_launch( + message = basic_composer.msg_instant_perpetual_market_launch_v2( sender=sender, ticker=ticker, quote_denom=quote_denom, @@ -402,7 +385,7 @@ def test_msg_instant_perpetual_market_launch(self, basic_composer): expected_message = { "sender": sender, "ticker": ticker, - "quoteDenom": quote_token.denom, + "quoteDenom": quote_denom, "oracleBase": oracle_base, "oracleQuote": oracle_quote, "oracleScaleFactor": oracle_scale_factor, @@ -424,7 +407,7 @@ def test_msg_instant_perpetual_market_launch(self, basic_composer): def test_msg_instant_expiry_futures_market_launch(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" ticker = "BTC/INJ PERP" - quote_denom = "INJ" + quote_denom = "inj" oracle_base = "BTC" oracle_quote = "INJ" oracle_scale_factor = 6 @@ -438,19 +421,15 @@ def test_msg_instant_expiry_futures_market_launch(self, basic_composer): maintenance_margin_ratio = Decimal("0.03") min_notional = Decimal("2") - quote_token = basic_composer.tokens[quote_denom] + expected_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) + expected_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) + expected_maker_fee_rate = basic_composer.convert_value_to_chain_format(value=maker_fee_rate) + expected_taker_fee_rate = basic_composer.convert_value_to_chain_format(value=taker_fee_rate) + expected_initial_margin_ratio = basic_composer.convert_value_to_chain_format(value=initial_margin_ratio) + expected_maintenance_margin_ratio = basic_composer.convert_value_to_chain_format(value=maintenance_margin_ratio) + expected_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) - expected_min_price_tick_size = min_price_tick_size * Decimal( - f"1e{quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) - expected_min_quantity_tick_size = min_quantity_tick_size * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_maker_fee_rate = maker_fee_rate * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_taker_fee_rate = taker_fee_rate * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_initial_margin_ratio = initial_margin_ratio * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_maintenance_margin_ratio = maintenance_margin_ratio * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_min_notional = min_notional * Decimal(f"1e{quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - - message = basic_composer.msg_instant_expiry_futures_market_launch( + message = basic_composer.msg_instant_expiry_futures_market_launch_v2( sender=sender, ticker=ticker, quote_denom=quote_denom, @@ -471,7 +450,7 @@ def test_msg_instant_expiry_futures_market_launch(self, basic_composer): expected_message = { "sender": sender, "ticker": ticker, - "quoteDenom": quote_token.denom, + "quoteDenom": quote_denom, "oracleBase": oracle_base, "oracleQuote": oracle_quote, "oracleType": oracle_type, @@ -592,7 +571,7 @@ def test_msg_create_spot_limit_order(self, basic_composer): cid = "test_cid" trigger_price = Decimal("43.5") - message = basic_composer.msg_create_spot_limit_order( + message = basic_composer.msg_create_spot_limit_order_v2( market_id=spot_market.id, sender=sender, subaccount_id=subaccount_id, @@ -604,11 +583,11 @@ def test_msg_create_spot_limit_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = spot_market.price_to_chain_format(human_readable_value=price) - expected_quantity = spot_market.quantity_to_chain_format(human_readable_value=quantity) - expected_trigger_price = spot_market.price_to_chain_format(human_readable_value=trigger_price) + expected_price = basic_composer.convert_value_to_chain_format(value=price) + expected_quantity = basic_composer.convert_value_to_chain_format(value=quantity) + expected_trigger_price = basic_composer.convert_value_to_chain_format(value=trigger_price) - assert "injective.exchange.v1beta1.MsgCreateSpotLimitOrder" == message.DESCRIPTOR.full_name + assert "injective.exchange.v2.MsgCreateSpotLimitOrder" == message.DESCRIPTOR.full_name expected_message = { "sender": sender, "order": { @@ -641,7 +620,7 @@ def test_msg_batch_create_spot_limit_orders(self, basic_composer): cid = "test_cid" trigger_price = Decimal("43.5") - order = basic_composer.spot_order( + order = basic_composer.create_v2_spot_order( market_id=spot_market.id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -652,7 +631,7 @@ def test_msg_batch_create_spot_limit_orders(self, basic_composer): trigger_price=trigger_price, ) - message = basic_composer.msg_batch_create_spot_limit_orders( + message = basic_composer.msg_batch_create_spot_limit_orders_v2( sender=sender, orders=[order], ) @@ -678,7 +657,7 @@ def test_msg_create_spot_market_order(self, basic_composer): cid = "test_cid" trigger_price = Decimal("43.5") - message = basic_composer.msg_create_spot_market_order( + message = basic_composer.msg_create_spot_market_order_v2( market_id=spot_market.id, sender=sender, subaccount_id=subaccount_id, @@ -690,11 +669,7 @@ def test_msg_create_spot_market_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = spot_market.price_to_chain_format(human_readable_value=price) - expected_quantity = spot_market.quantity_to_chain_format(human_readable_value=quantity) - expected_trigger_price = spot_market.price_to_chain_format(human_readable_value=trigger_price) - - assert "injective.exchange.v1beta1.MsgCreateSpotMarketOrder" == message.DESCRIPTOR.full_name + assert "injective.exchange.v2.MsgCreateSpotMarketOrder" == message.DESCRIPTOR.full_name expected_message = { "sender": sender, "order": { @@ -702,12 +677,12 @@ def test_msg_create_spot_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{expected_price.normalize():f}", - "quantity": f"{expected_quantity.normalize():f}", + "price": f"{basic_composer.convert_value_to_chain_format(value=price).normalize():f}", + "quantity": f"{basic_composer.convert_value_to_chain_format(value=quantity).normalize():f}", "cid": cid, }, "orderType": order_type, - "triggerPrice": f"{expected_trigger_price.normalize():f}", + "triggerPrice": f"{basic_composer.convert_value_to_chain_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -723,7 +698,7 @@ def test_msg_cancel_spot_order(self, basic_composer): order_hash = "0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000" cid = "test_cid" - message = basic_composer.msg_cancel_spot_order( + message = basic_composer.msg_cancel_spot_order_v2( market_id=spot_market.id, sender=sender, subaccount_id=subaccount_id, @@ -749,18 +724,18 @@ def test_msg_batch_cancel_spot_orders(self, basic_composer): subaccount_id = "0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000" sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" - order_data = basic_composer.order_data( + order_data = basic_composer.create_v2_order_data_without_mask( market_id=spot_market.id, subaccount_id=subaccount_id, order_hash="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", ) - message = basic_composer.msg_batch_cancel_spot_orders( + message = basic_composer.msg_batch_cancel_spot_orders_v2( sender=sender, orders_data=[order_data], ) - assert "injective.exchange.v1beta1.MsgBatchCancelSpotOrders" == message.DESCRIPTOR.full_name + assert "injective.exchange.v2.MsgBatchCancelSpotOrders" == message.DESCRIPTOR.full_name expected_message = { "sender": sender, "data": [json_format.MessageToDict(message=order_data, always_print_fields_with_no_presence=True)], @@ -781,22 +756,22 @@ def test_msg_batch_update_orders(self, basic_composer): spot_market_id = spot_market.id derivative_market_id = derivative_market.id binary_options_market_id = binary_options_market.id - spot_order_to_cancel = basic_composer.order_data( + spot_order_to_cancel = basic_composer.create_v2_order_data_without_mask( market_id=spot_market_id, subaccount_id=subaccount_id, order_hash="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", ) - derivative_order_to_cancel = basic_composer.order_data( + derivative_order_to_cancel = basic_composer.create_v2_order_data_without_mask( market_id=derivative_market_id, subaccount_id=subaccount_id, order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ) - binary_options_order_to_cancel = basic_composer.order_data( + binary_options_order_to_cancel = basic_composer.create_v2_order_data_without_mask( market_id=binary_options_market_id, subaccount_id=subaccount_id, order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", ) - spot_order_to_create = basic_composer.spot_order( + spot_order_to_create = basic_composer.create_v2_spot_order( market_id=spot_market_id, subaccount_id=subaccount_id, fee_recipient="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", @@ -806,7 +781,7 @@ def test_msg_batch_update_orders(self, basic_composer): cid="test_cid", trigger_price=Decimal("43.5"), ) - derivative_order_to_create = basic_composer.derivative_order( + derivative_order_to_create = basic_composer.create_v2_derivative_order( market_id=derivative_market_id, subaccount_id=subaccount_id, fee_recipient="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", @@ -815,7 +790,7 @@ def test_msg_batch_update_orders(self, basic_composer): margin=Decimal("36.1") * Decimal("100"), order_type="BUY", ) - binary_options_order_to_create = basic_composer.binary_options_order( + binary_options_order_to_create = basic_composer.create_v2_binary_options_order( market_id=binary_options_market_id, subaccount_id=subaccount_id, fee_recipient="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", @@ -825,7 +800,7 @@ def test_msg_batch_update_orders(self, basic_composer): order_type="BUY", ) - message = basic_composer.msg_batch_update_orders( + message = basic_composer.msg_batch_update_orders_v2( sender=sender, subaccount_id=subaccount_id, spot_market_ids_to_cancel_all=[spot_market_id], @@ -911,7 +886,7 @@ def test_msg_create_derivative_limit_order(self, basic_composer): cid = "test_cid" trigger_price = Decimal("43.5") - message = basic_composer.msg_create_derivative_limit_order( + message = basic_composer.msg_create_derivative_limit_order_v2( market_id=derivative_market.id, sender=sender, subaccount_id=subaccount_id, @@ -924,11 +899,6 @@ def test_msg_create_derivative_limit_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = derivative_market.price_to_chain_format(human_readable_value=price) - expected_quantity = derivative_market.quantity_to_chain_format(human_readable_value=quantity) - expected_margin = derivative_market.margin_to_chain_format(human_readable_value=margin) - expected_trigger_price = derivative_market.price_to_chain_format(human_readable_value=trigger_price) - expected_message = { "sender": sender, "order": { @@ -936,13 +906,13 @@ def test_msg_create_derivative_limit_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{expected_price.normalize():f}", - "quantity": f"{expected_quantity.normalize():f}", + "price": f"{basic_composer.convert_value_to_chain_format(value=price).normalize():f}", + "quantity": f"{basic_composer.convert_value_to_chain_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{expected_margin.normalize():f}", + "margin": f"{basic_composer.convert_value_to_chain_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{expected_trigger_price.normalize():f}", + "triggerPrice": f"{basic_composer.convert_value_to_chain_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -962,7 +932,7 @@ def test_msg_batch_create_derivative_limit_orders(self, basic_composer): cid = "test_cid" trigger_price = Decimal("43.5") - order = basic_composer.derivative_order( + order = basic_composer.create_v2_derivative_order( market_id=derivative_market.id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -974,7 +944,7 @@ def test_msg_batch_create_derivative_limit_orders(self, basic_composer): trigger_price=trigger_price, ) - message = basic_composer.msg_batch_create_derivative_limit_orders( + message = basic_composer.msg_batch_create_derivative_limit_orders_v2( sender=sender, orders=[order], ) @@ -1001,7 +971,7 @@ def test_msg_create_derivative_market_order(self, basic_composer): cid = "test_cid" trigger_price = Decimal("43.5") - message = basic_composer.msg_create_derivative_market_order( + message = basic_composer.msg_create_derivative_market_order_v2( market_id=derivative_market.id, sender=sender, subaccount_id=subaccount_id, @@ -1014,11 +984,6 @@ def test_msg_create_derivative_market_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = derivative_market.price_to_chain_format(human_readable_value=price) - expected_quantity = derivative_market.quantity_to_chain_format(human_readable_value=quantity) - expected_margin = derivative_market.margin_to_chain_format(human_readable_value=margin) - expected_trigger_price = derivative_market.price_to_chain_format(human_readable_value=trigger_price) - expected_message = { "sender": sender, "order": { @@ -1026,13 +991,13 @@ def test_msg_create_derivative_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{expected_price.normalize():f}", - "quantity": f"{expected_quantity.normalize():f}", + "price": f"{basic_composer.convert_value_to_chain_format(value=price).normalize():f}", + "quantity": f"{basic_composer.convert_value_to_chain_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{expected_margin.normalize():f}", + "margin": f"{basic_composer.convert_value_to_chain_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{expected_trigger_price.normalize():f}", + "triggerPrice": f"{basic_composer.convert_value_to_chain_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -1057,7 +1022,7 @@ def test_msg_cancel_derivative_order(self, basic_composer): is_market_order=is_market_order, ) - message = basic_composer.msg_cancel_derivative_order( + message = basic_composer.msg_cancel_derivative_order_v2( market_id=derivative_market.id, sender=sender, subaccount_id=subaccount_id, @@ -1087,13 +1052,13 @@ def test_msg_batch_cancel_derivative_orders(self, basic_composer): subaccount_id = "0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000" sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" - order_data = basic_composer.order_data( + order_data = basic_composer.create_v2_order_data_without_mask( market_id=derivative_market.id, subaccount_id=subaccount_id, order_hash="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", ) - message = basic_composer.msg_batch_cancel_derivative_orders( + message = basic_composer.msg_batch_cancel_derivative_orders_v2( sender=sender, orders_data=[order_data], ) @@ -1115,7 +1080,7 @@ def test_msg_instant_binary_options_market_launch(self, basic_composer): oracle_provider = "Injective" oracle_scale_factor = 6 oracle_type = "Band" - quote_denom = "INJ" + quote_denom = "inj" min_price_tick_size = Decimal("0.01") min_quantity_tick_size = Decimal("1") maker_fee_rate = Decimal("0.001") @@ -1125,17 +1090,7 @@ def test_msg_instant_binary_options_market_launch(self, basic_composer): admin = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" min_notional = Decimal("2") - quote_token = basic_composer.tokens[quote_denom] - - expected_min_price_tick_size = min_price_tick_size * Decimal( - f"1e{quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) - expected_min_quantity_tick_size = min_quantity_tick_size * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_maker_fee_rate = maker_fee_rate * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_taker_fee_rate = taker_fee_rate * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_min_notional = min_notional * Decimal(f"1e{quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - - message = basic_composer.msg_instant_binary_options_market_launch( + message = basic_composer.msg_instant_binary_options_market_launch_v2( sender=sender, ticker=ticker, oracle_symbol=oracle_symbol, @@ -1153,6 +1108,10 @@ def test_msg_instant_binary_options_market_launch(self, basic_composer): min_notional=min_notional, ) + chain_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) + expected_message = { "sender": sender, "ticker": ticker, @@ -1160,15 +1119,15 @@ def test_msg_instant_binary_options_market_launch(self, basic_composer): "oracleProvider": oracle_provider, "oracleType": oracle_type, "oracleScaleFactor": oracle_scale_factor, - "makerFeeRate": f"{expected_maker_fee_rate.normalize():f}", - "takerFeeRate": f"{expected_taker_fee_rate.normalize():f}", + "makerFeeRate": f"{basic_composer.convert_value_to_chain_format(value=maker_fee_rate).normalize():f}", + "takerFeeRate": f"{basic_composer.convert_value_to_chain_format(value=taker_fee_rate).normalize():f}", "expirationTimestamp": str(expiration_timestamp), "settlementTimestamp": str(settlement_timestamp), "admin": admin, - "quoteDenom": quote_token.denom, - "minPriceTickSize": f"{expected_min_price_tick_size.normalize():f}", - "minQuantityTickSize": f"{expected_min_quantity_tick_size.normalize():f}", - "minNotional": f"{expected_min_notional.normalize():f}", + "quoteDenom": quote_denom, + "minPriceTickSize": f"{chain_min_price_tick_size.normalize():f}", + "minQuantityTickSize": f"{chain_min_quantity_tick_size.normalize():f}", + "minNotional": f"{chain_min_notional.normalize():f}", } dict_message = json_format.MessageToDict( message=message, @@ -1188,7 +1147,7 @@ def test_msg_create_binary_options_limit_order(self, basic_composer): cid = "test_cid" trigger_price = Decimal("43.5") - message = basic_composer.msg_create_binary_options_limit_order( + message = basic_composer.msg_create_binary_options_limit_order_v2( market_id=market.id, sender=sender, subaccount_id=subaccount_id, @@ -1201,10 +1160,10 @@ def test_msg_create_binary_options_limit_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = market.price_to_chain_format(human_readable_value=price) - expected_quantity = market.quantity_to_chain_format(human_readable_value=quantity) - expected_margin = market.margin_to_chain_format(human_readable_value=margin) - expected_trigger_price = market.price_to_chain_format(human_readable_value=trigger_price) + expected_price = basic_composer.convert_value_to_chain_format(value=price) + expected_quantity = basic_composer.convert_value_to_chain_format(value=quantity) + expected_margin = basic_composer.convert_value_to_chain_format(value=margin) + expected_trigger_price = basic_composer.convert_value_to_chain_format(value=trigger_price) expected_message = { "sender": sender, @@ -1240,7 +1199,7 @@ def test_msg_create_binary_options_market_order(self, basic_composer): cid = "test_cid" trigger_price = Decimal("43.5") - message = basic_composer.msg_create_binary_options_market_order( + message = basic_composer.msg_create_binary_options_market_order_v2( market_id=market.id, sender=sender, subaccount_id=subaccount_id, @@ -1253,11 +1212,6 @@ def test_msg_create_binary_options_market_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = market.price_to_chain_format(human_readable_value=price) - expected_quantity = market.quantity_to_chain_format(human_readable_value=quantity) - expected_margin = market.margin_to_chain_format(human_readable_value=margin) - expected_trigger_price = market.price_to_chain_format(human_readable_value=trigger_price) - expected_message = { "sender": sender, "order": { @@ -1265,13 +1219,13 @@ def test_msg_create_binary_options_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{expected_price.normalize():f}", - "quantity": f"{expected_quantity.normalize():f}", + "price": f"{basic_composer.convert_value_to_chain_format(value=price).normalize():f}", + "quantity": f"{basic_composer.convert_value_to_chain_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{expected_margin.normalize():f}", + "margin": f"{basic_composer.convert_value_to_chain_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{expected_trigger_price.normalize():f}", + "triggerPrice": f"{basic_composer.convert_value_to_chain_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -1296,7 +1250,7 @@ def test_msg_cancel_derivative_order(self, basic_composer): is_market_order=is_market_order, ) - message = basic_composer.msg_cancel_derivative_order( + message = basic_composer.msg_cancel_derivative_order_v2( market_id=market.id, sender=sender, subaccount_id=subaccount_id, @@ -1325,14 +1279,10 @@ def test_msg_subaccount_transfer(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" source_subaccount_id = "0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001" destination_subaccount_id = "0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000002" - amount = Decimal(100) - denom = "INJ" - - token = basic_composer.tokens[denom] - - expected_amount = token.chain_formatted_value(human_readable_value=amount) + amount = 100 + denom = "inj" - message = basic_composer.msg_subaccount_transfer( + message = basic_composer.msg_subaccount_transfer_v2( sender=sender, source_subaccount_id=source_subaccount_id, destination_subaccount_id=destination_subaccount_id, @@ -1345,8 +1295,8 @@ def test_msg_subaccount_transfer(self, basic_composer): "sourceSubaccountId": source_subaccount_id, "destinationSubaccountId": destination_subaccount_id, "amount": { - "amount": f"{expected_amount.normalize():f}", - "denom": token.denom, + "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(str(amount))).normalize():f}", + "denom": denom, }, } dict_message = json_format.MessageToDict( @@ -1359,18 +1309,14 @@ def test_msg_external_transfer(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" source_subaccount_id = "0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001" destination_subaccount_id = "0xc6fe5d33615a1c52c08018c47e8bc53646a0e101000000000000000000000000" - amount = Decimal(100) - denom = "INJ" - - token = basic_composer.tokens[denom] - - expected_amount = token.chain_formatted_value(human_readable_value=amount) + amount = 100 + denom = "inj" - message = basic_composer.msg_subaccount_transfer( + message = basic_composer.msg_external_transfer_v2( sender=sender, source_subaccount_id=source_subaccount_id, destination_subaccount_id=destination_subaccount_id, - amount=amount, + amount=100, denom=denom, ) @@ -1379,8 +1325,8 @@ def test_msg_external_transfer(self, basic_composer): "sourceSubaccountId": source_subaccount_id, "destinationSubaccountId": destination_subaccount_id, "amount": { - "amount": f"{expected_amount.normalize():f}", - "denom": token.denom, + "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(str(amount))).normalize():f}", + "denom": denom, }, } dict_message = json_format.MessageToDict( @@ -1393,7 +1339,7 @@ def test_msg_liquidate_position(self, basic_composer): market = list(basic_composer.derivative_markets.values())[0] sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" subaccount_id = "0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001" - order = basic_composer.derivative_order( + order = basic_composer.create_v2_derivative_order( market_id=market.id, subaccount_id=subaccount_id, fee_recipient="inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", @@ -1403,7 +1349,7 @@ def test_msg_liquidate_position(self, basic_composer): order_type="BUY", ) - message = basic_composer.msg_liquidate_position( + message = basic_composer.msg_liquidate_position_v2( sender=sender, subaccount_id=subaccount_id, market_id=market.id, @@ -1427,7 +1373,7 @@ def test_msg_emergency_settle_market(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" subaccount_id = "0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001" - message = basic_composer.msg_emergency_settle_market( + message = basic_composer.msg_emergency_settle_market_v2( sender=sender, subaccount_id=subaccount_id, market_id=market.id, @@ -1451,9 +1397,9 @@ def test_msg_increase_position_margin(self, basic_composer): destination_subaccount_id = "0xc6fe5d33615a1c52c08018c47e8bc53646a0e101000000000000000000000000" amount = Decimal(100) - expected_amount = market.margin_to_chain_format(human_readable_value=amount) + expected_amount = basic_composer.convert_value_to_chain_format(value=amount) - message = basic_composer.msg_increase_position_margin( + message = basic_composer.msg_increase_position_margin_v2( sender=sender, source_subaccount_id=source_subaccount_id, destination_subaccount_id=destination_subaccount_id, @@ -1481,9 +1427,9 @@ def test_msg_decrease_position_margin(self, basic_composer): destination_subaccount_id = "0xc6fe5d33615a1c52c08018c47e8bc53646a0e101000000000000000000000000" amount = Decimal(100) - expected_amount = market.margin_to_chain_format(human_readable_value=amount) + expected_amount = basic_composer.convert_value_to_chain_format(value=amount) - message = basic_composer.msg_decrease_position_margin( + message = basic_composer.msg_decrease_position_margin_v2( sender=sender, source_subaccount_id=source_subaccount_id, destination_subaccount_id=destination_subaccount_id, @@ -1528,9 +1474,9 @@ def test_msg_admin_update_binary_options_market(self, basic_composer): expiration_timestamp = 1630000000 settlement_timestamp = 1660000000 - expected_settlement_price = market.price_to_chain_format(human_readable_value=settlement_price) + expected_settlement_price = basic_composer.convert_value_to_chain_format(value=settlement_price) - message = basic_composer.msg_admin_update_binary_options_market( + message = basic_composer.msg_admin_update_binary_options_market_v2( sender=sender, market_id=market.id, status=status, @@ -1561,17 +1507,11 @@ def test_msg_update_spot_market(self, basic_composer): min_quantity_tick_size = Decimal("10") min_notional = Decimal("5") - expected_min_price_tick_size = min_price_tick_size * Decimal( - f"1e{market.quote_token.decimals - market.base_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) - expected_min_quantity_tick_size = min_quantity_tick_size * Decimal( - f"1e{market.base_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) - expected_min_notional = min_notional * Decimal( - f"1e{market.quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) + expected_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) + expected_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) + expected_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) - message = basic_composer.msg_update_spot_market( + message = basic_composer.msg_update_spot_market_v2( admin=sender, market_id=market.id, new_ticker=new_ticker, @@ -1604,17 +1544,13 @@ def test_msg_update_derivative_market(self, basic_composer): initial_margin_ratio = Decimal("0.05") maintenance_margin_ratio = Decimal("0.009") - expected_min_price_tick_size = min_price_tick_size * Decimal( - f"1e{market.quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) - expected_min_quantity_tick_size = min_quantity_tick_size * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_min_notional = min_notional * Decimal( - f"1e{market.quote_token.decimals + ADDITIONAL_CHAIN_FORMAT_DECIMALS}" - ) - expected_initial_margin_ratio = initial_margin_ratio * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - expected_maintenance_margin_ratio = maintenance_margin_ratio * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + expected_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) + expected_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) + expected_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) + expected_initial_margin_ratio = basic_composer.convert_value_to_chain_format(value=initial_margin_ratio) + expected_maintenance_margin_ratio = basic_composer.convert_value_to_chain_format(value=maintenance_margin_ratio) - message = basic_composer.msg_update_derivative_market( + message = basic_composer.msg_update_derivative_market_v2( admin=sender, market_id=market.id, new_ticker=new_ticker, @@ -1693,7 +1629,10 @@ def test_msg_ibc_transfer(self, basic_composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" source_port = "transfer" source_channel = "channel-126" - token_amount = basic_composer.create_coin_amount(amount=Decimal("0.1"), token_name="INJ") + token_decimals = 18 + transfer_amount = Decimal("0.1") * Decimal(f"1e{token_decimals}") + inj_chain_denom = "inj" + token_amount = basic_composer.coin(amount=int(transfer_amount), denom=inj_chain_denom) receiver = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" timeout_height = 10 timeout_timestamp = 1630000000 @@ -1949,3 +1888,154 @@ def test_msg_claim_voucher(self, basic_composer): always_print_fields_with_no_presence=True, ) assert dict_message == expected_message + + def test_create_v2_order_data_without_mask(self, basic_composer): + order_data = basic_composer.create_v2_order_data_without_mask( + market_id=list(basic_composer.spot_markets.keys())[0], + subaccount_id="subaccount_id", + order_hash="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", + ) + + expected_message = { + "marketId": list(basic_composer.spot_markets.keys())[0], + "subaccountId": "subaccount_id", + "orderHash": "0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", + "orderMask": 1, + "cid": "", + } + + dict_message = json_format.MessageToDict( + message=order_data, + always_print_fields_with_no_presence=True, + ) + + assert dict_message == expected_message + + def test_msg_privileged_execute_contract_v2(self, basic_composer): + sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" + contract_address = "inj1ady3s7whq30l4fx8sj3x6muv5mx4dfdlcpv8n7" + data = "test_data" + funds = "100inj,420peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7" + + message = basic_composer.msg_privileged_execute_contract_v2( + sender=sender, + contract_address=contract_address, + data=data, + funds=funds, + ) + + expected_message = { + "sender": sender, + "funds": funds, + "contractAddress": contract_address, + "data": data, + } + dict_message = json_format.MessageToDict( + message=message, + always_print_fields_with_no_presence=True, + ) + assert dict_message == expected_message + + def test_msg_create_insurance_fund(self, basic_composer): + message = basic_composer.msg_create_insurance_fund( + sender="sender", + ticker="AAVE/USDT PERP", + quote_denom="peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + oracle_base="0x2b9ab1e972a281585084148ba1389800799bd4be63b957507db1349314e47445", + oracle_quote="0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b", + oracle_type="Band", + expiry=-1, + initial_deposit=1, + ) + + expected_message = { + "sender": "sender", + "ticker": "AAVE/USDT PERP", + "quoteDenom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + "oracleBase": "0x2b9ab1e972a281585084148ba1389800799bd4be63b957507db1349314e47445", + "oracleQuote": "0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b", + "oracleType": "Band", + "expiry": "-1", + "initialDeposit": { + "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal('1')).normalize():f}", + "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + }, + } + dict_message = json_format.MessageToDict( + message=message, + always_print_fields_with_no_presence=True, + ) + assert dict_message == expected_message + + def test_msg_send_to_eth_fund(self, basic_composer): + message = basic_composer.msg_send_to_eth( + denom="peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + sender="sender", + eth_dest="eth_dest", + amount=1, + bridge_fee=2, + ) + + expected_message = { + "sender": "sender", + "ethDest": "eth_dest", + "amount": { + "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(1)).normalize():f}", + "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + }, + "bridgeFee": { + "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(2)).normalize():f}", + "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + }, + } + dict_message = json_format.MessageToDict( + message=message, + always_print_fields_with_no_presence=True, + ) + assert dict_message == expected_message + + def test_msg_underwrite(self, basic_composer): + message = basic_composer.msg_underwrite( + sender="sender", + market_id="market_id", + quote_denom="peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + amount=1, + ) + + expected_message = { + "sender": "sender", + "marketId": "market_id", + "deposit": { + "amount": f"{basic_composer.convert_value_to_chain_format(Decimal('1')).normalize():f}", + "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + }, + } + dict_message = json_format.MessageToDict( + message=message, + always_print_fields_with_no_presence=True, + ) + assert dict_message == expected_message + + def test_msg_send(self, basic_composer): + message = basic_composer.msg_send( + from_address="from_address", + to_address="to_address", + amount=1, + denom="peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + ) + + expected_message = { + "fromAddress": "from_address", + "toAddress": "to_address", + "amount": [ + { + "amount": f"{basic_composer.convert_value_to_chain_format(Decimal('1')).normalize():f}", + "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + }, + ], + } + dict_message = json_format.MessageToDict( + message=message, + always_print_fields_with_no_presence=True, + ) + assert dict_message == expected_message diff --git a/tests/test_composer_deprecation_warnings.py b/tests/test_composer_deprecation_warnings.py new file mode 100644 index 00000000..e21c48a6 --- /dev/null +++ b/tests/test_composer_deprecation_warnings.py @@ -0,0 +1,850 @@ +import warnings +from decimal import Decimal + +import pytest + +from pyinjective.composer import Composer +from pyinjective.core.network import Network +from tests.model_fixtures.markets_fixtures import btc_usdt_perp_market # noqa: F401 +from tests.model_fixtures.markets_fixtures import first_match_bet_market # noqa: F401 +from tests.model_fixtures.markets_fixtures import inj_token # noqa: F401 +from tests.model_fixtures.markets_fixtures import inj_usdt_spot_market # noqa: F401 +from tests.model_fixtures.markets_fixtures import usdt_perp_token # noqa: F401 +from tests.model_fixtures.markets_fixtures import usdt_token # noqa: F401 + + +class TestComposerDeprecationWarnings: + @pytest.fixture + def basic_composer(self, inj_usdt_spot_market, btc_usdt_perp_market, first_match_bet_market): + composer = Composer( + network=Network.devnet().string(), + spot_markets={inj_usdt_spot_market.id: inj_usdt_spot_market}, + derivative_markets={btc_usdt_perp_market.id: btc_usdt_perp_market}, + binary_option_markets={first_match_bet_market.id: first_match_bet_market}, + tokens={ + inj_usdt_spot_market.base_token.symbol: inj_usdt_spot_market.base_token, + inj_usdt_spot_market.quote_token.symbol: inj_usdt_spot_market.quote_token, + btc_usdt_perp_market.quote_token.symbol: btc_usdt_perp_market.quote_token, + }, + ) + + return composer + + def test_chain_stream_bank_balances_filter_deprecation_warning(self): + composer = Composer(network=Network.devnet().string()) + + with warnings.catch_warnings(record=True) as all_warnings: + composer.chain_stream_bank_balances_filter(accounts=["account"]) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use chain_stream_bank_balances_v2_filter instead" + ) + + def test_chain_stream_subaccount_deposits_filter_deprecation_warning(self): + composer = Composer(network=Network.devnet().string()) + + with warnings.catch_warnings(record=True) as all_warnings: + composer.chain_stream_subaccount_deposits_filter() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use chain_stream_subaccount_deposits_v2_filter instead" + ) + + def test_chain_stream_trades_filter_deprecation_warning(self): + composer = Composer(network=Network.devnet().string()) + + with warnings.catch_warnings(record=True) as all_warnings: + composer.chain_stream_trades_filter() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use chain_stream_trades_v2_filter instead" + ) + + def test_chain_stream_orders_filter_deprecation_warning(self): + composer = Composer(network=Network.devnet().string()) + + with warnings.catch_warnings(record=True) as all_warnings: + composer.chain_stream_orders_filter() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use chain_stream_orders_v2_filter instead" + ) + + def test_chain_stream_orderbooks_filter_deprecation_warning(self): + composer = Composer(network=Network.devnet().string()) + + with warnings.catch_warnings(record=True) as all_warnings: + composer.chain_stream_orderbooks_filter() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use chain_stream_orderbooks_v2_filter instead" + ) + + def test_chain_stream_positions_filter_deprecation_warning(self): + composer = Composer(network=Network.devnet().string()) + + with warnings.catch_warnings(record=True) as all_warnings: + composer.chain_stream_positions_filter() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use chain_stream_positions_v2_filter instead" + ) + + def test_chain_stream_oracle_price_filter_deprecation_warning(self): + composer = Composer(network=Network.devnet().string()) + + with warnings.catch_warnings(record=True) as all_warnings: + composer.chain_stream_oracle_price_filter() + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use chain_stream_oracle_price_v2_filter instead" + ) + + def test_msg_grant_typed_deprecation_warning(self): + composer = Composer(network=Network.devnet().string()) + + with warnings.catch_warnings(record=True) as all_warnings: + composer.MsgGrantTyped( + granter="granter", + grantee="grantee", + msg_type="CreateSpotLimitOrderAuthz", + expire_in=100, + subaccount_id="subaccount_id", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use create_typed_msg_grant instead" + + def test_spot_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.spot_order( + market_id=list(basic_composer.spot_markets.keys())[0], + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + order_type="BUY", + cid="cid", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use create_v2_spot_order instead" + + def test_basic_derivative_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer._basic_derivative_order( + market_id=list(basic_composer.spot_markets.keys())[0], + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + chain_price=Decimal("1"), + chain_quantity=Decimal("1"), + chain_margin=Decimal("1"), + order_type="BUY", + cid="cid", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use _basic_v2_derivative_order instead" + ) + + def test_derivative_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.derivative_order( + market_id=list(basic_composer.derivative_markets.keys())[0], + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + margin=Decimal("1"), + order_type="BUY", + cid="cid", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 2 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use create_v2_derivative_order instead" + ) + + def test_binary_options_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.binary_options_order( + market_id=list(basic_composer.binary_option_markets.keys())[0], + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + margin=Decimal("1"), + order_type="BUY", + cid="cid", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 2 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use create_v2_binary_options_order instead" + ) + + def test_msg_batch_create_spot_limit_orders_deprecation_warning(self, basic_composer): + order = basic_composer.spot_order( + market_id=list(basic_composer.spot_markets.keys())[0], + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + order_type="BUY", + cid="cid", + ) + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_batch_create_spot_limit_orders(sender="sender", orders=[order]) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_batch_create_spot_limit_orders_v2 instead" + ) + + def test_msg_create_spot_market_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_create_spot_market_order( + market_id=list(basic_composer.spot_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + order_type="BUY", + cid="cid", + trigger_price=Decimal("1"), + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 2 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_create_spot_market_order_v2 instead" + ) + + def test_msg_cancel_spot_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_cancel_spot_order( + market_id=list(basic_composer.spot_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_cancel_spot_order_v2 instead" + + def test_msg_batch_cancel_spot_orders_deprecation_warning(self, basic_composer): + order_data = basic_composer.order_data( + market_id=list(basic_composer.spot_markets.keys())[0], + subaccount_id="subaccount_id", + order_hash="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", + ) + + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_batch_cancel_spot_orders( + sender="sender", + orders_data=[order_data], + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_batch_cancel_spot_orders_v2 instead" + ) + + def test_order_data_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.order_data( + market_id=list(basic_composer.spot_markets.keys())[0], + subaccount_id="subaccount_id", + order_hash="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use create_v2_order_data instead" + + def test_order_data_without_mask_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.order_data_without_mask( + market_id=list(basic_composer.spot_markets.keys())[0], + subaccount_id="subaccount_id", + order_hash="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use create_v2_order_data_without_mask instead" + ) + + def test_msg_batch_update_orders_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_batch_update_orders( + sender="sender", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_batch_update_orders_v2 instead" + ) + + def test_msg_privileged_execute_contract_deprecation_warning(self, basic_composer): + sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" + contract_address = "inj1ady3s7whq30l4fx8sj3x6muv5mx4dfdlcpv8n7" + data = "test_data" + funds = "100inj,420peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7" + + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_privileged_execute_contract( + sender=sender, + contract_address=contract_address, + data=data, + funds=funds, + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_privileged_execute_contract_v2 instead" + ) + + def test_msg_create_derivative_limit_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_create_derivative_limit_order( + market_id=list(basic_composer.derivative_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + margin=Decimal("1"), + order_type="BUY", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 3 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_create_derivative_limit_order_v2 instead" + ) + + def test_msg_batch_create_derivative_limit_orders_deprecation_warning(self, basic_composer): + order = basic_composer.derivative_order( + market_id=list(basic_composer.derivative_markets.keys())[0], + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + margin=Decimal("1"), + order_type="BUY", + cid="cid", + ) + + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_batch_create_derivative_limit_orders( + sender="sender", + orders=[order], + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_batch_create_derivative_limit_orders_v2 instead" + ) + + def test_msg_create_derivative_market_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_create_derivative_market_order( + market_id=list(basic_composer.derivative_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + margin=Decimal("1"), + order_type="BUY", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 3 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_create_derivative_market_order_v2 instead" + ) + + def test_msg_cancel_derivative_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_cancel_derivative_order( + market_id=list(basic_composer.derivative_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_cancel_derivative_order_v2 instead" + ) + + def test_msg_batch_cancel_derivative_orders_deprecation_warning(self, basic_composer): + order_data = basic_composer.order_data_without_mask( + market_id=list(basic_composer.derivative_markets.keys())[0], + subaccount_id="subaccount_id", + order_hash="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000000", + ) + + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_batch_cancel_derivative_orders( + sender="sender", + orders_data=[order_data], + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_batch_cancel_derivative_orders_v2 instead" + ) + + def test_msg_instant_binary_options_market_launch_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_instant_binary_options_market_launch( + sender="sender", + ticker="ticker", + oracle_symbol="oracle_symbol", + oracle_provider="oracle_provider", + oracle_type="Band", + oracle_scale_factor=6, + maker_fee_rate=Decimal("0.1"), + taker_fee_rate=Decimal("0.1"), + expiration_timestamp=1707800399, + settlement_timestamp=1707843599, + admin="admin", + quote_denom=list(basic_composer.binary_option_markets.values())[0].quote_token.symbol, + min_price_tick_size=Decimal("1"), + min_quantity_tick_size=Decimal("1"), + min_notional=Decimal("1"), + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_instant_binary_options_market_launch_v2 instead" + ) + + def test_msg_create_binary_options_market_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_create_binary_options_market_order( + market_id=list(basic_composer.binary_option_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + margin=Decimal("1"), + order_type="BUY", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 3 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_create_binary_options_market_order_v2 instead" + ) + + def test_msg_cancel_binary_options_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_cancel_binary_options_order( + market_id=list(basic_composer.derivative_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_cancel_binary_options_order_v2 instead" + ) + + def test_msg_subaccount_transfer_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_subaccount_transfer( + sender="sender", + source_subaccount_id="source_subaccount_id", + destination_subaccount_id="destination_subaccount_id", + amount=Decimal("1"), + denom="INJ", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_subaccount_transfer_v2 instead" + ) + + def test_msg_deposit_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_deposit( + sender="sender", + subaccount_id="source_subaccount_id", + amount=Decimal("1"), + denom="INJ", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_deposit_v2 instead" + + def test_msg_external_transfer_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_external_transfer( + sender="sender", + source_subaccount_id="source_subaccount_id", + destination_subaccount_id="destination_subaccount_id", + amount=Decimal("1"), + denom="INJ", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_external_transfer_v2 instead" + + def test_msg_withdraw_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_withdraw( + sender="sender", + subaccount_id="subaccount_id", + amount=Decimal("1"), + denom="INJ", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_withdraw_v2 instead" + + def test_msg_create_insurance_fund_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.MsgCreateInsuranceFund( + sender="sender", + ticker="ticker", + quote_denom="INJ", + oracle_base="oracle_base", + oracle_quote="oracle_quote", + oracle_type="Band", + expiry=-1, + initial_deposit=1, + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_create_insurance_fund instead" + ) + + def test_msg_send_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.MsgSend( + from_address="from_address", + to_address="to_address", + amount=1, + denom="INJ", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_send instead" + + def test_msg_send_to_eth_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.MsgSendToEth( + denom="INJ", + sender="sender", + eth_dest="eth_dest", + amount=1, + bridge_fee=1, + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_send_to_eth instead" + + def test_msg_underwrite_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.MsgUnderwrite( + sender="sender", + market_id="market_id", + quote_denom="INJ", + amount=1, + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_underwrite instead" + + def test_msg_instant_spot_market_launch_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_instant_spot_market_launch( + sender="sender", + ticker="ticker", + base_denom=list(basic_composer.spot_markets.values())[0].base_token.symbol, + quote_denom=list(basic_composer.spot_markets.values())[0].quote_token.symbol, + min_price_tick_size=Decimal("1"), + min_quantity_tick_size=Decimal("1"), + min_notional=Decimal("1"), + base_decimals=6, + quote_decimals=6, + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_instant_spot_market_launch_v2 instead" + ) + + def test_msg_instant_perpetual_market_launch_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_instant_perpetual_market_launch( + sender="sender", + ticker="ticker", + quote_denom=list(basic_composer.spot_markets.values())[0].quote_token.symbol, + oracle_base="oracle_base", + oracle_quote="oracle_quote", + oracle_scale_factor=6, + oracle_type="Band", + maker_fee_rate=Decimal("0.1"), + taker_fee_rate=Decimal("0.1"), + initial_margin_ratio=Decimal("0.1"), + maintenance_margin_ratio=Decimal("0.1"), + min_price_tick_size=Decimal("1"), + min_quantity_tick_size=Decimal("1"), + min_notional=Decimal("1"), + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_instant_perpetual_market_launch_v2 instead" + ) + + def test_msg_liquidate_position_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_liquidate_position( + sender="sender", + subaccount_id="subaccount_id", + market_id="market_id", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_liquidate_position_v2 instead" + ) + + def test_msg_instant_expiry_futures_market_launch_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_instant_expiry_futures_market_launch( + sender="sender", + ticker="ticker", + quote_denom=list(basic_composer.spot_markets.values())[0].quote_token.symbol, + oracle_base="oracle_base", + oracle_quote="oracle_quote", + oracle_scale_factor=6, + oracle_type="Band", + expiry=1707800399, + maker_fee_rate=Decimal("0.1"), + taker_fee_rate=Decimal("0.1"), + initial_margin_ratio=Decimal("0.1"), + maintenance_margin_ratio=Decimal("0.1"), + min_price_tick_size=Decimal("1"), + min_quantity_tick_size=Decimal("1"), + min_notional=Decimal("1"), + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_instant_expiry_futures_market_launch_v2 instead" + ) + + def test_msg_create_spot_limit_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_create_spot_limit_order( + market_id=list(basic_composer.spot_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + order_type="BUY", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 2 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_create_spot_limit_order_v2 instead" + ) + + def test_msg_create_binary_options_limit_order_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_create_binary_options_limit_order( + market_id=list(basic_composer.binary_option_markets.keys())[0], + sender="sender", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("1"), + quantity=Decimal("1"), + margin=Decimal("1"), + order_type="BUY", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 3 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_create_binary_options_limit_order_v2 instead" + ) + + def test_msg_emergency_settle_market_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_emergency_settle_market( + sender="sender", + subaccount_id="subaccount_id", + market_id="market_id", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_emergency_settle_market_v2 instead" + ) + + def test_msg_increase_position_margin_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_increase_position_margin( + sender="sender", + source_subaccount_id="source_subaccount_id", + destination_subaccount_id="destination_subaccount_id", + market_id=list(basic_composer.derivative_markets.keys())[0], + amount=Decimal("1"), + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_increase_position_margin_v2 instead" + ) + + def test_msg_decrease_position_margin_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_decrease_position_margin( + sender="sender", + source_subaccount_id="source_subaccount_id", + destination_subaccount_id="destination_subaccount_id", + market_id=list(basic_composer.derivative_markets.keys())[0], + amount=Decimal("1"), + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_decrease_position_margin_v2 instead" + ) + + def test_msg_admin_update_binary_options_market_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_admin_update_binary_options_market( + sender="sender", + market_id=list(basic_composer.binary_option_markets.keys())[0], + status="Expired", + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_admin_update_binary_options_market_v2 instead" + ) + + def test_msg_update_spot_market_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_update_spot_market( + admin="admin", + market_id=list(basic_composer.spot_markets.keys())[0], + new_ticker="new_ticker", + new_min_price_tick_size=Decimal("1"), + new_min_quantity_tick_size=Decimal("2"), + new_min_notional=Decimal("3"), + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) == "This method is deprecated. Use msg_update_spot_market_v2 instead" + ) + + def test_msg_update_derivative_market_deprecation_warning(self, basic_composer): + with warnings.catch_warnings(record=True) as all_warnings: + basic_composer.msg_update_derivative_market( + admin="admin", + market_id=list(basic_composer.derivative_markets.keys())[0], + new_ticker="new_ticker", + new_min_price_tick_size=Decimal("1"), + new_min_quantity_tick_size=Decimal("2"), + new_min_notional=Decimal("3"), + new_initial_margin_ratio=Decimal("0.1"), + new_maintenance_margin_ratio=Decimal("0.05"), + ) + + deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] + assert len(deprecation_warnings) == 1 + assert ( + str(deprecation_warnings[0].message) + == "This method is deprecated. Use msg_update_derivative_market_v2 instead" + ) From cc89852a51efc39df2b5870b930f60418864fd1a Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Fri, 1 Nov 2024 23:50:56 -0300 Subject: [PATCH 5/7] (feat) Refactored markets and tokens initialization methods in AsyncClient to get markets from the chain. Removed logic in Composer to load markets and tokens from the denom INI files --- pyinjective/async_client.py | 130 +- pyinjective/composer.py | 213 +- pyinjective/constant.py | 18 - pyinjective/core/token.py | 10 + pyinjective/denoms_devnet.ini | 1885 --- pyinjective/denoms_mainnet.ini | 16631 --------------------- pyinjective/denoms_testnet.ini | 13415 ----------------- pyinjective/orderhash.py | 8 +- pyinjective/utils/denom.py | 33 - pyinjective/utils/fetch_metadata.py | 101 - pyinjective/utils/metadata_validation.py | 158 - tests/core/test_gas_limit_estimator.py | 165 +- tests/rpc_fixtures/markets_fixtures.py | 143 +- tests/test_async_client.py | 142 +- tests/test_composer.py | 135 +- tests/test_orderhash.py | 8 +- 16 files changed, 463 insertions(+), 32732 deletions(-) delete mode 100644 pyinjective/denoms_devnet.ini delete mode 100644 pyinjective/denoms_mainnet.ini delete mode 100644 pyinjective/denoms_testnet.ini delete mode 100644 pyinjective/utils/fetch_metadata.py delete mode 100644 pyinjective/utils/metadata_validation.py diff --git a/pyinjective/async_client.py b/pyinjective/async_client.py index 0d656eb8..05e43589 100644 --- a/pyinjective/async_client.py +++ b/pyinjective/async_client.py @@ -99,8 +99,8 @@ def __init__( self._initialize_timeout_height_sync_task() self._tokens_and_markets_initialization_lock = asyncio.Lock() - self._tokens_by_denom: Optional[Dict[str, Token]] = None - self._tokens_by_symbol: Optional[Dict[str, Token]] = None + self._tokens_by_denom = dict() + self._tokens_by_symbol = dict() self._spot_markets: Optional[Dict[str, SpotMarket]] = None self._derivative_markets: Optional[Dict[str, DerivativeMarket]] = None self._binary_option_markets: Optional[Dict[str, BinaryOptionMarket]] = None @@ -2794,87 +2794,69 @@ async def _initialize_tokens_and_markets(self): derivative_markets = dict() binary_option_markets = dict() tokens_by_symbol, tokens_by_denom = await self._tokens_from_official_lists(network=self.network) - markets_info = (await self.fetch_spot_markets(market_statuses=["active"]))["markets"] - valid_markets = ( - market_info - for market_info in markets_info - if len(market_info.get("baseTokenMeta", {}).get("symbol", "")) > 0 - and len(market_info.get("quoteTokenMeta", {}).get("symbol", "")) > 0 - ) - - for market_info in valid_markets: - base_token = self._token_representation( - token_meta=market_info["baseTokenMeta"], - denom=market_info["baseDenom"], - tokens_by_denom=tokens_by_denom, - tokens_by_symbol=tokens_by_symbol, - ) - quote_token = self._token_representation( - token_meta=market_info["quoteTokenMeta"], - denom=market_info["quoteDenom"], - tokens_by_denom=tokens_by_denom, - tokens_by_symbol=tokens_by_symbol, - ) + self._tokens_by_denom.update(tokens_by_denom) + self._tokens_by_symbol.update(tokens_by_symbol) + + markets_info = (await self.fetch_chain_spot_markets_v2(status="Active"))["markets"] + for market_info in markets_info: + base_token = self._tokens_by_denom.get(market_info["baseDenom"]) + quote_token = self._tokens_by_denom.get(market_info["quoteDenom"]) market = SpotMarket( id=market_info["marketId"], - status=market_info["marketStatus"], + status=market_info["status"], ticker=market_info["ticker"], base_token=base_token, quote_token=quote_token, - maker_fee_rate=Decimal(market_info["makerFeeRate"]), - taker_fee_rate=Decimal(market_info["takerFeeRate"]), - service_provider_fee=Decimal(market_info["serviceProviderFee"]), - min_price_tick_size=Decimal(market_info["minPriceTickSize"]), - min_quantity_tick_size=Decimal(market_info["minQuantityTickSize"]), - min_notional=Decimal(market_info["minNotional"]), + maker_fee_rate=Token.convert_value_from_chain_format(Decimal(market_info["makerFeeRate"])), + taker_fee_rate=Token.convert_value_from_chain_format(Decimal(market_info["takerFeeRate"])), + service_provider_fee=Token.convert_value_from_chain_format(Decimal(market_info["relayerFeeShareRate"])), + min_price_tick_size=Token.convert_value_from_chain_format(Decimal(market_info["minPriceTickSize"])), + min_quantity_tick_size=Token.convert_value_from_chain_format( + Decimal(market_info["minQuantityTickSize"]) + ), + min_notional=Token.convert_value_from_chain_format(Decimal(market_info["minNotional"])), ) spot_markets[market.id] = market - markets_info = (await self.fetch_derivative_markets(market_statuses=["active"]))["markets"] - valid_markets = ( - market_info - for market_info in markets_info - if len(market_info.get("quoteTokenMeta", {}).get("symbol", "")) > 0 - ) - - for market_info in valid_markets: - quote_token = self._token_representation( - token_meta=market_info["quoteTokenMeta"], - denom=market_info["quoteDenom"], - tokens_by_denom=tokens_by_denom, - tokens_by_symbol=tokens_by_symbol, - ) - - market = DerivativeMarket( - id=market_info["marketId"], - status=market_info["marketStatus"], - ticker=market_info["ticker"], - oracle_base=market_info["oracleBase"], - oracle_quote=market_info["oracleQuote"], - oracle_type=market_info["oracleType"], - oracle_scale_factor=market_info["oracleScaleFactor"], - initial_margin_ratio=Decimal(market_info["initialMarginRatio"]), - maintenance_margin_ratio=Decimal(market_info["maintenanceMarginRatio"]), + markets_info = (await self.fetch_chain_derivative_markets_v2(status="Active", with_mid_price_and_tob=False))[ + "markets" + ] + for market_info in markets_info: + market = market_info["market"] + quote_token = self._tokens_by_denom.get(market["quoteDenom"]) + + derivative_market = DerivativeMarket( + id=market["marketId"], + status=market["status"], + ticker=market["ticker"], + oracle_base=market["oracleBase"], + oracle_quote=market["oracleQuote"], + oracle_type=market["oracleType"], + oracle_scale_factor=market["oracleScaleFactor"], + initial_margin_ratio=Token.convert_value_from_chain_format(Decimal(market["initialMarginRatio"])), + maintenance_margin_ratio=Token.convert_value_from_chain_format( + Decimal(market["maintenanceMarginRatio"]) + ), quote_token=quote_token, - maker_fee_rate=Decimal(market_info["makerFeeRate"]), - taker_fee_rate=Decimal(market_info["takerFeeRate"]), - service_provider_fee=Decimal(market_info["serviceProviderFee"]), - min_price_tick_size=Decimal(market_info["minPriceTickSize"]), - min_quantity_tick_size=Decimal(market_info["minQuantityTickSize"]), - min_notional=Decimal(market_info["minNotional"]), + maker_fee_rate=Token.convert_value_from_chain_format(Decimal(market["makerFeeRate"])), + taker_fee_rate=Token.convert_value_from_chain_format(Decimal(market["takerFeeRate"])), + service_provider_fee=Token.convert_value_from_chain_format(Decimal(market["relayerFeeShareRate"])), + min_price_tick_size=Token.convert_value_from_chain_format(Decimal(market["minPriceTickSize"])), + min_quantity_tick_size=Token.convert_value_from_chain_format(Decimal(market["minQuantityTickSize"])), + min_notional=Token.convert_value_from_chain_format(Decimal(market["minNotional"])), ) - derivative_markets[market.id] = market + derivative_markets[derivative_market.id] = derivative_market - markets_info = (await self.fetch_binary_options_markets(market_status="active"))["markets"] + markets_info = (await self.fetch_chain_binary_options_markets_v2(status="Active"))["markets"] for market_info in markets_info: - quote_token = tokens_by_denom.get(market_info["quoteDenom"], None) + quote_token = self._tokens_by_denom.get(market_info["quoteDenom"]) market = BinaryOptionMarket( id=market_info["marketId"], - status=market_info["marketStatus"], + status=market_info["status"], ticker=market_info["ticker"], oracle_symbol=market_info["oracleSymbol"], oracle_provider=market_info["oracleProvider"], @@ -2883,21 +2865,21 @@ async def _initialize_tokens_and_markets(self): expiration_timestamp=market_info["expirationTimestamp"], settlement_timestamp=market_info["settlementTimestamp"], quote_token=quote_token, - maker_fee_rate=Decimal(market_info["makerFeeRate"]), - taker_fee_rate=Decimal(market_info["takerFeeRate"]), - service_provider_fee=Decimal(market_info["serviceProviderFee"]), - min_price_tick_size=Decimal(market_info["minPriceTickSize"]), - min_quantity_tick_size=Decimal(market_info["minQuantityTickSize"]), - min_notional=Decimal(market_info["minNotional"]), + maker_fee_rate=Token.convert_value_from_chain_format(Decimal(market_info["makerFeeRate"])), + taker_fee_rate=Token.convert_value_from_chain_format(Decimal(market_info["takerFeeRate"])), + service_provider_fee=Token.convert_value_from_chain_format(Decimal(market_info["relayerFeeShareRate"])), + min_price_tick_size=Token.convert_value_from_chain_format(Decimal(market_info["minPriceTickSize"])), + min_quantity_tick_size=Token.convert_value_from_chain_format( + Decimal(market_info["minQuantityTickSize"]) + ), + min_notional=Token.convert_value_from_chain_format(Decimal(market_info["minNotional"])), settlement_price=None if market_info["settlementPrice"] == "" - else Decimal(market_info["settlementPrice"]), + else Token.convert_value_from_chain_format(Decimal(market_info["settlementPrice"])), ) binary_option_markets[market.id] = market - self._tokens_by_denom = tokens_by_denom - self._tokens_by_symbol = tokens_by_symbol self._spot_markets = spot_markets self._derivative_markets = derivative_markets self._binary_option_markets = binary_option_markets diff --git a/pyinjective/composer.py b/pyinjective/composer.py index 0c82d801..7f8d0bcc 100644 --- a/pyinjective/composer.py +++ b/pyinjective/composer.py @@ -1,5 +1,4 @@ import json -from configparser import ConfigParser from decimal import Decimal from time import time from typing import Any, Dict, List, Optional @@ -7,7 +6,6 @@ from google.protobuf import any_pb2, json_format, timestamp_pb2 -from pyinjective import constant from pyinjective.constant import ADDITIONAL_CHAIN_FORMAT_DECIMALS, INJ_DECIMALS, INJ_DENOM from pyinjective.core.market import BinaryOptionMarket, DerivativeMarket, SpotMarket from pyinjective.core.token import Token @@ -339,17 +337,11 @@ def __init__( """ self.network = network - self.spot_markets = dict() - self.derivative_markets = dict() - self.binary_option_markets = dict() - self.tokens = dict() - if spot_markets is None or derivative_markets is None or binary_option_markets is None or tokens is None: - self._initialize_markets_and_tokens_from_files() - else: - self.spot_markets = spot_markets - self.derivative_markets = derivative_markets - self.binary_option_markets = binary_option_markets - self.tokens = tokens + self.spot_markets = spot_markets or dict() + self.derivative_markets = derivative_markets or dict() + self.binary_option_markets = binary_option_markets or dict() + self.tokens = tokens or dict() + self._ofac_checker = OfacChecker() def coin(self, amount: int, denom: str) -> base_coin_pb.Coin: @@ -501,9 +493,9 @@ def create_v2_spot_order( ) -> injective_order_v2_pb.SpotOrder: trigger_price = trigger_price or Decimal(0) chain_order_type = injective_order_v2_pb.OrderType.Value(order_type) - chain_quantity = f"{self.convert_value_to_chain_format(value=quantity).normalize():f}" - chain_price = f"{self.convert_value_to_chain_format(value=price).normalize():f}" - chain_trigger_price = f"{self.convert_value_to_chain_format(value=trigger_price).normalize():f}" + chain_quantity = f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}" + chain_price = f"{Token.convert_value_to_chain_format(value=price).normalize():f}" + chain_trigger_price = f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}" return injective_order_v2_pb.SpotOrder( market_id=market_id, @@ -663,7 +655,7 @@ def create_grant_authorization(self, grantee: str, amount: Decimal) -> injective # region Auction module def MsgBid(self, sender: str, bid_amount: float, round: float): - be_amount = self.convert_value_to_chain_format(value=Decimal(str(bid_amount))) + be_amount = Token.convert_value_to_chain_format(value=Decimal(str(bid_amount))) return injective_auction_tx_pb.MsgBid( sender=sender, @@ -726,7 +718,7 @@ def MsgSend(self, from_address: str, to_address: str, amount: float, denom: str) ) def msg_send(self, from_address: str, to_address: str, amount: int, denom: str): - chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=denom) return cosmos_bank_tx_pb.MsgSend( @@ -757,7 +749,7 @@ def msg_deposit( def msg_deposit_v2( self, sender: str, subaccount_id: str, amount: int, denom: str ) -> injective_exchange_tx_v2_pb.MsgDeposit: - chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=denom) return injective_exchange_tx_v2_pb.MsgDeposit( @@ -789,7 +781,7 @@ def msg_withdraw_v2( amount: int, denom: str, ) -> injective_exchange_tx_v2_pb.MsgWithdraw: - chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=denom) return injective_exchange_tx_v2_pb.MsgWithdraw( @@ -854,11 +846,11 @@ def msg_instant_spot_market_launch_v2( base_decimals: int, quote_decimals: int, ) -> injective_exchange_tx_v2_pb.MsgInstantSpotMarketLaunch: - chain_min_price_tick_size = f"{self.convert_value_to_chain_format(value=min_price_tick_size).normalize():f}" + chain_min_price_tick_size = f"{Token.convert_value_to_chain_format(value=min_price_tick_size).normalize():f}" chain_min_quantity_tick_size = ( - f"{self.convert_value_to_chain_format(value=min_quantity_tick_size).normalize():f}" + f"{Token.convert_value_to_chain_format(value=min_quantity_tick_size).normalize():f}" ) - chain_min_notional = f"{self.convert_value_to_chain_format(value=min_notional).normalize():f}" + chain_min_notional = f"{Token.convert_value_to_chain_format(value=min_notional).normalize():f}" return injective_exchange_tx_v2_pb.MsgInstantSpotMarketLaunch( sender=sender, @@ -946,13 +938,13 @@ def msg_instant_perpetual_market_launch_v2( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: - chain_min_price_tick_size = self.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_maker_fee_rate = self.convert_value_to_chain_format(value=maker_fee_rate) - chain_taker_fee_rate = self.convert_value_to_chain_format(value=taker_fee_rate) - chain_initial_margin_ratio = self.convert_value_to_chain_format(value=initial_margin_ratio) - chain_maintenance_margin_ratio = self.convert_value_to_chain_format(value=maintenance_margin_ratio) - chain_min_notional = self.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_maker_fee_rate = Token.convert_value_to_chain_format(value=maker_fee_rate) + chain_taker_fee_rate = Token.convert_value_to_chain_format(value=taker_fee_rate) + chain_initial_margin_ratio = Token.convert_value_to_chain_format(value=initial_margin_ratio) + chain_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=maintenance_margin_ratio) + chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) return injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch( sender=sender, @@ -1049,13 +1041,13 @@ def msg_instant_expiry_futures_market_launch_v2( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: - chain_min_price_tick_size = self.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_maker_fee_rate = self.convert_value_to_chain_format(value=maker_fee_rate) - chain_taker_fee_rate = self.convert_value_to_chain_format(value=taker_fee_rate) - chain_initial_margin_ratio = self.convert_value_to_chain_format(value=initial_margin_ratio) - chain_maintenance_margin_ratio = self.convert_value_to_chain_format(value=maintenance_margin_ratio) - chain_min_notional = self.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_maker_fee_rate = Token.convert_value_to_chain_format(value=maker_fee_rate) + chain_taker_fee_rate = Token.convert_value_to_chain_format(value=taker_fee_rate) + chain_initial_margin_ratio = Token.convert_value_to_chain_format(value=initial_margin_ratio) + chain_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=maintenance_margin_ratio) + chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) return injective_exchange_tx_v2_pb.MsgInstantExpiryFuturesMarketLaunch( sender=sender, @@ -1658,11 +1650,11 @@ def msg_instant_binary_options_market_launch_v2( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: - chain_min_price_tick_size = self.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_maker_fee_rate = self.convert_value_to_chain_format(value=maker_fee_rate) - chain_taker_fee_rate = self.convert_value_to_chain_format(value=taker_fee_rate) - chain_min_notional = self.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_maker_fee_rate = Token.convert_value_to_chain_format(value=maker_fee_rate) + chain_taker_fee_rate = Token.convert_value_to_chain_format(value=taker_fee_rate) + chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) return injective_exchange_tx_v2_pb.MsgInstantBinaryOptionsMarketLaunch( sender=sender, @@ -1901,7 +1893,7 @@ def msg_subaccount_transfer_v2( amount: int, denom: str, ) -> injective_exchange_tx_v2_pb.MsgSubaccountTransfer: - chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) amount_coin = self.coin(amount=int(chain_amount), denom=denom) return injective_exchange_tx_v2_pb.MsgSubaccountTransfer( @@ -1941,7 +1933,7 @@ def msg_external_transfer_v2( amount: int, denom: str, ) -> injective_exchange_tx_v2_pb.MsgExternalTransfer: - chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=denom) return injective_exchange_tx_v2_pb.MsgExternalTransfer( @@ -2035,7 +2027,7 @@ def msg_increase_position_margin_v2( market_id: str, amount: Decimal, ) -> injective_exchange_tx_v2_pb.MsgIncreasePositionMargin: - additional_margin = self.convert_value_to_chain_format(value=amount) + additional_margin = Token.convert_value_to_chain_format(value=amount) return injective_exchange_tx_v2_pb.MsgIncreasePositionMargin( sender=sender, source_subaccount_id=source_subaccount_id, @@ -2101,7 +2093,7 @@ def msg_admin_update_binary_options_market_v2( ) if settlement_price is not None: - chain_settlement_price = self.convert_value_to_chain_format(value=settlement_price) + chain_settlement_price = Token.convert_value_to_chain_format(value=settlement_price) message.settlement_price = f"{chain_settlement_price.normalize():f}" return message @@ -2138,7 +2130,7 @@ def msg_decrease_position_margin_v2( market_id: str, amount: Decimal, ) -> injective_exchange_tx_v2_pb.MsgDecreasePositionMargin: - additional_margin = self.convert_value_to_chain_format(value=amount) + additional_margin = Token.convert_value_to_chain_format(value=amount) return injective_exchange_tx_v2_pb.MsgDecreasePositionMargin( sender=sender, source_subaccount_id=source_subaccount_id, @@ -2191,9 +2183,9 @@ def msg_update_spot_market_v2( new_min_quantity_tick_size: Decimal, new_min_notional: Decimal, ) -> injective_exchange_tx_v2_pb.MsgUpdateSpotMarket: - chain_min_price_tick_size = self.convert_value_to_chain_format(value=new_min_price_tick_size) - chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=new_min_quantity_tick_size) - chain_min_notional = self.convert_value_to_chain_format(value=new_min_notional) + chain_min_price_tick_size = Token.convert_value_to_chain_format(value=new_min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=new_min_quantity_tick_size) + chain_min_notional = Token.convert_value_to_chain_format(value=new_min_notional) return injective_exchange_tx_v2_pb.MsgUpdateSpotMarket( admin=admin, @@ -2254,11 +2246,11 @@ def msg_update_derivative_market_v2( new_initial_margin_ratio: Decimal, new_maintenance_margin_ratio: Decimal, ) -> injective_exchange_tx_v2_pb.MsgUpdateDerivativeMarket: - chain_min_price_tick_size = self.convert_value_to_chain_format(value=new_min_price_tick_size) - chain_min_quantity_tick_size = self.convert_value_to_chain_format(value=new_min_quantity_tick_size) - chain_min_notional = self.convert_value_to_chain_format(value=new_min_notional) - chain_initial_margin_ratio = self.convert_value_to_chain_format(value=new_initial_margin_ratio) - chain_maintenance_margin_ratio = self.convert_value_to_chain_format(value=new_maintenance_margin_ratio) + chain_min_price_tick_size = Token.convert_value_to_chain_format(value=new_min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=new_min_quantity_tick_size) + chain_min_notional = Token.convert_value_to_chain_format(value=new_min_notional) + chain_initial_margin_ratio = Token.convert_value_to_chain_format(value=new_initial_margin_ratio) + chain_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=new_maintenance_margin_ratio) return injective_exchange_tx_v2_pb.MsgUpdateDerivativeMarket( admin=admin, @@ -2329,7 +2321,7 @@ def msg_create_insurance_fund( expiry: int, initial_deposit: int, ) -> injective_insurance_tx_pb.MsgCreateInsuranceFund: - chain_initial_deposit = self.convert_value_to_chain_format(value=Decimal(str(initial_deposit))) + chain_initial_deposit = Token.convert_value_to_chain_format(value=Decimal(str(initial_deposit))) deposit = self.coin(amount=int(chain_initial_deposit), denom=quote_denom) return injective_insurance_tx_pb.MsgCreateInsuranceFund( @@ -2370,7 +2362,7 @@ def msg_underwrite( quote_denom: str, amount: int, ): - chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=quote_denom) return injective_insurance_tx_pb.MsgUnderwrite( @@ -2386,7 +2378,7 @@ def MsgRequestRedemption( share_denom: str, amount: int, ): - chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) return injective_insurance_tx_pb.MsgRequestRedemption( sender=sender, market_id=market_id, @@ -2431,8 +2423,8 @@ def MsgSendToEth(self, denom: str, sender: str, eth_dest: str, amount: float, br ) def msg_send_to_eth(self, denom: str, sender: str, eth_dest: str, amount: int, bridge_fee: int): - chain_amount = self.convert_value_to_chain_format(value=Decimal(str(amount))) - chain_bridge_fee = self.convert_value_to_chain_format(value=Decimal(str(bridge_fee))) + chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_bridge_fee = Token.convert_value_to_chain_format(value=Decimal(str(bridge_fee))) amount_coin = self.coin(amount=int(chain_amount), denom=denom) bridge_fee_coin = self.coin(amount=int(chain_bridge_fee), denom=denom) @@ -2447,7 +2439,7 @@ def msg_send_to_eth(self, denom: str, sender: str, eth_dest: str, amount: int, b # region Staking module def MsgDelegate(self, delegator_address: str, validator_address: str, amount: float): - be_amount = self.convert_value_to_chain_format(Decimal(str(amount))) + be_amount = Token.convert_value_to_chain_format(Decimal(str(amount))) return cosmos_staking_tx_pb.MsgDelegate( delegator_address=delegator_address, @@ -3104,91 +3096,6 @@ def unpack_transaction_messages(transaction_data: Dict[str, Any]) -> List[Dict[s return msgs - def _initialize_markets_and_tokens_from_files(self): - config: ConfigParser = constant.CONFIGS[self.network] - spot_markets = dict() - derivative_markets = dict() - tokens = dict() - - for section_name, configuration_section in config.items(): - if section_name.startswith("0x"): - description = configuration_section["description"] - - quote_token = Token( - name="", - symbol="", - denom="", - address="", - decimals=int(configuration_section["quote"]), - logo="", - updated=-1, - ) - - if "Spot" in description: - base_token = Token( - name="", - symbol="", - denom="", - address="", - decimals=int(configuration_section["base"]), - logo="", - updated=-1, - ) - - market = SpotMarket( - id=section_name, - status="", - ticker=description, - base_token=base_token, - quote_token=quote_token, - maker_fee_rate=None, - taker_fee_rate=None, - service_provider_fee=None, - min_price_tick_size=Decimal(str(configuration_section["min_price_tick_size"])), - min_quantity_tick_size=Decimal(str(configuration_section["min_quantity_tick_size"])), - min_notional=Decimal(str(configuration_section.get("min_notional", "0"))), - ) - spot_markets[market.id] = market - else: - market = DerivativeMarket( - id=section_name, - status="", - ticker=description, - oracle_base="", - oracle_quote="", - oracle_type="", - oracle_scale_factor=1, - initial_margin_ratio=None, - maintenance_margin_ratio=None, - quote_token=quote_token, - maker_fee_rate=None, - taker_fee_rate=None, - service_provider_fee=None, - min_price_tick_size=Decimal(str(configuration_section["min_price_tick_size"])), - min_quantity_tick_size=Decimal(str(configuration_section["min_quantity_tick_size"])), - min_notional=Decimal(str(configuration_section.get("min_notional", "0"))), - ) - - derivative_markets[market.id] = market - - elif section_name != "DEFAULT": - token = Token( - name=section_name, - symbol=section_name, - denom=configuration_section["peggy_denom"], - address="", - decimals=int(configuration_section["decimals"]), - logo="", - updated=-1, - ) - - tokens[token.symbol] = token - - self.tokens = tokens - self.spot_markets = spot_markets - self.derivative_markets = derivative_markets - self.binary_option_markets = dict() - def _order_mask(self, is_conditional: bool, is_buy: bool, is_market_order: bool) -> int: order_mask = 0 @@ -3265,10 +3172,10 @@ def _basic_v2_derivative_order( trigger_price: Optional[Decimal] = None, ) -> injective_order_v2_pb.DerivativeOrder: trigger_price = trigger_price or Decimal(0) - chain_quantity = f"{self.convert_value_to_chain_format(value=quantity).normalize():f}" - chain_price = f"{self.convert_value_to_chain_format(value=price).normalize():f}" - chain_margin = f"{self.convert_value_to_chain_format(value=margin).normalize():f}" - chain_trigger_price = f"{self.convert_value_to_chain_format(value=trigger_price).normalize():f}" + chain_quantity = f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}" + chain_price = f"{Token.convert_value_to_chain_format(value=price).normalize():f}" + chain_margin = f"{Token.convert_value_to_chain_format(value=margin).normalize():f}" + chain_trigger_price = f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}" chain_order_type = injective_order_v2_pb.OrderType.Value(order_type) return injective_order_v2_pb.DerivativeOrder( @@ -3284,9 +3191,3 @@ def _basic_v2_derivative_order( margin=chain_margin, trigger_price=chain_trigger_price, ) - - def convert_value_to_chain_format(self, value: Decimal) -> Decimal: - return value * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") - - def convert_value_from_chain_format(self, value: Decimal) -> Decimal: - return value / Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") diff --git a/pyinjective/constant.py b/pyinjective/constant.py index 95fe2aa7..07916429 100644 --- a/pyinjective/constant.py +++ b/pyinjective/constant.py @@ -1,6 +1,3 @@ -import os -from configparser import ConfigParser - GAS_PRICE = 160_000_000 GAS_FEE_BUFFER_AMOUNT = 25_000 MAX_MEMO_CHARACTERS = 256 @@ -8,18 +5,3 @@ TICKER_TOKENS_SEPARATOR = "/" INJ_DENOM = "inj" INJ_DECIMALS = 18 - -devnet_config = ConfigParser() -devnet_config.read(os.path.join(os.path.dirname(__file__), "denoms_devnet.ini")) - -testnet_config = ConfigParser() -testnet_config.read(os.path.join(os.path.dirname(__file__), "denoms_testnet.ini")) - -mainnet_config = ConfigParser() -mainnet_config.read(os.path.join(os.path.dirname(__file__), "denoms_mainnet.ini")) - -CONFIGS = { - "devnet": devnet_config, - "testnet": testnet_config, - "mainnet": mainnet_config, -} diff --git a/pyinjective/core/token.py b/pyinjective/core/token.py index f2a9bc79..8c0f3561 100644 --- a/pyinjective/core/token.py +++ b/pyinjective/core/token.py @@ -1,6 +1,8 @@ from dataclasses import dataclass from decimal import Decimal +from pyinjective.constant import ADDITIONAL_CHAIN_FORMAT_DECIMALS + @dataclass(eq=True, frozen=True) class Token: @@ -12,5 +14,13 @@ class Token: logo: str updated: int + @staticmethod + def convert_value_to_chain_format(value: Decimal) -> Decimal: + return value * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + + @staticmethod + def convert_value_from_chain_format(value: Decimal) -> Decimal: + return value / Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + def chain_formatted_value(self, human_readable_value: Decimal) -> Decimal: return human_readable_value * Decimal(f"1e{self.decimals}") diff --git a/pyinjective/denoms_devnet.ini b/pyinjective/denoms_devnet.ini deleted file mode 100644 index a50c4ea6..00000000 --- a/pyinjective/denoms_devnet.ini +++ /dev/null @@ -1,1885 +0,0 @@ -[0x01edfab47f124748dc89998eb33144af734484ba07099014594321729a0ca16b] -description = 'Devnet Spot AAVE/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0x0511ddc4e6586f3bfe1acb2dd905f8b8a82c97e1edaef654b12ca7e6031ca0fa] -description = 'Devnet Spot ATOM/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xd1956e20d74eeb1febe31cd37060781ff1cb266f49e0512b446a5fafa9a16034] -description = 'Devnet Spot WETH/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xe97ebaf3e2ae3bd00dabe59046fcc28ec58ea969df33a9ce95f4fc285306c2d4] -description = 'Devnet Spot WBTC/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x26413a70c9b78a495023e5ab8003c9cf963ef963f6755f8b57255feb5744bf31] -description = 'Devnet Spot LINK/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x28f3c9897e23750bf653889224f93390c467b83c86d736af79431958fff833d1] -description = 'Devnet Spot MATIC/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x74b17b0d6855feba39f1f7ab1e8bad0363bd510ee1dcc74e40c2adfe1502f781] -description = 'Devnet Spot BNB/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x572f05fd93a6c2c4611b2eba1a0a36e102b6a592781956f0128a27662d84f112] -description = 'Devnet Spot APE/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x74ee114ad750f8429a97e07b5e73e145724e9b21670a7666625ddacc03d6758d] -description = 'Devnet Spot YFI/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x7f71c4fba375c964be8db7fc7a5275d974f8c6cdc4d758f2ac4997f106bb052b] -description = 'Devnet Spot GF/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.0000000000001 -min_notional = 1000000 - -[0x8b1a4d3e8f6b559e30e40922ee3662dd78edf7042330d4d620d188699d1a9715] -description = 'Devnet Spot USDT/USDC' -base = 6 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0] -description = 'Devnet Spot INJ/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x6fa856bca5a9298ced8da3ef7616e66081ff64e4fdd2bffa38e95cf23c1f2321] -description = 'Devnet Spot PROJ/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 1000000000 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.000000000000001 -min_notional = 1000000 - -[0x0686357b934c761784d58a2b8b12618dfe557de108a220e06f8f6580abb83aab] -description = 'Devnet Spot SOMM/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 10 -min_notional = 1000000 - -[0x4fa0bd2c2adbfe077f58395c18a72f5cbf89532743e3bddf43bc7aba706b0b74] -description = 'Devnet Spot CHZ/USDC' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x2021159081a88c9a627c66f770fb60c7be78d492509c89b203e1829d0413995a] -description = 'Devnet Spot ETHBTCTrend/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0xfad0838bf6be7467c6a00d61360f7924afc848e4d0c56cc4261f94e77e124e7a] -description = 'Devnet Spot USDC/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xba3101edf6cb94d0b29fd95fb1679f84fe981a98da91a3df1e06809845fab209] -description = 'Devnet Spot WBTC/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 10000000000000000 - -[0xefc8e0b5bdb799010c9584c59fa14e759009d86c04fa52e0e67b411309096ace] -description = 'Devnet Spot PROJ/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.00000001 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 1000000000000000000000 -min_display_quantity_tick_size = 1000 -min_notional = 10000000000000000 - -[0x2d3b8d8833dda54a717adea9119134556848105fd6028e9a4a526e4e5a122a57] -description = 'Devnet Spot KIRA/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 1000 -min_notional = 10000000000000000 - -[0x42edf70cc37e155e9b9f178e04e18999bc8c404bd7b638cc4cbf41da8ef45a21] -description = 'Devnet Spot QUNT/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 1000 -min_notional = 0 - -[0xc8fafa1fcab27e16da20e98b4dc9dda45320418c27db80663b21edac72f3b597] -description = 'Devnet Spot HDRO/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0xd166688623206f9931307285678e9ff17cecd80a27d7b781dd88cecfba3b1839] -description = 'Devnet Spot BLACK/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0x1422a13427d5eabd4d8de7907c8340f7e58cb15553a9fd4ad5c90406561886f9] -description = 'Devnet Derivative COMP/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x1c284820f24dff4c60fecd521a9df3df9c745d23dd585d45bf418653c2d73ab4] -description = 'Devnet Derivative SNX/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x1f73e21972972c69c03fb105a5864592ac2b47996ffea3c500d1ea2d20138717] -description = 'Devnet Derivative LINK/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x4ca0f92fc28be0c9761326016b5a1a2177dd6375558365116b5bdda9abc229ce] -description = 'Devnet Derivative BTC/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x7cc8b10d7deb61e744ef83bdec2bbcf4a056867e89b062c6a453020ca82bd4e4] -description = 'Devnet Derivative INJ/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x56d0c0293c4415e2d48fc2c8503a56a0c7389247396a2ef9b0a48c01f0646705] -description = 'Devnet Derivative ATOM/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x979731deaaf17d26b2e256ad18fecd0ac742b3746b9ea5382bac9bd0b5e58f74] -description = 'Devnet Derivative ETH/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xb64332daa987dcb200c26965bc9adaf8aa301fe3a0aecb0232fadbd3dfccd0d8] -description = 'Devnet Derivative UNI/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xccd6723224cae013827668ad1e7f361cde694adbb7a87f62a6d547cc464ba9b5] -description = 'Devnet Derivative GRT/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x3b7fb1d9351f7fa2e6e0e5a11b3639ee5e0486c33a6a74f629c3fc3c3043efd5] -description = 'Devnet Derivative BONK/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0000000001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[$ALIEN] -peggy_denom = factory/inj1mly2ykhf6f9tdj58pvndjf4q8dzdl4myjqm9t6/$alien -decimals = 6 - -[$AOI] -peggy_denom = factory/inj169ed97mcnf8ay6rgvskn95n6tyt46uwvy5qgs0/$aoi -decimals = 6 - -[$Babykira] -peggy_denom = factory/inj13vau2mgx6mg7ams9nngjhyng58tl9zyw0n8s93/$babykira -decimals = 6 - -[1INCH] -peggy_denom = peggy0x111111111117dC0aa78b770fA6A738034120C302 -decimals = 18 - -[AAVE] -peggy_denom = peggy0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9 -decimals = 18 - -[ALPHA] -peggy_denom = inj1zwnsemwrpve3wrrg0njj89w6mt5rmj9ydkc46u -decimals = 8 - -[ANDR] -peggy_denom = ibc/61FA42C3F0B0F8768ED2CE380EDD3BE0E4CB7E67688F81F70DE9ECF5F8684E1E -decimals = 6 - -[APE] -peggy_denom = peggy0x44d63c7FC48385b212aB397aB91A2637ec964634 -decimals = 18 - -[APP] -peggy_denom = peggy0xC5d27F27F08D1FD1E3EbBAa50b3442e6c0D50439 -decimals = 18 - -[ARB] -peggy_denom = ibc/8CF0E4184CA3105798EDB18CAA3981ADB16A9951FE9B05C6D830C746202747E1 -decimals = 8 - -[ARBlegacy] -peggy_denom = inj1d5vz0uzwlpfvgwrwulxg6syy82axa58y4fuszd -decimals = 8 - -[ASG] -peggy_denom = ibc/2D40732D27E22D27A2AB79F077F487F27B6F13DB6293040097A71A52FB8AD021 -decimals = 8 - -[ASTR] -peggy_denom = inj1mhmln627samtkuwe459ylq763r4n7n69gxxc9x -decimals = 18 - -[ASTRO] -peggy_denom = ibc/E8AC6B792CDE60AB208CA060CA010A3881F682A7307F624347AB71B6A0B0BF89 -decimals = 6 - -[ATOM] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/atom -decimals = 8 - -[AUTISM] -peggy_denom = factory/inj14lf8xm6fcvlggpa7guxzjqwjmtr24gnvf56hvz/autism -decimals = 6 - -[AVAX] -peggy_denom = inj18a2u6az6dzw528rptepfg6n49ak6hdzkny4um6 -decimals = 8 - -[AXL] -peggy_denom = ibc/B68C1D2682A8B69E20BB921E34C6A3A2B6D1E13E3E8C0092E373826F546DEE65 -decimals = 6 - -[AXS] -peggy_denom = peggy0xBB0E17EF65F82Ab018d8EDd776e8DD940327B28b -decimals = 18 - -[Alpha Coin] -peggy_denom = peggy0x138C2F1123cF3f82E4596d097c118eAc6684940B -decimals = 18 - -[Ape Coin] -peggy_denom = peggy0x4d224452801ACEd8B2F0aebE155379bb5D594381 -decimals = 18 - -[Arbitrum] -peggy_denom = peggy0x912CE59144191C1204E64559FE8253a0e49E6548 -decimals = 18 - -[Axelar] -peggy_denom = peggy0x3eacbDC6C382ea22b78aCc158581A55aaF4ef3Cc -decimals = 6 - -[BAMBOO] -peggy_denom = factory/inj144nw6ny28mlwuvhfnh7sv4fcmuxnpjx4pksr0j/bamboo -decimals = 6 - -[BAND] -peggy_denom = peggy0xBA11D00c5f74255f56a5E366F4F77f5A186d7f55 -decimals = 18 - -[BAT] -peggy_denom = peggy0x0D8775F648430679A709E98d2b0Cb6250d2887EF -decimals = 18 - -[BAYC] -peggy_denom = bayc -decimals = 18 - -[BEAST] -peggy_denom = peggy0xA4426666addBE8c4985377d36683D17FB40c31Be -decimals = 6 - -[BINJ] -peggy_denom = factory/inj10q36ygr0pkz7ezajcnjd2f0tat5n737yg6g6d5/binj -decimals = 18 - -[BITS] -peggy_denom = factory/inj10gcvfpnn4932kzk56h5kp77mrfdqas8z63qr7n/bits -decimals = 6 - -[BLACK] -peggy_denom = factory/inj16eckaf75gcu9uxdglyvmh63k9t0l7chd0qmu85/black -decimals = 6 - -[BMOS] -peggy_denom = ibc/D9353C3B1407A7F7FE0A5CCB7D06249B57337888C95C6648AEAF2C83F4F3074E -decimals = 6 - -[BNB] -peggy_denom = peggy0xB8c77482e45F1F44dE1745F52C74426C631bDD52 -decimals = 18 - -[BODEN] -peggy_denom = boden -decimals = 9 - -[BONJO] -peggy_denom = factory/inj1r35twz3smeeycsn4ugnd3w0l5h2lxe44ptuu4w/bonjo -decimals = 6 - -[BONK] -peggy_denom = inj14rry9q6dym3dgcwzq79yay0e9azdz55jr465ch -decimals = 5 - -[BONUS] -peggy_denom = ibc/DCF43489B9438BB7E462F1A1AD38C7898DF7F49649F9CC8FEBFC533A1192F3EF -decimals = 8 - -[BRETT] -peggy_denom = factory/inj13jjdsa953w03dvecsr43dj5r6a2vzt7n0spncv/brett -decimals = 6 - -[BRZ] -peggy_denom = inj14jesa4q248mfxztfc9zgpswkpa4wx249mya9kk -decimals = 4 - -[BSKT] -peggy_denom = inj193340xxv49hkug7r65xzc0l40tze44pee4fj94 -decimals = 5 - -[BTC] -peggy_denom = btc -decimals = 8 - -[BULLS] -peggy_denom = factory/inj1zq37mfquqgud2uqemqdkyv36gdstkxl27pj5e3/bulls -decimals = 6 - -[BUSD] -peggy_denom = peggy0x4Fabb145d64652a948d72533023f6E7A623C7C53 -decimals = 18 - -[Babykira] -peggy_denom = factory/inj15jeczm4mqwtc9lk4c0cyynndud32mqd4m9xnmu/$babykira -decimals = 6 - -[Basket] -peggy_denom = peggy0xbC0899E527007f1B8Ced694508FCb7a2b9a46F53 -decimals = 5 - -[Bird INJ] -peggy_denom = factory/inj125hcdvz9dnhdqal2u8ctr7l0hd8xy9wdgzt8ld/binj -decimals = 6 - -[BitSong] -peggy_denom = peggy0x05079687D35b93538cbd59fe5596380cae9054A9 -decimals = 18 - -[Bonjo] -peggy_denom = inj19w5lfwk6k9q2d8kxnwsu4962ljnay85f9sgwn6 -decimals = 18 - -[Brazilian Digital Token] -peggy_denom = peggy0x420412E765BFa6d85aaaC94b4f7b708C89be2e2B -decimals = 4 - -[CAD] -peggy_denom = cad -decimals = 6 - -[CANTO] -peggy_denom = ibc/D91A2C4EE7CD86BBAFCE0FA44A60DDD9AFBB7EEB5B2D46C0984DEBCC6FEDFAE8 -decimals = 18 - -[CEL] -peggy_denom = peggy0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d -decimals = 4 - -[CELL] -peggy_denom = peggy0x26c8AFBBFE1EBaca03C2bB082E69D0476Bffe099 -decimals = 18 - -[CHZ] -peggy_denom = peggy0x3506424F91fD33084466F402d5D97f05F8e3b4AF -decimals = 18 - -[CHZlegacy] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q6kpxy6ar5lkxqudjvryarrrttmakwsvzkvcyh -decimals = 8 - -[CLON] -peggy_denom = ibc/695B1D16DE4D0FD293E6B79451640974080B59AA60942974C1CC906568DED795 -decimals = 6 - -[COCK] -peggy_denom = factory/inj1eucxlpy6c387g5wrn4ee7ppshdzg3rh4t50ahf/cock -decimals = 6 - -[COKE] -peggy_denom = factory/inj158g7dfclyg9rr6u4ddxg9d2afwevq5d79g2tm6/coke -decimals = 6 - -[COMP] -peggy_denom = peggy0xc00e94Cb662C3520282E6f5717214004A7f26888 -decimals = 18 - -[CRE] -peggy_denom = ibc/3A6DD3358D9F7ADD18CDE79BA10B400511A5DE4AE2C037D7C9639B52ADAF35C6 -decimals = 6 - -[CVR] -peggy_denom = peggy0x3c03b4ec9477809072ff9cc9292c9b25d4a8e6c6 -decimals = 18 - -[Chiliz (legacy)] -peggy_denom = inj1q6kpxy6ar5lkxqudjvryarrrttmakwsvzkvcyh -decimals = 8 - -[Cosmos] -peggy_denom = ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9 -decimals = 6 - -[DAI] -peggy_denom = peggy0x6b175474e89094c44da98b954eedeac495271d0f -decimals = 18 - -[DDL] -peggy_denom = factory/inj1put8lfpkwm47tqcl9fgh8grz987mezvrx4arls/ddl -decimals = 6 - -[DEFI5] -peggy_denom = peggy0xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41 -decimals = 18 - -[DEMO] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/demo -decimals = 18 - -[DGNZ] -peggy_denom = factory/inj1l2kcs4yxsxe0c87qy4ejmvkgegvjf0hkyhqk59/dgnz -decimals = 6 - -[DOGE] -peggy_denom = doge -decimals = 8 - -[DOJ] -peggy_denom = factory/inj172ccd0gddgz203e4pf86ype7zjx573tn8g0df9/doj -decimals = 6 - -[DOJO] -peggy_denom = factory/inj1any4rpwq7r850u6feajg5payvhwpunu9cxqevc/dojo -decimals = 6 - -[DOT] -peggy_denom = ibc/624BA9DD171915A2B9EA70F69638B2CEA179959850C1A586F6C485498F29EDD4 -decimals = 10 - -[DREAM] -peggy_denom = factory/inj1l2kcs4yxsxe0c87qy4ejmvkgegvjf0hkyhqk59/dream -decimals = 6 - -[DROGO] -peggy_denom = ibc/565FE65B82C091F8BAD1379FA1B4560C036C07913355ED4BD8D156DA63F43712 -decimals = 6 - -[DUDE] -peggy_denom = factory/inj1sn34edy635nv4yhts3khgpy5qxw8uey6wvzq53/dude -decimals = 6 - -[Dojo Token] -peggy_denom = inj1zdj9kqnknztl2xclm5ssv25yre09f8908d4923 -decimals = 18 - -[ELON] -peggy_denom = inj10pqutl0av9ltrw9jq8d3wjwjayvz76jhfcfza0 -decimals = 6 - -[ENA] -peggy_denom = peggy0x57e114b691db790c35207b2e685d4a43181e6061 -decimals = 18 - -[ENJ] -peggy_denom = peggy0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c -decimals = 18 - -[ERIC] -peggy_denom = factory/inj1w7cw5tltax6dx7znehul98gel6yutwuvh44j77/eric -decimals = 6 - -[ETH] -peggy_denom = eth -decimals = 18 - -[ETHBTCTrend] -peggy_denom = peggy0x6b7f87279982d919Bbf85182DDeAB179B366D8f2 -decimals = 18 - -[EUR] -peggy_denom = eur -decimals = 6 - -[EVAI] -peggy_denom = peggy0x50f09629d0afDF40398a3F317cc676cA9132055c -decimals = 8 - -[EVIINDEX] -peggy_denom = eviindex -decimals = 18 - -[EVMOS] -peggy_denom = ibc/16618B7F7AC551F48C057A13F4CA5503693FBFF507719A85BC6876B8BD75F821 -decimals = 18 - -[FET] -peggy_denom = ibc/C1D3666F27EA64209584F18BC79648E0C1783BB6EEC04A8060E4A8E9881C841B -decimals = 18 - -[FTM] -peggy_denom = peggy0x4E15361FD6b4BB609Fa63C81A2be19d873717870 -decimals = 18 - -[Fetch.ai] -peggy_denom = peggy0xaea46a60368a7bd060eec7df8cba43b7ef41ad85 -decimals = 18 - -[GALAXY] -peggy_denom = factory/inj10zdjt8ylfln5xr3a2ruf9nwn6d5q2d2r3v6mh8/galaxy -decimals = 6 - -[GBP] -peggy_denom = gbp -decimals = 6 - -[GF] -peggy_denom = peggy0xAaEf88cEa01475125522e117BFe45cF32044E238 -decimals = 18 - -[GIGA] -peggy_denom = ibc/36C811A2253AA64B58A9B66C537B89348FE5792A8808AAA343082CBFCAA72278 -decimals = 5 - -[GINGER] -peggy_denom = factory/inj172ccd0gddgz203e4pf86ype7zjx573tn8g0df9/ginger -decimals = 6 - -[GLTO] -peggy_denom = peggy0xd73175f9eb15eee81745d367ae59309Ca2ceb5e2 -decimals = 6 - -[GME] -peggy_denom = ibc/CAA5AB050F6C3DFE878212A37A4A6D3BEA6670F5B9786FFF7EF2D34213025272 -decimals = 8 - -[GOLD] -peggy_denom = gold -decimals = 18 - -[GOLDIE] -peggy_denom = factory/inj130ayayz6ls8qpmu699axhlg7ygy8u6thjjk9nc/goldie -decimals = 6 - -[GROK] -peggy_denom = factory/inj1vgrf5mcvvg9p5c6jajqefn840nq74wjzgkt30z/grok -decimals = 6 - -[GRT] -peggy_denom = peggy0xc944E90C64B2c07662A292be6244BDf05Cda44a7 -decimals = 18 - -[GYEN] -peggy_denom = peggy0xC08512927D12348F6620a698105e1BAac6EcD911 -decimals = 6 - -[HDRO] -peggy_denom = factory/inj1etz0laas6h7vemg3qtd67jpr6lh8v7xz7gfzqw/hdro -decimals = 6 - -[HT] -peggy_denom = peggy0x6f259637dcD74C767781E37Bc6133cd6A68aa161 -decimals = 18 - -[HUAHUA] -peggy_denom = ibc/E7807A46C0B7B44B350DA58F51F278881B863EC4DCA94635DAB39E52C30766CB -decimals = 6 - -[Hydro] -peggy_denom = factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/hdro -decimals = 6 - -[Hydro Wrapped INJ] -peggy_denom = inj1mz7mfhgx8tuvjqut03qdujrkzwlx9xhcj6yldc -decimals = 18 - -[IKINGS] -peggy_denom = factory/inj1mt876zny9j6xae25h7hl7zuqf7gkx8q63k0426/ikings -decimals = 6 - -[INCEL] -peggy_denom = factory/inj17g4j3geupy762u0wrewqwprvtzar7k5et2zqsh/incel -decimals = 6 - -[INJ] -peggy_denom = inj -decimals = 18 - -[INJECT] -peggy_denom = factory/inj1j7zt6g03vpmg9p7g7qngvylfxqeuds73utsjnk/inject -decimals = 6 - -[INJER] -peggy_denom = factory/inj1sjmplasxl9zgj6yh45j3ndskgdhcfcss9djkdn/injer -decimals = 6 - -[INJINU] -peggy_denom = factory/inj1vjppa6h9lf75pt0v6qnxtej4xcl0qevnxzcrvm/injinu -decimals = 6 - -[INJX] -peggy_denom = factory/inj104h3hchl7ws8lp78zpvrunvsjdwfjc02r5d0fp/injx -decimals = 6 - -[INJbsc] -peggy_denom = inj1xcgprh58szttp0vqtztvcfy34tkpupr563ua40 -decimals = 18 - -[INJet] -peggy_denom = inj1v8gg4wzfauwf9l7895t0eyrrkwe65vh5n7dqmw -decimals = 18 - -[IOTX] -peggy_denom = peggy0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69 -decimals = 18 - -[IPandaAI] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/ipandaai -decimals = 6 - -[Injective] -peggy_denom = peggy0x5512c04B6FF813f3571bDF64A1d74c98B5257332 -decimals = 18 - -[Injective Panda] -peggy_denom = factory/inj183lz632dna57ayuf6unqph5d0v2u655h2jzzyy/bamboo -decimals = 6 - -[Internet Explorer] -peggy_denom = factory/inj1zhevrrwywg3az9ulxd9u233eyy4m2mmr6vegsg/ninjb -decimals = 6 - -[JPY] -peggy_denom = jpy -decimals = 6 - -[JUNO] -peggy_denom = ibc/D50E26996253EBAA8C684B9CD653FE2F7665D7BDDCA3D48D5E1378CF6334F211 -decimals = 6 - -[JUP] -peggy_denom = jup -decimals = 6 - -[KAGE] -peggy_denom = inj1l49685vnk88zfw2egf6v65se7trw2497wsqk65 -decimals = 18 - -[KARATE] -peggy_denom = factory/inj1898t0vtmul3tcn3t0v8qe3pat47ca937jkpezv/karate -decimals = 6 - -[KARMA] -peggy_denom = factory/inj1d4ld9w7mf8wjyv5y7fnhpate07fguv3s3tmngm/karma -decimals = 6 - -[KATANA] -peggy_denom = factory/inj1vwn4x08hlactxj3y3kuqddafs2hhqzapruwt87/katana -decimals = 6 - -[KAVA] -peggy_denom = ibc/57AA1A70A4BC9769C525EBF6386F7A21536E04A79D62E1981EFCEF9428EBB205 -decimals = 6 - -[KINJA] -peggy_denom = factory/inj1h33jkaqqalcy3wf8um6ewk4hxmfwf8uern470k/kinja -decimals = 6 - -[KIRA] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/kira -decimals = 6 - -[KPEPE] -peggy_denom = pepe -decimals = 18 - -[KUJI] -peggy_denom = ibc/9A115B56E769B92621FFF90567E2D60EFD146E86E867491DB69EEDA9ADC36204 -decimals = 6 - -[LAMA] -peggy_denom = factory/inj18lh8zx4hx0pyksyu74srktv4vgxskkkafknggl/lama -decimals = 6 - -[LAMBO] -peggy_denom = peggy0x3d2b66BC4f9D6388BD2d97B95b565BE1686aEfB3 -decimals = 18 - -[LDO] -peggy_denom = inj1me6t602jlndzxgv2d7ekcnkjuqdp7vfh4txpyy -decimals = 8 - -[LINK] -peggy_denom = peggy0x514910771AF9Ca656af840dff83E8264EcF986CA -decimals = 18 - -[LIOR] -peggy_denom = factory/inj1cjus5ragdkvpmt627fw7wkj2ydsra9s0vap4zx/lior -decimals = 6 - -[LUNA] -peggy_denom = ibc/B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395 -decimals = 6 - -[LVN] -peggy_denom = ibc/4971C5E4786D5995EC7EF894FCFA9CF2E127E95D5D53A982F6A062F3F410EDB8 -decimals = 6 - -[LYM] -peggy_denom = peggy0xc690f7c7fcffa6a82b79fab7508c466fefdfc8c5 -decimals = 18 - -[Lido DAO Token] -peggy_denom = peggy0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32 -decimals = 18 - -[MAGA] -peggy_denom = peggy0x576e2BeD8F7b46D34016198911Cdf9886f78bea7 -decimals = 9 - -[MATIC] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/matic -decimals = 18 - -[MEMEME] -peggy_denom = peggy0x1A963Df363D01EEBB2816b366d61C917F20e1EbE -decimals = 18 - -[MILA] -peggy_denom = factory/inj1z08usf75ecfp3cqtwey6gx7nr79s3agal3k8xf/mila -decimals = 6 - -[MILK] -peggy_denom = factory/inj1fpl63h7at2epr55yn5svmqkq4fkye32vmxq8ry/milk -decimals = 6 - -[MOONIFY] -peggy_denom = factory/inj1ktq0gf7altpsf0l2qzql4sfs0vc0ru75cnj3a6/moonify -decimals = 6 - -[MOTHER] -peggy_denom = ibc/984E90A8E0265B9804B7345C7542BF9B3046978AE5557B4AABADDFE605CACABE -decimals = 6 - -[MPEPE] -peggy_denom = mpepe -decimals = 18 - -[MT] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/mt -decimals = 6 - -[NBLA] -peggy_denom = factory/inj1d0zfq42409a5mhdagjutl8u6u9rgcm4h8zfmfq/nbla -decimals = 6 - -[NBZ] -peggy_denom = ibc/1011E4D6D4800DA9B8F21D7C207C0B0C18E54E614A8576037F066B775210709D -decimals = 6 - -[NBZAIRDROP] -peggy_denom = factory/inj1llr45x92t7jrqtxvc02gpkcqhqr82dvyzkr4mz/nbzairdrop -decimals = 0 - -[NEOK] -peggy_denom = ibc/F6CC233E5C0EA36B1F74AB1AF98471A2D6A80E2542856639703E908B4D93E7C4 -decimals = 18 - -[NEXO] -peggy_denom = peggy0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206 -decimals = 18 - -[NINJA] -peggy_denom = factory/inj1xtel2knkt8hmc9dnzpjz6kdmacgcfmlv5f308w/ninja -decimals = 6 - -[NINJB] -peggy_denom = factory/inj1ezzzfm2exjz57hxuc65sl8s3d5y6ee0kxvu67n/ninjb -decimals = 6 - -[NLC] -peggy_denom = inj1r9h59ke0a77zkaarr4tuq25r3lt9za4r2mgyf4 -decimals = 6 - -[NOBI] -peggy_denom = factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/nobi -decimals = 6 - -[NOBITCHES] -peggy_denom = factory/inj14n8f39qdg6t68s5z00t4vczvkcvzlgm6ea5vk5/nobitches -decimals = 6 - -[NOIA] -peggy_denom = peggy0xa8c8CfB141A3bB59FEA1E2ea6B79b5ECBCD7b6ca -decimals = 18 - -[NOIS] -peggy_denom = ibc/DD9182E8E2B13C89D6B4707C7B43E8DB6193F9FF486AFA0E6CF86B427B0D231A -decimals = 6 - -[NONE] -peggy_denom = peggy0x903ff0ba636E32De1767A4B5eEb55c155763D8B7 -decimals = 18 - -[NONJA] -peggy_denom = inj1fu5u29slsg2xtsj7v5la22vl4mr4ywl7wlqeck -decimals = 18 - -[NPEPE] -peggy_denom = factory/inj1ga982yy0wumrlt4nnj79wcgmw7mzvw6jcyecl0/npepe -decimals = 6 - -[Neptune Receipt INJ] -peggy_denom = inj1rmzufd7h09sqfrre5dtvu5d09ta7c0t4jzkr2f -decimals = 18 - -[OCEAN] -peggy_denom = peggy0x967da4048cD07aB37855c090aAF366e4ce1b9F48 -decimals = 18 - -[OMI] -peggy_denom = peggy0xed35af169af46a02ee13b9d79eb57d6d68c1749e -decimals = 18 - -[OMNI] -peggy_denom = peggy0x36e66fbbce51e4cd5bd3c62b637eb411b18949d4 -decimals = 18 - -[OP] -peggy_denom = op -decimals = 18 - -[ORAI] -peggy_denom = ibc/C20C0A822BD22B2CEF0D067400FCCFB6FAEEE9E91D360B4E0725BD522302D565 -decimals = 6 - -[ORNE] -peggy_denom = ibc/3D99439444ACDEE71DBC4A774E49DB74B58846CCE31B9A868A7A61E4C14D321E -decimals = 6 - -[OSMO] -peggy_denom = ibc/92E0120F15D037353CFB73C14651FC8930ADC05B93100FD7754D3A689E53B333 -decimals = 6 - -[OX] -peggy_denom = peggy0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f -decimals = 18 - -[Oraichain] -peggy_denom = peggy0x4c11249814f11b9346808179Cf06e71ac328c1b5 -decimals = 18 - -[PAXG] -peggy_denom = peggy0x45804880De22913dAFE09f4980848ECE6EcbAf78 -decimals = 18 - -[PEPE] -peggy_denom = peggy0x6982508145454ce325ddbe47a25d4ec3d2311933 -decimals = 18 - -[PHUC] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/phuc -decimals = 6 - -[PIKA] -peggy_denom = factory/inj1h4usvhhva6dgmun9rk4haeh8lynln7yhk6ym00/pika -decimals = 6 - -[POINT] -peggy_denom = factory/inj1zaem9jqplp08hkkd5vcl6vmvala9qury79vfj4/point -decimals = 0 - -[POOL] -peggy_denom = peggy0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e -decimals = 18 - -[POOR] -peggy_denom = peggy0x9D433Fa992C5933D6843f8669019Da6D512fd5e9 -decimals = 8 - -[PROJ] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/proj -decimals = 18 - -[PROJX] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/projx -decimals = 18 - -[PUG] -peggy_denom = peggy0xf9a06dE3F6639E6ee4F079095D5093644Ad85E8b -decimals = 18 - -[PUNK] -peggy_denom = factory/inj1esz96ru3guug4ctmn5chjmkymt979sfvufq0hs/punk -decimals = 6 - -[PVP] -peggy_denom = peggy0x9B44793a0177C84DD01AD81137db696531902871 -decimals = 8 - -[PYTH] -peggy_denom = ibc/F3330C1B8BD1886FE9509B94C7B5398B892EA41420D2BC0B7C6A53CB8ED761D6 -decimals = 6 - -[PYTHlegacy] -peggy_denom = inj1tjcf9497fwmrnk22jfu5hsdq82qshga54ajvzy -decimals = 6 - -[PYUSD] -peggy_denom = ibc/4367FD29E33CDF0487219CD3E88D8C432BD4C2776C0C1034FF05A3E6451B8B11 -decimals = 6 - -[Phuc] -peggy_denom = factory/inj1995xnrrtnmtdgjmx0g937vf28dwefhkhy6gy5e/phuc -decimals = 6 - -[Pikachu] -peggy_denom = factory/inj1h9zu2u6yqf3t5uym75z94zsqfhazzkyg39957u/pika -decimals = 6 - -[Polkadot] -peggy_denom = inj1spzwwtr2luljr300ng2gu52zg7wn7j44m92mdf -decimals = 10 - -[Polygon] -peggy_denom = peggy0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0 -decimals = 18 - -[Punk Token] -peggy_denom = inj1wmrzttj7ms7glplek348vedx4v2ls467n539xt -decimals = 18 - -[QAT] -peggy_denom = inj1m4g54lg2mhhm7a4h3ms5xlyecafhe4macgsuen -decimals = 8 - -[QNT] -peggy_denom = peggy0x4a220e6096b25eadb88358cb44068a3248254675 -decimals = 18 - -[QUNT] -peggy_denom = factory/inj127l5a2wmkyvucxdlupqyac3y0v6wqfhq03ka64/qunt -decimals = 6 - -[RAI] -peggy_denom = peggy0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919 -decimals = 18 - -[RAMEN] -peggy_denom = factory/inj1z5utcc5u90n8a5m8gv30char6j4hdzxz6t3pke/ramen -decimals = 6 - -[RIBBIT] -peggy_denom = peggy0xb794Ad95317f75c44090f64955954C3849315fFe -decimals = 18 - -[RICE] -peggy_denom = factory/inj1mt876zny9j6xae25h7hl7zuqf7gkx8q63k0426/rice -decimals = 12 - -[ROOT] -peggy_denom = peggy0xa3d4BEe77B05d4a0C943877558Ce21A763C4fa29 -decimals = 6 - -[RUNE] -peggy_denom = peggy0x3155BA85D5F96b2d030a4966AF206230e46849cb -decimals = 18 - -[SAE] -peggy_denom = factory/inj152mdu38fkkk4fl7ycrpdqxpm63w3ztadgtktyr/sae -decimals = 6 - -[SAGA] -peggy_denom = ibc/AF921F0874131B56897A11AA3F33D5B29CD9C147A1D7C37FE8D918CB420956B2 -decimals = 6 - -[SCRT] -peggy_denom = ibc/0954E1C28EB7AF5B72D24F3BC2B47BBB2FDF91BDDFD57B74B99E133AED40972A -decimals = 6 - -[SDEX] -peggy_denom = peggy0x5DE8ab7E27f6E7A1fFf3E5B337584Aa43961BEeF -decimals = 18 - -[SEI] -peggy_denom = sei -decimals = 6 - -[SHIB] -peggy_denom = peggy0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE -decimals = 18 - -[SHROOM] -peggy_denom = inj1300xcg9naqy00fujsr9r8alwk7dh65uqu87xm8 -decimals = 18 - -[SHURIKEN] -peggy_denom = factory/inj1gflhshg8yrk8rrr3sgswhmsnygw9ghzdsn05a0/shuriken -decimals = 6 - -[SKIPBIDIDOBDOBDOBYESYESYESYES] -peggy_denom = peggy0x5085202d0A4D8E4724Aa98C42856441c3b97Bc6d -decimals = 9 - -[SMELLY] -peggy_denom = factory/inj10pz3xq7zf8xudqxaqealgyrnfk66u3c99ud5m2/smelly -decimals = 6 - -[SNOWY] -peggy_denom = factory/inj1ml33x7lkxk6x2x95d3alw4h84evlcdz2gnehmk/snowy -decimals = 6 - -[SNS] -peggy_denom = ibc/4BFB3FB1903142C5A7570EE7697636436E52FDB99AB8ABE0257E178A926E2568 -decimals = 8 - -[SNX] -peggy_denom = peggy0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F -decimals = 18 - -[SOL] -peggy_denom = ibc/A8B0B746B5AB736C2D8577259B510D56B8AF598008F68041E3D634BCDE72BE97 -decimals = 8 - -[SOLlegacy] -peggy_denom = inj1sthrn5ep8ls5vzz8f9gp89khhmedahhdkqa8z3 -decimals = 8 - -[SOMM] -peggy_denom = ibc/34346A60A95EB030D62D6F5BDD4B745BE18E8A693372A8A347D5D53DBBB1328B -decimals = 6 - -[SPUUN] -peggy_denom = factory/inj1flkktfvf8nxvk300f2z3vxglpllpw59c563pk7/spuun -decimals = 6 - -[STARS] -peggy_denom = peggy0xc55c2175E90A46602fD42e931f62B3Acc1A013Ca -decimals = 18 - -[STINJ] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/stinj -decimals = 18 - -[STRD] -peggy_denom = ibc/3FDD002A3A4019B05A33D324B2F29748E77AF501BEA5C96D1F28B2D6755F9F25 -decimals = 6 - -[STT] -peggy_denom = peggy0xaC9Bb427953aC7FDDC562ADcA86CF42D988047Fd -decimals = 18 - -[STX] -peggy_denom = stx -decimals = 6 - -[SUI] -peggy_denom = sui -decimals = 9 - -[SUSHI] -peggy_denom = inj1n73yuus64z0yrda9hvn77twkspc4uste9j9ydd -decimals = 18 - -[SWAP] -peggy_denom = peggy0xcc4304a31d09258b0029ea7fe63d032f52e44efe -decimals = 18 - -[Shiba INJ] -peggy_denom = factory/inj1v0yk4msqsff7e9zf8ktxykfhz2hen6t2u4ue4r/shiba inj -decimals = 6 - -[Shinobi] -peggy_denom = factory/inj1t02au5gsk40ev9jaq0ggcyry9deuvvza6s4wav/nobi -decimals = 6 - -[Shuriken Token] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shuriken -decimals = 6 - -[Solana] -peggy_denom = inj12ngevx045zpvacus9s6anr258gkwpmthnz80e9 -decimals = 8 - -[Sommelier] -peggy_denom = peggy0xa670d7237398238DE01267472C6f13e5B8010FD1 -decimals = 6 - -[SteadyBTC] -peggy_denom = peggy0x4986fD36b6b16f49b43282Ee2e24C5cF90ed166d -decimals = 18 - -[SteadyETH] -peggy_denom = peggy0x3F07A84eCdf494310D397d24c1C78B041D2fa622 -decimals = 18 - -[Stride Staked Injective] -peggy_denom = ibc/AC87717EA002B0123B10A05063E69BCA274BA2C44D842AEEB41558D2856DCE93 -decimals = 18 - -[Summoners Arena Essence] -peggy_denom = ibc/0AFCFFE18230E0E703A527F7522223D808EBB0E02FDBC84AAF8A045CD8FE0BBB -decimals = 8 - -[SushiSwap] -peggy_denom = peggy0x6B3595068778DD592e39A122f4f5a5cF09C90fE2 -decimals = 18 - -[TAB] -peggy_denom = peggy0x36B3D7ACe7201E28040eFf30e815290D7b37ffaD -decimals = 18 - -[TALIS] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis -decimals = 6 - -[TEST1] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/test1 -decimals = 6 - -[TEST2] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/test2 -decimals = 6 - -[TEST3] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/test3 -decimals = 6 - -[TEvmos] -peggy_denom = ibc/300B5A980CA53175DBAC918907B47A2885CADD17042AD58209E777217D64AF20 -decimals = 18 - -[TIA] -peggy_denom = ibc/F51BB221BAA275F2EBF654F70B005627D7E713AFFD6D86AFD1E43CAA886149F4 -decimals = 6 - -[TIX] -peggy_denom = factory/inj1rw3qvamxgmvyexuz2uhyfa4hukvtvteznxjvke/tix -decimals = 6 - -[TRUCPI] -peggy_denom = trucpi -decimals = 18 - -[Terra] -peggy_denom = peggy0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9 -decimals = 6 - -[TerraUSD] -peggy_denom = peggy0xa47c8bf37f92aBed4A126BDA807A7b7498661acD -decimals = 18 - -[Test QAT] -peggy_denom = peggy0x1902e18fEB1234D00d880f1fACA5C8d74e8501E9 -decimals = 18 - -[Tether] -peggy_denom = peggy0xdAC17F958D2ee523a2206206994597C13D831ec7 -decimals = 6 - -[UMA] -peggy_denom = peggy0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828 -decimals = 18 - -[UNI] -peggy_denom = peggy0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 -decimals = 18 - -[UPHOTON] -peggy_denom = ibc/48BC9C6ACBDFC1EBA034F1859245D53EA4BF74147189D66F27C23BF966335DFB -decimals = 6 - -[USD Coin] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj12sqy9uzzl3h3vqxam7sz9f0yvmhampcgesh3qw -decimals = 6 - -[USD Coin (legacy)] -peggy_denom = inj1q6zlut7gtkzknkk773jecujwsdkgq882akqksk -decimals = 6 - -[USDC] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/usdc -decimals = 6 - -[USDC-MPL] -peggy_denom = peggy0xf875aef00C4E21E9Ab4A335eB36A1175Ab00424A -decimals = 6 - -[USDCarb] -peggy_denom = inj1lmcfftadjkt4gt3lcvmz6qn4dhx59dv2m7yv8r -decimals = 6 - -[USDCbsc] -peggy_denom = inj1dngqzz6wphf07fkdam7dn55t8t3r6qenewy9zu -decimals = 6 - -[USDCet] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q6zlut7gtkzknkk773jecujwsdkgq882akqksk -decimals = 6 - -[USDCgateway] -peggy_denom = ibc/7BE71BB68C781453F6BB10114F8E2DF8DC37BA791C502F5389EA10E7BEA68323 -decimals = 6 - -[USDClegacy] -peggy_denom = peggy0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 -decimals = 6 - -[USDCpoly] -peggy_denom = inj19s2r64ghfqq3py7f5dr0ynk8yj0nmngca3yvy3 -decimals = 6 - -[USDCso] -peggy_denom = inj12pwnhtv7yat2s30xuf4gdk9qm85v4j3e60dgvu -decimals = 6 - -[USDT] -peggy_denom = peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5 -decimals = 6 - -[USDTap] -peggy_denom = inj13yrhllhe40sd3nj0lde9azlwfkyrf2t9r78dx5 -decimals = 6 - -[USDTbsc] -peggy_denom = inj1l9eyrnv3ret8da3qh8j5aytp6q4f73crd505lj -decimals = 6 - -[USDTet] -peggy_denom = inj18zykysxw9pcvtyr9ylhe0p5s7yzf6pzdagune8 -decimals = 6 - -[USDTkv] -peggy_denom = ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB -decimals = 6 - -[USDTso] -peggy_denom = inj1qjn06jt7zjhdqxgud07nylkpgnaurq6xc5c4fd -decimals = 6 - -[USDY] -peggy_denom = ibc/93EAE5F9D6C14BFAC8DD1AFDBE95501055A7B22C5D8FA8C986C31D6EFADCA8A9 -decimals = 18 - -[USDYet] -peggy_denom = peggy0x96F6eF951840721AdBF46Ac996b59E0235CB985C -decimals = 18 - -[USDe] -peggy_denom = peggy0x4c9EDD5852cd905f086C759E8383e09bff1E68B3 -decimals = 18 - -[UST] -peggy_denom = ibc/B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C -decimals = 18 - -[UTK] -peggy_denom = peggy0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c -decimals = 18 - -[UUST] -peggy_denom = ibc/C643B73073217F778DD7BDCB74C7EBCEF8E7EF81614FFA3C1C31861221AA9C4A -decimals = 0 - -[Unknown] -peggy_denom = ibc/078184C66B073F0464BA0BBD736DD601A0C637F9C42B592DDA5D6A95289D99A4 -decimals = 6 - -[VATRENI] -peggy_denom = inj1tn457ed2gg5vj2cur5khjjw63w73y3xhyhtaay -decimals = 8 - -[VRD] -peggy_denom = peggy0xf25304e75026E6a35FEDcA3B0889aE5c4D3C55D8 -decimals = 18 - -[W] -peggy_denom = ibc/F16F0F685BEF7BC6A145F16CBE78C6EC8C7C3A5F3066A98A9E57DCEA0903E537 -decimals = 6 - -[WAGMI] -peggy_denom = factory/inj188veuqed0dygkcmq5d24u3807n6csv4wdv28gh/wagmi -decimals = 9 - -[WAIFU] -peggy_denom = factory/inj12dvzf9tx2ndc9498aqpkrxgugr3suysqwlmn49/waifu -decimals = 6 - -[WASSIE] -peggy_denom = peggy0x2c95d751da37a5c1d9c5a7fd465c1d50f3d96160 -decimals = 18 - -[WGLMR-WEI] -peggy_denom = ibc/8FF72FB47F07B4AFA8649500A168683BEFCB9EE164BD331FA597D26224D51055 -decimals = 0 - -[WGMI] -peggy_denom = factory/inj1rmjzj9fn47kdmfk4f3z39qr6czexxe0yjyc546/wgmi -decimals = 6 - -[WHALE] -peggy_denom = ibc/D6E6A20ABDD600742D22464340A7701558027759CE14D12590F8EA869CCCF445 -decimals = 6 - -[WIF] -peggy_denom = wif -decimals = 6 - -[WIZZ] -peggy_denom = factory/inj1uvfpvnmuqhx8jwg4786y59tkagmph827h38mst/wizz -decimals = 6 - -[WKLAY] -peggy_denom = inj14cl67lprqkt3pncjav070gavaxslc0tzpc56f4 -decimals = 8 - -[WMATIC] -peggy_denom = ibc/4DEFEB42BAAB2788723759D95B7550BCE460855563ED977036248F5B94C842FC -decimals = 8 - -[WMATIClegacy] -peggy_denom = inj1dxv423h8ygzgxmxnvrf33ws3k94aedfdevxd8h -decimals = 8 - -[WOSMO] -peggy_denom = ibc/DD648F5D3CDA56D0D8D8820CF703D246B9FC4007725D8B38D23A21FF1A1477E3 -decimals = 6 - -[WSTETH] -peggy_denom = peggy0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0 -decimals = 18 - -[Wrapped Bitcoin] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/wbtc -decimals = 8 - -[Wrapped Ethereum] -peggy_denom = inj1k9r62py07wydch6sj5sfvun93e4qe0lg7jyatc -decimals = 8 - -[XAC] -peggy_denom = peggy0xDe4C5a791913838027a2185709E98c5C6027EA63 -decimals = 8 - -[XAG] -peggy_denom = xag -decimals = 6 - -[XAU] -peggy_denom = xau -decimals = 6 - -[XBX] -peggy_denom = peggy0x080B12E80C9b45e97C23b6ad10a16B3e2a123949 -decimals = 18 - -[XIII] -peggy_denom = factory/inj18flmwwaxxqj8m8l5zl8xhjrnah98fcjp3gcy3e/xiii -decimals = 6 - -[XION] -peggy_denom = ibc/DAB0823884DB5785F08EE136EE9EB362E166F4C7455716641B03E93CE7F14193 -decimals = 6 - -[XNJ] -peggy_denom = inj17pgmlk6fpfmqyffs205l98pmnmp688mt0948ar -decimals = 18 - -[XPLA] -peggy_denom = inj1j08452mqwadp8xu25kn9rleyl2gufgfjqjvewe -decimals = 8 - -[XPRT] -peggy_denom = ibc/B786E7CBBF026F6F15A8DA248E0F18C62A0F7A70CB2DABD9239398C8B5150ABB -decimals = 6 - -[XRP] -peggy_denom = peggy0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe -decimals = 18 - -[XTALIS] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis -decimals = 6 - -[YFI] -peggy_denom = peggy0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e -decimals = 18 - -[YUKI] -peggy_denom = factory/inj1spdy83ds5ezq9rvtg0ndy8480ad5rlczcpvtu2/yuki -decimals = 6 - -[ZEN] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/zen -decimals = 18 - -[ZIG] -peggy_denom = peggy0xb2617246d0c6c0087f18703d576831899ca94f01 -decimals = 18 - -[ZK] -peggy_denom = zk -decimals = 18 - -[ZRO] -peggy_denom = zro -decimals = 6 - -[ZRX] -peggy_denom = peggy0xE41d2489571d322189246DaFA5ebDe1F4699F498 -decimals = 18 - -[axlUSDC] -peggy_denom = ibc/7E1AF94AD246BE522892751046F0C959B768642E5671CC3742264068D49553C0 -decimals = 6 - -[dINJ] -peggy_denom = inj134wfjutywny9qnyux2xgdmm0hfj7mwpl39r3r9 -decimals = 18 - -[dYdX] -peggy_denom = peggy0x92d6c1e31e14520e676a687f0a93788b716beff5 -decimals = 18 - -[ezETH] -peggy_denom = peggy0xbf5495Efe5DB9ce00f80364C8B423567e58d2110 -decimals = 18 - -[fUSDT] -peggy_denom = peggy0x81994b9607e06ab3d5cF3AffF9a67374f05F27d7 -decimals = 8 - -[factory/inj153e2w8u77h4ytrhgry846k5t8n9uea8xtal6d7/lp] -peggy_denom = factory/inj153e2w8u77h4ytrhgry846k5t8n9uea8xtal6d7/lp -decimals = 0 - -[factory/inj1jfuyujpvvkxq4566r3z3tv3jdy29pqra5ln0yk/kira] -peggy_denom = factory/inj1jfuyujpvvkxq4566r3z3tv3jdy29pqra5ln0yk/kira -decimals = 6 - -[factory/inj1lhr06p7k3rdgk0knw5hfsde3fj87g2aq4e9a52/binj] -peggy_denom = factory/inj1lhr06p7k3rdgk0knw5hfsde3fj87g2aq4e9a52/binj -decimals = 6 - -[factory/inj1lv0mhwcu3y4p9av5nafct8j7y4ag6lmlfuxuy3/lp] -peggy_denom = factory/inj1lv0mhwcu3y4p9av5nafct8j7y4ag6lmlfuxuy3/lp -decimals = 0 - -[factory/inj1sg3yjgjlwhtrepeuusj4jwv209rh6cmk882cw3/lior] -peggy_denom = factory/inj1sg3yjgjlwhtrepeuusj4jwv209rh6cmk882cw3/lior -decimals = 6 - -[factory/inj1tgphgjqsz8fupkfjx6cy275e3s0l8xfu6rd6jh/lior] -peggy_denom = factory/inj1tgphgjqsz8fupkfjx6cy275e3s0l8xfu6rd6jh/lior -decimals = 6 - -[factory/inj1uukt3kqela4vsllvrqnrgllkna5wn3cm588w6k/inj1kwdranvwf6vl2grh99layugwdnph6um2e8k25g] -peggy_denom = factory/inj1uukt3kqela4vsllvrqnrgllkna5wn3cm588w6k/inj1kwdranvwf6vl2grh99layugwdnph6um2e8k25g -decimals = 0 - -[factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj149ltwdnpxrhx9al42s359glcjnsuc6x3gfemjd] -peggy_denom = factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj149ltwdnpxrhx9al42s359glcjnsuc6x3gfemjd -decimals = 0 - -[factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj1ery8l6jquynn9a4cz2pff6khg8c68f7u20ufuj] -peggy_denom = factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj1ery8l6jquynn9a4cz2pff6khg8c68f7u20ufuj -decimals = 0 - -[factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj1up07dctjqud4fns75cnpejr4frmjtddztvuruc] -peggy_denom = factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj1up07dctjqud4fns75cnpejr4frmjtddztvuruc -decimals = 0 - -[factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj1vauk4puffxad4r3qs3ex0vfl5mkuw5xe8aya8c] -peggy_denom = factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj1vauk4puffxad4r3qs3ex0vfl5mkuw5xe8aya8c -decimals = 0 - -[factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj1w798gp0zqv3s9hjl3jlnwxtwhykga6rnx4llty] -peggy_denom = factory/inj1wug8sewp6cedgkmrmvhl3lf3tulagm9h5uhctd/lpinj1w798gp0zqv3s9hjl3jlnwxtwhykga6rnx4llty -decimals = 0 - -[factory/inj1xawhm3d8lf9n0rqdljpal033yackja3dt0kvp0/nobi] -peggy_denom = factory/inj1xawhm3d8lf9n0rqdljpal033yackja3dt0kvp0/nobi -decimals = 6 - -[factory/inj1xy3kvlr4q4wdd6lrelsrw2fk2ged0any44hhwq/KIRA] -peggy_denom = factory/inj1xy3kvlr4q4wdd6lrelsrw2fk2ged0any44hhwq/KIRA -decimals = 6 - -[factory/inj1yg24mn8enl5e6v4jl2j6cce47mx4vyd6e8dpck/milk] -peggy_denom = factory/inj1yg24mn8enl5e6v4jl2j6cce47mx4vyd6e8dpck/milk -decimals = 6 - -[factory/inj1z426atp9k68uv49kaam7m0vnehw5fulxkyvde0/shuriken] -peggy_denom = factory/inj1z426atp9k68uv49kaam7m0vnehw5fulxkyvde0/shuriken -decimals = 6 - -[hINJ] -peggy_denom = inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc -decimals = 18 - -[ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E] -peggy_denom = ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E -decimals = 6 - -[ibc/4457C4FE143DA253CBBE998681F090B51F67E0A6AFDC8D9347516DB519712C2F] -peggy_denom = ibc/4457C4FE143DA253CBBE998681F090B51F67E0A6AFDC8D9347516DB519712C2F -decimals = 0 - -[ibc/88C49ADE2E583244058E4786C9FAE1AC431D55289EE31D59DDCC45201A60B82E] -peggy_denom = ibc/88C49ADE2E583244058E4786C9FAE1AC431D55289EE31D59DDCC45201A60B82E -decimals = 0 - -[ibc/EBD5A24C554198EBAF44979C5B4D2C2D312E6EBAB71962C92F735499C7575839] -peggy_denom = ibc/EBD5A24C554198EBAF44979C5B4D2C2D312E6EBAB71962C92F735499C7575839 -decimals = 6 - -[inj12sqy9uzzl3h3vqxam7sz9f0yvmhampcgesh3qw] -peggy_denom = inj12sqy9uzzl3h3vqxam7sz9f0yvmhampcgesh3qw -decimals = 6 - -[inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku] -peggy_denom = inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku -decimals = 18 - -[inj14eaxewvy7a3fk948c3g3qham98mcqpm8v5y0dp] -peggy_denom = inj14eaxewvy7a3fk948c3g3qham98mcqpm8v5y0dp -decimals = 6 - -[inj1plsk58sxqjw9828aqzeskmc8xy9eu5kppw3jg4] -peggy_denom = inj1plsk58sxqjw9828aqzeskmc8xy9eu5kppw3jg4 -decimals = 8 - -[lootbox1] -peggy_denom = factory/inj1llr45x92t7jrqtxvc02gpkcqhqr82dvyzkr4mz/lootbox1 -decimals = 0 - -[nATOM] -peggy_denom = inj16jf4qkcarp3lan4wl2qkrelf4kduvvujwg0780 -decimals = 6 - -[nINJ] -peggy_denom = inj13xlpypcwl5fuc84uhqzzqumnrcfpptyl6w3vrf -decimals = 18 - -[nTIA] -peggy_denom = inj1fzquxxxam59z6fzewy2hvvreeh3m04x83zg4vv -decimals = 6 - -[nUSDT] -peggy_denom = inj1cy9hes20vww2yr6crvs75gxy5hpycya2hmjg9s -decimals = 6 - -[nWETH] -peggy_denom = inj1kehk5nvreklhylx22p3x0yjydfsz9fv3fvg5xt -decimals = 18 - -[peggy0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599] -peggy_denom = peggy0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 -decimals = 8 - -[peggy0x43123e1d077351267113ada8bE85A058f5D492De] -peggy_denom = peggy0x43123e1d077351267113ada8bE85A058f5D492De -decimals = 6 - -[peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7] -peggy_denom = peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7 -decimals = 0 - -[peggy0x5Ac3A2F6205a481C7a8984E4291E450e52cd0369] -peggy_denom = peggy0x5Ac3A2F6205a481C7a8984E4291E450e52cd0369 -decimals = 18 - -[peggy0x6c3ea9036406852006290770BEdFcAbA0e23A0e8] -peggy_denom = peggy0x6c3ea9036406852006290770BEdFcAbA0e23A0e8 -decimals = 6 - -[peggy0x8D983cb9388EaC77af0474fA441C4815500Cb7BB] -peggy_denom = peggy0x8D983cb9388EaC77af0474fA441C4815500Cb7BB -decimals = 6 - -[peggy0xBe8d71D26525440A03311cc7fa372262c5354A3c] -peggy_denom = peggy0xBe8d71D26525440A03311cc7fa372262c5354A3c -decimals = 18 - -[peggy0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080] -peggy_denom = peggy0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080 -decimals = 10 - -[peggy0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2] -peggy_denom = peggy0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -decimals = 18 - -[peggy0xe28b3b32b6c345a34ff64674606124dd5aceca30] -peggy_denom = peggy0xe28b3b32b6c345a34ff64674606124dd5aceca30 -decimals = 18 - -[proj] -peggy_denom = proj -decimals = 18 - -[sUSDE] -peggy_denom = peggy0x9D39A5DE30e57443BfF2A8307A4256c8797A3497 -decimals = 18 - -[share11] -peggy_denom = share11 -decimals = 18 - -[share13] -peggy_denom = share13 -decimals = 18 - -[share14] -peggy_denom = share14 -decimals = 18 - -[share15] -peggy_denom = share15 -decimals = 18 - -[share16] -peggy_denom = share16 -decimals = 18 - -[share17] -peggy_denom = share17 -decimals = 18 - -[share18] -peggy_denom = share18 -decimals = 18 - -[share19] -peggy_denom = share19 -decimals = 18 - -[share20] -peggy_denom = share20 -decimals = 18 - -[share21] -peggy_denom = share21 -decimals = 18 - -[share22] -peggy_denom = share22 -decimals = 18 - -[share23] -peggy_denom = share23 -decimals = 18 - -[share24] -peggy_denom = share24 -decimals = 18 - -[share25] -peggy_denom = share25 -decimals = 18 - -[share26] -peggy_denom = share26 -decimals = 18 - -[share27] -peggy_denom = share27 -decimals = 18 - -[share28] -peggy_denom = share28 -decimals = 18 - -[share29] -peggy_denom = share29 -decimals = 18 - -[share30] -peggy_denom = share30 -decimals = 18 - -[share31] -peggy_denom = share31 -decimals = 18 - -[share9] -peggy_denom = share9 -decimals = 18 - -[stETH] -peggy_denom = peggy0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 -decimals = 18 - -[unknown] -peggy_denom = unknown -decimals = 0 - -[wBTC] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku -decimals = 18 - -[wETH] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/weth -decimals = 8 - -[wUSDM] -peggy_denom = peggy0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812 -decimals = 18 diff --git a/pyinjective/denoms_mainnet.ini b/pyinjective/denoms_mainnet.ini deleted file mode 100644 index ab5106bd..00000000 --- a/pyinjective/denoms_mainnet.ini +++ /dev/null @@ -1,16631 +0,0 @@ -[0x01e920e081b6f3b2e5183399d5b6733bb6f80319e6be3805b95cb7236910ff0e] -description = 'Mainnet Spot WETH/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xe0dc13205fb8b23111d8555a6402681965223135d368eeeb964681f9ff12eb2a] -description = 'Mainnet Spot INJ/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x8b1a4d3e8f6b559e30e40922ee3662dd78edf7042330d4d620d188699d1a9715] -description = 'Mainnet Spot USDT/USDC' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0xfe93c19c0a072c8dd208b96694e024305a7dff01bbf12cac2bfa81b246c69040] -description = 'Mainnet Spot LINK/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xcdfbfaf1f24055e89b3c7cc763b8cb46ffff08cdc38c999d01f58d64af75dca9] -description = 'Mainnet Spot AAVE/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x5abfffe9079d53e0bf8ee9b3064b427acc3d71d6ba58a44235abe38f60115678] -description = 'Mainnet Spot MATIC/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xe8bf0467208c24209c1cf0fd64833fa43eb6e8035869f9d043dbff815ab76d01] -description = 'Mainnet Spot UNI/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x9a629b947b6f946af4f6076cfda67f3535d73ee3cef6176cf6d9c8d6b0a03f37] -description = 'Mainnet Spot SUSHI/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xa43d2be9861efb0d188b136cef0ae2150f80e08ec318392df654520dd359fcd7] -description = 'Mainnet Spot GRT/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xa508cb32923323679f29a032c70342c147c17d0145625922b0ef22e955c844c0] -description = 'Mainnet Spot INJ/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x28f3c9897e23750bf653889224f93390c467b83c86d736af79431958fff833d1] -description = 'Mainnet Spot MATIC/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x09cc2c28fbedbdd677e07924653f8f583d0ee5886e74046e7f114210d990784b] -description = 'Mainnet Spot UNI/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x26413a70c9b78a495023e5ab8003c9cf963ef963f6755f8b57255feb5744bf31] -description = 'Mainnet Spot LINK/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xd1956e20d74eeb1febe31cd37060781ff1cb266f49e0512b446a5fafa9a16034] -description = 'Mainnet Spot WETH/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000001 -min_display_price_tick_size = 0.1 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x01edfab47f124748dc89998eb33144af734484ba07099014594321729a0ca16b] -description = 'Mainnet Spot AAVE/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x29255e99290ff967bc8b351ce5b1cb08bc76a9a9d012133fb242bdf92cd28d89] -description = 'Mainnet Spot GRT/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x0c9f98c99b23e89dbf6a60bec05372790b39e03da0f86dd0208fc8e28751bd8c] -description = 'Mainnet Spot SUSHI/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x51092ddec80dfd0d41fee1a7d93c8465de47cd33966c8af8ee66c14fe341a545] -description = 'Mainnet Spot SNX/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xbe9d4a0a768c7e8efb6740be76af955928f93c247e0b3a1a106184c6cf3216a7] -description = 'Mainnet Spot QNT/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x170a06eb653548f67e94b0fcb82c5258c83b0a2b62ed24c55749d5ac77bc7621] -description = 'Mainnet Spot WBTC/USDC' -base = 8 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 10000 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0x7471d361b90fc8541267bd088f498c2a461a2c0c57ff2b9a08279480e803b470] -description = 'Mainnet Spot AXS/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.00000000000001 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 10000000000000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x0511ddc4e6586f3bfe1acb2dd905f8b8a82c97e1edaef654b12ca7e6031ca0fa] -description = 'Mainnet Spot ATOM/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x7f71c4fba375c964be8db7fc7a5275d974f8c6cdc4d758f2ac4997f106bb052b] -description = 'Mainnet Spot GF/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xdce84d5e9c4560b549256f34583fb4ed07c82026987451d5da361e6e238287b3] -description = 'Mainnet Spot LUNA/UST' -base = 6 -quote = 18 -min_price_tick_size = 0.00000001 -min_display_price_tick_size = 0.00000000000000000001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000000000000000 - -[0x0f1a11df46d748c2b20681273d9528021522c6a0db00de4684503bbd53bef16e] -description = 'Mainnet Spot UST/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 100000000 -min_quantity_tick_size = 10000 -min_display_quantity_tick_size = 0.00000000000001 -min_notional = 1000000 - -[0xfbc729e93b05b4c48916c1433c9f9c2ddb24605a73483303ea0f87a8886b52af] -description = 'Mainnet Spot INJ/UST' -base = 18 -quote = 18 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.000000000000001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000000000000000 - -[0xd7487c1fc78fdb283d838fa562339db0ca05cd4af57c6a20e6561f260c78d1ae] -description = 'Mainnet Spot XBX/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xf04d1b7acf40b331d239fcff7950f98a4f2ab7adb2ceb8f65aa32ac29455d7b4] -description = 'Mainnet Spot HUAHUA/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 100 -min_notional = 1000000 - -[0x572f05fd93a6c2c4611b2eba1a0a36e102b6a592781956f0128a27662d84f112] -description = 'Mainnet Spot APE/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x719f1617efc6e998472b70436549e0999fab8c05701177b15ba8910f2c5e7ab2] -description = 'Mainnet Spot EVMOS/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x4d030dccc9564ab1536a7751c3a566fa3adcb6a08ac807edc82890f2a6ec4fed] -description = 'Mainnet Spot XPRT/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xd5f5895102b67300a2f8f2c2e4b8d7c4c820d612bc93c039ba8cb5b93ccedf22] -description = 'Mainnet Spot DOT/USDT' -base = 10 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0xabc20971099f5df5d1de138f8ea871e7e9832e3b0b54b61056eae15b09fed678] -description = 'Mainnet Spot USDC/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0xcd4b823ad32db2245b61bf498936145d22cdedab808d2f9d65100330da315d29] -description = 'Mainnet Spot STRD/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x4807e9ac33c565b4278fb9d288bd79546abbf5a368dfc73f160fe9caa37a70b1] -description = 'Mainnet Spot axlUSDC/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0xe03df6e1571acb076c3d8f22564a692413b6843ad2df67411d8d8e56449c7ff4] -description = 'Mainnet Spot CRE/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x219b522871725d175f63d5cb0a55e95aa688b1c030272c5ae967331e45620032] -description = 'Mainnet Spot SteadyETH/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x510855ccf9148b47c6114e1c9e26731f9fd68a6f6dbc5d148152d02c0f3e5ce0] -description = 'Mainnet Spot SteadyBTC/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x2021159081a88c9a627c66f770fb60c7be78d492509c89b203e1829d0413995a] -description = 'Mainnet Spot ETHBTCTrend/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x0686357b934c761784d58a2b8b12618dfe557de108a220e06f8f6580abb83aab] -description = 'Mainnet Spot SOMM/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x84ba79ffde31db8273a9655eb515cb6cadfdf451b8f57b83eb3f78dca5bbbe6d] -description = 'Mainnet Spot SOL/USDC' -base = 8 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0xb825e2e4dbe369446e454e21c16e041cbc4d95d73f025c369f92210e82d2106f] -description = 'Mainnet Spot USDCso/USDCet' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0xf66f797a0ff49bd2170a04d288ca3f13b5df1c822a7b0cc4204aca64a5860666] -description = 'Mainnet Spot USDC/USDCet' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0xda0bb7a7d8361d17a9d2327ed161748f33ecbf02738b45a7dd1d812735d1531c] -description = 'Mainnet Spot USDT/USDC' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0x4fa0bd2c2adbfe077f58395c18a72f5cbf89532743e3bddf43bc7aba706b0b74] -description = 'Mainnet Spot CHZ/USDC' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0xa7fb70ac87e220f3ea7f7f77faf48b47b3575a9f7ad22291f04a02799e631ca9] -description = 'Mainnet Spot CANTO/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000000000000000000 -min_display_quantity_tick_size = 10 -min_notional = 1000000 - -[0x7fce43f1140df2e5f16977520629e32a591939081b59e8fbc1e1c4ddfa77a044] -description = 'Mainnet Spot LDO/USDC' -base = 6 -quote = 8 -min_price_tick_size = 0.1 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0x66a113e1f0c57196985f8f1f1cfce2f220fa0a96bca39360c70b6788a0bc06e0] -description = 'Mainnet Spot LDO/USDC' -base = 8 -quote = 6 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x4b29b6df99d73920acdc56962050786ac950fcdfec6603094b63cd38cad5197e] -description = 'Mainnet Spot PUG/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000000000 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0x1bba49ea1eb64958a19b66c450e241f17151bc2e5ea81ed5e2793af45598b906] -description = 'Mainnet Spot ARB/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xba33c2cdb84b9ad941f5b76c74e2710cf35f6479730903e93715f73f2f5d44be] -description = 'Mainnet Spot WMATIC/USDC' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xb9a07515a5c239fcbfa3e25eaa829a03d46c4b52b9ab8ee6be471e9eb0e9ea31] -description = 'Mainnet Spot WMATIC/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xce1829d4942ed939580e72e66fd8be3502396fc840b6d12b2d676bdb86542363] -description = 'Mainnet Spot stINJ/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 10000000000000000 - -[0xa04adeed0f09ed45c73b344b520d05aa31eabe2f469dcbb02a021e0d9d098715] -description = 'Mainnet Spot ORAI/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xe8fe754e16233754e2811c36aca89992e35951cfd61376f1cbdc44be6ac8d3fb] -description = 'Mainnet Spot NEOK/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000000000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x2d8b2a2bef3782b988e16a8d718ea433d6dfebbb3b932975ca7913589cb408b5] -description = 'Mainnet Spot KAVA/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0xbf94d932d1463959badee52ffbeb2eeeeeda750e655493e909ced540c375a277] -description = 'Mainnet Spot USDTkv/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x35fd4fa9291ea68ce5eef6e0ea8567c7744c1891c2059ef08580ba2e7a31f101] -description = 'Mainnet Spot TIA/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x21f3eed62ddc64458129c0dcbff32b3f54c92084db787eb5cf7c20e69a1de033] -description = 'Mainnet Spot TALIS/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 10 -min_notional = 1000000 - -[0xf09dd242aea343afd7b6644151bb00d1b8770d842881009bea867658602b6bf0] -description = 'Mainnet Spot TALIS/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0x6922cf4383294c673971dd06aa4ae5ef47f65cb4f1ec1c2af4271c5e5ca67486] -description = 'Mainnet Spot KUJI/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xa6ec1de114a5ffa85b6b235144383ce51028a1c0c2dee7db5ff8bf14d5ca0d49] -description = 'Mainnet Spot PYTH/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x75f6a79b552dac417df219ab384be19cb13b53dec7cf512d73a965aee8bc83af] -description = 'Mainnet Spot USDY/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000000000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x689ea50a30b0aeaf162e57100fefe5348a00099774f1c1ebcd90c4b480fda46a] -description = 'Mainnet Spot WHALE/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 10 -min_notional = 1000000 - -[0xac938722067b1dfdfbf346d2434573fb26cb090d309b19af17df2c6827ceb32c] -description = 'Mainnet Spot SOL/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x2d3b8d8833dda54a717adea9119134556848105fd6028e9a4a526e4e5a122a57] -description = 'Mainnet Spot KIRA/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 1000 -min_notional = 10000000000000000 - -[0xdf9317eac1739a23bc385e264afde5d480c0b3d2322660b5efd206071d4e70b7] -description = 'Mainnet Spot NINJA/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0x4bb3426a2d7ba80c244ef7eecfd7c4fd177d78e63ff40ba6235b1ae471e23cdb] -description = 'Mainnet Spot KATANA/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 1000 -min_notional = 10000000000000000 - -[0x23983c260fc8a6627befa50cfc0374feef834dc1dc90835238c8559cc073e08f] -description = 'Mainnet Spot BRETT/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0x6de141d12691dd13fffcc4e3ceeb09191ff445e1f10dfbecedc63a1e365fb6cd] -description = 'Mainnet Spot ZIG/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 10000000000000000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0x02b56c5e6038f0dd795efb521718b33412126971608750538409f4b81ab5da2f] -description = 'Mainnet Spot nINJ/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 10000000000000000 - -[0xb6c24e9a586a50062f2fac059ddd79f8b0cf1c101e263f4b2c7484b0e20d2899] -description = 'Mainnet Spot GINGER/INJ' -base = 6 -quote = 18 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0000000001 -min_quantity_tick_size = 10000000000 -min_display_quantity_tick_size = 10000 -min_notional = 10000000000000000 - -[0x9b13c89f8f10386b61dd3a58aae56d5c7995133534ed65ac9835bb8d54890961] -description = 'Mainnet Spot SNOWY/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0xb3f38c081a1817bb0fc717bf869e93f5557c10851db4e15922e1d9d2297bd802] -description = 'Mainnet Spot AUTISM/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0xd0ba680312852ffb0709446fff518e6c4d798fb70cfd2699aba3717a2517cfd5] -description = 'Mainnet Spot APP/INJ' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000000001 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 10000000000000000000 -min_display_quantity_tick_size = 10 -min_notional = 1000000 - -[0x05288e393771f09c923d1189e4265b7c2646b6699f08971fd2adf0bfd4b1ce7a] -description = 'Mainnet Spot APP/INJ ' -base = 18 -quote = 18 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 10000000000000000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0xe6dd9895b169e2ca0087fcb8e8013805d06c3ed8ffc01ccaa31c710eef14a984] -description = 'Mainnet Spot DOJO/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 10000000000000000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0x0a1366c8b05658c0ccca6064e4b20aacd5ad350c02debd6ec0f4dc9178145d14] -description = 'Mainnet Spot GYEN/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 100 -min_notional = 1000000 - -[0x9c8a91a894f773792b1e8d0b6a8224a6b748753738e9945020ee566266f817be] -description = 'Mainnet Spot USDCnb/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x9c42d763ba5135809ac4684b02082e9c880d69f6b96d258fe4c172396e9af7be] -description = 'Mainnet Spot ANDR/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000000 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 10000000000000000 - -[0x1b1e062b3306f26ae3af3c354a10c1cf38b00dcb42917f038ba3fc14978b1dd8] -description = 'Mainnet Spot hINJ/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 10000000000000000 - -[0x959c9401a557ac090fff3ec11db5a1a9832e51a97a41b722d2496bb3cb0b2f72] -description = 'Mainnet Spot ANDR/INJ' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x697457537bc2af5ff652bc0616fe23537437a570d0e4d91566f03af279e095d5] -description = 'Mainnet Spot PHUC/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 1000 -min_notional = 10000000000000000 - -[0x42edf70cc37e155e9b9f178e04e18999bc8c404bd7b638cc4cbf41da8ef45a21] -description = 'Mainnet Spot QUNT/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 100 -min_notional = 10000000000000000 - -[0x586409ac5f6d6e90a81d2585b9a8e76de0b4898d5f2c047d0bc025a036489ba1] -description = 'Mainnet Spot WHALE/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0x1af8fa374392dc1bd6331f38f0caa424a39b05dd9dfdc7a2a537f6f62bde50fe] -description = 'Mainnet Spot USDe/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000000000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xc8fafa1fcab27e16da20e98b4dc9dda45320418c27db80663b21edac72f3b597] -description = 'Mainnet Spot HDRO/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0xb965ebede42e67af153929339040e650d5c2af26d6aa43382c110d943c627b0a] -description = 'Mainnet Spot PYTH/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000000 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 10000000000000000 - -[0x25b545439f8e072856270d4b5ca94764521c4111dd9a2bbb5fbc96d2ab280f13] -description = 'Mainnet Spot PYTH/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000000 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 10000000000000000 - -[0xac10c83bde3283373c8859f8e5a165f0c5adaab8dbe3e477e904bfc98a3a320d] -description = 'Mainnet Spot BOME/USDT' -base = 6 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 10000 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0xcf38a5187b543552160e0af476b252c3dcac08fa4134866ac663afaf13f65b75] -description = 'Mainnet Spot INJA/INJ' -base = 6 -quote = 18 -min_price_tick_size = 100000000000000 -min_display_price_tick_size = 100 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.0000001 -min_notional = 10000000000000000 - -[0xbfe7d87d8cc189488fc800bfddadea0d8608e153aa588d7705ba9ab4da205de4] -description = 'Mainnet Spot KOGA/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000000000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 10 -min_display_quantity_tick_size = 0.00001 -min_notional = 10000000000000000 - -[0x2ebaa13a803bd841fc74905e4cf20afb5573c319e50b66865dce11a4971bc189] -description = 'Mainnet Spot NWIF/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000000000 -min_display_price_tick_size = 1 -min_quantity_tick_size = 10 -min_display_quantity_tick_size = 0.00001 -min_notional = 10000000000000000 - -[0xde63ad70e7061cea3e703f01915ba8d049c33d3ce7e717ff7ba1086d9e58704c] -description = 'Mainnet Spot ASWC/USDT' -base = 6 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 1000 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0xeb95ab0b5416266b1987f1d46bcd5f63addeac68bbf5a089c5ed02484c97b6a3] -description = 'Mainnet Spot LVN/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0x78fba545a32eb55db511db2066d8e44e5eb623ac4cff1ba4244d8b7e38989c68] -description = 'Mainnet Spot BUGS/USDT' -base = 6 -quote = 6 -min_price_tick_size = 10 -min_display_price_tick_size = 10 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 0.000001 -min_notional = 1000000 - -[0xb62dc3aaabd157ec3f9f16f6efe2eec3377b28e273d23de93f8b0bcf33c6058f] -description = 'Mainnet Spot NONJA/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 100 -min_notional = 10000000000000000 - -[0x85ccdb2b6022b0586da19a2de0a11ce9876621630778e28a5d534464cbfff238] -description = 'Mainnet Spot NONJA/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.00000001 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 100000000000000000000 -min_display_quantity_tick_size = 100 -min_notional = 10000000000000000 - -[0xd9089235d2c1b07261cbb2071f4f5a7f92fa1eca940e3cad88bb671c288a972f] -description = 'Mainnet Spot SOL/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x8cd25fdc0d7aad678eb998248f3d1771a2d27c964a7630e6ffa5406de7ea54c1] -description = 'Mainnet Spot WMATIC/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x1c2e5b1b4b1269ff893b4817a478fba6095a89a3e5ce0cccfcafa72b3941eeb6] -description = 'Mainnet Spot ARB/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xa6d9f8c4380755ea4e6744d0b18b7a81837466a8ee6d134cde47afbd9e67a0b6] -description = 'Mainnet Spot UICIDE/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000000000000000 -min_display_price_tick_size = 10000 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.0000001 -min_notional = 10000000000000000 - -[0x16e9013fa14529fb77885adf65d5703e5e0078af2e1150b6b95cda328de56b6d] -description = 'Mainnet Spot NONJAKTIF/INJ' -base = 6 -quote = 18 -min_price_tick_size = 100000000000000000 -min_display_price_tick_size = 100000 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 0.000001 -min_notional = 10000000000000000 - -[0xd5ef157b855101a19da355aee155a66f3f2eea7baca787bd27597f5182246da4] -description = 'Mainnet Spot STRD/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000000 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 10000000000000000 - -[0x1f5d69fc3d063e2a130c29943a0c83c3e79c2ba897fe876fcd82c51ab2ea61de] -description = 'Mainnet Spot sUSDe/USDe' -base = 18 -quote = 18 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 100000000000000 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000000000000000 - -[0x6ad662364885b8a4c50edfc88deeef23338b2bd0c1e4dc9b680b054afc9b6b24] -description = 'Mainnet Spot ENA/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000000000000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0xb03ead807922111939d1b62121ae2956cf6f0a6b03dfdea8d9589c05b98f670f] -description = 'Mainnet Spot BONUS/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x35a83ec8948babe4c1b8fbbf1d93f61c754fedd3af4d222fe11ce2a294cd74fb] -description = 'Mainnet Spot W/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xcbc16bc2972144d166ef0c7d01328e2eafe22c8dc6368a9bd3f605cc6fe39e6e] -description = 'Mainnet Spot LEO/INJ' -base = 9 -quote = 18 -min_price_tick_size = 10 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 100000000000 -min_display_quantity_tick_size = 100 -min_notional = 10000000000000000 - -[0x315e5cd5ee24b3a1e1396679885b5e42bbe18045105d1662c6618430a131d117] -description = 'Mainnet Spot XIII/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 100 -min_notional = 10000000000000000 - -[0xd166688623206f9931307285678e9ff17cecd80a27d7b781dd88cecfba3b1839] -description = 'Mainnet Spot BLACK/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0x2be72879bb90ec8cbbd7510d0eed6a727f6c2690ce7f1397982453d552f9fe8f] -description = 'Mainnet Spot OMNI/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.00000000000001 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 10000000000000000 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0xbd370d025c3693e8d658b44afe8434fa61cbc94178d0871bffd49e25773ef879] -description = 'Mainnet Spot ASG/INJ' -base = 8 -quote = 18 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.0000001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0xacb0dc21cddb15b686f36c3456f4223f701a2afa382006ef478d156439483b4d] -description = 'Mainnet Spot EZETH/WETH' -base = 18 -quote = 18 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 100000000000000 - -[0x960038a93b70a08f1694c4aa5c914afda329063191e65a5b698f9d0676a0abf9] -description = 'Mainnet Spot SAGA/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x8fa7c77776eabffe4ce3dff488b2f310bec69cfc36aef007e3c41a8627889774] -description = 'Mainnet Spot SMELLY/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000000000 -min_display_price_tick_size = 1 -min_quantity_tick_size = 10 -min_display_quantity_tick_size = 0.00001 -min_notional = 10000000000000000 - -[0x9b3fa54bef33fd216b84614cd8abc3e5cc134727a511cef37d366ecaf3e03a80] -description = 'Mainnet Spot MOTHER/INJ' -base = 6 -quote = 18 -min_price_tick_size = 100000 -min_display_price_tick_size = 0.0000001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0x04fead581cdf54c998023c0fe68a8181fd5621b4e38ee0a8e41d1fc97b7aed0a] -description = 'Mainnet Spot SPUUN/INJ' -base = 6 -quote = 18 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0000000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 1000 -min_notional = 10000000000000000 - -[0x9bdb40c5b82ee8eb5cb7327d7afa3121099d5ecc36c089690bb8fee3638f0cd2] -description = 'Mainnet Spot GME/INJ' -base = 8 -quote = 18 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.0000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0xf1cd6fe6a4d2e918f0f05aa9fc5b6b968c287b7b065d6e1dec0fd07c8a3d257d] -description = 'Mainnet Spot NINJA/USDT' -base = 6 -quote = 6 -min_price_tick_size = 1000000 -min_display_price_tick_size = 1000000 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.0000001 -min_notional = 1000000 - -[0xed680640e95239c5104bbc7c5f6449009f47e325889c9a46b0116990f40041da] -description = 'Mainnet Spot NLT/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 10000000000000000 - -[0x71dc35acfd9fffe3f2995fdcd6f6abb3c2713e63824b2e45c39e8b4275ea931d] -description = 'Mainnet Spot PYUSD/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x5ec9425f042b12d991bee85bc9fb99d1539bf04310034aada640b1d69d3bab53] -description = 'Mainnet Spot USDi/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000000000000000 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x0efc001ac745f6ac00ed92028313a18fdeb2f4b231e62517add87b7a3ec76825] -description = 'Mainnet Spot TEST/USDT' -base = 6 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 100 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.0000001 -min_notional = 1000000 - -[0x2f1a3ba4c1a45fdf1cefa14625bce2ab9db25dfaf6c5a3816309ca3d4c4c318b] -description = 'Mainnet Spot TEST/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000000000 -min_display_price_tick_size = 1 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 10000000000000000 - -[0xd8c9c5764541b54b0c77305280e5aaa00f5ceda69dc5ae1b69634ac07c1581c7] -description = 'Mainnet Spot COKE/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.000000001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.0000001 -min_notional = 10000000000000000 - -[0xc6b6d6627aeed8b9c29810163bed47d25c695d51a2aa8599fc5e39b2d88ef934] -description = 'Mainnet Spot SHROOM/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.000000001 -min_display_price_tick_size = 0.000000001 -min_quantity_tick_size = 100000000000 -min_display_quantity_tick_size = 0.0000001 -min_notional = 10000000000000000 - -[0xd75a48b4ef24c2355b0bb3c0829283c30619a9862360b5b9521ec5933da7a664] -description = 'Mainnet Spot IOTX/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000000000000000 -min_display_quantity_tick_size = 1 -min_notional = 10000000000000000 - -[0xb232d5bc92bd64cf01741bf01e831566bbd517540dbca8fb420f772f9807f977] -description = 'Mainnet Spot SNS/INJ' -base = 8 -quote = 18 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.0000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0xca8121ea57a4f7fd3e058fa1957ebb69b37d52792e49b0b43932f1b9c0e01f8b] -description = 'Mainnet Spot wUSDM/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000000000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x00cb369b060f29e218ddbd72a07af2f979052b0c2dfc24a2518686351e5d0238] -description = 'Mainnet Spot KATANA/USDT' -base = 6 -quote = 6 -min_price_tick_size = 1 -min_display_price_tick_size = 1 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.0000001 -min_notional = 1000000 - -[0xc9030edef611568ec9aa48228c92e30d398abf0eb289b5fee873b0f2f3a80295] -description = 'Mainnet Spot FET/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000000000000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xd6518f94efd32d7129eea0780d256a714d41a1f02992f346342bd64dc26a7217] -description = 'Mainnet Spot GIGA/INJ' -base = 5 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.0000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 10 -min_notional = 10000000000000000 - -[0xd3de35e09147492a051f514f42adacd4b988268ec5c6e0cdac4cbde99ff808a2] -description = 'Mainnet Spot USDY/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000000000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x165b41ab4410c03514b4569b29dd3c4a829f6f11516a29cd31d6a53308cb4ed0] -description = 'Mainnet Spot TON/USDT' -base = 9 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000000 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x19d28519ddfb27fd81b05a402f4e7c306930909edfdb87f27b699d2696143f74] -description = 'Mainnet Spot PAIN/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.1 -min_display_price_tick_size = 0.1 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0x791f564a76ff634f13cd7afc4999418f7c9eb00636143cc9c52daa588f870744] -description = 'Mainnet Spot PAIN/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 10000000000000000 - -[0x4ca0f92fc28be0c9761326016b5a1a2177dd6375558365116b5bdda9abc229ce] -description = 'Mainnet Derivative BTC/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000000 -min_display_price_tick_size = 1 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0x54d4505adef6a5cef26bc403a33d595620ded4e15b9e2bc3dd489b714813366a] -description = 'Mainnet Derivative ETH/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100000 -min_display_price_tick_size = 0.1 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x1c79dac019f73e4060494ab1b4fcba734350656d6fc4d474f6a238c13c6f9ced] -description = 'Mainnet Derivative BNB/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x9b9980167ecc3645ff1a5517886652d94a0825e54a77d2057cbbe3ebee015963] -description = 'Mainnet Derivative INJ/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xc559df216747fc11540e638646c384ad977617d6d8f0ea5ffdfc18d52e58ab01] -description = 'Mainnet Derivative ATOM/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x8c7fd5e6a7f49d840512a43d95389a78e60ebaf0cde1af86b26a785eb23b3be5] -description = 'Mainnet Derivative OSMO/UST PERP' -base = 0 -quote = 18 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.000000000000001 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000000000000000 - -[0xcf18525b53e54ad7d27477426ade06d69d8d56d2f3bf35fe5ce2ad9eb97c2fbc] -description = 'Mainnet Derivative OSMO/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x06c5a306492ddc2b8dc56969766959163287ed68a6b59baa2f42330dda0aebe0] -description = 'Mainnet Derivative SOL/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0xcd0c859a99f26bb3530e21890937ed77d20754aa7825a599c71710514fc125ef] -description = 'Mainnet Derivative 1MPEPE/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x63bafbeee644b6606afb8476dd378fba35d516c7081d6045145790af963545aa] -description = 'Mainnet Derivative XRP/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x1afa358349b140e49441b6e68529578c7d2f27f06e18ef874f428457c0aaeb8b] -description = 'Mainnet Derivative SEI/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x4fe7aff4dd27be7cbb924336e7fe2d160387bb1750811cf165ce58d4c612aebb] -description = 'Mainnet Derivative AXL/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x887beca72224f88fb678a13a1ae91d39c53a05459fd37ef55005eb68f745d46d] -description = 'Mainnet Derivative PYTH/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x9066bfa1bd97685e0df4e22a104f510fb867fde7f74a52f3341c7f5f56eb889c] -description = 'Mainnet Derivative TIA/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x7a70d95e24ba42b99a30121e6a4ff0d6161847d5b86cbfc3d4b3a81d8e190a70] -description = 'Mainnet Derivative ZRO/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x03841e74624fd885d1ee28453f921d18c211e78a0d7646c792c7903054eb152c] -description = 'Mainnet Derivative JUP/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x30a1463cfb4c393c80e257ab93118cecd73c1e632dc4d2d31c12a51bc0a70bd7] -description = 'Mainnet Derivative AVAX/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x18b2ca44b3d20a3b87c87d3765669b09b73b5e900693896c08394c70e79ab1e7] -description = 'Mainnet Derivative SUI/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x1a6d3a59f45904e0a4a2eed269fc2f552e7e407ac90aaaeb602c31b017573f88] -description = 'Mainnet Derivative WIF/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x48fcecd66ebabbf5a331178ec693b261dfae66ddfe6f552d7446744c6e78046c] -description = 'Mainnet Derivative OP/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x6ddf0b8fbbd888981aafdae9fc967a12c6777aac4dd100a8257b8755c0c4b7d5] -description = 'Mainnet Derivative ARB/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xf1bc70398e9b469db459f3153433c6bd1253bd02377248ee29bd346a218e6243] -description = 'Mainnet Derivative W/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x03c8da1f6aaf8aca2be26b0f4d6b89d475835c7812a1dcdb19af7dec1c6b7f60] -description = 'Mainnet Derivative LINK/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x7980993e508e0efc1c2634c153a1ef90f517b74351d6406221c77c04ec4799fe] -description = 'Mainnet Derivative DOGE/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 10 -min_display_quantity_tick_size = 10 -min_notional = 1000000 - -[0x4d42425fc3ccd6b61b8c4ad61134ab3cf21bdae1b665317eff671cfab79f4387] -description = 'Mainnet Derivative OMNI/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100000 -min_display_price_tick_size = 0.1 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x0160a0c8ecbf5716465b9fc22bceeedf6e92dcdc688e823bbe1af3b22a84e5b5] -description = 'Mainnet Derivative XAU/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0xedc48ec071136eeb858b11ba50ba87c96e113400e29670fecc0a18d588238052] -description = 'Mainnet Derivative XAG/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 1000000 - -[0x3c5bba656074e6e84965dc7d99a218f6f514066e6ddc5046acaff59105bb6bf5] -description = 'Mainnet Derivative EUR/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x5c0de20c02afe5dcc1c3c841e33bfbaa1144d8900611066141ad584eeaefbd2f] -description = 'Mainnet Derivative GBP/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x0d4c722badb032f14dfc07355258a4bcbd354cbc5d79cb5b69ddd52b1eb2f709] -description = 'Mainnet Derivative BTC/wUSDM Perp' -base = 0 -quote = 18 -min_price_tick_size = 1000000000000000000 -min_display_price_tick_size = 1 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0x639fb43887ededd06e28f3c0d0dec62caca5c4e1cac31765f19af07c4ad999c2] -description = 'Mainnet Derivative BUIDL/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100000 -min_display_price_tick_size = 0.1 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0x84d6fad5c0450811f8c163560e90ba7f621506371ec17fb07885dda2a6f435ed] -description = 'Mainnet Derivative AAVE/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x142d0fa4506b5f404bcfdd54567797ff6767dce07afaedc90d379665f09f0520] -description = 'Mainnet Derivative MKR/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100000 -min_display_price_tick_size = 0.1 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 1000000 - -[0xc4068b76801bf8988b5372c64d611ce2a477f85512e5ec55270c426176bc73e2] -description = 'Mainnet Derivative TON/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0x8157dd4bf502fc688aaa722c725124da3f411d7a92c569d55f34826f9ee040a9] -description = 'Mainnet Derivative POPCAT/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x4be4791338907626dd77a806c6e4dff76d1428768080fe232f32ef990c8d064f] -description = 'Mainnet Derivative FTM/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0xf58079e67f845907e93ab9767126a226a0759c23bee1bfc880fa8fba98f25872] -description = 'Mainnet Derivative CRV/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 1000000 - -[0x2d7092545081b81ba33bf817b302f9609254f15f4354016631aec3bb39461f99] -description = 'Mainnet Derivative PEPE/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.000000001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 100000 -min_notional = 1000000 - -[0x5aeb66848398815d1c8485135dc539355028fb3c32d662af9eeecfd47050a1a6] -description = 'Mainnet Derivative APT/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[0xa51b0df7a1ac2bea408fdc4f84f3d7060b62f976ab659b329b00065e5c8f2c37] -description = 'Mainnet Derivative TAO/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 1000000 - -[0x9bb2341e12d7357cd6865b69e491bab5ac8b087df50906a53ffa8fc3ede59f5f] -description = 'Mainnet Derivative STX/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 1000000 - -[ tether] -peggy_denom = inj1wpeh7cm7s0mj7m3x6vrf5hvxfx2xusz5l27evk -decimals = 18 - -[$ALIEN] -peggy_denom = factory/inj1mly2ykhf6f9tdj58pvndjf4q8dzdl4myjqm9t6/$alien -decimals = 6 - -[$AOI] -peggy_denom = factory/inj169ed97mcnf8ay6rgvskn95n6tyt46uwvy5qgs0/$aoi -decimals = 6 - -[$Babykira] -peggy_denom = factory/inj13vau2mgx6mg7ams9nngjhyng58tl9zyw0n8s93/$babykira -decimals = 6 - -[$NINJA] -peggy_denom = inj1yngv6had7vm443k220q9ttg0sc4zkpdwp70fmq -decimals = 6 - -[$TunaSniper] -peggy_denom = inj1nmzj7jartqsex022j3kkkszeayypqkzl5vpe59 -decimals = 8 - -[$WIF] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1802ascnwzdhvv84url475eyx26ptuc6jc590nl -decimals = 8 - -[$wifs] -peggy_denom = factory/inj10edtfelcttj3s98f755ntfplt0da5xv4z8z0lf/dogwifshoes -decimals = 6 - -[...] -peggy_denom = factory/inj1jj7z2f69374z6lmph44ztnxghgczyylqgc7tzw/dot -decimals = 6 - -[0XGNSS] -peggy_denom = inj1cfv8rrcete7vengcken0mjqt8q75vpcc0j0my5 -decimals = 8 - -[1INCH] -peggy_denom = peggy0x111111111117dC0aa78b770fA6A738034120C302 -decimals = 18 - -[2024MEME] -peggy_denom = inj1m2w8aenm3365w8t4x7jvpassk9ju7xq3snahhh -decimals = 8 - -[4] -peggy_denom = ibc/F9823EBB2D7E55C5998A51A6AC1572451AB81CE1421E9AEF841902D78EA7B5AD -decimals = 0 - -[79228162514264337593543950342] -peggy_denom = ibc/80A315889AFA247F37386C42CC38EAAF25B8C7B8DA8FC5EC5D7EEC72DCE9B3D0 -decimals = 0 - -[AAAA] -peggy_denom = inj1wlrndkkyj90jsp9mness2kqp5x0huzuhuhx28d -decimals = 18 - -[AAI] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/aai -decimals = 6 - -[AAVE] -peggy_denom = peggy0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9 -decimals = 18 - -[ABC] -peggy_denom = factory/inj13njxly446jm3gd8y84qnk3sm6wu0pjjc47mwl6/ABC -decimals = 6 - -[ACANTO] -peggy_denom = ibc/5F56E1BB4752EDC802A0B56E7E71C6FFF83B50A65DBE3B830EE277CE5FB38783 -decimals = 0 - -[ADA] -peggy_denom = inj1vla438tlw69h93crmq3wq9l79d6cqwecqef3ps -decimals = 18 - -[ADO] -peggy_denom = ibc/CF0C070562EC0816B09DDD9518328DCCFBE6C4388907EFF883FD4BE4E510005E -decimals = 6 - -[ADOLF] -peggy_denom = factory/inj1nhswhqrgfu3hpauvyeycz7pfealx4ack2c5hfp/adolf -decimals = 6 - -[AEVMOS] -peggy_denom = ibc/1BA3077202A1D84737F6E4F2F8E1214769B000AEBC3F31B9DA49B4E93734FE31 -decimals = 0 - -[AGIX] -peggy_denom = inj163fdg2e00gfdx9mjvarlgljuzt4guvx8ghhwml -decimals = 8 - -[AI] -peggy_denom = inj1sw0zn2vfy6wnfg0rht7r80tq3jq4ukjafjud7x -decimals = 8 - -[AININJA] -peggy_denom = inj1vun8dfgm6rr9xv40p4tpmd8lcc9cvt3384dv7w -decimals = 6 - -[AINJ] -peggy_denom = inj10k45sksxulzp7avvmt2fud25cmywk6u75pwgd2 -decimals = 8 - -[AJNIN] -peggy_denom = inj1msvvtt2e6rshp0fyqlp7gzceffzgymvwjucwyh -decimals = 18 - -[AK47] -peggy_denom = factory/inj1y207pve646dtac77v7qehw85heuy92c03t7t07/ak47 -decimals = 6 - -[AKITA] -peggy_denom = factory/inj1z0yv9ljw68eh4pec2r790jw8yal4dt5wnu4wuk/akita -decimals = 6 - -[ALASKA] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1wndunmgj56h5cssn96hhdh49ssclc24rfl9vr4 -decimals = 18 - -[ALCHECN] -peggy_denom = inj1fxmws9tyrfs7ewgkh0ktae3f5pqffd4uudygze -decimals = 6 - -[ALE] -peggy_denom = inj1yq0394aplhz94nrthglzsx2c29e8spyrq6u8ah -decimals = 18 - -[ALEM] -peggy_denom = ibc/FE5CF6EA14A5A5EF61AFBD8294E7B245DF4523F6F3B38DE8CC65A916BCEA00B4 -decimals = 6 - -[ALFAROMEO] -peggy_denom = inj1jvtzkr6cwd4dzeqq4q74g2qj3gp2gvmuar5c0t -decimals = 6 - -[ALIEN] -peggy_denom = factory/inj175fuhj3rlyttt255fsc6fwyteealzt67szpvan/ALIEN -decimals = 6 - -[ALIENWARE] -peggy_denom = inj128hmvp03navfcad7fjdsdnjdaxsp8q8z9av3th -decimals = 6 - -[ALIGATOR] -peggy_denom = inj1t6uqhmlgpju7265aelawdkvn3xqnq3jv8j60l7 -decimals = 6 - -[ALPHA] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1zwnsemwrpve3wrrg0njj89w6mt5rmj9ydkc46u -decimals = 8 - -[ALPHANET] -peggy_denom = inj135fkkvwr9neffh40pgg24as5mwwuuku33n8zzw -decimals = 8 - -[AMG] -peggy_denom = ibc/D683437F71D66CF4EF32BC2F26CE7C3922A73AA78AD2B3253EEADA6E48B04BD1 -decimals = 6 - -[AMM] -peggy_denom = factory/inj12yazr8lq5ptlz2qj9y36v8zwmz90gy9gh35026/AMM -decimals = 6 - -[AMOGUS] -peggy_denom = factory/inj1a47ddtzh8le8ukznc9v3dvqs5w5anwjjvy8lqj/amogus -decimals = 6 - -[ANALOS] -peggy_denom = factory/inj1g8yvnh0lzxc06qe2n4qux5cqlz8h6gnpvaxzus/analos -decimals = 6 - -[ANBU] -peggy_denom = factory/inj1aqnupu0z86nyttmpejmgu57vx22wmuz9fdg7ps/ANBU -decimals = 6 - -[ANDR] -peggy_denom = ibc/61FA42C3F0B0F8768ED2CE380EDD3BE0E4CB7E67688F81F70DE9ECF5F8684E1E -decimals = 6 - -[ANDR-INJ LP] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj19ujrgrvsm5zn6d389lua74y6pyldxzv5gdrln9 -decimals = 18 - -[ANDRE] -peggy_denom = inj1qtqd73kkp9jdm7tzv3vrjn9038e6lsk929fel8 -decimals = 8 - -[ANDY] -peggy_denom = factory/inj1c0f9ze9wh2xket0zs6wy59v66alwratsdx648k/andy -decimals = 6 - -[ANIME] -peggy_denom = inj1mas82tve60sh3tkh879chgjkeaggxpeydwkl2n -decimals = 18 - -[ANK] -peggy_denom = inj16lxeq4xcdefptg39p9x78z5hkn0849z9z7xkyt -decimals = 18 - -[ANONS] -peggy_denom = factory/inj1e05u43qmn9jt502784c009u4elz5l86678esrk/ANONS -decimals = 6 - -[AOT] -peggy_denom = factory/inj1yjeq7tz86a8su0asaxckpa3a9rslfp97vpq3zq/AOT -decimals = 6 - -[APC] -peggy_denom = inj150382m6ah6lg3znprdrsggx38xl47fs4rmzy3m -decimals = 18 - -[APE] -peggy_denom = peggy0x4d224452801ACEd8B2F0aebE155379bb5D594381 -decimals = 18 - -[APEINJ] -peggy_denom = factory/inj1pn6cg7jt5nvmh2rpjxhg95nrcjz0rujv54wkdg/apeinj -decimals = 6 - -[APLANQ] -peggy_denom = ibc/ABC34F1F9C95DAB3AD3DAFD5228FAB5CDEA67B6BD126BC545D6D25B15E57F527 -decimals = 0 - -[APOLLO] -peggy_denom = ibc/1D10FF873E3C5EC7263A7658CB116F9535EC0794185A8153F2DD662E0FA08CE5 -decimals = 6 - -[APP] -peggy_denom = peggy0xC5d27F27F08D1FD1E3EbBAa50b3442e6c0D50439 -decimals = 18 - -[APPLE] -peggy_denom = factory/inj12yazr8lq5ptlz2qj9y36v8zwmz90gy9gh35026/APPLE -decimals = 6 - -[APSO] -peggy_denom = inj1sqsthjm8fpqc7seaa6lj08k7ja43jsd70rgy09 -decimals = 6 - -[APT] -peggy_denom = apt -decimals = 8 - -[APTDAO ] -peggy_denom = inj1mrltq7kh35xjkdzvul9ky077khsa5qatc0ylxj -decimals = 6 - -[AQLA] -peggy_denom = ibc/46B490B10E114ED9CE18FA1C92394F78CAA8A907EC72D66FF881E3B5EDC5E327 -decimals = 6 - -[ARAGORN] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/aragorn -decimals = 6 - -[ARB] -peggy_denom = ibc/8CF0E4184CA3105798EDB18CAA3981ADB16A9951FE9B05C6D830C746202747E1 -decimals = 8 - -[ARBlegacy] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1d5vz0uzwlpfvgwrwulxg6syy82axa58y4fuszd -decimals = 8 - -[ARCH] -peggy_denom = ibc/9C6E75FE14DF8959B7CC6E77398DF825B9815C753BB49D2860E303EA2FD803DD -decimals = 18 - -[ARCHER] -peggy_denom = inj1ype9ps9ep2qukhuuyf4s2emr7qnexkcfa09p34 -decimals = 6 - -[ARIZO] -peggy_denom = inj1mdgw6dnw7hda2lancr0zgy6retrd2s5m253qud -decimals = 6 - -[ARK] -peggy_denom = ibc/1963508E2F894A07440E4E643A6B6D5A32985B60FE4928A18C787FA28FC6880A -decimals = 6 - -[ARKI] -peggy_denom = inj1zhnaq7aunhzp0q6g5nrac9dxe5dg0ws0sqzftv -decimals = 18 - -[ARMANI] -peggy_denom = ibc/0C04597A68991F93CE8C9EF88EA795179CD020695041D00911E5CFF023D415CC -decimals = 6 - -[ARTEMIS] -peggy_denom = inj1yt49wv3up03hnlsfd7yh6dqfdxwxayrk6as6al -decimals = 8 - -[ARTINJ] -peggy_denom = inj1qgj0lnaq9rxcstjaevvd4q43uy4dk77e6mrza9 -decimals = 6 - -[ARVI] -peggy_denom = inj16ff6zvsaay89w7e5ukvz83f6f9my98s20z5ea3 -decimals = 18 - -[ARYAN] -peggy_denom = inj16z7ja300985vuvkt975zyvtccu80xmzcfr4upt -decimals = 18 - -[ASG] -peggy_denom = ibc/2D40732D27E22D27A2AB79F077F487F27B6F13DB6293040097A71A52FB8AD021 -decimals = 8 - -[ASH] -peggy_denom = factory/inj1uecmky6hkcexz86hqgrl5p5krg8kl4gfldjkrp/ASH -decimals = 6 - -[ASI] -peggy_denom = inj1wgd5c8l27w8sac4tdfcxl2zyu5cfurtuxdvfx9 -decimals = 18 - -[ASS] -peggy_denom = inj1fj7z77awl6srtmcuux3xgq995uempgx5hethh3 -decimals = 18 - -[ASSYN] -peggy_denom = factory/inj1qzn0ys7rht689z4p6pq99u6kc92jnkqyj02cur/ASSYN -decimals = 6 - -[ASTR] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1mhmln627samtkuwe459ylq763r4n7n69gxxc9x -decimals = 18 - -[ASTRO] -peggy_denom = ibc/EBD5A24C554198EBAF44979C5B4D2C2D312E6EBAB71962C92F735499C7575839 -decimals = 6 - -[ASTROBOT] -peggy_denom = inj153k5xjpqx39jm06gcxvjq5sxl8f7j79n72q9pz -decimals = 18 - -[ASTROGEMS] -peggy_denom = inj1eqzdmkdr2l72y75m7hx3rwnfcugzu0hhw7l76l -decimals = 8 - -[ASTROINJ] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1sdk8sm96c7hkkax0wzxzhde9z5rpu6cr4ld8dn -decimals = 8 - -[ASTROLAND] -peggy_denom = inj16q7u3mzp3qmm6vf5a9jfzp46rs2dj68cuktzyw -decimals = 8 - -[ASTROLOGY] -peggy_denom = inj1u9th8dxhyrkz3tr2h5s6z2yap2s6e6955jk4yf -decimals = 8 - -[ASTROPAD] -peggy_denom = inj1tvcarn0xz9p9rxrgev5a2qjmrtqtnl4xtu5vsu -decimals = 8 - -[ASTROPEPE] -peggy_denom = ibc/03BC83F4E4972621EAE3144FC91AED13AF3541A90A51B690425C95D1E03850D9 -decimals = 6 - -[ASTROSOL] -peggy_denom = inj12vy3zzany7gtl9l9hdkzgvvr597r2ta48tvylj -decimals = 8 - -[ASTROXMAS] -peggy_denom = inj19q50d6sgc3sv2hcvlfalc5kf2fc576v4nga849 -decimals = 8 - -[ASUKA] -peggy_denom = inj1c64fwq7xexhh58spf2eer85yz3uvv3y659j5dd -decimals = 18 - -[ASWC] -peggy_denom = factory/inj10emnhmzncp27szh758nc7tvl3ph9wfxgej5u5v/ASWC -decimals = 6 - -[ATOM] -peggy_denom = ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9 -decimals = 6 - -[ATOM-BOOST-LP] -peggy_denom = ibc/2519F9B056D0B3866BBBC6FDC21A8CA3615E67B21B87AAFE739C23D1E24F20F9 -decimals = 6 - -[ATOM-LUNA-LP] -peggy_denom = ibc/0ED853D2B77215F953F65364EF1CA7D8A2BD7B7E3009196BBA18E884FE3D3576 -decimals = 6 - -[ATOM-USDC-LP] -peggy_denom = ibc/CFEE8590A2AE7CD37A2AEAD71132758956E95E9F306059E3145E244BF2E84537 -decimals = 6 - -[ATOM-YIELD-LP] -peggy_denom = ibc/47BE05F9949162E2CD5E116BABBB20340859D83F2350434CC68C928820DC86F7 -decimals = 6 - -[ATOM1KLFG] -peggy_denom = ibc/2061C894621F0F53F6FEAE9ABD3841F66D27F0D7368CC67864508BDE6D8C4522 -decimals = 6 - -[AUTISM] -peggy_denom = factory/inj14lf8xm6fcvlggpa7guxzjqwjmtr24gnvf56hvz/autism -decimals = 6 - -[AUTO] -peggy_denom = ibc/C4186992BA567DF4F28BF11D258D6158F0D1D4C7B9CF53E1D29DF8A07B669ADA -decimals = 6 - -[AUUU] -peggy_denom = ibc/4CEF2F778CDA8306B6DE18A3A4C4450BEBC84F27FC49F91F3617A37203FE84B2 -decimals = 6 - -[AUUU-BOOST-LP] -peggy_denom = ibc/91340D27D271DD498072CEF92E8160204FD4FF74417BB90C020792063806CB2D -decimals = 6 - -[AUUU-USDC-LP] -peggy_denom = ibc/4476B2810337345E26557F12186479960D47B33B5AC74E9867EB4553E65A045E -decimals = 6 - -[AUUU-YIELD-LP] -peggy_denom = ibc/0D2B0139B7B937177ADE0A0CF3AB204763FD7F45B34B08285654427ABA51C4D1 -decimals = 6 - -[AVA1.1.6.95712B] -peggy_denom = ibc/386E9145A5C25DA49ED8F326ABC8776B343A3094A661121D265D5963080F652A -decimals = 0 - -[AVAX] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18a2u6az6dzw528rptepfg6n49ak6hdzkny4um6 -decimals = 8 - -[AXL] -peggy_denom = ibc/B68C1D2682A8B69E20BB921E34C6A3A2B6D1E13E3E8C0092E373826F546DEE65 -decimals = 6 - -[AXS] -peggy_denom = peggy0xBB0E17EF65F82Ab018d8EDd776e8DD940327B28b -decimals = 18 - -[AZUKI] -peggy_denom = inj1l5qrquc6kun08asp6dt50zgcxes9ntazyvs9eu -decimals = 8 - -[Aave] -peggy_denom = ibc/49265FCAA6CC20B59652C0B45B2283A260BB19FC183DE95C29CCA8E01F8B004C -decimals = 18 - -[Alaskan Malamute] -peggy_denom = inj1wndunmgj56h5cssn96hhdh49ssclc24rfl9vr4 -decimals = 18 - -[Alien Token] -peggy_denom = factory/inj169ed97mcnf8ay6rgvskn95n6tyt46uwvy5qgs0/aoi -decimals = 6 - -[Alloyed TRX] -peggy_denom = ibc/92B5B9F59D2D3686B43204201B3948004070BA21DC8E0C28DC017D1AB86080D5 -decimals = 6 - -[Alpha Coin] -peggy_denom = inj1zwnsemwrpve3wrrg0njj89w6mt5rmj9ydkc46u -decimals = 8 - -[Alpha Pro Club] -peggy_denom = inj1q2u8r40uh0ykqrjwszppz6yj2nvst4xvfvks29 -decimals = 8 - -[ApeCoin] -peggy_denom = ibc/8A13F5DA968B4D526E9DC5AE20B584FE62462E80AF06B9D0EA0B0DB35ABBBF27 -decimals = 18 - -[Apots Doge ] -peggy_denom = inj1dgnrks2s53jd5a0qsuhyvryhk4s03f5mxv9khy -decimals = 6 - -[April Fool's Day] -peggy_denom = inj1m9vaf9rm6qfjtq4ymupefkxjtv7vake0z4fc35 -decimals = 6 - -[Aptos Coin (Wormhole)] -peggy_denom = ibc/D807D81AB6C2983C9DCC2E1268051C4195405A030E1999549C562BCB7E1251A5 -decimals = 8 - -[Arbitrum] -peggy_denom = peggy0x912CE59144191C1204E64559FE8253a0e49E6548 -decimals = 18 - -[Arbitrum (legacy)] -peggy_denom = inj1d5vz0uzwlpfvgwrwulxg6syy82axa58y4fuszd -decimals = 8 - -[Arbitrum axlETH] -peggy_denom = ibc/A124994412FAC16975DF2DA42D7AFDB538A1CFCE0E40FB19620BADF6292B0A62 -decimals = 18 - -[Artro] -peggy_denom = factory/inj13r3azv5009e8w3xql5g0tuxug974ps6eed0czz/Artro -decimals = 6 - -[Astar] -peggy_denom = inj1mhmln627samtkuwe459ylq763r4n7n69gxxc9x -decimals = 18 - -[Astro-Injective] -peggy_denom = inj1sdk8sm96c7hkkax0wzxzhde9z5rpu6cr4ld8dn -decimals = 8 - -[AstroGems] -peggy_denom = inj122y9wxxmpyu2rj5ju30uwgdvk9sj020z2zt7rv -decimals = 8 - -[Astrophile] -peggy_denom = inj1y07h8hugnqnqvrpj9kmjpsva7pj4yjwjjkd0u4 -decimals = 18 - -[Axelar] -peggy_denom = peggy0x3eacbDC6C382ea22b78aCc158581A55aaF4ef3Cc -decimals = 6 - -[Axie Infinity Shard] -peggy_denom = ibc/EB519ECF709F0DB6BA1359F91BA2DDC5A07FB9869E1768D377EFEF9DF33DC4AB -decimals = 18 - -[BABY] -peggy_denom = factory/inj1vrktrmvtxkzd52kk45ptc5m53zncm56d278qza/BABY -decimals = 6 - -[BABY GINGER] -peggy_denom = factory/inj15zruc9fw2qw9sc3pvlup5qmmqsk5pcmck7ylhw/BABYGINGER -decimals = 6 - -[BABY NINJA] -peggy_denom = factory/inj1hs5chngjfhjwc4fsajyr50qfu8tjqsqrj9rf29/baby-ninja -decimals = 6 - -[BABYDEK] -peggy_denom = factory/inj1fdqalekg73v06gvzch0zu74ealp35g3y00shmz/BABYDEK -decimals = 6 - -[BABYDGNZ] -peggy_denom = inj1tyvchyp04yscelq30q6vzngn9wvmjw446sw786 -decimals = 6 - -[BABYDOGE] -peggy_denom = inj1nk2x5ll6guwt84aagnw82e7ajmlwde6w2zmpdw -decimals = 6 - -[BABYGINGER] -peggy_denom = inj17uyp6dz3uyq40ckkzlgrze2k25zhgvdqa3yh0v -decimals = 6 - -[BABYHACHI] -peggy_denom = factory/inj1hjfm3z53dj4ct5nxef5ghn8hul0y53u7ytv8st/babyhachi -decimals = 6 - -[BABYINJ] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1dvflqrkkaxped5cmks92q6vmtzx75cge9gvvap -decimals = 8 - -[BABYIPEPE] -peggy_denom = factory/inj14u2wghxjswct5uznt40kre5ct7a477m2ma5hsm/babyipepe -decimals = 6 - -[BABYKIRA] -peggy_denom = factory/inj15jeczm4mqwtc9lk4c0cyynndud32mqd4m9xnmu/BABYKIRA -decimals = 6 - -[BABYKISHU] -peggy_denom = factory/inj15e7ah9tmmhyd3qafupnwe8uj74nc7gkehkrnuw/babykishu -decimals = 6 - -[BABYNINJA] -peggy_denom = factory/inj12lv4gm863c4pj0utr7zgzp46d6p86krp8stqgp/BABYNINJA -decimals = 6 - -[BABYPANDA] -peggy_denom = factory/inj15e7ah9tmmhyd3qafupnwe8uj74nc7gkehkrnuw/babypanda -decimals = 6 - -[BABYPEPE] -peggy_denom = factory/inj1un9z8767u2r8snaqqcysnm9skxf36dspqx86sy/babypepe -decimals = 6 - -[BABYQUNT] -peggy_denom = factory/inj1xdm6zdjcwu4vy32yp2g2dazwg2ug50w2k7sy9p/BABYQUNT -decimals = 6 - -[BABYROLL] -peggy_denom = inj16rvlt87pmpntkyv3x4zfvgmyxt8ejj9mpcc72m -decimals = 18 - -[BABYSHROOM] -peggy_denom = inj1dch98v88yhksd8j4wsypdua0gk3d9zdmsj7k59 -decimals = 6 - -[BABYSPUUN] -peggy_denom = inj1n73ty9gxej3xk7c0hhktjdq3ppsekwjnhq98p5 -decimals = 6 - -[BAD] -peggy_denom = ibc/C04478BE3CAA4A14EAF4A47967945E92ED2C39E02146E1577991FC5243E974BB -decimals = 6 - -[BADKID] -peggy_denom = ibc/A0C5AD197FECAF6636F589071338DC7ECD6B0809CD3A5AB131EAAA5395E7E5E8 -decimals = 6 - -[BAG] -peggy_denom = inj13dcqczqyynw08m0tds50e0z2dsynf48g4uafac -decimals = 18 - -[BAJE] -peggy_denom = factory/inj10yymeqd0hydqmaq0gn6k6s8795svjq7gt5tmsf/BAJE -decimals = 6 - -[BALLOON] -peggy_denom = inj17p4x63h8gpfd7f6whmmcah6vq6wzzmejvkpqms -decimals = 18 - -[BAMBOO] -peggy_denom = factory/inj144nw6ny28mlwuvhfnh7sv4fcmuxnpjx4pksr0j/bamboo -decimals = 6 - -[BAND] -peggy_denom = peggy0xBA11D00c5f74255f56a5E366F4F77f5A186d7f55 -decimals = 18 - -[BAPE] -peggy_denom = factory/inj16mnhqpzuj4s4ermuh76uffaq3r6rf8dw5v9rm3/BAPE -decimals = 6 - -[BAR] -peggy_denom = factory/inj1j4qcyfayj64nyzl4lhlacuz62zak5uz5ngc576/BAR -decimals = 6 - -[BARCA] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/barcelona -decimals = 6 - -[BARRY] -peggy_denom = inj1ykpcvay9rty363wtxr9749qgnnj3rlp94r302y -decimals = 18 - -[BASE] -peggy_denom = factory/inj1vrktrmvtxkzd52kk45ptc5m53zncm56d278qza/BASE -decimals = 6 - -[BASECRO] -peggy_denom = ibc/AA732299217B2A517BDB31DE27E52FBB7C0B31A51479389908D36469BCEDD9A1 -decimals = 0 - -[BASTARD] -peggy_denom = factory/inj16g5w38hqehsmye9yavag0g0tw7u8pjuzep0sys/BASTARD -decimals = 6 - -[BAT] -peggy_denom = peggy0x0D8775F648430679A709E98d2b0Cb6250d2887EF -decimals = 18 - -[BATMAN] -peggy_denom = inj158jjagrr499yfc6t5kd9c989tx6f7ukrulj280 -decimals = 6 - -[BAYC] -peggy_denom = bayc -decimals = 18 - -[BCA] -peggy_denom = factory/inj12ygx3scssu2d9rymtppaf6nks8qg08z9w3tml9/BCA -decimals = 6 - -[BCAT] -peggy_denom = factory/inj12ygx3scssu2d9rymtppaf6nks8qg08z9w3tml9/BCAT -decimals = 6 - -[BCC] -peggy_denom = factory/inj1hr4rj6k72emjh9u7l6zg58c0n0daezz68060aq/BCC -decimals = 6 - -[BCT] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/bct -decimals = 6 - -[BCUBE] -peggy_denom = peggy0x93C9175E26F57d2888c7Df8B470C9eeA5C0b0A93 -decimals = 18 - -[BEANS] -peggy_denom = inj1j7e95jmqaqgazje8kvuzp6kh2j2pr6n6ffvuq5 -decimals = 8 - -[BEAR] -peggy_denom = factory/inj1jhwwydrfxe33r7ayy7nnrvped84njx97mma56r/BEAR -decimals = 6 - -[BEAST] -peggy_denom = peggy0xA4426666addBE8c4985377d36683D17FB40c31Be -decimals = 6 - -[BECKHAM] -peggy_denom = factory/inj1nhswhqrgfu3hpauvyeycz7pfealx4ack2c5hfp/beckham -decimals = 6 - -[BEEN] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/been -decimals = 6 - -[BELL] -peggy_denom = factory/inj1ht2x2pyj42y4y48tj9n5029w8j9f4sxu0zkwq4/BELL -decimals = 6 - -[BENANCE] -peggy_denom = inj1292223n3vfhrxndvlzsvrrlkkyt7jyeydf77h0 -decimals = 6 - -[BENJAMIN] -peggy_denom = inj1cr970pgvudvgfva60jtxnztgsu5ngm7e80e7vd -decimals = 18 - -[BERB] -peggy_denom = inj1rlyw9tl7e5u9haunh39mh87clvmww5p39dd9kv -decimals = 18 - -[BERLIN] -peggy_denom = inj1atu2677agwrskzxj4a5dn8lq43nhmeyjz5tsfq -decimals = 18 - -[BERNESE] -peggy_denom = ibc/28E915262E40A4CA526D5BFB0BAF67A1C024F8318B779C3379147A6C26D11EA8 -decimals = 6 - -[BICHO] -peggy_denom = inj1hd42hz95w6w3rt5pkeuj783a5mtx8hx28p2eg9 -decimals = 18 - -[BIDEN] -peggy_denom = inj1d2ymlnpvqny9x2qfqykzp8geq3gmg9qrm3qwhe -decimals = 6 - -[BIGSHROOM] -peggy_denom = inj1kld2dd6xa5rs98v7afv3l57m6s30hyj8dcuhh4 -decimals = 6 - -[BIN] -peggy_denom = factory/inj1ax459aj3gkph6z0sxaddk6htzlshqlp5mfwqvx/catinbin -decimals = 6 - -[BINJ] -peggy_denom = factory/inj10q36ygr0pkz7ezajcnjd2f0tat5n737yg6g6d5/bINJ -decimals = 18 - -[BINJANS] -peggy_denom = factory/inj1aj47a2vflavw92yyhn7rpa32f0dazf5cfj59v8/binjans -decimals = 6 - -[BINJE] -peggy_denom = inj10dysh3p4q8nh5zzhsq5j84de5pq6dxahnplt2f -decimals = 6 - -[BIRB] -peggy_denom = inj136zssf58vsk9uge7ulgpw9umerzcuu0kxdu5dj -decimals = 6 - -[BITCOIN] -peggy_denom = factory/inj1aj4yhftluexp75mlfmsm7sfjemrtt3rjkg3q3h/BITCOIN -decimals = 6 - -[BITS] -peggy_denom = factory/inj10gcvfpnn4932kzk56h5kp77mrfdqas8z63qr7n/bits -decimals = 6 - -[BITZ] -peggy_denom = ibc/01A69EE21F6A76CAA8D0DB900AF2789BF665B5B67D89A7D69E7ECF7F513CD0CA -decimals = 6 - -[BJNO] -peggy_denom = inj1jlugmrq0h5l5ndndcq0gyav3flwmulsmdsfh58 -decimals = 18 - -[BLACK] -peggy_denom = factory/inj16eckaf75gcu9uxdglyvmh63k9t0l7chd0qmu85/black -decimals = 6 - -[BLACK PANTHER] -peggy_denom = inj12tkaz9e540zszf5vtlxc0aksywu9rejnwxmv3n -decimals = 18 - -[BLACKHOLE PROTOCOL] -peggy_denom = peggy0xd714d91A169127e11D8FAb3665d72E8b7ef9Dbe2 -decimals = 18 - -[BLANK] -peggy_denom = factory/inj17aqq3208uujtvqmlm5xdve92tcy7ne3as2j7q0/BLANK -decimals = 18 - -[BLD] -peggy_denom = ibc/B7933C59879BFE059942C6F76CAF4B1609D441AD22D54D42DAC00CE7918CAF1F -decimals = 6 - -[BLEND] -peggy_denom = ibc/45C0FE8ACE1C9C8BA38D3D6FDEBDE4F7198A434B6C63ADCEFC3D32D12443BB84 -decimals = 6 - -[BLISS] -peggy_denom = factory/inj15tz959pa5mlghhku2vm5sq45jpp4s0yf23mk6d/BLISS -decimals = 6 - -[BLOCKTOWER] -peggy_denom = inj1cnldf982xlmk5rzxgylvax6vmrlxjlvw7ss5mt -decimals = 8 - -[BLUE] -peggy_denom = factory/inj130nkx4u8p5sa2jl4apqlnnjlej2ymfq0e398w9/BLUE -decimals = 6 - -[BLUE CUB DAO] -peggy_denom = ibc/B692197280D4E62F8D9F8E5C0B697DC4C2C680ED6DE8FFF0368E0552C9215607 -decimals = 6 - -[BLUEINJ] -peggy_denom = inj1aalqnnh24ddn3vd9plnevwnxd03x7sevm77lps -decimals = 8 - -[BLUEINJECTIVE] -peggy_denom = inj1zkm3r90ard692tvrjrhu7vtkzlqpkjkdwwc57s -decimals = 8 - -[BMO] -peggy_denom = inj17fawlptgvptqwwtgxmz0prexrz2nel6zqdn2gd -decimals = 8 - -[BMOS] -peggy_denom = ibc/D9353C3B1407A7F7FE0A5CCB7D06249B57337888C95C6648AEAF2C83F4F3074E -decimals = 6 - -[BMSCWA] -peggy_denom = factory/inj1v888gdj5k9pykjca7kp7jdy6cdalfj667yws54/BabyMiloSillyCoqWifAnalos -decimals = 6 - -[BMW] -peggy_denom = inj1fzqfk93lrmn7pgmnssgqwrlmddnq7w5h3e47pc -decimals = 6 - -[BMX] -peggy_denom = inj12u37kzv3ax6ccja5felud8rtcp68gl69hjun4v -decimals = 18 - -[BNB] -peggy_denom = peggy0xB8c77482e45F1F44dE1745F52C74426C631bDD52 -decimals = 18 - -[BNINJA] -peggy_denom = factory/inj1k7tuhcp7shy4qwkwrg6ckjteucg44qfm79rkmx/BNINJA -decimals = 6 - -[BOB] -peggy_denom = inj185qcwyqwcyucfkdks5yjy5q54jr4r3r4z7jn3v -decimals = 18 - -[BOBURU] -peggy_denom = factory/inj1qw7egul6sr0yjpxfqq5qars2qvxucgp2sartet/boburu -decimals = 6 - -[BODED] -peggy_denom = inj10xtrreumk28cucrtgse232s3gw2yxcclh0wswd -decimals = 6 - -[BODEN] -peggy_denom = boden -decimals = 9 - -[BOME] -peggy_denom = factory/inj1ne284hkg3yltn7aq250lghkqqrywmk2sk9x2yu/BOME -decimals = 6 - -[BONE] -peggy_denom = inj1kpp05gff8xgs0m9k7s2w66vvn53n77t9t6maqr -decimals = 6 - -[BONJA] -peggy_denom = factory/inj18v0e5dj2s726em58sg69sgmrnqmd08q5apgklm/bj -decimals = 6 - -[BONJO] -peggy_denom = factory/inj1r35twz3smeeycsn4ugnd3w0l5h2lxe44ptuu4w/BONJO -decimals = 6 - -[BONK] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14rry9q6dym3dgcwzq79yay0e9azdz55jr465ch -decimals = 5 - -[BONKINJ] -peggy_denom = inj173f5j4xtmah4kpppxgh8p6armad5cg5e6ay5qh -decimals = 6 - -[BONKJA] -peggy_denom = factory/inj1gc8fjmp9y8kfsy3s6yzucg9q0azcz60tm9hldp/bonkja -decimals = 6 - -[BONSAI] -peggy_denom = factory/inj13jx69l98q0skvwy3n503e0zcrh3wz9dcqxpwxy/bonsai -decimals = 6 - -[BONUS] -peggy_denom = ibc/DCF43489B9438BB7E462F1A1AD38C7898DF7F49649F9CC8FEBFC533A1192F3EF -decimals = 8 - -[BOOM] -peggy_denom = inj1xuu84fqdq45wdqj38xt8fhxsazt88d7xumhzrn -decimals = 18 - -[BOOSH] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/boosh -decimals = 6 - -[BOY] -peggy_denom = ibc/84DA08CF29CD08373ABB0E36F4E6E8DC2908EA9A8E529349EBDC08520527EFC2 -decimals = 6 - -[BOYS] -peggy_denom = factory/inj1q4z7jjxdk7whwmkt39x7krc49xaqapuswhjhkn/boys -decimals = 6 - -[BOZO] -peggy_denom = inj1mf5dj5jscuw3z0eykkfccy2rfz7tvugvw2rkly -decimals = 18 - -[BPEPE] -peggy_denom = inj1pel9sz78wy4kphn2k7uwv5f6txuyvtrxn9j6c3 -decimals = 8 - -[BRED] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/bred -decimals = 6 - -[BRETT] -peggy_denom = factory/inj13jjdsa953w03dvecsr43dj5r6a2vzt7n0spncv/brett -decimals = 6 - -[BRNZ] -peggy_denom = ibc/713B768D6B89E4DEEFDBE75390CA2DC234FAB6A016D3FD8D324E08A66BF5070F -decimals = 0 - -[BRO] -peggy_denom = factory/inj1cd4q88qplpve64hzftut2cameknk2rnt45kkq5/BRO -decimals = 6 - -[BRRR] -peggy_denom = inj16veue9c0sz0mp7dnf5znsakqwt7cnjpwz3auau -decimals = 18 - -[BRUCELEE] -peggy_denom = inj1dtww84csxcq2pwkvaanlfk09cer93xzc9kwnzf -decimals = 6 - -[BRZ] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14jesa4q248mfxztfc9zgpswkpa4wx249mya9kk -decimals = 4 - -[BSKT] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj193340xxv49hkug7r65xzc0l40tze44pee4fj94 -decimals = 5 - -[BTC] -peggy_denom = btc -decimals = 8 - -[BTCETF] -peggy_denom = inj1gzmkap8g09h70keaph9utxy9ahjvuuhk5tzpw9 -decimals = 18 - -[BUFFON] -peggy_denom = inj16m2tnugwtrdec80fxvuaxgchqcdpzhf2lrftck -decimals = 18 - -[BUGS] -peggy_denom = factory/inj1zzc2wt4xzy9yhxz7y8mzcn3s6zwvajyutgay3c/BUGS -decimals = 6 - -[BUIDL] -peggy_denom = buidl -decimals = 6 - -[BUILD] -peggy_denom = inj1z9utpqxm586476kzpk7nn2ukhnydmu8vchhqlu -decimals = 18 - -[BUL] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/bul -decimals = 6 - -[BULL] -peggy_denom = factory/inj1uv64p5ky9c298dlswy5krq4xcn78qearqaqqc9/BULL -decimals = 6 - -[BULLS] -peggy_denom = factory/inj1zq37mfquqgud2uqemqdkyv36gdstkxl27pj5e3/bulls -decimals = 6 - -[BURGE] -peggy_denom = inj1xcmamawydqlnqde7ah3xq7gzye9acwkmc5k5ne -decimals = 18 - -[BUS] -peggy_denom = inj1me9svqmf539hfzrfhw2emm2s579kv73w77u8yz -decimals = 18 - -[BUSD] -peggy_denom = peggy0x4Fabb145d64652a948d72533023f6E7A623C7C53 -decimals = 18 - -[BUSD (BEP-20)] -peggy_denom = ibc/A8F9B4EC630F52C13D715E373A0E7B57B3F8D870B4168DADE0357398712ECC0E -decimals = 18 - -[BWH] -peggy_denom = ibc/9A31315BECC84265BCF32A31E4EB75C3B59ADCF8CCAE3C6EF8D0DF1C4EF829EB -decimals = 6 - -[BYE] -peggy_denom = inj1zfaug0dfg7zmd888thjx2hwuas0vl2ly4euk3r -decimals = 18 - -[Baby Corgi] -peggy_denom = ibc/9AC0F8299A5157831C7DF1AE52F178EFBA8D5E1826D4DD539441E3827FFCB873 -decimals = 6 - -[Baby DOJO Token] -peggy_denom = inj19dtllzcquads0hu3ykda9m58llupksqwekkfnw -decimals = 6 - -[Baby Dog Wif Nunchucks] -peggy_denom = inj1nddcunwpg4cwyl725lvkh9an3s5cradaajuwup -decimals = 8 - -[Baby Ninja] -peggy_denom = factory/inj1h3y27yhly6a87d95937jztc3tupl3nt8fg3lcp/BABYNINJA -decimals = 6 - -[Baby Nonja] -peggy_denom = inj1pchqd64c7uzsgujux6n87djwpf363x8a6jfsay -decimals = 18 - -[BabyBonk] -peggy_denom = inj1kaad0grcw49zql08j4xhxrh8m503qu58wspgdn -decimals = 18 - -[BabyInjective] -peggy_denom = inj1dvflqrkkaxped5cmks92q6vmtzx75cge9gvvap -decimals = 8 - -[Babykira] -peggy_denom = factory/inj15jeczm4mqwtc9lk4c0cyynndud32mqd4m9xnmu/$babykira -decimals = 6 - -[Babyroll] -peggy_denom = inj1qd60tuupdtq2ypts6jleq60kw53d06f3gc76j5 -decimals = 18 - -[Baguette] -peggy_denom = inj15a3yppu5h3zktk2hkq8f3ywhfpqqrwft8awyq0 -decimals = 18 - -[Bamboo] -peggy_denom = factory/inj144nw6ny28mlwuvhfnh7sv4fcmuxnpjx4pksr0j/boo -decimals = 6 - -[Base axlETH] -peggy_denom = ibc/FD8134B9853AABCA2B22A942B2BFC5AD59ED84F7E6DFAC4A7D5326E98DA946FB -decimals = 18 - -[Basket] -peggy_denom = inj193340xxv49hkug7r65xzc0l40tze44pee4fj94 -decimals = 5 - -[Benance] -peggy_denom = inj1gn8ss00s3htff0gv6flycgdqhc9xdsmvdpzktd -decimals = 8 - -[BetaDojo] -peggy_denom = inj1p6cj0r9ne63xhu4yr2vhntkzcfvt8gaxt2a5mw -decimals = 6 - -[Binance Coin] -peggy_denom = ibc/AAED29A220506DF2EF39E43B2EE35717636502267FF6E0343B943D70E2DA59EB -decimals = 18 - -[Binance USD] -peggy_denom = ibc/A62F794AAEC56B6828541224D91DA3E21423AB0DC4D21ECB05E4588A07BD934C -decimals = 18 - -[Binu] -peggy_denom = inj1myh9um5cmpghrfnh620cnauxd8sfh4tv2mcznl -decimals = 18 - -[Bird INJ] -peggy_denom = factory/inj125hcdvz9dnhdqal2u8ctr7l0hd8xy9wdgzt8ld/binj -decimals = 6 - -[BitSong] -peggy_denom = peggy0x05079687D35b93538cbd59fe5596380cae9054A9 -decimals = 18 - -[Bitcoin] -peggy_denom = inj1ce249uga9znmc3qk2jzr67v6qxq73pudfxhwqx -decimals = 8 - -[Bitcosmos] -peggy_denom = ibc/E440667C70A0C9A5AD5A8D709731289AFB92301D64D70D0B33D18EF4FDD797FE -decimals = 6 - -[Black] -peggy_denom = inj1nuwasf0jsj3chnvzfddh06ft2fev3f5g447u2f -decimals = 18 - -[BlueInjective] -peggy_denom = inj17qsyspyh44wjch355pr72wzfv9czt5cw3h7vrr -decimals = 8 - -[Bnana] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/banana -decimals = 18 - -[Bobinjtoken] -peggy_denom = inj1cwaw3cl4wscxadtmydjmwuelqw95w5rukmk47n -decimals = 18 - -[Bonded Crescent] -peggy_denom = ibc/D9E839DE6F40C036592B6CEDB73841EE9A18987BC099DD112762A46AFE72159B -decimals = 6 - -[Bonjo] -peggy_denom = inj19w5lfwk6k9q2d8kxnwsu4962ljnay85f9sgwn6 -decimals = 18 - -[Bonk] -peggy_denom = ibc/C951FBB321708183F5A14811A3D099B3D73457D12E193E2B8429BDDCC6810D5A -decimals = 5 - -[Bonk Injective] -peggy_denom = factory/inj15705jepx03fxl3sntfhdznjnl0mlqwtdvyt32d/bonk -decimals = 18 - -[Bonk on INJ] -peggy_denom = factory/inj147laec3n2gq8gadzg8xthr7653r76jzhavemhh/BONK -decimals = 6 - -[BonkToken] -peggy_denom = inj1jzxkr7lzzljdsyq8483jnduvpwtq7ny5x4ch08 -decimals = 8 - -[Boomer] -peggy_denom = inj1ethjlrk28wqklz48ejtqja9yfft8t4mm92m2ga -decimals = 18 - -[Brazilian Digital Token] -peggy_denom = inj14jesa4q248mfxztfc9zgpswkpa4wx249mya9kk -decimals = 4 - -[Brett] -peggy_denom = inj1zhce7csk22mpwrfk855qhw4u5926u0mjyw4df6 -decimals = 18 - -[Brotopia] -peggy_denom = inj16npdl0wuq9lg08lg3wzvh6tru60m3x5h6cy3mz -decimals = 8 - -[Bull] -peggy_denom = inj1j82m0njz2gm0eea0ujmyjdlq2gzvwkvqapxeuw -decimals = 8 - -[CAC] -peggy_denom = ibc/97D9F67F798DBB31DAFA9CF4E791E69399E0FC3FC2F2A54066EE666052E23EF6 -decimals = 6 - -[CACTUS] -peggy_denom = inj16ch9sx5c6fa6lnndh7vunrjsf60h67hz988hdg -decimals = 18 - -[CAD] -peggy_denom = cad -decimals = 6 - -[CAL] -peggy_denom = inj1a9pvrzmymj7rvdw0cf5ut9hkjsvtg4v8cqae24 -decimals = 18 - -[CANTO] -peggy_denom = ibc/D91A2C4EE7CD86BBAFCE0FA44A60DDD9AFBB7EEB5B2D46C0984DEBCC6FEDFAE8 -decimals = 18 - -[CAPY] -peggy_denom = factory/inj1krswly444gyuunnmchg4uz2ekqvu02k7903skh/capybara -decimals = 6 - -[CARTEL] -peggy_denom = factory/inj12tl0d8a739t8pun23mzldhan26ndqllyt6d67p/cartel -decimals = 6 - -[CASINO] -peggy_denom = inj12zqf6p9me86493yzpr9v3kmunvjzv24fg736yd -decimals = 18 - -[CASSIO] -peggy_denom = inj179m94j3vkvpzurq2zpn0q9uxdfuc4nq0p76h6w -decimals = 8 - -[CAT] -peggy_denom = inj129hsu2espaf4xn8d2snqyaxrhf0jgl4tzh2weq -decimals = 18 - -[CATCOIN] -peggy_denom = inj1rwhc09dv2c9kg6d63t3qp679jws04p8van3yu8 -decimals = 8 - -[CATINJ] -peggy_denom = factory/inj1cm5lg3z9l3gftt0c09trnllmayxpwt8825zxw3/catinj -decimals = 6 - -[CATNIP] -peggy_denom = factory/inj1rnlhp35xqtl0zwlp9tnrelykea9f52nd8av7ec/CATNIPPY -decimals = 6 - -[CBG] -peggy_denom = inj19k6fxafkf8q595lvwrh3ejf9fuz9m0jusncmm6 -decimals = 18 - -[CDT] -peggy_denom = ibc/25288BA0C7D146D37373657ECA719B9AADD49DA9E514B4172D08F7C88D56C9EF -decimals = 6 - -[CEL] -peggy_denom = peggy0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d -decimals = 4 - -[CELL] -peggy_denom = peggy0x26c8AFBBFE1EBaca03C2bB082E69D0476Bffe099 -decimals = 18 - -[CENTER] -peggy_denom = inj1khd6f66tp8dd4f58dzsxa5uu7sy3phamkv2yr8 -decimals = 8 - -[CERBERUS] -peggy_denom = inj1932un3uh05nxy4ej50cfc3se096jd6w3jvl69g -decimals = 6 - -[CET] -peggy_denom = factory/inj1hst0759zk7c29rktahm0atx7tql5x65jnsc966/CET -decimals = 6 - -[CGLP] -peggy_denom = ibc/6A3840A623A809BC76B075D7206302622180D9FA8AEA59067025812B1BC6A1CC -decimals = 18 - -[CHAD] -peggy_denom = factory/inj13f6c0hc3l80qa7w80j992wtscslkg8pm65rxua/CHAD -decimals = 6 - -[CHAININJ] -peggy_denom = inj143rjlwt7r28wn89r39wr76umle8spx47z0c05d -decimals = 8 - -[CHAKRA] -peggy_denom = factory/inj13zsd797dnkgpxcrf3zxxjzykzcz55tw7kk5x3y/CHAKRA -decimals = 6 - -[CHAMP] -peggy_denom = inj1gnde7drvw03ahz84aah0qhkum4vf4vz6mv0us7 -decimals = 8 - -[CHAMPION] -peggy_denom = inj1rh94naxf7y20qxct44mrlawyhs79d06zmprv70 -decimals = 8 - -[CHARM] -peggy_denom = inj1c2e37gwl2q7kvuxyfk5c0qs89rquzmes0nsgjf -decimals = 8 - -[CHEEMS] -peggy_denom = factory/inj1hrjm0jwfey8e4x3ef3pyeq4mpjvc8356lkgh9f/CHEEMS -decimals = 6 - -[CHEESE] -peggy_denom = inj1p6v3qxttvh36x7gxpwl9ltnmc6a7cgselpd7ya -decimals = 18 - -[CHELE] -peggy_denom = factory/inj16fsle0ywczyf8h4xfpwntg3mnv7cukd48nnjjp/CHELE -decimals = 6 - -[CHEN] -peggy_denom = factory/inj196t4n8dg3pzkk5wh7ytjwtl6e3a56u9fj705wr/CHEN -decimals = 6 - -[CHI] -peggy_denom = inj198rrzmcv69xay8xuhalqz2z02egmsyzp08mvkk -decimals = 18 - -[CHICKEN] -peggy_denom = factory/inj1gqeyl6704zr62sk2lsprt54gcwc6y724xvlgq2/CHICKEN -decimals = 6 - -[CHIKU] -peggy_denom = factory/inj1g8s4usdsy7gujf96qma3p8r2a7m02juzfm4neh/CHIKU -decimals = 6 - -[CHINMOY] -peggy_denom = inj1t52r8h56j9ctycqhlkdswhjjn42s6dnc6huwzs -decimals = 18 - -[CHOCOLATE] -peggy_denom = inj1slny6cqjkag3hgkygpq5nze6newysqpsfy0dxj -decimals = 6 - -[CHONK] -peggy_denom = inj17aze0egvc8hrmgf25kkhlw3720vurz99pdp58q -decimals = 18 - -[CHOWCHOW] -peggy_denom = inj1syqdgn79wnnlzxd63g2h00rzx90k6s2pltec6w -decimals = 6 - -[CHROME] -peggy_denom = inj1k20q72a4hxt0g20sx3rcnjvhfye6u3k6dhx6nc -decimals = 6 - -[CHROMIUM] -peggy_denom = inj1plmyzu0l2jku2yw0hnh8x6lw4z5r2rggu6uu05 -decimals = 8 - -[CHUN] -peggy_denom = factory/inj19tjhqehpyq4n05hjlqyd7c5suywf3hcuvetpcr/CHUN -decimals = 9 - -[CHUNGUS] -peggy_denom = factory/inj1khr6lahyjz0wgnwzuu4dk5wz24mjrudz6vgd0z/bigchungus -decimals = 6 - -[CHZ] -peggy_denom = peggy0x3506424F91fD33084466F402d5D97f05F8e3b4AF -decimals = 18 - -[CHZlegacy] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q6kpxy6ar5lkxqudjvryarrrttmakwsvzkvcyh -decimals = 8 - -[CINU] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14pq4ewrxju997x0y7g2ug6cn3lqyp66ygz5x6s -decimals = 8 - -[CIRCUS] -peggy_denom = ibc/AEE5A4EF1B28693C4FF12F046C17197E509030B18F70FE3D74F6C3542BB008AD -decimals = 6 - -[CITY] -peggy_denom = factory/inj1jpddz58n2ugstuhp238qwwvdf3shxsxy5g6jkn/CITY -decimals = 6 - -[CJN] -peggy_denom = inj1eln607626f3j058rfh4xd3m4pd728x2cnxw4al -decimals = 18 - -[CLEO] -peggy_denom = inj1fr66v0vrkh55yg6xfw845q78kd0cnxmu0d5pnq -decimals = 18 - -[CLEVER] -peggy_denom = inj1f6h8cvfsyz450kkcqmy53w0y4qnpj9eylsazww -decimals = 18 - -[CLON] -peggy_denom = ibc/695B1D16DE4D0FD293E6B79451640974080B59AA60942974C1CC906568DED795 -decimals = 6 - -[CNJ] -peggy_denom = inj1w38vdrkemf8s40m5xpqe5fc8hnvwq3d794vc4a -decimals = 18 - -[COCA] -peggy_denom = ibc/8C82A729E6D74B03797962FE5E1385D87B1DFD3E0B58CF99E0D5948F30A55093 -decimals = 6 - -[COCK] -peggy_denom = factory/inj1eucxlpy6c387g5wrn4ee7ppshdzg3rh4t50ahf/COCK -decimals = 6 - -[COCKPIT] -peggy_denom = factory/inj15u2mc2vyh2my4qcuj5wtv27an6lhjrnnydr926/COCKPIT -decimals = 9 - -[COFFEE] -peggy_denom = inj166gumme9j7alwh64uepatjk4sw3axq84ra6u5j -decimals = 6 - -[COFFEIN] -peggy_denom = inj18me8d9xxm340zcgk5eu8ljdantsk8ktxrvkup8 -decimals = 18 - -[COKE] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14eaxewvy7a3fk948c3g3qham98mcqpm8v5y0dp -decimals = 6 - -[COMP] -peggy_denom = peggy0xc00e94Cb662C3520282E6f5717214004A7f26888 -decimals = 18 - -[CONK] -peggy_denom = inj18vcz02pukdr2kak6g2p34krgdddan2vlpzmqju -decimals = 8 - -[CONK2.0] -peggy_denom = inj1zuz0rpg224mrpz2lu6npta34yc48sl7e5sndly -decimals = 8 - -[CONT] -peggy_denom = inj1vzpegrrn6zthj9ka93l9xk3judfx23sn0zl444 -decimals = 18 - -[COOK] -peggy_denom = factory/inj1pqpmffc7cdfx7tv9p2347ghgxdaell2xjzxmy6/COOK -decimals = 6 - -[COOKIG] -peggy_denom = factory/inj1vrktrmvtxkzd52kk45ptc5m53zncm56d278qza/COOKIG -decimals = 6 - -[COOL] -peggy_denom = factory/inj1rdu7lqpvq4h2fyrjdfnp9gycdkut5ewql3e4uq/coolcat -decimals = 6 - -[COPE] -peggy_denom = inj1lchcdq3rqc2kaupt6fwshd7fyj7p0mpkeknkyw -decimals = 18 - -[COQ] -peggy_denom = inj1lefh6m9ldqm55ume0j52fhhw6tzmx9pezkqhzp -decimals = 18 - -[CORE] -peggy_denom = inj1363eddx0m5mlyeg9z9qjyvfyutrekre47kmq34 -decimals = 18 - -[CORGI] -peggy_denom = inj129t9ywsya0tyma00xy3de7q2wnah7hrw7v9gvk -decimals = 18 - -[CORONA] -peggy_denom = inj1md4ejkx70463q3suv68t96kjg8vctnpf3ze2uz -decimals = 18 - -[COSMO] -peggy_denom = factory/inj1je6n5sr4qtx2lhpldfxndntmgls9hf38ncmcez/COSMO -decimals = 6 - -[COSMOUSD] -peggy_denom = ibc/7C2E000B842A9BE91046F096999E6A627AD4DC5289ABA89B412019381A94BB8F -decimals = 6 - -[COSMWASM] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1yl8z48uwve5wk0j9elxql8c327wy87anccf4ex -decimals = 8 - -[COST] -peggy_denom = inj1hlwjvef4g4tdsa5erdnzfzd8ufcw403a6558nm -decimals = 18 - -[COVID] -peggy_denom = inj1ce38ehk3cxa7tzcq2rqmgek9hc3gdldvxvtzqy -decimals = 6 - -[COWBOY] -peggy_denom = inj1dp7uy8sa0sevnj65atsdah0sa6wmwtfczwg08d -decimals = 6 - -[CP] -peggy_denom = factory/inj1300jzt0tyjg8x4txsfs79l29k556vqqk22c7es/cope -decimals = 6 - -[CPINJ] -peggy_denom = factory/inj1qczkutnsy3nmt909xtyjy4rsrkl2q4dm6aq960/coping -decimals = 6 - -[CR7] -peggy_denom = factory/inj1v25y8fcxfznd2jkz2eh5cy2520jpvt3felux66/CR7 -decimals = 6 - -[CRAB] -peggy_denom = factory/inj1fx2mj8532ynky2xw0k8tr46t5z8u7cjvpr57tq/crabfu -decimals = 6 - -[CRAB APPLE] -peggy_denom = inj1ku7f3v7z3dd9hrp898xs7xnwmmwzw32tkevahk -decimals = 18 - -[CRASH] -peggy_denom = inj1k3rankglvxjxzsaqrfff4h5ttwcjjh3m4l3pa2 -decimals = 8 - -[CRAZYHORSE] -peggy_denom = ibc/7BE6E83B27AC96A280F40229539A1B4486AA789622255283168D237C41577D3B -decimals = 6 - -[CRBRUS] -peggy_denom = ibc/F8D4A8A44D8EF57F83D49624C4C89EECB1472D6D2D1242818CDABA6BC2479DA9 -decimals = 6 - -[CRE] -peggy_denom = ibc/3A6DD3358D9F7ADD18CDE79BA10B400511A5DE4AE2C037D7C9639B52ADAF35C6 -decimals = 6 - -[CRINJ] -peggy_denom = factory/inj172d4lzaurwkmlvjfsz345mjmdc0e3ntsnhavf9/CRINJ -decimals = 6 - -[CRITPO] -peggy_denom = factory/inj1safqtpalmkes3hlyr0zfdr0dw4aaxulh306n67/CRITPO -decimals = 7 - -[CRN] -peggy_denom = inj1wcj4224qpghv94j8lzq8c2m9wa4f2slhqcxm9y -decimals = 18 - -[CROCO] -peggy_denom = factory/inj13j4gwlt2867y38z6e40366h38jtpmele209g6t/CROCO -decimals = 6 - -[CROCO_NINJA] -peggy_denom = factory/inj1c0tfeukmrw69076w7nffjqhrswp8vm9rr6t3eh/CROCO -decimals = 6 - -[CRT] -peggy_denom = inj10qt8pyaenyl2waxaznez6v5dfwn05skd4guugw -decimals = 18 - -[CRV] -peggy_denom = crv -decimals = 18 - -[CRYPB] -peggy_denom = inj1p82fws0lzshx2zg2sx5c5f855cf6wht9uudxg0 -decimals = 18 - -[CRseven] -peggy_denom = inj19jp9v5wqz065nhr4uhty9psztlqeg6th0wrp35 -decimals = 6 - -[CTAX] -peggy_denom = inj1mwj4p98clpf9aldzcxn7g8ffzrwz65uszesdre -decimals = 18 - -[CTO] -peggy_denom = inj19kk6ywwu5h0rnz4453gyzt3ymgu739egv954tf -decimals = 18 - -[CUB] -peggy_denom = ibc/5CB35B165F689DD57F836C6C5ED3AB268493AA5A810740446C4F2141664714F4 -decimals = 6 - -[CUIT] -peggy_denom = factory/inj1zlmrdu0ntnmgjqvj2a4p0uyrg9jw802ld00x7c/CUIT -decimals = 6 - -[CVR] -peggy_denom = peggy0x3C03b4EC9477809072FF9CC9292C9B25d4A8e6c6 -decimals = 18 - -[CW20] -peggy_denom = inj1c2mjatph5nru36x2kkls0pwpez8jjs7yd23zrl -decimals = 18 - -[CW20-wrapped inj] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj12kq4zh7kckuu0rfpxcr9l6l2x26ajf23uc0w55 -decimals = 18 - -[CW20:TERRA1CL273523KMR2UWJHHZNQ54JE69MTED2U3LJFFM8KP2AP4Z3DRDKSFTWQUN] -peggy_denom = ibc/44461C88F8BF1D2E8D890FB43B4C2C268B89FF6367ED8E39872BB13CA14A5512 -decimals = 0 - -[CW20:TERRA1NSUQSK6KH58ULCZATWEV87TTQ2Z6R3PUSULG9R24MFJ2FVTZD4UQ3EXN26] -peggy_denom = ibc/1966FE142949F3878ED8438FBDDE8620F4E0584D6605D2201E53388CF4CEAF41 -decimals = 0 - -[CWIFLUCK] -peggy_denom = factory/inj1u2fhfn0g8srf2kt3am52wd9dp4zyjvecm86uhj/CWIFLUCK -decimals = 6 - -[CWL] -peggy_denom = factory/inj1u2fhfn0g8srf2kt3am52wd9dp4zyjvecm86uhj/CWL -decimals = 6 - -[CWT] -peggy_denom = factory/inj1j5hqczk6ee2zsuz7kjt5nshxcjg5g69njxe6ny/inj-cttoken -decimals = 18 - -[CZORT] -peggy_denom = inj13dl7xm6pljjj3ymp475pcjr2n2k0q5nvmr8665 -decimals = 6 - -[Canto] -peggy_denom = ibc/5C0C70B490A3568D40E81884F200716F96FCE8B0A55CB5EE41C1E369E6086CCA -decimals = 18 - -[Cat] -peggy_denom = inj1eerjxzvwklcgvclj9m2pulqsmpentaes8h347x -decimals = 18 - -[Cat WIF luck] -peggy_denom = inj1mqurena8qgf775t28feqefnp63qme7jyupk4kg -decimals = 18 - -[Cat Wif Luck] -peggy_denom = inj19lwxrsr2ke407xw2fdgs80f3rghg2pueqae3vf -decimals = 6 - -[CatInjective] -peggy_denom = inj1p2w55xu2yt55rydrf8l6k79kt3xmjmmsnn3mse -decimals = 8 - -[Chainlink] -peggy_denom = ibc/AC447F1D6EDAF817589C5FECECB6CD3B9E9EFFD33C7E16FE8820009F92A2F585 -decimals = 18 - -[Chb] -peggy_denom = inj1fvzre25nqkakvwmjr8av5jrfs56dk6c8sc6us9 -decimals = 8 - -[CheeseBalls] -peggy_denom = inj13mjcjrwwjq7x6fanqvur4atd4sxyjz7t6kfhx0 -decimals = 6 - -[Chiliz (legacy)] -peggy_denom = inj1q6kpxy6ar5lkxqudjvryarrrttmakwsvzkvcyh -decimals = 8 - -[Chonk] -peggy_denom = factory/inj1an9qflgvpvjdhczce6xwrh4afkaap77c72k4yd/Chonk -decimals = 6 - -[Chonk The Cat] -peggy_denom = inj1ftq3h2y70hrx5rn5a26489drjau9qel58h3gfr -decimals = 18 - -[Circle USD] -peggy_denom = ibc/8F3ED95BF70AEC83B3A557A7F764190B8314A93E9B578DE6A8BDF00D13153708 -decimals = 6 - -[CosmWasm] -peggy_denom = inj1yl8z48uwve5wk0j9elxql8c327wy87anccf4ex -decimals = 8 - -[Cosmic] -peggy_denom = inj19zcnfvv3qazdhgtpnynm0456zdda5yy8nmsw6t -decimals = 18 - -[Cosmo] -peggy_denom = factory/osmo1ua9rmqtmlyv49yety86ys8uqx3hawfkyjr0g7t/Cosmo -decimals = 6 - -[Cosmos] -peggy_denom = peggy0x8D983cb9388EaC77af0474fA441C4815500Cb7BB -decimals = 6 - -[Crinj Token] -peggy_denom = factory/inj1kgyxepqnymx8hy7nydl65w3ecyut566pl70swj/crinj -decimals = 6 - -[D.a.r.e] -peggy_denom = inj19vy83ne9tzta2yqynj8yg7dq9ghca6yqn9hyej -decimals = 18 - -[DAB] -peggy_denom = factory/inj1n8w9wy72cwmec80qpjsfkgl67zft3j3lklg8fg/DAB -decimals = 6 - -[DAI] -peggy_denom = peggy0x6B175474E89094C44Da98b954EedeAC495271d0F -decimals = 18 - -[DAI-WEI] -peggy_denom = ibc/D60FA550EC962A2CAAC437052D06BA56543FB7787762153024216660CA4E0624 -decimals = 0 - -[DANJER] -peggy_denom = factory/inj1xzk83u23djtynmz3a3h9k0q454cuhsn3y9jhr3/DANJER -decimals = 6 - -[DANU] -peggy_denom = ibc/47C09BF48E492A1F9F8B4020AE8064953B70A35469E96F59C0DC35CD5CCE37FA -decimals = 6 - -[DAOJO] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/daojo -decimals = 6 - -[DATOSHI] -peggy_denom = inj1rp63ym52lawyuha4wvn8gy33ccqtpj5pu0n2ef -decimals = 18 - -[DBT] -peggy_denom = factory/inj1xtel2knkt8hmc9dnzpjz6kdmacgcfmlv5f308w/dbt -decimals = 6 - -[DBTT] -peggy_denom = inj1wwga56n4glj9x7cnuweklepl59hp95g9ysg283 -decimals = 18 - -[DDD] -peggy_denom = factory/inj12yazr8lq5ptlz2qj9y36v8zwmz90gy9gh35026/ddd -decimals = 6 - -[DDL] -peggy_denom = factory/inj1put8lfpkwm47tqcl9fgh8grz987mezvrx4arls/DDL -decimals = 6 - -[DDLTest] -peggy_denom = inj10zhn525tfxf5j34dg5uh5js4fr2plr4yydasxd -decimals = 18 - -[DEFI5] -peggy_denom = peggy0xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41 -decimals = 18 - -[DEFIKINGS] -peggy_denom = inj18h33x5qcr44feutwr2cgazaalcqwtpez57nutx -decimals = 8 - -[DEGGZ] -peggy_denom = factory/inj1k0ked7w3t3etzun47m00xmx9vr4zglznnsp3y9/DEGGZ -decimals = 9 - -[DEK] -peggy_denom = factory/inj1aey234egq5efqr7zfvtzdsq6h2c5wsrma4lw7h/dek -decimals = 6 - -[DEK on INJ] -peggy_denom = factory/inj1aey234egq5efqr7zfvtzdsq6h2c5wsrma4lw7h/dekinj -decimals = 1 - -[DEPE] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/depe -decimals = 6 - -[DEXTER] -peggy_denom = inj12y0ucglt3twtwaaklgce3vpc95gxe67lpu2ghc -decimals = 18 - -[DGNZ] -peggy_denom = factory/inj1l2kcs4yxsxe0c87qy4ejmvkgegvjf0hkyhqk59/DGNZ -decimals = 6 - -[DIB] -peggy_denom = inj1nzngv0ch009jyc0mvm5h55d38c32sqp2fjjws9 -decimals = 18 - -[DICE] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/DICE -decimals = 6 - -[DICES] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/dices -decimals = 6 - -[DICK] -peggy_denom = factory/inj1wqk200kkyh53d5px5zc6v8usq3pluk07r4pxpu/DICK -decimals = 6 - -[DIDX] -peggy_denom = factory/inj1w24j0sv9rvv473x6pqfd2cnnxtk6cvrh5ek89e/DIDX -decimals = 6 - -[DINHEIROS] -peggy_denom = ibc/306269448B7ED8EC0DB6DC30BAEA279A9190E1D583572681749B9C0D44915DAB -decimals = 0 - -[DINO] -peggy_denom = inj1zx9tv9jg98t0fa7u9882gjrtansggmakmwnenm -decimals = 18 - -[DITTO] -peggy_denom = inj1vtg4almersef8pnyh5lptwvcdxnrgqp0zkxafu -decimals = 6 - -[DMT] -peggy_denom = ibc/CCA7C9657F4CCD03685B419A2F66278076CFAD72DDECE44B0AC62654A3611FA6 -decimals = 6 - -[DNA] -peggy_denom = ibc/AE8E20F37C6A72187633E418169758A6974DD18AB460ABFC74820AAC364D2A13 -decimals = 6 - -[DOCE] -peggy_denom = inj1xx8qlk3g9g3cyqs409strtxq7fuphzwzd4mqzw -decimals = 18 - -[DOGE] -peggy_denom = doge -decimals = 8 - -[DOGECoin] -peggy_denom = factory/inj1s0ckch4dlp5eyx7khtqnt9dryd60v6ns4g0yn4/DOGE -decimals = 6 - -[DOGEINJ] -peggy_denom = factory/inj1lm95gdmz7qatcgw933t97rg58wnzz3dpxv7ldk/DOGEINJ -decimals = 6 - -[DOGEINJCoin] -peggy_denom = factory/inj1s0ckch4dlp5eyx7khtqnt9dryd60v6ns4g0yn4/DOGEINJ -decimals = 6 - -[DOGEKIRA] -peggy_denom = inj1xux4gj0g3u8qmuasz7fsk99c0hgny4wl7hfzqu -decimals = 6 - -[DOGENINJA] -peggy_denom = inj1wjv6l090h9wgwr6lc58mj0xphg50mzt8y6dfsy -decimals = 6 - -[DOGGO] -peggy_denom = factory/inj1a4qjk3ytal0alrq566zy6z7vjv6tgrgg0h7wu9/DOGGO -decimals = 6 - -[DOGINJBREAD] -peggy_denom = inj1s4srnj2cdjf3cgun57swe2je8u7n3tkm6kz257 -decimals = 18 - -[DOGOFTHUN] -peggy_denom = factory/inj1056f9jwmdxjmc3xf3urpka00gjfsnna7ct3gy3/DOGOFTHUN -decimals = 6 - -[DOGWIF] -peggy_denom = inj16ykyeaggxaqzj3x85rjuk3xunky7mg78yd2q32 -decimals = 8 - -[DOINJ] -peggy_denom = inj1swqv8e6e8tmyeqwq3rp43pfsr75p8wey7vrh0u -decimals = 8 - -[DOJ] -peggy_denom = factory/inj172ccd0gddgz203e4pf86ype7zjx573tn8g0df9/doj -decimals = 6 - -[DOJO] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1zdj9kqnknztl2xclm5ssv25yre09f8908d4923 -decimals = 18 - -[DOJO SWAP] -peggy_denom = inj1qzqlurx22acr4peuawyj3y95v9r9sdqqrafwqa -decimals = 18 - -[DOJODOG] -peggy_denom = factory/inj1s0awzzjfr92mu6t6h85jmq6s9f6hxnqwpmy3f7/DOJODOG -decimals = 6 - -[DOJOshroom] -peggy_denom = inj194l9mfrjsthrvv07d648q24pvpfkntetx68e7l -decimals = 6 - -[DOJSHIB] -peggy_denom = inj17n55k95up6tvf6ajcqs6cjwpty0j3qxxfv05vd -decimals = 18 - -[DOKI] -peggy_denom = ibc/EA7CE127E1CFD7822AD169019CAFDD63D0F5A278DCE974F438099BF16C99FB8B -decimals = 6 - -[DON] -peggy_denom = factory/inj1xjcq2ch3pacc9gql24hfwpuvy9gxszxpz7nzmz/don -decimals = 6 - -[DONALD TRUMP] -peggy_denom = inj1mdf4myxfhgranmzew5kg39nv5wtljwksm9jyuj -decimals = 18 - -[DONK] -peggy_denom = inj1jargzf3ndsadyznuj7p3yrp5grdxsthxyfp0fj -decimals = 6 - -[DONKEY] -peggy_denom = inj1ctczwjzhjjes7vch52anvr9nfhdudq6586kyze -decimals = 18 - -[DONNA] -peggy_denom = inj17k4lmkjl963pcugn389d070rh0n70f5mtrzrvv -decimals = 18 - -[DONOTBUY] -peggy_denom = inj197p39k7ued8e6r5mnekg47hphap8zcku8nws5y -decimals = 6 - -[DOOMER] -peggy_denom = factory/inj1lqv3a2hxggzall4jekg7lpe6lwqsjevnm9ztnf/doomer -decimals = 6 - -[DOPE] -peggy_denom = factory/inj1tphwcsachh92dh5ljcdwexdwgk2lvxansym77k/DOPE -decimals = 0 - -[DORA] -peggy_denom = ibc/BC3AD52E42C6E1D13D2BDCEB497CF5AB9FEE24D804F5563B9E7DCFB825246947 -decimals = 18 - -[DOT] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1spzwwtr2luljr300ng2gu52zg7wn7j44m92mdf -decimals = 10 - -[DOT-PLANCK] -peggy_denom = ibc/6BF455853FEDB6745553C832A0BCCB70C548347558FB1C4DA395C7AB99B5B2E0 -decimals = 0 - -[DOTRUMP] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/dotrump -decimals = 6 - -[DRACO] -peggy_denom = inj14g9hcmdzlwvafsmrka6gmd22mhz7jd3cm5d8e6 -decimals = 8 - -[DRAGON] -peggy_denom = factory/inj1apk9x267a3qplc6q9a22xsvd2k96g0655xw59m/DRAGON -decimals = 6 - -[DREAM] -peggy_denom = factory/inj1l2kcs4yxsxe0c87qy4ejmvkgegvjf0hkyhqk59/dream -decimals = 6 - -[DRG] -peggy_denom = inj15jg279nugsgqplswynqqfal29tav9va5wzf56t -decimals = 18 - -[DRIVING] -peggy_denom = inj1ghhdy9mejncsvhwxmvnk5hspkd5fchtrmhu3x2 -decimals = 8 - -[DROGO] -peggy_denom = ibc/565FE65B82C091F8BAD1379FA1B4560C036C07913355ED4BD8D156DA63F43712 -decimals = 6 - -[DROGON] -peggy_denom = inj1h86egqfpypg8q3jp9t607t0y8ea6fdpv66gx0j -decimals = 6 - -[DRUGS] -peggy_denom = factory/inj17aqq3208uujtvqmlm5xdve92tcy7ne3as2j7q0/DRUGS -decimals = 9 - -[DTEST] -peggy_denom = factory/inj1zn8qlkjautjt3mvr7xwuvpe6eddqt5w3mak5s7/DTEST -decimals = 6 - -[DTHREE] -peggy_denom = factory/inj12yazr8lq5ptlz2qj9y36v8zwmz90gy9gh35026/DTHREE -decimals = 6 - -[DUBAIcoin] -peggy_denom = inj1gsm06ndeq620sp73lu26nz76rqfpy9qtg7xfdw -decimals = 6 - -[DUBDUB] -peggy_denom = inj1nwm43spkusyva27208recgwya2yu2yja934x0n -decimals = 6 - -[DUCKS] -peggy_denom = factory/inj1mtxwccht2hpfn2498jc8u4k7sgrurxt04jzgcn/DUCKS -decimals = 6 - -[DUDE] -peggy_denom = factory/inj1sn34edy635nv4yhts3khgpy5qxw8uey6wvzq53/DUDE -decimals = 6 - -[DUEL] -peggy_denom = peggy0x943Af2ece93118B973c95c2F698EE9D15002e604 -decimals = 18 - -[DUMB] -peggy_denom = factory/inj122c9quyv6aq5e2kr6gdcazdxy2eq2u2jgycrly/DUMB -decimals = 6 - -[DUMP BEOPLE] -peggy_denom = inj13d8cpsfc9gxxspdatucvngrvs435zddscapyhk -decimals = 18 - -[DUROV] -peggy_denom = inj1y73laasqpykehcf67hh3z7vn899sdmn6vtsg22 -decimals = 18 - -[DWHPPET] -peggy_denom = inj1rreafnwdwc9mu7rm6sm2nwwjd2yw46h26rzz36 -decimals = 18 - -[DWIFLUCK] -peggy_denom = factory/inj1gn54l05v5kqy5zmzk5l6wydzgvhvx2srm7rdkg/DWIFLUCK -decimals = 6 - -[DYDX] -peggy_denom = ibc/7B911D87318EB1D6A472E9F08FE93955371DF3E1DFFE851A58F4919450FFE7AA -decimals = 18 - -[DYDX-USDC-LP] -peggy_denom = ibc/2D3757EEC11284BAB7B00E105540237CDD1DE69D633FBBA68118DE31658C9366 -decimals = 18 - -[DYM] -peggy_denom = ibc/346B01430895DC4273D1FAFF470A9CE1155BF6E9F845E625374D019EC9EE796D -decimals = 18 - -[Dai Stablecoin] -peggy_denom = ibc/265ABC4B9F767AF45CAC6FB76E930548D835EDA3E94BC56B70582A55A73D8C90 -decimals = 18 - -[Dai Stablecoin (Wormhole)] -peggy_denom = ibc/293F6074F0D8FF3D8A686F11BCA3DD459C54695B8F205C8867E4917A630634C2 -decimals = 8 - -[Daisy] -peggy_denom = inj1djnh5pf860722a38lxlxluwaxw6tmycqmzgvhp -decimals = 18 - -[Daojo] -peggy_denom = inj1dpgkaju5xqpa3vuz6qxqp0vljne044xgycw0d7 -decimals = 18 - -[DarkDeath] -peggy_denom = factory/inj133nvqdan8c79fhqfkmc3h59v30v4urgwuuejke/DarkDeath -decimals = 6 - -[Degen] -peggy_denom = factory/inj1j3rm46nj4z8eckv5333897z7esectj64kufs4a/Degen -decimals = 6 - -[DelPiero] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/delpiero -decimals = 6 - -[Dnd] -peggy_denom = inj1acxjvpu68t2nuw6950606gw2k59qt43zfxrcwq -decimals = 18 - -[Dog Wif Token ] -peggy_denom = inj1qhu9yxtp0x9gkn0n89hcw8c0wc8nhuke8zgw0d -decimals = 8 - -[Doge] -peggy_denom = inj1n4hl6mxv749jkqsrhu23z24e2p3s55de98jypt -decimals = 18 - -[Dogelon Mars] -peggy_denom = peggy0x761D38e5ddf6ccf6Cf7c55759d5210750B5D60F3 -decimals = 18 - -[Doggo] -peggy_denom = inj1gasr3mz9wdw2andhuf5254v9haw2j60zlftmha -decimals = 18 - -[Doginbread] -peggy_denom = inj1sx9mflrf6jvnzantd8rlzqh9tahgdyul5hq4pc -decimals = 18 - -[Dojo Staked INJ] -peggy_denom = inj134wfjutywny9qnyux2xgdmm0hfj7mwpl39r3r9 -decimals = 18 - -[Dojo Token] -peggy_denom = inj1zdj9kqnknztl2xclm5ssv25yre09f8908d4923 -decimals = 18 - -[Dojo bot] -peggy_denom = factory/inj1any4rpwq7r850u6feajg5payvhwpunu9cxqevc/DOJO -decimals = 6 - -[Don] -peggy_denom = inj19yv3uvkww6gjda2jn90aayrefjacclsrulr5n2 -decimals = 18 - -[DonatelloShurikenLipsInjection2dust] -peggy_denom = factory/inj1ya7ltz2mkj0z4w25lxueh7emz6qhwe33m4knx8/INJECTIV -decimals = 6 - -[Doodle] -peggy_denom = factory/inj1yjhn49auvxjqe2y3hxl9uwwzsjynl4ms0kq6d4/Doodle -decimals = 6 - -[Dope Token] -peggy_denom = inj1lrewwyn3m2dms6ny7m59x9s5wwcxs5zf5y2w20 -decimals = 8 - -[Dot] -peggy_denom = ibc/B0442E32E21ED4228301A2B1B247D3F3355B73BF288470F9643AAD0CA07DD593 -decimals = 10 - -[Drachme] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/drachme -decimals = 6 - -[Dragon Coin] -peggy_denom = inj1ftfc7f0s7ynkr3n7fnv37qpskfu3mu69ethpkq -decimals = 18 - -[Drugs] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj19vy83ne9tzta2yqynj8yg7dq9ghca6yqn9hyej -decimals = 18 - -[Duel] -peggy_denom = inj1ghackffa8xhf0zehv6n8j3gjzpz532c4h2zkkp -decimals = 18 - -[Dwake] -peggy_denom = factory/inj1a7697s5yg3tsgkfrm0u5hvxm34mu8v0v3trryx/Dwake -decimals = 6 - -[E-SHURIKEN] -peggy_denom = inj1z93hdgsd9pn6eajslmyerask38yugxsaygyyu0 -decimals = 6 - -[EARS] -peggy_denom = inj1g07rttdqwcy43yx9m20z030uex29sxpcwvvjmf -decimals = 8 - -[EASPORTS] -peggy_denom = factory/inj1cus3dx8lxq2h2y9mzraxagaw8kjjcx6ul5feak/EASPORTS -decimals = 6 - -[ECOCH] -peggy_denom = factory/inj1tquax9jy4t7lg2uya4yclhlqlh5a75ykha2ewr/EcoChain -decimals = 6 - -[ECPS] -peggy_denom = inj1vzjfp3swqhhjp56w40j4cmekjpmrkq6d3ua7c8 -decimals = 8 - -[EGGMAN] -peggy_denom = inj1hjym72e40g8yf3dd3lah98acmkc6ms5chdxh6g -decimals = 8 - -[ELE] -peggy_denom = inj1zyg7gvzzsc0q39vhv5je50r2jcfv2ru506pd7w -decimals = 6 - -[ELEM] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1kxwmyuns9z36dd0luggj7wyzetqyfz8cuhdvm2 -decimals = 18 - -[ELM] -peggy_denom = inj1uu3dc475nuhz68j3g4s3cpxzdfczpa3k4dcqz7 -decimals = 18 - -[ELMNT] -peggy_denom = inj17z53rhx0w6szyhuakgnj9y0khprrp2rmdg0djz -decimals = 6 - -[ELON] -peggy_denom = inj10pqutl0av9ltrw9jq8d3wjwjayvz76jhfcfza0 -decimals = 6 - -[ELON-GATED-PENIS] -peggy_denom = inj1v0ahzyf4mup6eunf4hswcs9dq3ffea4nqxdhmq -decimals = 6 - -[ELONXMAS] -peggy_denom = inj1nmrve743hvmxzv7e3p37nyjl2tf8fszcqg44ma -decimals = 8 - -[EMP] -peggy_denom = factory/inj1vc6gdrn5ta9h9danl5g0sl3wjwxqfeq6wj2rtm/EMP -decimals = 6 - -[EMP On Injective] -peggy_denom = inj1qm7x53esf29xpd2l8suuxtxgucrcv8fkd52p7t -decimals = 18 - -[ENA] -peggy_denom = peggy0x57e114B691Db790C35207b2e685D4A43181e6061 -decimals = 18 - -[ENA-USDT LP] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1wzt78jy575ejcps76gpc2m8k2v4x2526aksnk0 -decimals = 18 - -[ENJ] -peggy_denom = peggy0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c -decimals = 18 - -[EPIC] -peggy_denom = inj1ewmqrnxm8a5achem6zqg44w7lut3krls4m5mnu -decimals = 18 - -[EPICEIGHT] -peggy_denom = inj19dd2lqy8vpcl3kc9ftz3y7xna6qyevuhq7zxkz -decimals = 18 - -[EPICEL] -peggy_denom = inj1hz2e3fasvhhuxywx96g5vu8nnuvak5ca4r7jsk -decimals = 18 - -[EPICFIVE] -peggy_denom = inj1cavzx4eswevydc8hawdy362z3a2nucku8c0lp6 -decimals = 18 - -[EPICNINE] -peggy_denom = inj1a6jfnquus2vrfshwvurae9wkefu0k3n8ay6u4r -decimals = 18 - -[EPICONE] -peggy_denom = inj16nenk0jqfcgj8qhfap9n7ldjzke97rw9auxptx -decimals = 18 - -[EPICSEVEN] -peggy_denom = inj19tval5k0qjgqqkuw0v8g5qz9sautru4jr9rz7e -decimals = 18 - -[EPICSIX] -peggy_denom = inj1gyf3358u6juk3xvrrp7vlez9yuk2ek33dhqdau -decimals = 18 - -[EPICTE] -peggy_denom = inj1c6mpj4p2dvxdgqq9l0sasz0uzu4gah7k3g03xf -decimals = 18 - -[EPICTEN] -peggy_denom = inj1e9t4mhc00s4p0rthuyhpy2tz54nuh552sk5v60 -decimals = 18 - -[EPICTREE] -peggy_denom = inj1hjt77g9ujsh52jdm388ggx387w9dk4jwe8w5sq -decimals = 18 - -[EPICTWO] -peggy_denom = inj1z24n2kmsxkz9l75zm7e90f2l0rfgaazh6usw3h -decimals = 18 - -[EPICfour] -peggy_denom = inj14m6t04x80r2f78l26wxz3vragpy892pdmshcat -decimals = 18 - -[ERA] -peggy_denom = peggy0x3e1556B5b65C53Ab7f6956E7272A8ff6C1D0ed7b -decimals = 18 - -[ERC20/0X655ECB57432CC1370F65E5DC2309588B71B473A9] -peggy_denom = ibc/9A7A2B6433CFA1CA5D93AF75D568D614456EA4FEBC39F0BE1BE9ECBD420FB36F -decimals = 0 - -[ERC20/TETHER/USDT] -peggy_denom = ibc/04D85EE726D7D0241AD8E8D1AA98E0AC67094C9E5BEDD038AAF75AD46D37C154 -decimals = 0 - -[ERIC] -peggy_denom = factory/inj1w7cw5tltax6dx7znehul98gel6yutwuvh44j77/eric -decimals = 6 - -[ERIS Amplified SEI] -peggy_denom = ibc/9774771543D917853B9A9D108885C223DFF03ABC7BD39AD2783CA4E1F58CDC6E -decimals = 6 - -[ESCUDOS] -peggy_denom = ibc/D1546953F51A43131EDB1E80447C823FD0B562C928496808801A57F374357CE5 -decimals = 6 - -[ETF] -peggy_denom = inj1cdfcc6x6fn22wl6gs6axgn48rjve2yhjqt8hv2 -decimals = 18 - -[ETH] -peggy_denom = eth -decimals = 18 - -[ETH.1.2.942D87] -peggy_denom = ibc/45CDDFFC2D593006ED982869A47AA09B1A1D46370C127B28F8B964A281EF2757 -decimals = 0 - -[ETHBTCTrend] -peggy_denom = peggy0x6b7f87279982d919Bbf85182DDeAB179B366D8f2 -decimals = 18 - -[ETK] -peggy_denom = inj1hzh43wet6vskk0ltfm27dm9lq2jps2r6e4xvz8 -decimals = 18 - -[EUR] -peggy_denom = eur -decimals = 6 - -[EURO] -peggy_denom = factory/inj1t8wuan5zxp58uwtn6j50kx4tjv25argx6lucwy/EURO -decimals = 6 - -[EVAI] -peggy_denom = peggy0x50f09629d0afDF40398a3F317cc676cA9132055c -decimals = 8 - -[EVI] -peggy_denom = inj1mxcj2f8aqv8uflul4ydr7kqv90kprgsrx0mqup -decimals = 18 - -[EVIINDEX] -peggy_denom = eviindex -decimals = 18 - -[EVITCEJNI] -peggy_denom = factory/inj1n8kcnuzsrg9d7guu8c5n4cxcurqyszthy29yhg/EVITCEJNI -decimals = 6 - -[EVL] -peggy_denom = inj1yhrpy3sr475cfn0g856hzpfrgk5jufvpllfakr -decimals = 18 - -[EVMOS] -peggy_denom = ibc/16618B7F7AC551F48C057A13F4CA5503693FBFF507719A85BC6876B8BD75F821 -decimals = 18 - -[EXOTIC] -peggy_denom = inj1xyf06dyfuldfynqgl9j6yf4vly6fsjr7zny25p -decimals = 8 - -[EXP] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10ktwcqd5n4k6278jegrc0u08fudf8r00vdsjwd -decimals = 8 - -[EYES] -peggy_denom = factory/inj12jtagr03n6fqln4q8mg06lrpaj4scwts49x2cp/eyes -decimals = 6 - -[Eik] -peggy_denom = inj1a0rphvxxgr56354vqz8jhlzuhwyqs8p4zag2kn -decimals = 18 - -[Elemental Token] -peggy_denom = inj1kxwmyuns9z36dd0luggj7wyzetqyfz8cuhdvm2 -decimals = 18 - -[Elite] -peggy_denom = inj1rakgrkwx9hs6ye4mt4pcvnhy5zt28dt02u9ws8 -decimals = 18 - -[Enjineer] -peggy_denom = inj1xsc3wp2m654tk62z7y98egtdvd0mqcs7lp4lj0 -decimals = 18 - -[Ethena] -peggy_denom = inj1c68rz4w9csvny5xmq6f87auuhfut5zukngmptz -decimals = 18 - -[Ethereum (Arbitrum)] -peggy_denom = ibc/56ADC03A83B6E812C0C30864C8B69CBE502487AD5664D0164F73A1C832D2C7FC -decimals = 18 - -[Ethereum (ERC20)] -peggy_denom = ibc/56CD30F5F8344FDDC41733A058F9021581E97DC668BFAC631DC77A414C05451B -decimals = 18 - -[Explore Exchange] -peggy_denom = inj10ktwcqd5n4k6278jegrc0u08fudf8r00vdsjwd -decimals = 8 - -[ExtraVirginOliveInu] -peggy_denom = factory/inj14n8f39qdg6t68s5z00t4vczvkcvzlgm6ea5vk5/extravirginoliveinu -decimals = 6 - -[FABLE] -peggy_denom = ibc/5FE5E50EA0DF6D68C29EDFB7992EB81CD40B6780C33834A8AB3712FB148E1313 -decimals = 6 - -[FACTORY/CHIHUAHUA1X4Q2VKRZ4DFGD9HCW0P5M2F2NUV2UQMT9XR8K2/ACHIHUAHUAWIFHAT] -peggy_denom = ibc/F8AB96FFB2BF8F69AA42481D43B24E9121FF7403A4E95673D9135128CA769577 -decimals = 0 - -[FACTORY/INJ106ETGAY573E32KSYSC9DPDRYNXHK7KKMACLHFC/STARK] -peggy_denom = ibc/81B0CF8BB06F95247E3680844D0CB3889ACB2662B3AE2458C2370985BF4BD00B -decimals = 0 - -[FACTORY/INJ14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88F9ENEUK/INJ1STHRN5EP8LS5VZZ8F9GP89KHHMEDAHHDKQA8Z3] -peggy_denom = ibc/884A8507A762D0F1DE350C4E640ECA6EDD6F25617F39AD57BC6F5B7EC8DF7181 -decimals = 0 - -[FACTORY/INJ14LF8XM6FCVLGGPA7GUXZJQWJMTR24GNVF56HVZ/AUTISM] -peggy_denom = ibc/540553046CDCE9B477D2D82389E81AF99C76BDEAAC0BF9B9F64B5CAC7941DD63 -decimals = 0 - -[FACTORY/MIGALOO1436KXS0W2ES6XLQPP9RD35E3D0CJNW4SV8J3A7483SGKS29JQWGSHQDKY4/AMPWHALE] -peggy_denom = ibc/14ECCBBE1FF850AF4116A9F468DE3359AA97C1260BC734BA7956D593AF035FF7 -decimals = 0 - -[FACTORY/MIGALOO1MF6PTKSSDDFMXVHDX0ECH0K03KTP6KF9YK59RENAU2GVHT3NQ2GQDHTS4U/BONEWHALE] -peggy_denom = ibc/F14FD3D36F182611A987DFDFF77D8F31EEDCB4FBAD720E237989C60AD29A9061 -decimals = 0 - -[FACTORY/NEUTRON133XAKKRFKSQ39WXY575UNVE2NYEHG5NPX75NPH/GOP] -peggy_denom = ibc/B6DEF77F4106DE5F5E1D5C7AA857392A8B5CE766733BA23589AD4760AF953819 -decimals = 0 - -[FACTORY/NEUTRON133XAKKRFKSQ39WXY575UNVE2NYEHG5NPX75NPH/MOO] -peggy_denom = ibc/572EB1D6454B3BF6474A30B06D56597D1DEE758569CC695FF628D4EA235EFD5D -decimals = 0 - -[FACTORY/NEUTRON154GG0WTM2V4H9UR8XG32EP64E8EF0G5TWLSGVFEAJQWGHDRYVYQSQHGK8E/APOLLO] -peggy_denom = ibc/1B47F9D980CBB32A87022E1381C15005DE942A71CB61C1B498DBC2A18F43A8FE -decimals = 0 - -[FACTORY/OSMO1Q77CW0MMLLUXU0WR29FCDD0TDNH78GZHKVHE4N6ULAL9QVRTU43QTD0NH8/DJJTGA] -peggy_denom = ibc/50DC83F6AD408BC81CE04004C86BF457F9ED9BF70839F8E6BA6A3903228948D7 -decimals = 0 - -[FACTORY/OSMO1Q77CW0MMLLUXU0WR29FCDD0TDNH78GZHKVHE4N6ULAL9QVRTU43QTD0NH8/TEST] -peggy_denom = ibc/40C510742D7CE7F5EB2EF894AA9AD5056183D80628A73A04B48708A660FD088D -decimals = 0 - -[FACTORY/SEI189ADGUAWUGK3E55ZN63Z8R9LL29XRJWCA636RA7V7GXUZN98SXYQWZT47L/4TLQQCLAOKKFNFUPJA9O39YBKUWHR1F8N29TZ3HEBFP2] -peggy_denom = ibc/482A0E8D65CB9E840F728AC9EEC03DDE8C8117DD643635F2C52F6E9C33686834 -decimals = 0 - -[FACTORY/SEI189ADGUAWUGK3E55ZN63Z8R9LL29XRJWCA636RA7V7GXUZN98SXYQWZT47L/9FELVUHFO6YWL34ZALGPBCPZDK9MD1TAZMYCGH45QSHH] -peggy_denom = ibc/8A8AA255C5C0C1C58A35D74FE992620E10292BDCE1D2C7F8C7C439D642C42040 -decimals = 0 - -[FACTORY/SEI189ADGUAWUGK3E55ZN63Z8R9LL29XRJWCA636RA7V7GXUZN98SXYQWZT47L/9HJDBDAXQQQHF5HHAPUYKELNCBA38XQ5UONXN3TPQU5R] -peggy_denom = ibc/8CF037A7BCBFB7FC181078FF19C4C03DF4989CBC2CFF0520FB60B416A33C0C85 -decimals = 0 - -[FACTORY/SEI189ADGUAWUGK3E55ZN63Z8R9LL29XRJWCA636RA7V7GXUZN98SXYQWZT47L/HQ4TUDZHRBNXW3TFA5N6M52NVMVCC19XGGBYDIJKCD6H] -peggy_denom = ibc/03B0B4643FCA066FC383F781AAC5A238D1E433BFFEF210E93C8BF6F1D9DF29E4 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/2WB6UEMFC9WLC2EYYVHA6QNWHKBWZUXDOOXSG6XXVVOS] -peggy_denom = ibc/8D59D4FCFE77CA4F11F9FD9E9ACA645197E9BFFE48B05ADA172D750D3C5F47E7 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/3WFTBTQKJWFXFWHTSG6FJALTBPNALHN3BHFSMDVEVDXT] -peggy_denom = ibc/6C1F980F3D295DA21EC3AFD71008CC7674BA580EBEDBD76FD5E25E481067AF09 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/576UQXYQRJFDQZDRVBNXIHN467IPUC12A5YN8V8H99F8] -peggy_denom = ibc/0F18C33D7C2C28E24A67BEFA2689A1552DCE9856E1BB3A16259403D5398EB23C -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/5BWQPR48LUBD55SZM5I62ZK7TFKDDCKHBT48YY6MNBDP] -peggy_denom = ibc/70F4C3604BE1891AB6164B504BA33D83C5E0D9A7868DABD75C59D1B33959360D -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/5CKYTGHOHU1VFNPD6IXDKYTM3CKTTZ1MECDYLUGGF4ZT] -peggy_denom = ibc/3C2EEA34EAF26698EE47A58FA2142369CE42E105E8452E1C074A32D34431484B -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/5EMIVVPG3IAY8OU5PD8YZJ16ECNFQAZRQKRVP1RQ2MN2] -peggy_denom = ibc/E5C73EB0B0C185B59ED34665650485E1E3A2AA4F82485DB3EB191B3F6A3044A1 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/5HY9NZUXOQJPOIZ1KEMUDKASJBNYWA5TO7PTASX1KTMZ] -peggy_denom = ibc/1A0B843A3A95489066351F828E201BC9702126DD25061E5996FEA057ECF93AF3 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/5MEVZ64BBVSZQACQCTQ2ZFWTMNQ5UKWNMADDSJDRUQTY] -peggy_denom = ibc/B7936BF07D9035C66C83B81B61672A05F30DE4196BE0A016A6CD4EDD20CB8F24 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/6WMMXNYNI8TYB32CCAGPOPRR6NHLKX4J9KPGV5MOBNUT] -peggy_denom = ibc/13055E6ECA7C05091DD7B93DF81F0BB12479779DE3B9410CF445CC34B8361664 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/7KQX8BVDA8W4EDPED8OHQHSFJSGF79XDCXCD8ELUWS7G] -peggy_denom = ibc/0A44483A7AFF7C096B2A4FB00A12E912BE717CD7703CF7F33ED99DB35230D404 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/8IUAC6DSELVI2JDUTWJXLYTSZT8R19ITXEBZSNRELLNI] -peggy_denom = ibc/6D434846D1535247426AA917BBEC53BE1A881D49A010BF7EDACBFCD84DE4A5B8 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/8SYGCZLRJC3J7QPN2BNBX6PIGCARHYX8RBHVANNFVHCA] -peggy_denom = ibc/0D84DE10252BC9D46B3454929129F76F13B03380E83ADBD9DD94A8D07E5555E2 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/9WEDXCI5EPVG2XK6VTIKKXHIJYUQ79U6UZPWBNIF1CET] -peggy_denom = ibc/C2C022DC63E598614F39C575BC5EF4EC54E5D081365D9BE090D75F743364E54D -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/ASSYBMK2D3FMNTRGTD539XWDGWMJ7UV8VVXQTWTJYQBW] -peggy_denom = ibc/7A39488A287BF7DBC4A33DDA2BE3DDAC0F281FBCFF23934B7194893C136AAA99 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/BJQMPMWFUPHE7QR3V8RLCZH8AOH2QFI2S1Z8649B62TY] -peggy_denom = ibc/4F72D2F3EAFB61D8615566B3C80AEF2778BB14B648929607568C79CD90416188 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/BSWYXU2ZJFGASAU3ALDWNZMCDWENWHWPFWALPYNA7WZV] -peggy_denom = ibc/CB8E08B5C734BDA8344DDCFE5C9CCCC91521763BA1BC9F61CADE6E8F0B556E3D -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/CROEB5ZF21EA42EZHNPCV1JJ1JANLY4A1SQL6Y4USHGR] -peggy_denom = ibc/8E7F71072C97C5D8D19978C7E38AE90C0FBCCE551AF95FEB000EA9EBBFD6396B -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/CV4GKZRFUHNZTCJUDGDODRUP397E9NM7HMAQFWSCPVJJ] -peggy_denom = ibc/44EC7BD858EC12CE9C2F882119F522937264B50DD26DE73270CA219242E9C1B2 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/EFEMLPMU8BCWMBZNY5DFBYCZRDVDVDO7NLZT7GZG4A8Y] -peggy_denom = ibc/366870891D57A5076D117307C42F597A000EB757793A9AB58019660B896292AA -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/EH6T4HGFF8MVEKYH5CSA7ZYOQ5HGKNNLF8QQ9YHSSU7J] -peggy_denom = ibc/AA2394D484EADAC0B982A8979B18109FAEDD5D47E36D8153955369FEC16D027B -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/EJ6P2SMCEENKLSZR2PWSCK9L1LUQWGKSMD3IVDYMFAJQ] -peggy_denom = ibc/6912080A54CAB152D10CED28050E6DBE87B49E4F77D6BA6D54A05DBF4C3CCA88 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/F6QDZRJBTFMK1BNMRWS1D9UPQQKHE25QQR2BMPETULJB] -peggy_denom = ibc/473D128E740A340B0663BD09CFC9799A0254564448B62CAA557D65DB23D0FCCD -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/FRBRCKDFFWHKIHIMZRWBPQRYM65UJKYDSF4J3QKSASJ9] -peggy_denom = ibc/E2C56B24C032D2C54CF12EAD43432D65FDF22C64E819F97AAD3B141829EF3E60 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/G4B8ZJQ7EUQVTWGBOKQIHYYA5PZHQ1BLIYAEK3YW9EN8] -peggy_denom = ibc/683CD81C466CF3678E78B5E822FA07F0C23107B1F8FA06E80EAD32D569C4CF84 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/G7V2W3U8NKGTTBZYWTUTCVUXM1RVTAHYGPO3IDMPBDG] -peggy_denom = ibc/43FE0A8A934D3A708B52F5B31B3591BF3B53EBBCEB4B3C4310A5A3D9D02D3D1D -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/G8PQ2HELLT8UBJOCFKKD3PNMTGZO6HNTSEEUJUGN9DAJ] -peggy_denom = ibc/65CF217605B92B4CD37AC22955C5C59DE39CFD2A7A2E667861CCAFC810C4F5BD -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/GAUUVZGKJWPMWE3MGGCS6UG2LOXTRF7PUTXAJA22THCF] -peggy_denom = ibc/9FE18329D872CDD1D794443A672FFE16F2983677451781DC98C4403AD461159E -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/GGH9UFN1SEDGRHZEKMYRKT5568VBBXZK2YVWNSD6PBXT] -peggy_denom = ibc/389982EAC0D365D49FABD2DA625B9EB2C5D4369EFC09FA05D7D324055A9B2FE7 -decimals = 0 - -[FACTORY/WORMHOLE14EJQJYQ8UM4P3XFQJ74YLD5WAQLJF88FZ25YXNMA0CNGSPXE3LES00FPJX/HJK1XMDRNUBRRPKKNZYUI7SWWDMJXZASYSZQGYNCQOU3] -peggy_denom = ibc/126D6F24002F098804B70C133E0BBCEE40EE2ED489373C648805FEA4FF206333 -decimals = 0 - -[FACTORY01] -peggy_denom = inj1q8h6pxj73kv36ehv8dx9d6jd6qnphmr0xydx2h -decimals = 6 - -[FACTORY:KUJIRA13RYRY75S34Y4SL5ST7G5MHK0HE8RC2NN7AH6SL:SPERM] -peggy_denom = ibc/EBC2F00888A965121201A6150B7C55E0941E49438BC7F02385A632D6C4E68E2A -decimals = 0 - -[FACTORY:KUJIRA1E224C8RY0NUUN5EXPXM00HMSSL8QNSJKD02FT94P3M2A33XKED2QYPGYS3:URCPT] -peggy_denom = ibc/49994E6147933B46B83CCEDE3528C6B3E5960ECE5A85548C2A519CF3B812E8B9 -decimals = 0 - -[FACTORY:KUJIRA1JELMU9TDMR6HQG0D6QW4G6C9MWREXRZURYH50FWCAVCPTHP5M0UQ20853H:URCPT] -peggy_denom = ibc/E970A80269F0867B0E9C914004AB991E6AF94F3EF2D4E1DFC92E140ACB6BBD5C -decimals = 0 - -[FACTORY:KUJIRA1YNTEGC5V3TVL0XFRDE0RUPNT9KFNX0SY9LYTGE9G2MRYJKNUDK6QG4ZYW9:URCPT] -peggy_denom = ibc/D4D75686C76511349744536403E94B31AC010EB6EA1B579C01B2D64B6888E068 -decimals = 0 - -[FAITH] -peggy_denom = inj1efjaf4yuz5ehncz0atjxvrmal7eeschauma26q -decimals = 6 - -[FAMILY] -peggy_denom = factory/inj175n4kj6va8yejh7w35t5v5f5gfm6ecyasgjnn9/FAMILY -decimals = 6 - -[FAP] -peggy_denom = inj1qekjz857yggl23469xjr9rynp6padw54f0hhkh -decimals = 18 - -[FAST] -peggy_denom = inj1m8wfsukqzxt6uduymrpkjawvpap3earl4p2xlt -decimals = 8 - -[FCS] -peggy_denom = inj1h7smsl8nzjfeszy03cqnjn2yvf629kf3m02fay -decimals = 18 - -[FCUK] -peggy_denom = inj1j3gg49wg40epnsd644s84wrzkcy98k2v50cwvv -decimals = 18 - -[FDA] -peggy_denom = inj174zq6m77dqvx4e56uqvjq25t7qq5ukmt2zhysh -decimals = 18 - -[FDAPERP] -peggy_denom = inj1zl5uwywdkgchs54ycp8f84cedz29fhwz0pzvjd -decimals = 18 - -[FDC] -peggy_denom = inj13pff0vsvfhnhcs4fkd609cr2f749rw22hznhar -decimals = 6 - -[FDC3] -peggy_denom = inj1zmpydq6mlwfj246jk9sc5r7898jgcks9rj87mg -decimals = 6 - -[FDC40624A] -peggy_denom = inj1est038f5zfdj7qp3ktmqtygfkef5wj6fdl8nx2 -decimals = 6 - -[FDC40624B] -peggy_denom = inj1gukq56dd9erzmssdxp305g8wjf7ujz0kc46m6e -decimals = 6 - -[FDC40624C] -peggy_denom = inj1623nrzk2us368e6ecl7dfe4tdncqykx76ycvuy -decimals = 6 - -[FDC40625A] -peggy_denom = inj1t3zvq2n5rl2r902zmsynaysse2vj0t4c6zfjlv -decimals = 6 - -[FDC40625B] -peggy_denom = inj1m4n783st9cvc06emtgl29laypf2980j5j9l3rs -decimals = 6 - -[FDC40625C] -peggy_denom = inj1uac3sy4jv0uu6drk2pcfqmtdue7w0q0urpwgzl -decimals = 6 - -[FDC40625D] -peggy_denom = inj1shu8jhwh9g6yxx6gk6hcg89hmqccdwflljcpes -decimals = 6 - -[FDCP40626A] -peggy_denom = inj18ls4r6pw85gk39pyh4pjhln7j6504v0dtk7kxz -decimals = 6 - -[FET] -peggy_denom = ibc/C1D3666F27EA64209584F18BC79648E0C1783BB6EEC04A8060E4A8E9881C841B -decimals = 18 - -[FIDEN] -peggy_denom = factory/inj1xm8azp82qt9cytzg5guhx8cjrjmrunv97dfdd3/FIDEN -decimals = 6 - -[FIFA] -peggy_denom = inj1ma5f4cpyryqukl57k22qr9dyxmmc99pw50fn72 -decimals = 18 - -[FIG] -peggy_denom = inj1whqqv3hrqt58laptw90mdhxx7upx40q6s7d0qx -decimals = 18 - -[FINNEON] -peggy_denom = inj1t3lzvya9p4zslzetpzcmc968a9c5jjkdycwlzf -decimals = 6 - -[FISHY] -peggy_denom = inj178xpd5dxe7dq82dtxpcufelshxxlqmzn0h0r26 -decimals = 8 - -[FIVE] -peggy_denom = inj1psx54edreejwmjsdgsad332c60y5lnzqkkudve -decimals = 8 - -[FIX] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1xpvxfn66l8aslcc8qgr7jc5rp638ampdnsfqda -decimals = 18 - -[FLOKI] -peggy_denom = factory/inj1g7nvetpqjcugdnjxd27v37m7adm4wf7wphgzq2/FLOKI -decimals = 6 - -[FLUFFY] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hfk4z29f5cv73gxpdydedhkq0yspqc5ymeze9z -decimals = 18 - -[FLUID] -peggy_denom = inj1avj9gwyj5hzxdkpegcr47kmp8k39nrnejn69mh -decimals = 8 - -[FMLY] -peggy_denom = factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/FAMILY -decimals = 6 - -[FOJO] -peggy_denom = inj1n37zp9g8fzdwxca8m7wrp2e7qvrjzfemaxgp8e -decimals = 18 - -[FOMO] -peggy_denom = factory/inj1k7ygz5ufgavnutv0hkgsz7u9g4c3yj6lq6p0jn/FOMO -decimals = 6 - -[FOMOFox] -peggy_denom = factory/inj1k2kcx5n03pe0z9rfzvs9lt764jja9xpvwrxk7c/FOMOFox -decimals = 6 - -[FOO] -peggy_denom = inj1s290d2uew9k2s00zlx9xnxq84dauysc85yhds0 -decimals = 18 - -[FOOL] -peggy_denom = factory/inj16g5w38hqehsmye9yavag0g0tw7u8pjuzep0sys/FOOL -decimals = 6 - -[FOORK] -peggy_denom = inj1zu6qda7u90c8w28xkru4v56ak05xpfjtwps0vw -decimals = 18 - -[FORZA] -peggy_denom = inj1p0tsq248wyk2vd980csndrtep3rz50ezfvhfrw -decimals = 18 - -[FOTHER] -peggy_denom = factory/inj1cus3dx8lxq2h2y9mzraxagaw8kjjcx6ul5feak/FOTHER -decimals = 6 - -[FOUR] -peggy_denom = inj1clfx8jgq3636249d0tr3yu26hsp3yqct6lpvcy -decimals = 18 - -[FOX] -peggy_denom = inj167naeycu49dhs8wduj5ddtq6zex9cd6hpn4k4w -decimals = 18 - -[FOXY] -peggy_denom = inj15acrj6ew42jvgl5qz53q7c9g82vf3n98l84s4t -decimals = 6 - -[FPL] -peggy_denom = inj13yutezdwjkz8xucrt6d564yqr3ava76r6q9vle -decimals = 8 - -[FRANKLYN] -peggy_denom = inj1gadcw96ha8fpd6ulgzulsuqj9vjz8dv0s57at8 -decimals = 18 - -[FRAX] -peggy_denom = ibc/3E5504815B2D69DCC32B1FF54CDAC28D7DA2C445BD29C496A83732DC1D52DB90 -decimals = 18 - -[FREE] -peggy_denom = inj1rp9tjztx0m5ekcxavq9w27875szf8sm7p0hwpg -decimals = 18 - -[FRINJE] -peggy_denom = factory/inj1mcx5h5wfeqk334u8wx6jv3g520zwy3lh22dyp7/FRINJE -decimals = 10 - -[FRNZ] -peggy_denom = ibc/CDD7374B312BEF9723AAEBDE622206490E112CE2B5F49275683CCCD86C7D4BCE -decimals = 6 - -[FROG] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj104y5dpcdtga79tczv6rg3rsekx4hasw2k83h5s -decimals = 18 - -[FROGCOIN] -peggy_denom = inj1dljz0rexnhhxa2vnnfxerg7y0am46kdzltwwgp -decimals = 6 - -[FROGGY] -peggy_denom = factory/inj1l8pq22awax6r8hamk2v3cgd77w90qtkmynvp8q/FROGGY -decimals = 6 - -[FROGY] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/FROGiY -decimals = 6 - -[FTC] -peggy_denom = inj1v092fpcqz0k5pf6zwz7z8v40q2yxa0elfzt2hk -decimals = 18 - -[FTM] -peggy_denom = peggy0x4E15361FD6b4BB609Fa63C81A2be19d873717870 -decimals = 18 - -[FTUNA] -peggy_denom = inj1yqm9apy8kat8fav2mmm7geshyytdld0al67ks4 -decimals = 6 - -[FUCK] -peggy_denom = factory/inj1fdqalekg73v06gvzch0zu74ealp35g3y00shmz/FUCK -decimals = 6 - -[FUD] -peggy_denom = factory/inj1j2r6vr20cnhqz3tumd2lh9w8k8guamze3pdf7t/FUD -decimals = 6 - -[FUINJ] -peggy_denom = factory/inj1wlwsd6w84ydmsqs5swthm5hw22qm8fxrth5ggx/FUINJ -decimals = 6 - -[FUSION] -peggy_denom = inj1hpczn65hygw4aaaytxe6gvdu8h3245gjz0q2fx -decimals = 8 - -[FUSIONX] -peggy_denom = inj1a5pxsj6f8jggncw4s2cg39p25swgzdjyljw5tf -decimals = 8 - -[FUZION] -peggy_denom = inj1m8hyuja8wmfm0a2l04dgp5ntwkmetkkemw2jcs -decimals = 8 - -[FUZN] -peggy_denom = ibc/FE87E1E1BB401EC35CD02A57FE5DEF872FA309C018172C4E7DA07F194EAC6F19 -decimals = 6 - -[FaDaCai] -peggy_denom = inj13n695lr0ps5kpahv7rkd8njh2phw475rta8kw4 -decimals = 6 - -[Fetch.ai] -peggy_denom = peggy0xaea46a60368a7bd060eec7df8cba43b7ef41ad85 -decimals = 18 - -[FixedFloat] -peggy_denom = inj1xpvxfn66l8aslcc8qgr7jc5rp638ampdnsfqda -decimals = 18 - -[Fluffy] -peggy_denom = inj1hfk4z29f5cv73gxpdydedhkq0yspqc5ymeze9z -decimals = 18 - -[FollowNinjaBoy_inj] -peggy_denom = factory/inj1sn6u0472ds6v8x2x482gqqc36g0lz28uhq660v/FollowNinjaBoy_inj -decimals = 6 - -[Frogy the frog] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/FROGIYY -decimals = 6 - -[FuckSol] -peggy_denom = factory/inj1na5d9jqhkyckh8gc5uqht75a74jq85gvpycp44/FUCKSOL -decimals = 6 - -[FusionX] -peggy_denom = inj1fghekhpfn2rfds6c466p38ttdm2a70gnzymc86 -decimals = 8 - -[GAINJA] -peggy_denom = inj1jnwu7u6h00lzanpl8d5qerr77zcj2vd65r2j7e -decimals = 18 - -[GALA] -peggy_denom = factory/inj1xtwk60ey0g03s69gfsure0kx8hwwuk24zl0g6l/GALA -decimals = 6 - -[GALAXY] -peggy_denom = factory/inj10zdjt8ylfln5xr3a2ruf9nwn6d5q2d2r3v6mh8/galaxy -decimals = 6 - -[GAMBIT-T] -peggy_denom = factory/inj1a6auh4knescu6nr4mfafs906434lw24dd0c3zn/GAMBIT-T -decimals = 6 - -[GAMBLE] -peggy_denom = factory/inj10g0paz4mx7mq2z8l9vpxz022xshc04g5kw7s43/gamble -decimals = 6 - -[GAMER] -peggy_denom = inj1gqp2upvl8ftj28amxt90dut76prdpefx3qvpck -decimals = 18 - -[GASH] -peggy_denom = ibc/98C86DE314A044503F35E8C395B745B65E990E12A77A357CBA74F474F860A845 -decimals = 6 - -[GASTON] -peggy_denom = factory/inj1sskt2d66eqsan9flcqa9vlt7nvn9hh2dtvp8ua/GASTON -decimals = 6 - -[GATE] -peggy_denom = peggy0x9d7630aDF7ab0b0CB00Af747Db76864df0EC82E4 -decimals = 18 - -[GBP] -peggy_denom = gbp -decimals = 6 - -[GCM] -peggy_denom = inj1p87lprkgg4c465scz5z49a37hf835nzkcpyeej -decimals = 18 - -[GDUCK] -peggy_denom = factory/inj1fc0ngp72an2x8zxf268xe5avfan5z4g0saz6ns/gduck -decimals = 6 - -[GEISHA] -peggy_denom = factory/inj1c5uqenss9plc5rjw5kt5dksnlvnvw5tvygxpd8/GEISHA -decimals = 6 - -[GEIST] -peggy_denom = inj1x2lg9j9pwmgnnwmhvq2g6pm6emcx7w02pnjnm6 -decimals = 8 - -[GEM] -peggy_denom = factory/inj1s5php9vmd03w6nszlnsny43cmuhw3y6u3vt7qc/gem -decimals = 6 - -[GEM DAO] -peggy_denom = ibc/8AE86084C0D921352F711EF42CCA7BA4C8238C244FE4CC3E4E995D9782FB0E2B -decimals = 6 - -[GEMININJ] -peggy_denom = factory/inj14vrd79l2pxvqctawz39qewfh72x62pfjecxsmv/GEMININJ -decimals = 6 - -[GEMOY] -peggy_denom = inj1j5l0xc2lwqpj2duvllmegxse0dqlx5kgyjehlv -decimals = 18 - -[GENJI] -peggy_denom = factory/inj1p2rmxvzhctu4z22sxcsry874sekvjdhl7k8rys/GENJI -decimals = 6 - -[GENZONE] -peggy_denom = inj1zh9924tws4ctzx5zmz06j09nyjs8fw6wupkadr -decimals = 8 - -[GEO] -peggy_denom = ibc/8E4953E506CF135A3ACDF6D6556ED1DB4F6A749F3910D2B4A77E2E851C4B2638 -decimals = 6 - -[GF] -peggy_denom = peggy0xAaEf88cEa01475125522e117BFe45cF32044E238 -decimals = 18 - -[GGBOND] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/ggbond -decimals = 6 - -[GGG] -peggy_denom = inj1yrw42rwc56lq7a3rjnfa5nvse9veennne8srdj -decimals = 8 - -[GGS] -peggy_denom = factory/inj1282wzngdg46gjuttvhxumkx65fnqx0aqmyl0lu/GGS -decimals = 6 - -[GIANT] -peggy_denom = factory/inj1r4usuj62gywdwhq9uvx6tg0ywqpppcjqu7z4js/giant -decimals = 6 - -[GIFT] -peggy_denom = factory/inj1exks7fvnh9lxzgqejtlvca8t7mw47rks0s0mwa/GIFT -decimals = 6 - -[GIGA] -peggy_denom = ibc/36C811A2253AA64B58A9B66C537B89348FE5792A8808AAA343082CBFCAA72278 -decimals = 5 - -[GINGER] -peggy_denom = factory/inj172ccd0gddgz203e4pf86ype7zjx573tn8g0df9/GINGER -decimals = 6 - -[GINKO] -peggy_denom = factory/inj1krswly444gyuunnmchg4uz2ekqvu02k7903skh/ginko -decimals = 6 - -[GIRL] -peggy_denom = inj1zkmp7m0u0hll3k5w5598g4qs75t7j8qqvmjspz -decimals = 18 - -[GLODIOTOR] -peggy_denom = factory/inj168pjvcxwdr28uv295fchjtkk6pc5cd0lg3h450/glodiotor -decimals = 6 - -[GLTO] -peggy_denom = peggy0xd73175f9eb15eee81745d367ae59309Ca2ceb5e2 -decimals = 6 - -[GME] -peggy_denom = ibc/CAA5AB050F6C3DFE878212A37A4A6D3BEA6670F5B9786FFF7EF2D34213025272 -decimals = 8 - -[GMKY] -peggy_denom = factory/inj1s09n0td75x8p20uyt9dw29uz8j46kejchl4nrv/GMKY -decimals = 6 - -[GOD] -peggy_denom = inj1whzt6ct4v3zf28a6h08lpf90pglzw7fdh0d384 -decimals = 18 - -[GODDARD] -peggy_denom = ibc/3E89FBB226585CF08EB2E3C2625D1D2B0156CCC2233CAB56165125CACCBE731A -decimals = 6 - -[GODRD] -peggy_denom = ibc/CABB197E23D81F1D1A4CE56A304488C35830F81AC9647F817313AE657221420D -decimals = 6 - -[GODS] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-GODS -decimals = 6 - -[GODSTRIKE] -peggy_denom = inj1deejw5k4sxnlxgxnzsy5k2vgc9fzu257ajjcy7 -decimals = 8 - -[GODZILLA] -peggy_denom = factory/inj1e05u43qmn9jt502784c009u4elz5l86678esrk/GODZILLA -decimals = 6 - -[GOJO] -peggy_denom = factory/inj13qhzj4fr4u7t7gqj5pqy0yts07eu6k6dkjdcsx/gojo -decimals = 6 - -[GOKU] -peggy_denom = factory/inj1pgkwcngxel97d9qjvg75upe8y3lvvzncq5tdr0/goku -decimals = 6 - -[GOLD] -peggy_denom = gold -decimals = 18 - -[GOLDIE] -peggy_denom = factory/inj130ayayz6ls8qpmu699axhlg7ygy8u6thjjk9nc/GOLDIE -decimals = 6 - -[GOLDMAN] -peggy_denom = inj140ypzhrxyt7n3fhrgk866hnha29u5l2pv733d0 -decimals = 8 - -[GOOSE] -peggy_denom = factory/inj12tl0d8a739t8pun23mzldhan26ndqllyt6d67p/goose -decimals = 6 - -[GORILLA] -peggy_denom = inj1cef5deszfl232ws7nxjgma4deaydd7e7aj6hyf -decimals = 8 - -[GPT] -peggy_denom = factory/inj168gnj4lavp3y5w40rg5qhf50tupwhaj3yvhgr0/GPT -decimals = 6 - -[GRAC] -peggy_denom = ibc/59AA66AA80190D98D3A6C5114AB8249DE16B7EC848552091C7DCCFE33E0C575C -decimals = 6 - -[GRAVITY0X30F271C9E86D2B7D00A6376CD96A1CFBD5F0B9B3] -peggy_denom = ibc/A7040C29BCCBF0062A5E9A61C39743410E77EAEE75D4FF9809E722B8EF0C9D07 -decimals = 0 - -[GRAVITY0XA0B73E1FF0B80914AB6FE0444E65848C4C34450B] -peggy_denom = ibc/FF8F4C5D1664F946E88654921D6C1E81D5C167B8A58A4E75B559BAA2DBBF0101 -decimals = 0 - -[GRAVITY0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48] -peggy_denom = ibc/461DDE568D76936B030764211887623A38C86C1D9FDE70084976EA338B40ED46 -decimals = 0 - -[GRAVITY0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2] -peggy_denom = ibc/13485841477D3E4B0C5E589F5EA72BD4EBB7A8F92E736E658A3DA656F232B4EC -decimals = 0 - -[GRAVITY0XDAC17F958D2EE523A2206206994597C13D831EC7] -peggy_denom = ibc/7422C62BA17E804695AE66DE2444F41C83DC2B7B5D26C98792610E0B1B45D139 -decimals = 0 - -[GRAVITY0XE28B3B32B6C345A34FF64674606124DD5ACECA30] -peggy_denom = ibc/57E7FEFD5872F89EB1C792C4B06B51EA565AC644EA2F64B88F8FC40704F8E9C4 -decimals = 0 - -[GREATDANE] -peggy_denom = inj195vgq0yvykunkccdzvys548p90ejuc639ryhkg -decimals = 6 - -[GREEN] -peggy_denom = inj1nlt0jkqfl6f2wlnalyk2wd4g3dq97uj8z0amn0 -decimals = 8 - -[GRENADINE] -peggy_denom = inj1ljquutxnpx3ut24up85e708hjk85hm47skx3xj -decimals = 8 - -[GRINJ] -peggy_denom = factory/inj174r3j8pm93gfcdu0g36dg6g7u0alygppypa45e/GRINJ -decimals = 6 - -[GROK] -peggy_denom = factory/inj1vgrf5mcvvg9p5c6jajqefn840nq74wjzgkt30z/GROK -decimals = 6 - -[GRONI] -peggy_denom = factory/inj12jtagr03n6fqln4q8mg06lrpaj4scwts49x2cp/groni -decimals = 6 - -[GRT] -peggy_denom = peggy0xc944E90C64B2c07662A292be6244BDf05Cda44a7 -decimals = 18 - -[GRUMPY] -peggy_denom = inj16fr4w5q629jdqt0ygknf06yna93ead2pr74gr3 -decimals = 8 - -[GUGU] -peggy_denom = ibc/B1826CEA5AE790AB7FCAE84344F113F6C42E6AA3A357CAFEAC4A05BB7531927D -decimals = 6 - -[GUPPY] -peggy_denom = ibc/F729B93A13133D7390455293338A0CEAAF876D0F180B7C154607989A1617DD45 -decimals = 6 - -[GYEN] -peggy_denom = peggy0xC08512927D12348F6620a698105e1BAac6EcD911 -decimals = 6 - -[GZZ] -peggy_denom = inj1ec70stm6p3e6u2lmpl5vzan4pdm79vwlfgcdzd -decimals = 18 - -[Galaxy] -peggy_denom = inj13n675x36dnettkxkjll82q72zgnvsazn4we7dx -decimals = 6 - -[Gamble Gold] -peggy_denom = inj13a8vmd652mn2e7d8x0w7fdcdt8742j98jxjcx5 -decimals = 18 - -[Game Stop] -peggy_denom = inj1vnj7fynxr5a62maf34vca4fes4k0wrj4le5gae -decimals = 18 - -[Gay] -peggy_denom = inj1pw54fsqmp0ludl6vl5wfe63ddax52z5hlq9jhy -decimals = 18 - -[Geisha] -peggy_denom = factory/inj1krswly444gyuunnmchg4uz2ekqvu02k7903skh/geisha -decimals = 6 - -[Genny] -peggy_denom = inj1dpn7mdrxf49audd5ydk5062z08xqgnl4npzfvv -decimals = 6 - -[GoatInj] -peggy_denom = factory/inj1ua3rm4lsrse2canapg96v8jtg9k9yqzuscu766/GoatInj -decimals = 6 - -[Gorilla] -peggy_denom = factory/inj1wc7a5e50hq9nglgwhc6vs7cnskzedskj2xqv6j/Gorilla -decimals = 6 - -[GreenMarket] -peggy_denom = inj1wjd2u3wq2dwyr7zlp09squh2xrqjlggy0vlftj -decimals = 8 - -[Greenenergy] -peggy_denom = inj1aqu4y55rg43gk09muvrcel3z45nuxczukhmfut -decimals = 18 - -[Grind] -peggy_denom = inj125ry0fhlcha7fpt373kejwf8rq5h3mwewqr0y2 -decimals = 18 - -[Gryphon Staked Injective] -peggy_denom = inj13xlpypcwl5fuc84uhqzzqumnrcfpptyl6w3vrf -decimals = 18 - -[H3NSY] -peggy_denom = inj1c22v69304zlaan50gdygmlgeaw56lcphl22n87 -decimals = 8 - -[HABS] -peggy_denom = factory/inj1ddn2cxjx0w4ndvcrq4k0s0pjyzwhfc5jaj6qqv/habs -decimals = 6 - -[HACHI] -peggy_denom = factory/inj13ze65lwstqrz4qy6vvxx3lglnkkuan436aw45e/HACHI -decimals = 9 - -[HAIR] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/hair -decimals = 6 - -[HAKI] -peggy_denom = factory/inj1lm95gdmz7qatcgw933t97rg58wnzz3dpxv7ldk/YAKUSA -decimals = 6 - -[HAL] -peggy_denom = factory/inj197jczxq905z5ddeemfmhsc077vs4y7xal3wyrm/HALLAS -decimals = 18 - -[HALVING] -peggy_denom = factory/inj1k0mzgwd4ujuu9w95xzs8p7qu8udy3atqj3sau7/HALVING -decimals = 6 - -[HAMU] -peggy_denom = factory/inj1t6py7esw8z6jc8c204ag3zjevqlpfx203hqyt2/HAMU -decimals = 6 - -[HAMURAI] -peggy_denom = factory/inj1xqf6rk5p5w3zh22xaxck9g2rnksfhpg33gm9xt/hamu -decimals = 6 - -[HANZO] -peggy_denom = factory/inj1xz4h76wctruu6l0hezq3dhtfkxzv56ztg4l29t/HANZO -decimals = 6 - -[HARD] -peggy_denom = ibc/D6C28E07F7343360AC41E15DDD44D79701DDCA2E0C2C41279739C8D4AE5264BC -decimals = 6 - -[HATEQUNT] -peggy_denom = factory/inj1sfaqn28d0nw4q8f2cm9gvhs69ecv5x8jjtk7ul/HATEQUNT -decimals = 6 - -[HATTORI] -peggy_denom = factory/inj1h7zackjlzcld6my000mtg3uzuqdv0ly4c9g88p/HATTORI -decimals = 6 - -[HAVA] -peggy_denom = factory/inj1h0ypsdtjfcjynqu3m75z2zwwz5mmrj8rtk2g52/uhava -decimals = 6 - -[HAVA COIN] -peggy_denom = inj1u759lmx8e6g8f6l2p08qvrekjwcq87dff0ks3n -decimals = 18 - -[HDRO] -peggy_denom = factory/inj1etz0laas6h7vemg3qtd67jpr6lh8v7xz7gfzqw/hdro -decimals = 6 - -[HEMULE] -peggy_denom = inj1hqamaawcve5aum0mgupe9z7dh28fy8ghh7qxa7 -decimals = 18 - -[HERB] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/herb -decimals = 6 - -[HERO] -peggy_denom = inj18mqec04e948rdz07epr9w3j20wje9rpg6flufs -decimals = 6 - -[HEST] -peggy_denom = factory/inj15vj7e40j5cqvxmy8u7h9ud3ustrgeqa98uey96/HEST -decimals = 6 - -[HEXA] -peggy_denom = inj13e4hazjnsnapqvd06ngrq5zapw8gegarudzehd -decimals = 8 - -[HGM] -peggy_denom = inj14y8j4je4gs57fgwakakreevx6ultyy7c7rcmk2 -decimals = 18 - -[HINJ] -peggy_denom = factory/inj1srha80fxkk40gzymgrgt3m3ya0u8ms3z022f70/hinj -decimals = 6 - -[HOUND] -peggy_denom = factory/inj1nccncwqx5q22lf4uh83dhe89e3f0sh8kljf055/HOUND -decimals = 6 - -[HOUSE] -peggy_denom = factory/inj1rvstpdy3ml3c879yzz8evk37ralz7w4dtydsqp/HOUSE -decimals = 6 - -[HRBE] -peggy_denom = factory/inj1lucykkh3kv3wf6amckf205rg5jl8rprdcq8v83/HRBE -decimals = 6 - -[HST] -peggy_denom = inj1xhvj4u6xtx3p9kr4pqzl3fdu2vedh3e2y8a79z -decimals = 18 - -[HT] -peggy_denom = peggy0x6f259637dcD74C767781E37Bc6133cd6A68aa161 -decimals = 18 - -[HUAHUA] -peggy_denom = ibc/E7807A46C0B7B44B350DA58F51F278881B863EC4DCA94635DAB39E52C30766CB -decimals = 6 - -[HULK] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/HULK -decimals = 6 - -[HUMP] -peggy_denom = inj1v29k9gaw7gnds42mrzqdygdgjh28vx38memy0q -decimals = 18 - -[HUOBINJ] -peggy_denom = factory/inj1srha80fxkk40gzymgrgt3m3ya0u8ms3z022f70/huobinj -decimals = 6 - -[HUSKY] -peggy_denom = factory/inj1467q6d05yz02c2rp5qau95te3p74rqllda4ql7/husky -decimals = 6 - -[HYDRO] -peggy_denom = inj10r75ap4ztrpwnan8er49dvv4lkjxhgvqflg0f5 -decimals = 8 - -[HYDRO WRAPPED INJ] -peggy_denom = inj1r9qgault3k4jyp60d9fkzy62dt09zwg89dn4p6 -decimals = 18 - -[HappyGilmore] -peggy_denom = inj1h5d90rl5hmkp8mtuyc0zpjt00hakldm6wtseew -decimals = 18 - -[HarryPotterObamaSonicInu] -peggy_denom = inj1y64pkwy0m0jjd825c7amftqe2hmq2wn5ra8ap4 -decimals = 18 - -[Hava Coin] -peggy_denom = inj1fnlfy6r22slr72ryt4wl6uwpg3dd7emrqaq7ne -decimals = 18 - -[Hellooooo] -peggy_denom = inj1xj7c6r65e8asrrpgm889m8pr7x3ze7va2ypql4 -decimals = 18 - -[Hero Wars] -peggy_denom = inj1f63rgzp2quzxrgfchqhs6sltzf0sksxtl7wtzn -decimals = 8 - -[HeyDay] -peggy_denom = inj1rel4r07gl38pc5xqe2q36ytfczgcrry0c4wuwf -decimals = 6 - -[HnH] -peggy_denom = inj1e8r3gxvzu34ufgfwzr6gzv6plq55lg0p95qx5w -decimals = 8 - -[Hydro] -peggy_denom = factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/hdro -decimals = 6 - -[Hydro Protocol] -peggy_denom = inj1vkptqdl42csvr5tsh0gwczdxdenqm7xxg9se0z -decimals = 8 - -[Hydro Wrapped INJ] -peggy_denom = inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc -decimals = 18 - -[Hydrogen oxide] -peggy_denom = factory/inj1utlxkwfxhmfc826gu07w20mvguysavz72edy4n/h2o -decimals = 6 - -[IBC] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/ibc -decimals = 6 - -[IBCX] -peggy_denom = ibc/491C92BEEAFE513BABA355275C7AE3AC47AA7FD57285AC1D910CE874D2DC7CA0 -decimals = 6 - -[IBONK] -peggy_denom = factory/inj14cm9e5n5pjgzvwe5t8zshts2t9x2lxk3zp0js2/ibonk -decimals = 6 - -[IDFI] -peggy_denom = inj13ac29xfk969qmydhq2rwekja6mxgwtdgpeq3dj -decimals = 8 - -[IDOGE] -peggy_denom = inj18nuas38jw742ezmk942j4l935lenc6nxd4ypga -decimals = 18 - -[IHOP] -peggy_denom = factory/inj17rpa60xtn3rgzuzltuwgpw2lu3ayulkdjgwaza/IHOP -decimals = 6 - -[IJ] -peggy_denom = factory/inj1hcymy0z58zxpm3esch2u5mps04a3vq2fup4j29/InjBull -decimals = 6 - -[IJT] -peggy_denom = inj1tn8vjk2kdsr97nt5w3fhsslk0t8pnue7mf96wd -decimals = 18 - -[IKINGS] -peggy_denom = factory/inj1mt876zny9j6xae25h7hl7zuqf7gkx8q63k0426/IKINGS -decimals = 6 - -[INCEL] -peggy_denom = factory/inj17g4j3geupy762u0wrewqwprvtzar7k5et2zqsh/incel -decimals = 6 - -[INDUSTRY] -peggy_denom = inj1kkc0l4xnz2eedrtp0pxr4l45cfuyw7tywd5682 -decimals = 18 - -[INJ] -peggy_denom = inj -decimals = 18 - -[INJ LOUNGE] -peggy_denom = inj1dntqalk5gj6g5u74838lmrym3hslc9v3v9etqg -decimals = 8 - -[INJ TEST] -peggy_denom = factory/inj1gxf874xgdcza4rtkashrc8w2s3ulaxa3c7lmeh/inj-tt -decimals = 6 - -[INJ TO THE MOON] -peggy_denom = factory/inj1e05u43qmn9jt502784c009u4elz5l86678esrk/MOON -decimals = 6 - -[INJ-BOOST-LP] -peggy_denom = ibc/27D758827282C5C096FDC53B899A6C7713974DC0F6F7A0C2FBC00967F91E6F8B -decimals = 6 - -[INJ-USDC-LP] -peggy_denom = ibc/C2CC6309A535AD8A45E921D88EB98B7707C3228598AB1785E3EB7231967F283D -decimals = 18 - -[INJ-USDT LP] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1e6f0ma2j0j9duwyn7vv0jdn6qaztxgmqpr56hu -decimals = 18 - -[INJ-YIELD-LP] -peggy_denom = ibc/33807304CF00FB4481E14AF77B3B656759F9E8B17C478CB55A8C9F5CF7783FEB -decimals = 6 - -[INJA] -peggy_denom = factory/inj13y9m57hw2rnvdmsym8na45z9kvexy82c4n6apc/INJA -decimals = 6 - -[INJBOT] -peggy_denom = inj1hhxn5p7gkcql23dpmkx6agy308xnklzsg5v5cw -decimals = 8 - -[INJCEL] -peggy_denom = factory/inj1597pysn2u56ggcckykt2zzjuqkeezy5yxfujtj/INJcel -decimals = 6 - -[INJDAO] -peggy_denom = inj177wz9fpk6xjfrr7ex06sv5ukh0csgfak7x5uaq -decimals = 8 - -[INJDINO] -peggy_denom = inj13fnjq02hwxejdm584v9qhrh66mt4l3j8l3yh6f -decimals = 6 - -[INJDOGE] -peggy_denom = factory/inj13zcns55uycr8lcw8q4gvdqp0jejgknk9whv8uh/INJDOGE -decimals = 6 - -[INJDOGOS] -peggy_denom = inj1kl2zc5djmp8nmwsetua8gnmvug2c3dfa3uvy2e -decimals = 18 - -[INJECT] -peggy_denom = factory/inj1j7zt6g03vpmg9p7g7qngvylfxqeuds73utsjnk/INJECT -decimals = 6 - -[INJECTIV] -peggy_denom = factory/inj1x04zxeyrjc7ke5nt7ht3v3gkevxdk7rr0fx8qp/INJECTIV -decimals = 6 - -[INJECTIVED] -peggy_denom = inj16ccz3z2usevpyzrarggtqf5fgh8stjsql0rtew -decimals = 6 - -[INJER] -peggy_denom = factory/inj1sjmplasxl9zgj6yh45j3ndskgdhcfcss9djkdn/INJER -decimals = 6 - -[INJERA] -peggy_denom = inj1032h3lllszfld2utcunjvk8knx2c8eedgl7r4y -decimals = 6 - -[INJESUS] -peggy_denom = inj12d7qq0lp656jkrr2d3ez55cr330f3we9c75ml6 -decimals = 8 - -[INJEVO] -peggy_denom = inj1f6fxh20pdyuj98c8l2svlky8k7z7hkdztttrd2 -decimals = 8 - -[INJEX] -peggy_denom = factory/inj1zhevrrwywg3az9ulxd9u233eyy4m2mmr6vegsg/INJEX -decimals = 6 - -[INJFIRE] -peggy_denom = inj1544nmruy3xc3qqp84cenuzqrdnlyfkprwdfcz5 -decimals = 8 - -[INJGEN] -peggy_denom = factory/inj1ruwdh4vc29t75eryvxs7vwzt7trtrz885teuwa/injgen -decimals = 6 - -[INJGOAT] -peggy_denom = inj1p9nluxkvuu5y9y7radpfnwemrdty74l74q2ycp -decimals = 6 - -[INJHACKTIVE] -peggy_denom = factory/inj14cpnzf4mxyxel7le3wp2zxyvwr8g0wukch9865/INJHACKTIVE -decimals = 6 - -[INJHAT] -peggy_denom = factory/inj1uc7awz4e4kg9dakz5t8w6zzz7r62992ezsr279/injhat -decimals = 6 - -[INJI] -peggy_denom = factory/inj1nql734ta2npe48l26kcexk8ysg4s9fnacv9tvv/INJI -decimals = 6 - -[INJINU] -peggy_denom = factory/inj1vjppa6h9lf75pt0v6qnxtej4xcl0qevnxzcrvm/INJINU -decimals = 6 - -[INJM] -peggy_denom = inj1czlt30femafl68uawedg63834vcg5z92u4ld8k -decimals = 18 - -[INJMEME] -peggy_denom = inj179luuhr3ajhsyp92tw73w8d7c60jxzjcy22356 -decimals = 8 - -[INJMETA] -peggy_denom = inj1m7264u6ytz43uh5hpup7cg78h6a8xus9dnugeh -decimals = 8 - -[INJMOON] -peggy_denom = inj12val9c8g0ztttfy8c5amey0adyn0su7x7f27gc -decimals = 8 - -[INJMOOON] -peggy_denom = inj1eu0zlrku7yculmcjep0n3xu3ehvms9pz96ug9e -decimals = 6 - -[INJNET] -peggy_denom = inj13ew774de6d3qhfm3msmhs9j57le9krrw2ezh3a -decimals = 8 - -[INJOFGOD] -peggy_denom = inj1snaeff6pryn48fnrt6df04wysuq0rk7sg8ulje -decimals = 8 - -[INJOY] -peggy_denom = factory/inj10zvhydqqpejrfgvl2m9swcm0dkf9kc3zsj7yr4/injoy -decimals = 6 - -[INJP] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/injp -decimals = 6 - -[INJPEPE] -peggy_denom = factory/inj15hxjpac22adg3s6znhpc27zx6ufhf6z7fseue2/injpepe -decimals = 6 - -[INJPEPE2] -peggy_denom = factory/inj1jsduylsevrmddn64hdxutcel023eavw44n63z2/INJPEPE2 -decimals = 6 - -[INJPORTAL] -peggy_denom = inj1etyzmggnjdtjazuj3eqqlngvvgu2tqt6vummfh -decimals = 8 - -[INJPREMIUM] -peggy_denom = inj18uw5etyyjqudtaap029u9g5qpxf85kqvtkyhq9 -decimals = 8 - -[INJPRO] -peggy_denom = inj15x75x44futqdpx7mp86qc6dcuaqcyvfh0gpxp5 -decimals = 8 - -[INJS] -peggy_denom = factory/inj1yftyfrc720nhrzdep5j70rr8dm9na2thnrl7ut/injs -decimals = 6 - -[INJSANTA] -peggy_denom = inj1qpepg77mysjjqlm9znnmmkynreq9cs2rypwf35 -decimals = 8 - -[INJSHIB] -peggy_denom = inj1tty2w6sacjpc0ma6mefns27qtudmmp780rxlch -decimals = 8 - -[INJSWAP] -peggy_denom = inj1pn5u0rs8qprush2e6re775kyf7jdzk7hrm3gpj -decimals = 8 - -[INJTOOLS] -peggy_denom = factory/inj105a0fdpnq0wt5zygrhc0th5rlamd982r6ua75r/injtools -decimals = 6 - -[INJUNI] -peggy_denom = inj1dz8acarv345mk5uarfef99ecxuhne3vxux606r -decimals = 8 - -[INJUSSY] -peggy_denom = factory/inj1s9smy53dtqq087usaf02sz984uddndwuj2f0wt/injussy -decimals = 6 - -[INJUST] -peggy_denom = factory/inj123hzxzuee7knt0lf7w9grkxtumg4kxszklmps6/INJUST -decimals = 6 - -[INJUSTICE] -peggy_denom = factory/inj1vrktrmvtxkzd52kk45ptc5m53zncm56d278qza/INJUSTICE -decimals = 6 - -[INJVERSE] -peggy_denom = inj1leqzwmk6xkczjrum5nefcysqt8k6qnmq5v043y -decimals = 8 - -[INJX] -peggy_denom = factory/inj104h3hchl7ws8lp78zpvrunvsjdwfjc02r5d0fp/injx -decimals = 6 - -[INJXMAS] -peggy_denom = inj1uneeqwr3anam9qknjln6973lewv9k0cjmhj7rj -decimals = 8 - -[INJXSOL] -peggy_denom = inj174p4dt45793vylmt8575cltj6wadtc62nakczq -decimals = 8 - -[INJXXX] -peggy_denom = inj1pykhnt3l4ekxe6ra5gjc03pgdglavsv34vdjmx -decimals = 8 - -[INJbsc] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1xcgprh58szttp0vqtztvcfy34tkpupr563ua40 -decimals = 18 - -[INJet] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1v8gg4wzfauwf9l7895t0eyrrkwe65vh5n7dqmw -decimals = 18 - -[INJjP] -peggy_denom = inj1xwr2fzkakfpx5afthuudhs90594kr2ka9wwldl -decimals = 8 - -[INJusd] -peggy_denom = inj1qchqhwkzzws94rpfe22qr2v5cv529t93xgrdfv -decimals = 18 - -[INUJ] -peggy_denom = inj13jhpsn63j6p693ffnfag3efadm9ds5dqqpuml9 -decimals = 18 - -[INUWIFHAT] -peggy_denom = inj1xtrzl67q5rkdrgcauljpwzwpt7pgs3jm32zcaz -decimals = 18 - -[IOA] -peggy_denom = inj1xwkqem29z2faqhjgr6jnpl7n62f2wy4nme8v77 -decimals = 18 - -[ION] -peggy_denom = ibc/1B2D7E4261A7E2130E8E3506058E3081D3154998413F0DB2F82B04035B3FE676 -decimals = 6 - -[IOTX] -peggy_denom = peggy0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69 -decimals = 18 - -[IPDAI] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/ipdai -decimals = 6 - -[IPEPE] -peggy_denom = factory/inj1td7t8spd4k6uev6uunu40qvrrcwhr756d5qw59/ipepe -decimals = 6 - -[IPEPER] -peggy_denom = factory/inj1fdqalekg73v06gvzch0zu74ealp35g3y00shmz/IPEPER -decimals = 6 - -[IPandaAI] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/ipandaai -decimals = 6 - -[ISILLY] -peggy_denom = factory/inj1499ez5npathr0zkphz2yq6npdfc6xvg3d4zynj/iSILLY -decimals = 6 - -[ITO] -peggy_denom = ibc/E7140919F6B70594F89401B574DC198D206D923964184A9F79B39074301EB04F -decimals = 6 - -[ITSC] -peggy_denom = inj1r63ncppq6shw6z6pfrlflvxm6ysjm6ucx7ddnh -decimals = 18 - -[IUSD] -peggy_denom = factory/inj1l7u9lv8dfqkjnc7antm5lk7lmskh8zldh9yg05/iUSD -decimals = 18 - -[IWH] -peggy_denom = factory/inj1sgnkljwsekkf36p4lgd7v9qa0p66rj64xa756j/IWH -decimals = 6 - -[IXB] -peggy_denom = inj1p0tvxzfhht5ychd6vj8rqhm0u7g5zxl6prrzpk -decimals = 8 - -[Imol] -peggy_denom = factory/inj1g055dn0qmm9qyrnuaryffqe3hu8qja0qnslx87/Mol7 -decimals = 0 - -[InjBots] -peggy_denom = factory/inj1qfdgzwy6ppn4nq5s234smhhp9rt8z2yvjl2v49/InjBots -decimals = 18 - -[InjCroc] -peggy_denom = inj1dcl8q3yul8hu3htwxp8jf5ar5nqem62twjl0ga -decimals = 18 - -[InjDoge] -peggy_denom = inj1hlg3pr7mtvzcczq0se4xygscmm2c99rrndh4gv -decimals = 8 - -[InjDragon] -peggy_denom = inj1gkf6h3jwsxayy068uuf6ey55h29vjd5x45pg9g -decimals = 18 - -[InjPepe] -peggy_denom = inj19xa3v0nwvdghpj4v2lzf64n70yx7wlqvaxcejn -decimals = 8 - -[InjXsolana] -peggy_denom = inj1u82h7d8l47q3kzwvkm2mgzrskk5au4lrkntkjn -decimals = 8 - -[Inject] -peggy_denom = inj1tn88veylex4f4tu7clpkyneahpmf7nqqmvquuw -decimals = 18 - -[InjectDOGE] -peggy_denom = factory/inj1nf43yjjx7sjc3eulffgfyxqhcraywwgrnqmqjc/INJDOGE -decimals = 6 - -[Injection] -peggy_denom = inj1e8lv55d2nkjss7jtuht9m46cmjd83e39rppzkv -decimals = 6 - -[Injection ] -peggy_denom = inj15sls6g6crwhax7uw704fewmktg6d64h8p46dqy -decimals = 18 - -[Injective] -peggy_denom = inj1v8gg4wzfauwf9l7895t0eyrrkwe65vh5n7dqmw -decimals = 18 - -[Injective City] -peggy_denom = factory/inj1xzl47mx87r7sx8e6cz9d3q257xtp9fue3dx073/CITY -decimals = 6 - -[Injective Genesis] -peggy_denom = inj19gm2tefdz5lpx49veyqe3dhtqqkwmtyswv60ux -decimals = 8 - -[Injective Inu] -peggy_denom = inj1pv567vvmkv2udn6llcnmnww78erjln35ut05kc -decimals = 8 - -[Injective Memes] -peggy_denom = inj1zq5mry9y76s5w7rd6eaf8kx3ak3mlssqkpzerp -decimals = 8 - -[Injective Moon] -peggy_denom = inj1tu45dzd54ugqc9fdwmce8vcpeyels45rllx4tt -decimals = 8 - -[Injective Panda] -peggy_denom = factory/inj183lz632dna57ayuf6unqph5d0v2u655h2jzzyy/bamboo -decimals = 6 - -[Injective Protocol] -peggy_denom = peggy0x7C7aB80590708cD1B7cf15fE602301FE52BB1d18 -decimals = 18 - -[Injective Snowy] -peggy_denom = inj17hsx7q99utdthm9l6c6nvm2j8a92dr489car5x -decimals = 8 - -[Injective-X] -peggy_denom = inj1uk9ac7qsjxqruva3tavqsu6mfvldu2zdws4cg2 -decimals = 8 - -[InjectivePEPE] -peggy_denom = inj18y9v9w55v6dsp6nuk6gnjcvegf7ndtmqh9p9z4 -decimals = 18 - -[InjectiveSwap] -peggy_denom = inj1t0dfz5gqfrq6exqn0sgyz4pen4lxchfka3udn4 -decimals = 6 - -[InjectiveToMoon] -peggy_denom = inj1jwms7tyq6fcr0gfzdu8q5qh906a8f44wws9pyn -decimals = 8 - -[Injera] -peggy_denom = inj1fqn5wr483v6kvd3cs6sxdcmq4arcsjla5e5gkh -decimals = 18 - -[Injera Gem] -peggy_denom = peggy0x7872f1B5A8b66BF3c94146D4C95dEbB6c0997c7B -decimals = 18 - -[Internet Explorer] -peggy_denom = factory/inj1zhevrrwywg3az9ulxd9u233eyy4m2mmr6vegsg/ninjb -decimals = 6 - -[Inu] -peggy_denom = factory/inj1z0my390aysyk276lazp4h6c8c49ndnm8splv7n/Inu -decimals = 6 - -[Inv] -peggy_denom = inj1ajzrh9zffh0j4ktjczcjgp87v0vf59nhyvye9v -decimals = 18 - -[Inzor] -peggy_denom = factory/inj1j7ap5xxp42urr4shkt0zvm0jtfahlrn5muy99a/Inzor -decimals = 6 - -[JAKE] -peggy_denom = factory/inj1t0vyy5c3cnrw9f0mpjz9xk7fp22ezjjmrza7xn/JAKE -decimals = 6 - -[JAPAN] -peggy_denom = factory/inj13vtsydqxwya3mpmnqa20lhjg4uhg8pp42wvl7t/japan -decimals = 18 - -[JCLUB] -peggy_denom = factory/inj12lhhu0hpszdq5wmt630wcspdxyewz3x2m04khh/JCLUB -decimals = 6 - -[JEDI] -peggy_denom = inj1ejfu0rrx4ypfehpms8qzlwvyqs3p6c0tk2y7w7 -decimals = 18 - -[JEET] -peggy_denom = inj1sjff8grguxkzp2wft4xnvsmrksera5l5hhr2nt -decimals = 18 - -[JEETERS] -peggy_denom = factory/inj1jxj9u5y02w4veajmke39jnzmymy5538n420l9z/jeeters -decimals = 6 - -[JEFF] -peggy_denom = factory/inj10twe630w3tpqvxmeyl5ye99vfv4rmy92jd9was/JEFF -decimals = 6 - -[JEJU] -peggy_denom = factory/inj1ymsgskf2467d6q7hwkms9uqsq3h35ng7mj6qs2/jeju -decimals = 6 - -[JELLY] -peggy_denom = factory/inj13ez8llxz7smjgflrgqegwnj258tfs978c0ccz8/JELLY -decimals = 6 - -[JESUS] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/JESUS -decimals = 6 - -[JESUSINJ] -peggy_denom = inj13tnc70qhxuhc2efyvadc35rgq8uxeztl4ajvkf -decimals = 8 - -[JIMMY] -peggy_denom = ibc/BE0CC03465ABE696C3AE57F6FE166721DF79405DFC4F4E3DC09B50FACABB8888 -decimals = 6 - -[JINJA] -peggy_denom = factory/inj1kr66vwdpxmcgqgw30t6duhtmfdpcvlkljgn5f7/JINJA -decimals = 6 - -[JINJAO] -peggy_denom = factory/inj105ujajd95znwjvcy3hwcz80pgy8tc6v77spur0/JINJAO -decimals = 6 - -[JINX] -peggy_denom = factory/inj1rmf0pe6dns2kaasjt82j5lps3t8ke9dzyh3nqt/JINX -decimals = 6 - -[JIT] -peggy_denom = factory/inj1d3nq64h56hvjvdqatk9e4p26z5y4g4l6uf2a7w/JIT -decimals = 18 - -[JITSU] -peggy_denom = inj1gjujeawsmwel2d5p78pxmvytert726sejn8ff3 -decimals = 6 - -[JITZ] -peggy_denom = inj1cuxse2aaggs6dqgq7ek8nkxzsnyxljpy9sylyf -decimals = 6 - -[JNI] -peggy_denom = factory/inj140ddmtvnfytfy4htnqk06um3dmq5l79rl3wlgy/jni -decimals = 6 - -[JOHNXINA] -peggy_denom = inj1xxqe7t8gp5pexe0qtlh67x0peqs2psctn59h24 -decimals = 6 - -[JOKER] -peggy_denom = inj1q4amkjwefyh60nhtvtzhsmpz3mukc0fmpt6vd0 -decimals = 8 - -[JPE] -peggy_denom = inj1s8e7sn0f0sgtcj9jnpqnaut3tlh7z720dsxnn7 -decimals = 18 - -[JPY] -peggy_denom = jpy -decimals = 6 - -[JSON] -peggy_denom = factory/inj1nz984w2xnpwrtzsj7mt8rsc57vyhpwa360fq2r/json -decimals = 6 - -[JSR] -peggy_denom = inj1hdc2qk2epr5fehdjkquz3s4pa0u4alyrd7ews9 -decimals = 18 - -[JTEST] -peggy_denom = inj1vvekjsupcth0g2w0tkp6347xxzk5cpx87hwqdm -decimals = 18 - -[JUDO] -peggy_denom = inj16ukv8g2jcmml7gykxn5ws8ykhxjkugl4zhft5h -decimals = 18 - -[JUKI] -peggy_denom = inj1nj2d93q2ktlxrju2uwyevmwcatwcumuejrplxz -decimals = 18 - -[JUMONG] -peggy_denom = inj1w9vzzh7y5y90j69j774trp6z0qfh8r4q4yc3yc -decimals = 6 - -[JUNO] -peggy_denom = ibc/D50E26996253EBAA8C684B9CD653FE2F7665D7BDDCA3D48D5E1378CF6334F211 -decimals = 6 - -[JUP] -peggy_denom = jup -decimals = 6 - -[JUSSY] -peggy_denom = inj1qydw0aj2gwv27zkrp7xulrg43kx88rv27ymw6m -decimals = 18 - -[JUTSU] -peggy_denom = inj1a7h4n3kd0nkn2hl7n22sgf4c5dj3uyvcue2gla -decimals = 6 - -[Jack] -peggy_denom = inj1qryxtqra9ym7j04r6f7v6v7tke20z6swtxdrxx -decimals = 8 - -[Jay] -peggy_denom = inj1qt007zcu57qd4nq9u7g5ffgeyyqkx2h4qfzmn4 -decimals = 18 - -[Jenner] -peggy_denom = inj1yjecs8uklzruxphv447l7urdnlguwynm5f45z7 -decimals = 18 - -[Joe] -peggy_denom = inj14jgu6cs42decuqdfwfz2j462n8lrwhs2d5qdsy -decimals = 18 - -[Joe Boden] -peggy_denom = factory/inj1wnrxrkj59t6jeg3jxzhkc0efr2y24y6knvsnmp/boden -decimals = 6 - -[KADO] -peggy_denom = inj1608auvvlrz9gf3hxkpkjf90vwwgfyxfxth83g6 -decimals = 8 - -[KAGE] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1l49685vnk88zfw2egf6v65se7trw2497wsqk65 -decimals = 18 - -[KAGECoin] -peggy_denom = factory/inj1jqu8w2qqlc79aewc74r5ts7hl85ksjk4ud7jm8/KAGE -decimals = 6 - -[KAI] -peggy_denom = factory/inj1kdvaxn5373fm4g8xxqhq08jefjhmefqjn475dc/KAI -decimals = 6 - -[KAKAPO] -peggy_denom = factory/inj14ykszmwjjsu9s6aakqc02nh3t32h9m7rnz7qd4/KAKAPO -decimals = 6 - -[KANGAL] -peggy_denom = inj1aq9f75yaq9rwewh38r0ffdf4eqt4mlfktef0q2 -decimals = 18 - -[KARATE] -peggy_denom = factory/inj1898t0vtmul3tcn3t0v8qe3pat47ca937jkpezv/karate -decimals = 6 - -[KARMA] -peggy_denom = factory/inj1d4ld9w7mf8wjyv5y7fnhpate07fguv3s3tmngm/karma -decimals = 6 - -[KASA] -peggy_denom = factory/inj183lz632dna57ayuf6unqph5d0v2u655h2jzzyy/kasa -decimals = 6 - -[KAT] -peggy_denom = factory/inj1ms8lr6y6qf2nsffshfmusr8amth5y5wnrjrzur/KAT -decimals = 6 - -[KATANA] -peggy_denom = factory/inj1vwn4x08hlactxj3y3kuqddafs2hhqzapruwt87/katana -decimals = 6 - -[KATI] -peggy_denom = factory/inj1gueqq3xdek4q5uyh8jp5xnm0ah33elanvgc524/KATI -decimals = 6 - -[KATO] -peggy_denom = factory/inj18dsv2pywequv9c7t5s4kaayg9440hwhht6kkvx/KATO -decimals = 6 - -[KAVA] -peggy_denom = ibc/57AA1A70A4BC9769C525EBF6386F7A21536E04A79D62E1981EFCEF9428EBB205 -decimals = 6 - -[KAVAverified] -peggy_denom = inj1t307cfqzqkm4jwqdtcwmvdrfvrz232sffatgva -decimals = 18 - -[KAZE BOT] -peggy_denom = factory/inj1q42vrh9rhdnr20eq9ju9lymsxaqxcjpuqgd2cg/KBT -decimals = 6 - -[KET] -peggy_denom = factory/inj1y3tkh4dph28gf2fprxy98sg7w5s7e6ymnrvwgv/KET -decimals = 6 - -[KETCHUP] -peggy_denom = factory/inj16g5w38hqehsmye9yavag0g0tw7u8pjuzep0sys/KETCHUP -decimals = 6 - -[KGM] -peggy_denom = factory/inj1a9dsv5whfhqptkycx4l9uly9x684lwmwuv7l3n/KGM -decimals = 6 - -[KIBA] -peggy_denom = factory/inj1k2kcx5n03pe0z9rfzvs9lt764jja9xpvwrxk7c/KIBA -decimals = 6 - -[KIDZ] -peggy_denom = factory/inj1f502ktya5h69hxs9acvf3j3d6ygepgxxh2w40u/kidz -decimals = 6 - -[KIKI] -peggy_denom = factory/inj1yc9tdwkff6fdhseshk2qe4737hysf3dv0jkq35/kiki -decimals = 6 - -[KIMJ] -peggy_denom = factory/inj137z9mjeja534w789fnl4y7afphn6qq7qvwhd8y/KIMJ -decimals = 6 - -[KINGELON] -peggy_denom = inj195vkuzpy64f6r7mra4m5aqgtj4ldnk2qs0zx8n -decimals = 8 - -[KINGFUSION] -peggy_denom = inj1mnzwm6fvkruendv8r63vzlw72yv7fvtngkkzs9 -decimals = 8 - -[KINGINJ] -peggy_denom = inj1a3ec88sxlnu3ntdjk79skr58uetrvxcm4puhth -decimals = 8 - -[KINGS] -peggy_denom = factory/inj1pqxpkmczds78hz8cacyvrht65ey58e5yg99zh7/kings -decimals = 6 - -[KINJ] -peggy_denom = factory/inj12jtagr03n6fqln4q8mg06lrpaj4scwts49x2cp/kinj -decimals = 6 - -[KINJA] -peggy_denom = factory/inj1h33jkaqqalcy3wf8um6ewk4hxmfwf8uern470k/Kinja -decimals = 6 - -[KIRA] -peggy_denom = factory/inj1xy3kvlr4q4wdd6lrelsrw2fk2ged0any44hhwq/KIRA -decimals = 6 - -[KIRAINU] -peggy_denom = factory/inj1weyajq6ksmzzhfpum9texpsgm9u20fc0kdqpgy/KIRAINU -decimals = 6 - -[KISH] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/KISH -decimals = 18 - -[KISH6] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/KISH6 -decimals = 6 - -[KISHU] -peggy_denom = factory/inj1putkaddmnnwjw096tfn7rfyl7jq447y74vmqzt/kishu -decimals = 6 - -[KLAUS] -peggy_denom = inj1yjgk5ywd0mhczx3shvreajtg2ag9l3d56us0f8 -decimals = 8 - -[KMT] -peggy_denom = factory/inj1av2965j0asg5qwyccm8ycz3qk0eya4873dkp3u/kermit -decimals = 6 - -[KNIGHT] -peggy_denom = factory/inj1nz984w2xnpwrtzsj7mt8rsc57vyhpwa360fq2r/knight -decimals = 6 - -[KOGA] -peggy_denom = factory/inj1npvrye90c9j7vfv8ldh9apt8t3a9mv9lsv52yd/KOGA -decimals = 6 - -[KOOG] -peggy_denom = inj1dkpmkm7j8t2dh5zqp04xnjlhljmejss3edz3wp -decimals = 18 - -[KPEPE] -peggy_denom = kpepe -decimals = 18 - -[KRINJ] -peggy_denom = factory/inj1vrktrmvtxkzd52kk45ptc5m53zncm56d278qza/KRINJ -decimals = 6 - -[KRIPDRAGON] -peggy_denom = inj12txuqr77qknte82pv5uaz8fpg0rsvssjr2n6jj -decimals = 8 - -[KROPA] -peggy_denom = inj1smlveclt2dakmxx36zla343qyznscaxsyza3gh -decimals = 18 - -[KROPPA] -peggy_denom = inj15x62fd9yy0d8lll00k3h66d3terjn79e29l60p -decimals = 18 - -[KRYSY] -peggy_denom = inj1jxcn5t8tmnw26r6fa27m76cw0a7zrzhyenf4c5 -decimals = 6 - -[KSO] -peggy_denom = factory/inj1waemxur3hdu8gavxrymn6axduxe8ful3rm4qcm/koskesh -decimals = 6 - -[KTN] -peggy_denom = inj18kem7dt3tpjp2mx8khujnuuhevqg4exjcd7dnm -decimals = 18 - -[KU9] -peggy_denom = factory/inj1056f9jwmdxjmc3xf3urpka00gjfsnna7ct3gy3/KU9 -decimals = 6 - -[KUJI] -peggy_denom = ibc/9A115B56E769B92621FFF90567E2D60EFD146E86E867491DB69EEDA9ADC36204 -decimals = 6 - -[KUNAI] -peggy_denom = inj12ntgeddvyzt2vnmy2h8chz080n274df7vvr0ru -decimals = 8 - -[Kage] -peggy_denom = inj1l49685vnk88zfw2egf6v65se7trw2497wsqk65 -decimals = 18 - -[Karma] -peggy_denom = factory/inj1d4ld9w7mf8wjyv5y7fnhpate07fguv3s3tmngm/karmainj -decimals = 6 - -[Katana] -peggy_denom = inj1tj4l2qmvw22nquwqkr34v83llyzu97l65zjqsf -decimals = 6 - -[Kaz] -peggy_denom = inj1vweya4us4npaa5xdf026sel0r4qazdvzx6v0v4 -decimals = 6 - -[King] -peggy_denom = factory/inj156zqdswjfcttc8hrvwd5z3nv5n53l5xg9mqvht/King -decimals = 6 - -[KingFusion] -peggy_denom = inj1ynehe0s2kh9fqp5tka99f8wj2xgsha74h3cmtu -decimals = 8 - -[KiraWifHat] -peggy_denom = factory/inj1kujwsrwlqa7yj9545r9tfmrlqcknlmwm3rqe0q/KiraWifHat -decimals = 6 - -[Kitty] -peggy_denom = inj1pfmvtdxhl2l5e245nsfwwl78sfx090asmxnmsw -decimals = 18 - -[Klaus Project] -peggy_denom = inj1zgurc2nd5awcxmpq7q6zgh9elnxg0z9g5yn4k3 -decimals = 8 - -[Knight] -peggy_denom = inj1tvxfut7uayypz2ywm92dkvhm7pdjcs85khsenj -decimals = 18 - -[Koga] -peggy_denom = inj1npvknmdjsk7s35gmemwalxlq4dd38p68mywgvv -decimals = 18 - -[Kuso] -peggy_denom = factory/inj1weyajq6ksmzzhfpum9texpsgm9u20fc0kdqpgy/Kuso -decimals = 6 - -[LAB] -peggy_denom = ibc/4BFC760786BE40F8C10AA8777D68C6BEFE9C95A881AD29AF1462194018AB7C0C -decimals = 6 - -[LABS] -peggy_denom = factory/inj1eutzkvh4gf5vvmxusdwl2t6gprux67d4acwc0p/labs -decimals = 6 - -[LADS] -peggy_denom = ibc/5631EB07DC39253B07E35FC9EA7CFB652F63A459A6B2140300EB4C253F1E06A2 -decimals = 6 - -[LALA] -peggy_denom = inj156wqs2alkgmspj8shjje56ajgneqtjfk20w9n6 -decimals = 18 - -[LAMA] -peggy_denom = factory/inj18lh8zx4hx0pyksyu74srktv4vgxskkkafknggl/LAMA -decimals = 6 - -[LAMBO] -peggy_denom = peggy0x3d2b66BC4f9D6388BD2d97B95b565BE1686aEfB3 -decimals = 18 - -[LAMBOPEPE] -peggy_denom = factory/inj1rge0wzk9hn8qgwz77m9zcznahrp5s322fa6lhu/LAMBO -decimals = 6 - -[LAVA] -peggy_denom = inj1jrykfhmfcy4eh8t3yw6ru3ypef39s3dsu46th7 -decimals = 18 - -[LBFS] -peggy_denom = inj18ssfe746a42me2j02casptrs0y2z5yak06cy4w -decimals = 8 - -[LDO] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1me6t602jlndzxgv2d7ekcnkjuqdp7vfh4txpyy -decimals = 8 - -[LEGE] -peggy_denom = inj122gwdl0xl6908uhdgql2ftrezsy2ru2gme8mhc -decimals = 18 - -[LENARD] -peggy_denom = factory/inj1p2rmxvzhctu4z22sxcsry874sekvjdhl7k8rys/LENARD -decimals = 6 - -[LEO] -peggy_denom = factory/inj1f0gj22j0vep9jt48tnt2mg97c8ysgyxllhvp68/LEO -decimals = 9 - -[LESS] -peggy_denom = inj105ke2sw329yl64m4273js3vxfxvq2kdqtz0s63 -decimals = 18 - -[LEVERKUSEN] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/LEVERKUSEN -decimals = 6 - -[LFR] -peggy_denom = inj176pze4mvaw2kv72sam0fwt3vn08axlj08e46ac -decimals = 18 - -[LFROG] -peggy_denom = inj1vhw7xadr0366hjnvet8tnpgt898vkm47faycar -decimals = 18 - -[LFrog] -peggy_denom = factory/inj1wu2kfkmrvfr34keemcmjh9zups72r5skygltrg/LFrog -decimals = 11 - -[LIBE] -peggy_denom = inj1y7cqd6x50ezv8xrgqx0lnqf4p747nyqq533ma3 -decimals = 18 - -[LIGMA] -peggy_denom = inj17mhem35tyszwpyfh6s0sr4l5p7wkj0knja9ck3 -decimals = 6 - -[LINK] -peggy_denom = peggy0x514910771AF9Ca656af840dff83E8264EcF986CA -decimals = 18 - -[LINK-WEI] -peggy_denom = ibc/6CF7D2AB610CDB3D3343E69CBDF2CFDA6053F542F4D2D9C18FAD0202AC8F9FA1 -decimals = 0 - -[LIO] -peggy_denom = factory/inj1p2nh5tx9j27eqwxvr6aj9sasttff6200tpq24k/LIO -decimals = 6 - -[LIOR] -peggy_denom = factory/inj1cjus5ragdkvpmt627fw7wkj2ydsra9s0vap4zx/LIOR -decimals = 6 - -[LMAO] -peggy_denom = inj12d6gr7ky3nfwmsw8y455aryxc95f37dj9hnpuq -decimals = 18 - -[LMEOW] -peggy_denom = inj1wu77ndd9t2yehansltt7wkhhqfjcsah0z4jvlf -decimals = 18 - -[LNC] -peggy_denom = inj18epz5afrhu0zehdlj0mp8cfmv3vtusq6fd6ufw -decimals = 6 - -[LOCAL] -peggy_denom = factory/kujira1swkuyt08z74n5jl7zr6hx0ru5sa2yev5v896p6/local -decimals = 6 - -[LOKI] -peggy_denom = ibc/28325391B9F257ABED965813D29AE67D1FE5C58E40AB6D753250CD83306EC7A3 -decimals = 0 - -[LOL] -peggy_denom = factory/inj1jpddz58n2ugstuhp238qwwvdf3shxsxy5g6jkn/LOL -decimals = 6 - -[LONG] -peggy_denom = factory/inj1ruwdh4vc29t75eryvxs7vwzt7trtrz885teuwa/long -decimals = 6 - -[LOOL] -peggy_denom = inj10wuysemk8ptnnt2n4my8qsalgkmw6yxe8wthu2 -decimals = 18 - -[LORD] -peggy_denom = inj1flek07wkz73a7ptxutumr4u5fukt6th4fwy9zn -decimals = 6 - -[LOST] -peggy_denom = inj150rlxjvk2trcm59mpwyg7hkkq8sfmdtu0tj873 -decimals = 8 - -[LOTUS] -peggy_denom = inj1luz09rzlytzdqnyp2n0cqevdxkf9u780uvsew5 -decimals = 6 - -[LOXA] -peggy_denom = inj175ut0y843p0kc4secgplsrs609uwaq3d93tp0x -decimals = 8 - -[LP AKT-MNTA] -peggy_denom = ibc/D128AB965B69D44D80AFD886D8A252C10D6B0B792B3AEA7833C7A1F95BA4BCF8 -decimals = 6 - -[LP AKT-USDC] -peggy_denom = ibc/5655C734BCF29B8E9B6F5F1EE3907B0EDE5F40E5B6C10077E27F156C2ECFB532 -decimals = 6 - -[LP ARB-MNTA] -peggy_denom = ibc/A7BBB8697F21D2CE19732D6CCE137E00B78CE83B5F38AC5E7FB163D7E77C1325 -decimals = 6 - -[LP ATOM-MNTA] -peggy_denom = ibc/67E901393C5DE5F1D26A0DBC86F352EA9CEBC6F5A1791ADAB33AB557136CD4D0 -decimals = 6 - -[LP ATOM-USDC] -peggy_denom = ibc/D56B67C987AE078C23FE8819C52824E3F700C351C4C783753AB6D9EDA49BBF66 -decimals = 6 - -[LP ATOM-USK] -peggy_denom = ibc/2A475C5F010C3745E3329E9C185B071675337A62F0B6BE3A1B0296CC7FA92D3D -decimals = 6 - -[LP AXL-MNTA] -peggy_denom = ibc/F829D655E96C070395E364658EFB2EC4B93906D44A6C1AE6A2A8821FCB7BA4B8 -decimals = 6 - -[LP Bow: wETH.axl-USK] -peggy_denom = ibc/F6C2798CF2A311F945EE28BF377BAB6AD3F35ED4D91151B8F6EC96480D53AC18 -decimals = 6 - -[LP CHEQ-MNTA] -peggy_denom = ibc/454555FFF0452DD86BC65DDE0158300132DE275CB22183ECE357EA07EBA18528 -decimals = 6 - -[LP DOT.axl-MNTA] -peggy_denom = ibc/E9BC2E73393C6C1AD36B04109F5C20CC1CDC4BCB913C8038993C8F68A0CD8474 -decimals = 6 - -[LP DYDX-MNTA] -peggy_denom = ibc/0FC1BAA3BF09FA73946A6412088FCED87D1D2368F30BDC771FB5FF6EAE0EB5E9 -decimals = 6 - -[LP DYDX-USK] -peggy_denom = ibc/AAD3BAA26896276833FBFC6AA76F7494C18D5DA01345A1C5A4F856EB94E2BD2E -decimals = 6 - -[LP DYM-MNTA] -peggy_denom = ibc/CC151284BE8E76C67E78ADAE3892C0D9084F0C802CC1EC44BFBE91EE695206E8 -decimals = 6 - -[LP FUZN-MNTA] -peggy_denom = ibc/A064F58ADEAA6DF2AE8006787DFF5E1F144FECF79F880F0140CB38800C295AC2 -decimals = 6 - -[LP INJ-MNTA] -peggy_denom = ibc/4229FC85617819AFFE8543D646BE8A41CD9F8257985A198E0DF09E54F23EC6D3 -decimals = 6 - -[LP INJ-USDC] -peggy_denom = ibc/CEE37BC241E4A3A475EEFFA9BBE024C60CF9044E0514014A80081FC2E9CB3EAE -decimals = 6 - -[LP LINK.axl-MNTA] -peggy_denom = ibc/BA3A7ACF9AEF1F3D1973ED4406EB35CF2DCB9B545D71A7F06B27A7EA918F8396 -decimals = 6 - -[LP MNTA-KUJI] -peggy_denom = ibc/AE8EDE6CB769E0EAB809204D5E770F5DF03BC35D3E5977272E6CE5147229F938 -decimals = 6 - -[LP NTRN-MNTA] -peggy_denom = ibc/77011B441A8655A392E5B6DA8AE4ADFB0D3DF3E26B069803D64B89208EC8C07E -decimals = 6 - -[LP OSMO-MNTA] -peggy_denom = ibc/CF0564CF0C15332430432E8D7C417521004EBB2EA4CB922C577BA751A64B6599 -decimals = 6 - -[LP PAXG.grv-MNTA] -peggy_denom = ibc/8C1E93AB13F5FC3E907751DA5BE4C7518E930A4C9F441523E608323C1CA35F6B -decimals = 6 - -[LP SCRT-MNTA] -peggy_denom = ibc/9FE7DE3797BC1F75E8CBE30B16CE84A3835B8A280E7E7780CE2C86C244F6253C -decimals = 6 - -[LP SHD-MNTA] -peggy_denom = ibc/B512CFCA199DCBDF098824846D2D78E1E04EBA6A5091A99472236B69B24C979E -decimals = 6 - -[LP SOL.wh-MNTA] -peggy_denom = ibc/D765CDBB85910E131773AF7072439F9C382DF0B894D2209E09D2EEFE0298EADC -decimals = 6 - -[LP SOL.wh-USK] -peggy_denom = ibc/B2AEBDD7C155653B5DF92B1FAE9C867F481B6DDA62C05795DB4D23E57D86AD0F -decimals = 6 - -[LP SOMM-MNTA] -peggy_denom = ibc/457CF9F4112FB7E765A83A1F93DE93246C1E0D5A1C83F9A909B5890A172AAC34 -decimals = 6 - -[LP STARS-MNTA] -peggy_denom = ibc/B6B6EB8527A6EE9040DBE926D378EC23CB231AC8680AF75372DBF6B7B64625A7 -decimals = 6 - -[LP TIA-MNTA] -peggy_denom = ibc/59F96C9AAFC26E872D534D483EF8648305AD440EF2E9A506F061BADFC378CE13 -decimals = 6 - -[LP UNI.axl-MNTA] -peggy_denom = ibc/4E4B25966A3CF92B796F5F5D1A70A375F32D8EF4C7E49DEC1C38441B7CA8C7CA -decimals = 6 - -[LP WHALE-MNTA] -peggy_denom = ibc/89E80D95AF2FD42A47E9746F7CFF32F3B56FE3E113B81241A6A818C8B3221C17 -decimals = 6 - -[LP ampMNTA-MNTA] -peggy_denom = ibc/8545604BFCCC408B753EB0840FF131CB34B9ED1283A9BD551F68C324B53FEF0C -decimals = 6 - -[LP qcMNTA-MNTA] -peggy_denom = ibc/23ADD2AC1D22776CE8CB37FB446E552B9AE5532B76008ADF73F75222A6ACFE19 -decimals = 6 - -[LP stOSMO-OSMO] -peggy_denom = ibc/20D8F1713F8DF3B990E23E205F1CCD99492390558022FF3FE60B1FAFCF955689 -decimals = 6 - -[LP wAVAX.axl-MNTA] -peggy_denom = ibc/57CC0316BFD206E1A8953DD6EC629F1556998EB9454152F21D51EFB5A35851EF -decimals = 6 - -[LP wBNB.axl-MNTA] -peggy_denom = ibc/2961FC233B605E5D179611D7D5C88E89DD3717081B5D06469FF27DFE83AF9BEB -decimals = 6 - -[LP wBTC-USK] -peggy_denom = ibc/537D1CA26409F995B148654024253342813E49FC68AB7C793C19413A6D605DD2 -decimals = 6 - -[LP wBTC.axl-MNTA] -peggy_denom = ibc/B73EDDE38FFE4C5782B5C6108F4977B8B4A0C13AA9EBABEBCCFC049ED5CC0968 -decimals = 6 - -[LP wBTC.axl-wBTC] -peggy_denom = ibc/C5040FF699537BCFC9D7E5907808A227A586D92E9C98A0C4CEF825783CA5EB2A -decimals = 8 - -[LP wETH.axl-MNTA] -peggy_denom = ibc/83DDCD6991A94C4ED287A029243527A14A86D4A62FB69BBEC51FB9B0156C6683 -decimals = 6 - -[LP wETH.axl-USDC] -peggy_denom = ibc/AEF9626F0FC204723F53141E9626FED43A6231D8B152F8DEC86172B9E9FFF500 -decimals = 6 - -[LP wETH.axl-USK] -peggy_denom = ibc/6E2B993CA402C047E232E4722D1CE0C73DBD47CBBE465E16F6E3732D27F37649 -decimals = 6 - -[LP wFTM.axl-MNTA] -peggy_denom = ibc/EBF34B929B7744BD0C97ECF6F8B8331E2BCA464F1E5EA702B6B40ED2F55433BD -decimals = 6 - -[LP wMATIC.axl-MNTA] -peggy_denom = ibc/942AA5D504B03747AF67B19A874D4E47DAD307E455AEB34E3A4A2ECF7B9D64C8 -decimals = 6 - -[LP wTAO.grv-MNTA] -peggy_denom = ibc/51BB7FAEEDCFC7782519C8A6FB0D7168609B2450B56FED6883ABD742AEED8CC4 -decimals = 6 - -[LP wstETH.axl-MNTA] -peggy_denom = ibc/BAB4B518D0972626B854BE5139FCAD7F1113E3787BC13013CB6A370298EFE0C1 -decimals = 6 - -[LP wstETH.axl-wETH.axl] -peggy_denom = ibc/CEECB0B01EC9BF90822BCA6A1D6D2BF4DC6291BD0C947BEE512BD4639045EAD1 -decimals = 6 - -[LP yieldETH.axl-MNTA] -peggy_denom = ibc/D410037544911319AB9F3BF0C375598AAD69A7555A5B23158484DFFC10651316 -decimals = 6 - -[LRDSVN] -peggy_denom = inj1xcrrweel03eu2fzlvmllhy52wdv25wvejn24dr -decimals = 8 - -[LUCK] -peggy_denom = factory/inj13f6c0hc3l80qa7w80j992wtscslkg8pm65rxua/LUCK -decimals = 6 - -[LUCKY] -peggy_denom = inj1v8vkngk2pn2sye2zduy77lfdeaqq9cd924f5le -decimals = 18 - -[LUFFY] -peggy_denom = inj1yzz7pvx7e98u3xv4uz0tkqrm6uj684j9lvv0z4 -decimals = 6 - -[LUIGI] -peggy_denom = inj1h8yjr8ely8q8r8rlvs2zx0pmty70ajy4ud6l0y -decimals = 18 - -[LUKE] -peggy_denom = factory/inj168pjvcxwdr28uv295fchjtkk6pc5cd0lg3h450/luke -decimals = 6 - -[LUM] -peggy_denom = ibc/2C58CBDF1C96FAD7E6B1C5EC0A484E9BD9A27E126E36AFBDD7E45F0EA17F3640 -decimals = 6 - -[LUNA] -peggy_denom = ibc/B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395 -decimals = 6 - -[LUNA / USDC LP] -peggy_denom = ibc/F7B51F1370D141AAE886E86BFFEAE64BF132BA18BB905B2B3C1840C7DF989ACF -decimals = 6 - -[LUNA-BOOST-LP] -peggy_denom = ibc/5A0436619E11E57DFE0791A79E43EDDB9084D564709BE4B8D3655D9967EAB52D -decimals = 6 - -[LUNA-USDC-LP] -peggy_denom = ibc/CBC3DCBC6559DB851F487B6A41C547A2D75DB0C54A143DDF39C04250E50DA888 -decimals = 6 - -[LUNA-USDT-LP] -peggy_denom = ibc/E06B8ECC4B080937AFD0AD0308C4E9354AB169C297F45E087D6057F0010E502D -decimals = 6 - -[LUNA-YIELD-LP] -peggy_denom = ibc/F83A39604DBA8B3886D672C572FE020A0ECF9A711BC35C7EF8F129C8B15C3107 -decimals = 6 - -[LUNAR] -peggy_denom = inj1hpu5e5620hvd7hf3t4t4em96cx9t58yefcr3uu -decimals = 8 - -[LVN] -peggy_denom = ibc/4971C5E4786D5995EC7EF894FCFA9CF2E127E95D5D53A982F6A062F3F410EDB8 -decimals = 6 - -[LYM] -peggy_denom = peggy0xc690F7C7FcfFA6a82b79faB7508c466FEfdfc8c5 -decimals = 18 - -[Leapwifhat] -peggy_denom = factory/inj10xsan7m2gwhwjm9hrr74ej77lx8qaxk9cl7rfw/Leapwifhat -decimals = 6 - -[Leia] -peggy_denom = inj1vm24dp02njzgd35srtlfqkuvxz40dysyx7lgfl -decimals = 6 - -[Lenz] -peggy_denom = factory/inj19xadglv3eaaavaeur5553hjj99c3vtkajhj4r6/Lenz -decimals = 6 - -[Leo] -peggy_denom = inj1xnqaq553d5awhzr68p5vkenrj64ueqpfzjjp0f -decimals = 18 - -[Leonardo] -peggy_denom = inj1yndh0j4dpnjuqaap7u6csta2krvhqddjwd3p9w -decimals = 18 - -[Lido DAO Token] -peggy_denom = inj1me6t602jlndzxgv2d7ekcnkjuqdp7vfh4txpyy -decimals = 8 - -[Lido Staked Ether] -peggy_denom = ibc/FB1B967C690FEA7E9AD7CF76AE2255169D4EA2937D6694B2C0E61A370F76D9FB -decimals = 18 - -[Lisaann] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/lisaann -decimals = 6 - -[Lost Paradise AI] -peggy_denom = inj1wf0d0ynpfcmpcq8h9evv2z4p0stc73x3skj96r -decimals = 8 - -[Luigi] -peggy_denom = inj1vrz0yfrlxe6mqaadmeup8g6nhhzmg7hwpfr6kz -decimals = 18 - -[Luna] -peggy_denom = ibc/0DDC992F19041FC1D499CCA1486721479EBAA7270604E15EDDFABA89D1E772E5 -decimals = 6 - -[MAD] -peggy_denom = inj1u97mcn0sx00hnksfc9775gh5vtjhn4my340t0j -decimals = 18 - -[MADDOG] -peggy_denom = inj1y942sn0su2wxzh65xnd6h6fplajm04zl8fh0xy -decimals = 6 - -[MAFIAz] -peggy_denom = factory/inj175n4kj6va8yejh7w35t5v5f5gfm6ecyasgjnn9/MAFIAz -decimals = 6 - -[MAGA] -peggy_denom = peggy0x576e2BeD8F7b46D34016198911Cdf9886f78bea7 -decimals = 9 - -[MAI] -peggy_denom = inj1wd3vgvjur8du5zxktj4v4xvny4n8skjezadpp2 -decimals = 8 - -[MAKI] -peggy_denom = factory/inj1l0pnjpc2y8f0wlua025g5verjuvnyjyq39x9q0/MAKI -decimals = 6 - -[MAMA] -peggy_denom = inj1ayukjh6wufyuymv6ehl2cmjjpvrqjf5m75ty90 -decimals = 6 - -[MAMBA] -peggy_denom = factory/inj18z5cm702ylpqz8j6gznalcw69wp4m7fsdjhnfq/mamba -decimals = 6 - -[MANEKI] -peggy_denom = factory/inj1an9qflgvpvjdhczce6xwrh4afkaap77c72k4yd/MANEKI -decimals = 6 - -[MANTAINJ] -peggy_denom = inj14mf5jzda45w25d2w20z5t2ee9a47wh2tqh6ndg -decimals = 8 - -[MANTIS] -peggy_denom = inj1s6hmmyy9f2k37qqw2pryufg4arqxegurddkdp9 -decimals = 6 - -[MARA] -peggy_denom = inj1kaqrfnqy59dm6rf7skn8j05fdmdya9af0g56we -decimals = 18 - -[MARB] -peggy_denom = inj1up4k6vxrq4nhzvp5ssksqejk3e26q2jfvngjlj -decimals = 18 - -[MARC] -peggy_denom = inj1xg8d0nf0f9075zj3h5p4hku8r6ahtssxs4sq5q -decimals = 18 - -[MARD] -peggy_denom = inj177n6een54mcs8sg3hgdruumky308ehgkp9mghr -decimals = 18 - -[MARE] -peggy_denom = inj1k4ytnwu0luen8vyvahqmusxmt362r8xw3mmu55 -decimals = 18 - -[MARF] -peggy_denom = inj1phkfvvrzqtsq6ajklt0vsha78jsl3kg6wcd68m -decimals = 18 - -[MARG] -peggy_denom = inj14qypf8qd0zw3t7405n4rj86whxhyqnvacl8c9n -decimals = 18 - -[MARH] -peggy_denom = inj1sarc5fq8rlqxl9q3y6f6u5qnzumsqdn6vvvgyh -decimals = 18 - -[MARI] -peggy_denom = inj1x5wvc0k7xht6jyh04vj2dtstcrv68lps4r58d5 -decimals = 18 - -[MARJ] -peggy_denom = inj1sdxdvnn6g2c7qwfts55w4043x8qzdzrku0qp3z -decimals = 18 - -[MARK] -peggy_denom = inj1mnv033jcerdf4d3xw2kfreakahtuf0ue3xgr3u -decimals = 18 - -[MARM] -peggy_denom = inj1qls0sp552zw55df5klhv98zjueagtn6ugq292f -decimals = 18 - -[MARN] -peggy_denom = inj1q4swwrf6kvut57k8hpul7ef39vr5ka3h74dcwj -decimals = 18 - -[MARS] -peggy_denom = inj1h28xpjed0xtjwe558gr2nx7nsfx2p6sey6zduc -decimals = 8 - -[MASK] -peggy_denom = factory/inj1nhswhqrgfu3hpauvyeycz7pfealx4ack2c5hfp/mask -decimals = 6 - -[MASTER] -peggy_denom = inj1at4cjadsrags6c65g4vmtnwzw93pv55kky796l -decimals = 6 - -[MATIC] -peggy_denom = peggy0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0 -decimals = 18 - -[MATR1X] -peggy_denom = inj1367pnje9e8myaw04av6j2n5z7827407k4sa4m8 -decimals = 8 - -[MATR1X AI] -peggy_denom = inj18d3wkfajxh7t9cq280ggrksrchj0ymjf7cxwcf -decimals = 8 - -[MAX] -peggy_denom = factory/inj164jk46xjwsn6x4rzu6sfuvtlzy2nza0nxfj0nz/MAX -decimals = 6 - -[MAXH] -peggy_denom = inj1h97mmp9v36ljlmhllyqas0srsfsaq2ppq4dhez -decimals = 18 - -[MAXI] -peggy_denom = factory/inj1jtx66k3adkjkrhuqypkt2ld7equf3whcmj2lde/MAXI -decimals = 6 - -[MBERB] -peggy_denom = inj1d6wle0ugcg2u3hcl9unkuz7usdvhv6tx44l9qn -decimals = 6 - -[MBRN] -peggy_denom = ibc/7AF90EDF6F5328C6C33B03DB7E33445708A46FF006932472D00D5076F5504B67 -decimals = 6 - -[MC01] -peggy_denom = ibc/7F8D9BCCF7063FD843B5C052358466691FBEB29F75FA496A5174340B51EDA568 -decimals = 6 - -[MDRA] -peggy_denom = factory/inj1n85jfpxee430qavn9edlkup9kny7aszarag8ed/MADARA -decimals = 18 - -[MEAT] -peggy_denom = inj1naxd5z6h78khd90nmfguxht55eecvttus8vfuh -decimals = 6 - -[MEHTER] -peggy_denom = factory/inj1tscuvmskt4fxvqurh0aueg57x4vja683z79q4u/MEHTER -decimals = 6 - -[MEME] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj12dag0a67uxcvs5x730lpq0pdsatgmx8ktqeafl -decimals = 8 - -[MEMEAI] -peggy_denom = inj1ps72fm7jpvnp3n0ysmjcece6rje9yp7dg8ep5j -decimals = 8 - -[MEMEME] -peggy_denom = peggy0x1A963Df363D01EEBB2816b366d61C917F20e1EbE -decimals = 18 - -[MEMT] -peggy_denom = factory/inj1vust6dc470q02c35vh8z4qz22ddr0zv35pxaxe/MEMEMINT -decimals = 6 - -[MEOW] -peggy_denom = factory/inj13wngn7gt8mt2k66x3ykp9tvfk5x89ajwd7yrtr/meow -decimals = 6 - -[MESSI] -peggy_denom = inj1upun866849c4kh4yddzkd7s88sxhvn3ldllqjq -decimals = 6 - -[META] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/meta -decimals = 6 - -[METAOASIS] -peggy_denom = inj1303k783m2ukvgn8n4a2u5jvm25ffqe97236rx2 -decimals = 8 - -[METAWORLD] -peggy_denom = inj1lafjpyp045430pgddc8wkkg23uxz3gjlsaf4t3 -decimals = 8 - -[MEW] -peggy_denom = factory/inj1c0f9ze9wh2xket0zs6wy59v66alwratsdx648k/mew -decimals = 6 - -[MIA] -peggy_denom = inj10mrgg498xw0qvjvnqdudvlztvvlxk6nsat9vph -decimals = 18 - -[MIB] -peggy_denom = factory/inj1k0mzgwd4ujuu9w95xzs8p7qu8udy3atqj3sau7/MIB -decimals = 6 - -[MICE] -peggy_denom = factory/inj16g5w38hqehsmye9yavag0g0tw7u8pjuzep0sys/MICE -decimals = 6 - -[MICHAEL] -peggy_denom = factory/inj1hem3hs6fsugvx65ry43hpcth55snyy8x4c5s89/MICHAEL -decimals = 6 - -[MICRO] -peggy_denom = inj1jnn7uf83lpl9ug5y6d9pxes9v7vqphd379rfeh -decimals = 6 - -[MIGMIG] -peggy_denom = inj1vl8swymtge55tncm8j6f02yemxqueaj7n5atkv -decimals = 6 - -[MILA] -peggy_denom = factory/inj1z08usf75ecfp3cqtwey6gx7nr79s3agal3k8xf/MILA -decimals = 6 - -[MILF] -peggy_denom = inj1mlahaecngtx3f5l4k6mq882h9r2fhhplsatgur -decimals = 18 - -[MILFQUNT] -peggy_denom = factory/inj164mk88yzadt26tzvjkpc4sl2v06xgqnn0hj296/MILFQUNT -decimals = 6 - -[MILK] -peggy_denom = factory/inj1fpl63h7at2epr55yn5svmqkq4fkye32vmxq8ry/MILK -decimals = 6 - -[MINIDOG] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1shzx0tx7x74ew6ewjdhvw2l3a828tfaggk5lj3 -decimals = 18 - -[MINJ] -peggy_denom = factory/inj1cm5lg3z9l3gftt0c09trnllmayxpwt8825zxw3/minj -decimals = 6 - -[MIRZA] -peggy_denom = factory/inj1m6mqdp030nj6n7pa9n03y0zrkczajm96rcn7ye/MIRZA -decimals = 6 - -[MITHU] -peggy_denom = inj1uh3nt2d0q69hwsgge4z38rm2vg9h7hugdnf5wx -decimals = 6 - -[MITO-ANDR-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj15s4c3kqa0j6glrgppcn0h357jac40ndyptv3sr -decimals = 18 - -[MITO-ASG-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj17jdcvmkpvhgwfnukxjt6uvu2cptuqv309rz8pu -decimals = 18 - -[MITO-AUTISM-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1rayjg2wktsj9aa9j5ps52v3qunn80m7fjhdstp -decimals = 18 - -[MITO-BLACK-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj16vjf4nnyqvjws6chw6u3t3kmujhllj4wjn9nlh -decimals = 18 - -[MITO-COKE-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1hffc8x68rp843ygjg9e4eaxj54v5w6vcev9vvu -decimals = 18 - -[MITO-DOJO-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1v8v8jepsjdsxj29hxmm62qwzmg54r75v6mq6q9 -decimals = 18 - -[MITO-ENA-USDT] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj12s6eccju5addagv2f74sphfmenv9xwp0ynmtqv -decimals = 18 - -[MITO-GIGA-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1dvrvhcpq6aru0g5d9m9wjnz7utr67we5dlaq79 -decimals = 18 - -[MITO-GINGER-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1a9hcr7zf5a2ahkv5fvumyky50ww7ds2cg5tk95 -decimals = 18 - -[MITO-GME-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1pww37pr6qnnndzz2azxhxl0rcvtxcftg0y70vh -decimals = 18 - -[MITO-HDRO-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1zxk9xvs6mnq2m5yws8gdgqstrmcqntuedlnua3 -decimals = 18 - -[MITO-INJ-USDT] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj14xy8dvgjyhqjn8dhegf9zz5g7c3yeflt0kgarp -decimals = 18 - -[MITO-IOTX-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1nyv50r7vnktgpp5s22fh8nzf7ak8sthh6l7s3t -decimals = 18 - -[MITO-KIRA-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1sm36lxmzynkt9q37nwspf8n6pzplktul006u08 -decimals = 18 - -[MITO-LVN-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj14gmk6jg5kduvy882yjdq4967e46jaka7ffuf58 -decimals = 18 - -[MITO-MOTHER-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj15599wr9jzgrt6e04xkue9l6409mlc3l7lqr38d -decimals = 18 - -[MITO-NINJA-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1hw4vgqyvgw5vca224mpg2e0ccqguhnu7yawpu8 -decimals = 18 - -[MITO-NLT-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1ucj4veavs4jeuhe98xx8fe6yk0n83ulvjqank3 -decimals = 18 - -[MITO-NONJA-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1p9djw5xkg7dfgteqnh3cqmef2xs6meycd2k5r5 -decimals = 18 - -[MITO-PAIN-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1xkq5fd6yn2qsmnr95wmtrvfnrndusd8tlr5ezd -decimals = 18 - -[MITO-PHUC-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj16mz5n3dsnal4m0emy4pa02d67hh0r70tlm8095 -decimals = 18 - -[MITO-PYTH-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1r4pjz70l4ytk06dfparzd6na5qqjeq09fkxdt4 -decimals = 18 - -[MITO-PYUSD-USDT] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1k7kvdzm7n8g5xf6c733lsyp6tugvxwsnvdcgur -decimals = 18 - -[MITO-QUNT-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj12hrath9g2c02e87vjadnlqnmurxtr8md7djyxm -decimals = 18 - -[MITO-SHROOM-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1g89dl74lyre9q6rjua9l37pcc7psnw66capurp -decimals = 18 - -[MITO-SMELLY-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj17hm5smrnrmdr88slpfzfmyxxna9fe6xtvzlr0p -decimals = 18 - -[MITO-SNS-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1djuudn6jj6g70kunu8sgtnrvytw9e27xtzyphe -decimals = 18 - -[MITO-STRD-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1ulxnf3qhjk8l383nllhglfaautcstkmth089jp -decimals = 18 - -[MITO-TALIS-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1ve3uga90prrwtpsptjrhnxlfd9u0qwuf0v43ke -decimals = 18 - -[MITO-TEST-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1xkq56rjtpcqgwh9yut6zwh3lxcle2yz4dljyxc -decimals = 18 - -[MITO-USDe-USDT] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1r86atmuulmhzw63pqx5tp989nmupvn4fd94m7u -decimals = 18 - -[MITO-WHALE-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1sqj6x44uxtmklyewqxk9frqjrkjqjjmu6u0mrm -decimals = 18 - -[MITO-XIII-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj13ly2q9g40lta4dcn7n6z9nack42r2hk64un07x -decimals = 18 - -[MITO-ZIG-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1ckyym37k9u3gne0qdcpu7ty20p59d3lutepkge -decimals = 18 - -[MITO-hINJ-INJ] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1gqmr3vdr9k0hwyjkkphn9etqqsj06mm0tuj7vl -decimals = 18 - -[MIYOYO] -peggy_denom = factory/inj1xuds68kdmuhextjew8zlt73g5ku7aj0g7tlyjr/miyoyo -decimals = 6 - -[MKEY] -peggy_denom = inj1jqqysx5j8uef2kyd32aczp3fktl46aqh7jckd5 -decimals = 18 - -[MKR] -peggy_denom = mkr -decimals = 18 - -[MNC] -peggy_denom = inj1fr693adew9nnl64ez2mmp46smgn48c9vq2gv6t -decimals = 18 - -[MNG] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/mng -decimals = 6 - -[MNINJA] -peggy_denom = inj1cv3dxtjpngy029k5j0mmsye3qrg0uh979ur920 -decimals = 18 - -[MNP] -peggy_denom = inj1s02f4aygftq6yhpev9dmnzp8889g5h3juhd5re -decimals = 18 - -[MNTA] -peggy_denom = ibc/A4495880A4A2E3C242F63C710F447BAE072E1A4C2A22F1851E0BB7ABDD26B43D -decimals = 6 - -[MOAR] -peggy_denom = ibc/D37C63726080331AF3713AA59B8FFD409ABD44F5FDB4685E5F3AB43D40108F6F -decimals = 6 - -[MOBX] -peggy_denom = ibc/D80D1912495833112073348F460F603B496092385558F836D574F86825B031B4 -decimals = 9 - -[MOGD] -peggy_denom = inj1yycep5ey53zh2388k6m2jmy4s4qaaurmjhcatj -decimals = 6 - -[MOJO] -peggy_denom = inj14ttljn98g36yp6s9qn59y3xsgej69t53ja2m3n -decimals = 18 - -[MOL] -peggy_denom = factory/inj1fnpmp99kclt00kst3ht8g0g44erxr5wx6fem9x/MOL -decimals = 6 - -[MOM] -peggy_denom = inj17p7q5jrc6y00akcjjwu32j8kmjkaj8f0mjfn9p -decimals = 6 - -[MOMO] -peggy_denom = factory/inj12kja5s3dngydnhmdm69v776mkfrf7nuzclwzc4/MOMO -decimals = 6 - -[MONKEY] -peggy_denom = factory/inj1v88cetqty588vkc5anxnm3zjcj2dmf4dwpdxry/monkey -decimals = 6 - -[MONKS] -peggy_denom = inj1fy4hd7gqtdzp6j84v9phacm3f998382yz37rjd -decimals = 18 - -[MOO] -peggy_denom = factory/inj10tj05gfpxgnmpr4q7rhxthuknc6csatrp0uxff/moo -decimals = 6 - -[MOON] -peggy_denom = factory/inj1d2gl87f9ldwemvhm8rskqzuqprrsvc5fr5nllc/MOON -decimals = 6 - -[MOONIFY] -peggy_denom = factory/inj1ktq0gf7altpsf0l2qzql4sfs0vc0ru75cnj3a6/moonify -decimals = 6 - -[MOONTRADE] -peggy_denom = inj19fzjd8rungrlmkujr85v0v7u7xm2aygxsl03cy -decimals = 8 - -[MOR] -peggy_denom = inj13vyz379revr8w4p2a59ethm53z6grtw6cvljlt -decimals = 8 - -[MORKIE] -peggy_denom = inj1k30vrj8q6x6nfyn6gpkxt633v3u2cwncpxflaa -decimals = 18 - -[MOTHER] -peggy_denom = ibc/984E90A8E0265B9804B7345C7542BF9B3046978AE5557B4AABADDFE605CACABE -decimals = 6 - -[MOX] -peggy_denom = inj1w86sch2d2zmpw0vaj5sn2hdy6evlvqy5kx3mf0 -decimals = 18 - -[MPEPE] -peggy_denom = mpepe -decimals = 18 - -[MRKO] -peggy_denom = inj10wufg9exwgr8qgehee9q8m8pk25c62wwul4xjx -decimals = 8 - -[MRZ] -peggy_denom = factory/inj15e6p3slz9pa7kcn280y7hgp6rvhsqm3vnczlaw/mirza -decimals = 6 - -[MT] -peggy_denom = inj1exeh9j6acv6375mv9rhwtzp4qhfne5hajncllk -decimals = 8 - -[MUBI] -peggy_denom = factory/inj1fzhwjv2kjv7xr2h4phue5yqsjawjypcamcpl5a/mubi -decimals = 6 - -[MUSHROOM] -peggy_denom = inj1wchqefgxuupymlumlzw2n42c6y4ttjk9a9nedq -decimals = 6 - -[MUSK] -peggy_denom = inj1em3kmw6dmef39t7gs8v9atsvzkprdr03k5h5ej -decimals = 8 - -[MYRK] -peggy_denom = ibc/48D1DA9AA68C949E27BAB39B409681292035ABF63EAB663017C7BEF98A3D118E -decimals = 6 - -[MYSTERYBOX1] -peggy_denom = factory/inj1llr45x92t7jrqtxvc02gpkcqhqr82dvyzkr4mz/MYSTERYBOX1 -decimals = 0 - -[MacTRUMP] -peggy_denom = inj10gsw06ee0ppy7ltqeqhagle35h0pnue9nnsetg -decimals = 6 - -[Maga] -peggy_denom = inj1wey50ukykccy8h6uaacln8naz5aahhsy09h4x0 -decimals = 6 - -[Mak] -peggy_denom = inj1vpks54yg6kwtsmt9r2psclcp0gmkgma3c3rvmg -decimals = 18 - -[Maker] -peggy_denom = ibc/E8C65EFAB7804152191B8311F61877A36779277E316883D8812D3CBEFC79AE4F -decimals = 18 - -[MantaInj] -peggy_denom = inj1qzc2djpnpg9n5jjcjzayl0dn4gjvft77yfau52 -decimals = 8 - -[Mark] -peggy_denom = factory/inj1uw9z3drc0ea680e4wk60lmymstx892nta7ycyt/MARK -decimals = 6 - -[Mars protocol token] -peggy_denom = ibc/A49CDCD85554B519B778B6B084AE4453EF63090217AE302FB1ADE4B80ECFA86C -decimals = 6 - -[Marshmello] -peggy_denom = inj1aw5t8shvcesdrh47xfyy9x9j0vzkhxuadzv6dw -decimals = 6 - -[MartialArts] -peggy_denom = factory/inj1tjspc227y7ck52hppnpxrmhfj3kd2pw3frjw8v/MartialArts -decimals = 6 - -[Matr1x AI] -peggy_denom = inj1gu7vdyclf2fjf9jlr6dhzf34kcxchjavevuktl -decimals = 8 - -[MelonMask] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/melonmask -decimals = 6 - -[Meme] -peggy_denom = factory/inj1c72uunyxvpwfe77myy7jhhjtkqdk3csum846x4/Meme -decimals = 4 - -[MemeCoin] -peggy_denom = inj12dag0a67uxcvs5x730lpq0pdsatgmx8ktqeafl -decimals = 8 - -[Men In Black] -peggy_denom = factory/inj1q3xa3r638hmpu2mywg5r0w8a3pz2u5l9n7x4q2/MeninblackINJ -decimals = 6 - -[Messi] -peggy_denom = inj1lvq52czuxncydg3f9z430glfysk4yru6p4apfr -decimals = 18 - -[MetaOasis] -peggy_denom = inj1uk7dm0ws0eum6rqqfvu8d2s5vrwkr9y2p7vtxh -decimals = 8 - -[MetaPX] -peggy_denom = inj1dntprsalugnudg7n38303l3l577sxkxc6q7qt5 -decimals = 8 - -[Metti] -peggy_denom = inj1lgnrkj6lkrckyx23jkchdyuy62fj4773vjp3jf -decimals = 8 - -[Mew Cat] -peggy_denom = inj12pykmszt7g2l5h2q9h8vfk0w6aq2nj8waaqs7d -decimals = 8 - -[Miakhalifa] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/miakhalifa -decimals = 6 - -[Minions] -peggy_denom = inj1wezquktplhkx9gheczc95gh98xemuxqv4mtc84 -decimals = 6 - -[MitoTutorial] -peggy_denom = factory/inj1m3ea9vs5scly8c5rm6l3zypknfckcc3xzu8u5v/Test -decimals = 6 - -[Money] -peggy_denom = inj108rxfpdh8q0pyrnnp286ftj6jctwtajjeur773 -decimals = 18 - -[Monks] -peggy_denom = factory/inj148sjw9h9n3n8gjw37reetwdlc7v4hfhl8r7vv3/Monks -decimals = 6 - -[Moon] -peggy_denom = inj143ccar58qxmwgxr0zcp32759z5nsvseyr2gm7c -decimals = 18 - -[Moon ] -peggy_denom = inj1e3gqdkr2v7ld6m3620lgddfcarretrca0e7gn5 -decimals = 18 - -[Moonlana] -peggy_denom = inj1trg4pfcu07ft2dhd9mljp9s8pajxeclzq5cnuw -decimals = 8 - -[Morc] -peggy_denom = inj1vnwc3n4z2rewaetwwxz9lz46qncwayvhytpddl -decimals = 8 - -[MrT] -peggy_denom = inj1hrhfzv3dfzugfymf7xw37t0erp32f2wkcx3r74 -decimals = 6 - -[Multichain USDC] -peggy_denom = ibc/610D4A1B3F3198C35C09E9AF7C8FB81707912463357C9398B02C7F13049678A8 -decimals = 6 - -[MySymbol] -peggy_denom = inj1t6hampk8u4hsrxwt2ncw6xx5xryansh9mg94mp -decimals = 18 - -[MyTokenOne] -peggy_denom = inj13m7h8rdfvr0hwvzzvufwe2sghlfd6e45rz0txa -decimals = 18 - -[MyTokenZero] -peggy_denom = inj1kzk2h0g6glmlwamvmzq5jekshshkdez6dnqemf -decimals = 18 - -[NAKI] -peggy_denom = factory/inj10lauc4jvzyacjtyk7tp3mmwtep0pjnencdsnuc/NAKI -decimals = 6 - -[NAMI] -peggy_denom = ibc/B82AA4A3CB90BA24FACE9F9997B75359EC72788B8D82451DCC93986CB450B953 -decimals = 6 - -[NANA] -peggy_denom = inj19u2swqug0qne0wc5vkmak995vyvkyy8m33wzn0 -decimals = 6 - -[NARUTO] -peggy_denom = factory/inj16x0d8udzf2z2kjkdlr9ehdt7mawn9cckzt927t/naruto -decimals = 6 - -[NAUSD] -peggy_denom = ibc/C0BACF2DC0A2A65D13A6968913D591B57E1EF5A1133277D3BD06B86637335398 -decimals = 6 - -[NAWU] -peggy_denom = inj1y5qs5nm0q5qz62lxkeq5q9hpkh050pfn2j6mh4 -decimals = 18 - -[NBD] -peggy_denom = factory/inj1ckw2dxkwp7ruef943x50ywupsmxx9wv8ahdzkt/NBD -decimals = 6 - -[NBLA] -peggy_denom = factory/inj1d0zfq42409a5mhdagjutl8u6u9rgcm4h8zfmfq/nbla -decimals = 6 - -[NBOY] -peggy_denom = factory/inj1nmc5namhwszx0yartvjm6evsxrj0ctq2qa30l7/NBOY -decimals = 6 - -[NBZ] -peggy_denom = ibc/1011E4D6D4800DA9B8F21D7C207C0B0C18E54E614A8576037F066B775210709D -decimals = 6 - -[NBZAIRDROP] -peggy_denom = factory/inj1llr45x92t7jrqtxvc02gpkcqhqr82dvyzkr4mz/NBZAIRDROP -decimals = 0 - -[NBZPROMO1] -peggy_denom = factory/inj1llr45x92t7jrqtxvc02gpkcqhqr82dvyzkr4mz/NBZPROMO1 -decimals = 0 - -[NCACTE] -peggy_denom = factory/inj1zpgcfma4ynpte8lwfxqfszddf4nveq95prqyht/NCACTE -decimals = 6 - -[NCH] -peggy_denom = inj1d8pmcxk2grd62pwcy4q58l2vqh98vwkjx9nsvm -decimals = 8 - -[NCOQ] -peggy_denom = factory/inj13gc6rhwe73hf7kz2fwpall9h73ft635yss7tas/NCOQ -decimals = 6 - -[NEO] -peggy_denom = inj12hnvz0xs4mnaqh0vt9suwf8puxzd7he0mukgnu -decimals = 8 - -[NEOK] -peggy_denom = ibc/F6CC233E5C0EA36B1F74AB1AF98471A2D6A80E2542856639703E908B4D93E7C4 -decimals = 18 - -[NEPT] -peggy_denom = inj1464m9k0njt596t88chlp3nqg73j2fzd7t6kvac -decimals = 18 - -[NETZ] -peggy_denom = inj1dg27j0agxx8prrrzj5y8hkw0tccgwfuwzr3h50 -decimals = 8 - -[NEURA] -peggy_denom = peggy0x3D1C949a761C11E4CC50c3aE6BdB0F24fD7A39DA -decimals = 18 - -[NEURAL] -peggy_denom = factory/inj1esryrafqyqmtm50wz7fsumvq0xevx0q0a9u7um/NEURAL -decimals = 6 - -[NEWF] -peggy_denom = inj1uhqyzzmjq2czlsejqjg8gpc00gm5llw54gr806 -decimals = 18 - -[NEWS] -peggy_denom = factory/inj1uw4cjg4nw20zy0y8z8kyug7hum48tt8ytljv50/NEWS -decimals = 6 - -[NEWSHROOM] -peggy_denom = inj1e0957khyf2l5knwtdnzjr6t4d0x496fyz6fwja -decimals = 6 - -[NEWT] -peggy_denom = inj1k4gxlzrqvmttwzt2el9fltnzcdtcywutxqnahw -decimals = 18 - -[NEWTON] -peggy_denom = inj14a7q9frkgtvn53xldccsvmz8lr5u6qffu7jmmx -decimals = 8 - -[NEWYEARINJ] -peggy_denom = inj1980cshwxa5mnptp6vzngha6h2qe556anm4zjtt -decimals = 8 - -[NEXO] -peggy_denom = peggy0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206 -decimals = 18 - -[NEYMAR] -peggy_denom = inj1s2ealpaglaz24fucgjlmtrwq0esagd0yq0f5w5 -decimals = 6 - -[NFA] -peggy_denom = factory/inj1c5gk9y20ptuyjlul0w86dsxhfttpjgajhvf9lh/NFA -decimals = 6 - -[NFCTV] -peggy_denom = factory/inj14mn4n0lh52vxttlg5a4nx58pnvc2ntfnt44y4j/NFCTV -decimals = 6 - -[NFT] -peggy_denom = factory/inj1zchn2chqyv0cqfva8asg4lx58pxxhmhhhgx3t5/NFT -decimals = 6 - -[NI] -peggy_denom = factory/inj1kzaaapa8ux4z4lh8stm6vv9c5ykhtwl84zxrtl/ni -decimals = 6 - -[NICO] -peggy_denom = ibc/EED3F204DCABACBEB858B0A56017070283098A81DEB49F1F9D6702309AA7F7DE -decimals = 18 - -[NIF] -peggy_denom = factory/inj1pnwrzhnjfncxgf4jkv3zadf542tpfc3xx3x4xw/NIF -decimals = 6 - -[NIGGA] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/nigga -decimals = 6 - -[NIJIO] -peggy_denom = inj1lwgzxuv0wkz86906dfssuwgmhld8705tzcfhml -decimals = 18 - -[NIKE] -peggy_denom = inj1e2ee7hk8em3kxqxc0uuupzpzvrcda85s3lx37h -decimals = 18 - -[NIL] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/nil -decimals = 6 - -[NIM] -peggy_denom = ibc/C1BA2AC55B969517F1FCCFC47779EC83C901BE2FC3E1AFC8A59681481C74C399 -decimals = 18 - -[NIN] -peggy_denom = inj1d0z43f50a950e2vdzrlu7w8yeyy0rp5pdey43v -decimals = 18 - -[NINISHROOM] -peggy_denom = inj1vlgszdzq75lh56t5nqvxz28u0d9ftyve6pglxr -decimals = 6 - -[NINJ] -peggy_denom = factory/inj13m5k0v69lrrng4y3h5895dlkr6zcp272jmhrve/Ninjutsu -decimals = 6 - -[NINJA] -peggy_denom = factory/inj1xtel2knkt8hmc9dnzpjz6kdmacgcfmlv5f308w/ninja -decimals = 6 - -[NINJA MEME] -peggy_denom = inj1dypt8q7gc97vfqe37snleawaz2gp7hquxkvh34 -decimals = 18 - -[NINJA WIF HAT] -peggy_denom = inj1pj40tpv7algd067muqukfer37swt7esymxx2ww -decimals = 6 - -[NINJAGO] -peggy_denom = factory/inj19025raqd5rquku4ha42age7c6r7ws9jg6hrulx/NINJAGO -decimals = 6 - -[NINJAMOON] -peggy_denom = inj1etlxd0j3u83d8jqhwwu3krp0t4chrvk9tzh75e -decimals = 6 - -[NINJANGROK] -peggy_denom = inj17006r28luxtfaf7hn3jd76pjn7l49lv9le3983 -decimals = 6 - -[NINJAPE] -peggy_denom = factory/inj13sdyzwu7l4kwcjkyuyepxufjxtk2u59xkksp69/NINJAPE -decimals = 6 - -[NINJAPEPE] -peggy_denom = inj1jhufny7g2wjv4yjh5za97jauemwmecflvuguty -decimals = 18 - -[NINJAS] -peggy_denom = factory/inj1j3rm46nj4z8eckv5333897z7esectj64kufs4a/NINJAS -decimals = 6 - -[NINJASAMURAI] -peggy_denom = inj1kfr9r9vvflgyka50yykjm9l02wsazl958jffl2 -decimals = 6 - -[NINJATRUMP] -peggy_denom = factory/inj1f95tm7382nhj42e48s427nevh3rkj64xe7da5z/NINJATRUMP -decimals = 6 - -[NINJAWIFHAT] -peggy_denom = factory/inj1xukaxxx4yuaz6xys5dpuhe60un7ct9umju5ash/NWIF -decimals = 6 - -[NINJB] -peggy_denom = factory/inj1ezzzfm2exjz57hxuc65sl8s3d5y6ee0kxvu67n/ninjb -decimals = 6 - -[NINJT] -peggy_denom = inj1tp3cszqlqa7e08zcm78r4j0kqkvaccayhx97qh -decimals = 18 - -[NINPO] -peggy_denom = inj1sudjgsyhufqu95yp7rqad3g78ws8g6htf32h88 -decimals = 6 - -[NINU] -peggy_denom = inj14057e7c29klms2fzgjsm5s6serwwpeswxry6tk -decimals = 6 - -[NINZA] -peggy_denom = factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/NINZA -decimals = 6 - -[NITROID] -peggy_denom = inj1f7srklvw4cf6net8flmes4mz5xl53mcv3gs8j9 -decimals = 8 - -[NJO] -peggy_denom = inj1c8jk5qh2lhmvqs33z4y0l84trdu7zhgtd3aqrd -decimals = 18 - -[NLB] -peggy_denom = inj10s6mwhlv44sf03d5lfk4ntmplsujgftu587rzq -decimals = 18 - -[NLBZ] -peggy_denom = inj1qfmf6gmpsna8a3k6da2zcf7ha3tvf2wdep6cky -decimals = 18 - -[NLBZZ] -peggy_denom = inj1rn2yv784zf90yyq834n7juwgeurjxly8xfkh9d -decimals = 18 - -[NLC] -peggy_denom = inj1r9h59ke0a77zkaarr4tuq25r3lt9za4r2mgyf4 -decimals = 6 - -[NLT] -peggy_denom = factory/inj1995xnrrtnmtdgjmx0g937vf28dwefhkhy6gy5e/NLT -decimals = 18 - -[NNJG] -peggy_denom = inj1e8eqle6queaywa8w2ns0u9m7tldz9vv44s28p2 -decimals = 18 - -[NOBI] -peggy_denom = factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/nobi -decimals = 6 - -[NOBITCHES] -peggy_denom = factory/inj14n8f39qdg6t68s5z00t4vczvkcvzlgm6ea5vk5/nobitches -decimals = 6 - -[NOGGA] -peggy_denom = factory/inj1a7697s5yg3tsgkfrm0u5hvxm34mu8v0v3trryx/NOGGA -decimals = 6 - -[NOIA] -peggy_denom = peggy0xa8c8CfB141A3bB59FEA1E2ea6B79b5ECBCD7b6ca -decimals = 18 - -[NOIS] -peggy_denom = ibc/DD9182E8E2B13C89D6B4707C7B43E8DB6193F9FF486AFA0E6CF86B427B0D231A -decimals = 6 - -[NONE] -peggy_denom = peggy0x903ff0ba636E32De1767A4B5eEb55c155763D8B7 -decimals = 18 - -[NONJA] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1fu5u29slsg2xtsj7v5la22vl4mr4ywl7wlqeck -decimals = 18 - -[NORUG] -peggy_denom = inj1vh38phzhnytvwepqv57jj3d7q2gerf8627dje3 -decimals = 18 - -[NOVA] -peggy_denom = inj1dqcyzn9p48f0dh9xh3wxqv3hs5y3lhqr43ecs0 -decimals = 8 - -[NPEPE] -peggy_denom = factory/inj1ga982yy0wumrlt4nnj79wcgmw7mzvw6jcyecl0/NPEPE -decimals = 6 - -[NSTK] -peggy_denom = ibc/35366063B530778DC37A16AAED4DDC14C0DCA161FBF55B5B69F5171FEE19BF93 -decimals = 6 - -[NTRL] -peggy_denom = ibc/4D228A037CE6EDD54034D9656AE5850BDE871EF71D6DD290E8EC81603AD40899 -decimals = 6 - -[NTRN] -peggy_denom = ibc/6488808F32B07F6E8DCE7B700B92D9F7287D0FA1D0F76A25B11276E09DB0E626 -decimals = 6 - -[NTRUMP] -peggy_denom = inj16dv3vfngtaqfsvd07436f6v4tgzxu90f0hq0lz -decimals = 6 - -[NTY] -peggy_denom = inj1zzfltckwxs7tlsudadul960w7rdfjemlrehmrd -decimals = 18 - -[NUDES] -peggy_denom = factory/inj1dla04adlxke6t4lvt20xdxc9jh3ed609dewter/NUDES -decimals = 6 - -[NUIT] -peggy_denom = inj1kxntfyzsqpug6gea7ha4pvmt44cpvmtma2mdkl -decimals = 18 - -[NUN] -peggy_denom = inj15sgutwwu0ha5dfs5zwk4ctjz8hjmkc3tgzvjgf -decimals = 18 - -[NUNCHAKU] -peggy_denom = inj12q6sut4npwhnvjedht574tmz9vfrdqavwq7ufw -decimals = 18 - -[NWIF] -peggy_denom = factory/inj10l4tnj73fl3wferljef802t63n9el49ppnv6a8/nwif -decimals = 6 - -[NWJNS] -peggy_denom = inj1slwarzmdgzwulzwzlr2fe87k7qajd59hggvcha -decimals = 6 - -[NYAN] -peggy_denom = factory/inj1lttm52qk6hs43vqak5qyk4hl4fzu2snq2gmg0c/nyan -decimals = 6 - -[NYX] -peggy_denom = factory/inj1fnq8xx5hye89jvhmkqycj7luyy08f3tudus0cd/nyx -decimals = 6 - -[Naruto] -peggy_denom = factory/inj1j53ejjhlya29m4w8l9sxa7pxxyhjplrz4xsjqw/naruto -decimals = 6 - -[Naruto Token] -peggy_denom = factory/inj1gwkdx7lkpvq2ewpv29ptxdy9r95vh648nm8mp0/naruto -decimals = 6 - -[Neptune Receipt ATOM] -peggy_denom = inj16jf4qkcarp3lan4wl2qkrelf4kduvvujwg0780 -decimals = 6 - -[Neptune Receipt INJ] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rmzufd7h09sqfrre5dtvu5d09ta7c0t4jzkr2f -decimals = 18 - -[Neptune Receipt USDT] -peggy_denom = inj1cy9hes20vww2yr6crvs75gxy5hpycya2hmjg9s -decimals = 6 - -[Neptune Receipt WETH] -peggy_denom = inj1kehk5nvreklhylx22p3x0yjydfsz9fv3fvg5xt -decimals = 18 - -[Newt] -peggy_denom = ibc/B0A75E6F4606C844C05ED9E08335AFC50E814F210C03CABAD31562F606C69C46 -decimals = 6 - -[Nil] -peggy_denom = factory/inj1t8wuan5zxp58uwtn6j50kx4tjv25argx6lucwy/Nil -decimals = 6 - -[NinjAI] -peggy_denom = factory/inj15we00jwlnd2ahpse0xfpswk8h296p80esn2wsx/NinjAI -decimals = 6 - -[Ninja] -peggy_denom = factory/inj1p0w30l464lxl8afxqfda5zxeeypnvdtx4yjc30/Ninja -decimals = 6 - -[Ninja Labs Coin] -peggy_denom = factory/inj1r9h59ke0a77zkaarr4tuq25r3lt9za4r2mgyf4/NLC -decimals = 6 - -[Ninja Swap] -peggy_denom = inj1lzdvr2d257lazc2824xqlpnn4q50vuyhnndqhv -decimals = 8 - -[NinjaBoy] -peggy_denom = inj1vz8h0tlxt5qv3hegqlajzn4egd8fxy3mty2w0h -decimals = 6 - -[NinjaCoq] -peggy_denom = inj1aapaljp62znaxy0s2huc6ka7cx7zksqtq8xnar -decimals = 6 - -[NinjaWifHat] -peggy_denom = inj1gmch7h49qwvnn05d3nj2rzqw4l7f0y8s4g2gpf -decimals = 6 - -[Nlc] -peggy_denom = inj17uhjy4u4aqhtwdn3mfc4w60dnaa6usg30ppr4x -decimals = 18 - -[NoobDev] -peggy_denom = inj1qzlkvt3vwyd6hjam70zmr3sg2ww00l953hka0d -decimals = 6 - -[O9W] -peggy_denom = ibc/AA206C13A2AD46401BD1E8E65F96EC9BF86051A8156A92DD08BEF70381D39CE2 -decimals = 6 - -[OBEMA] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/obema -decimals = 6 - -[OCEAN] -peggy_denom = peggy0x967da4048cD07aB37855c090aAF366e4ce1b9F48 -decimals = 18 - -[OCHO] -peggy_denom = inj1ltzx4qjtgmjyglf3nnhae0qxaxezkraqdhtgcn -decimals = 8 - -[ODIN] -peggy_denom = ibc/6ED95AEFA5D9A6F9EF9CDD05FED7D7C9D7F42D9892E7236EB9B251CE9E999701 -decimals = 6 - -[OIN] -peggy_denom = ibc/09A596CF997F575F2D1E150DFECD7AAE4B44B119F4E45E0A2532EEBD1F8795FE -decimals = 6 - -[OIN STORE OF VALUE] -peggy_denom = ibc/486A0C3A5D9F8389FE01CF2656DF03DB119BC71C4164212F3541DD538A968B66 -decimals = 6 - -[OJO] -peggy_denom = inj1hg5ag8w3kwdn5hedn3mejujayvcy2gknn39rnl -decimals = 18 - -[OLY] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/oly -decimals = 6 - -[OMG] -peggy_denom = inj14wpqhfcd4q6424vskcv8xch4s0chc8cs82v4qp -decimals = 6 - -[OMI] -peggy_denom = peggy0xeD35af169aF46a02eE13b9d79Eb57d6D68C1749e -decimals = 18 - -[OMNI] -peggy_denom = peggy0x36E66fbBce51e4cD5bd3C62B637Eb411b18949D4 -decimals = 18 - -[OMT] -peggy_denom = inj1tctqgl6y4mm7qlr0x2xmwanjwa0g8nfsfykap6 -decimals = 18 - -[ONE] -peggy_denom = factory/inj1lxc2fp2n6j59q4q89vl0jfl7nz0ve7sqp6pqx4/ONE -decimals = 6 - -[ONETOONE] -peggy_denom = inj1y346c6cjj0kxpcwj5gq88la9qsp88rzlw3pg98 -decimals = 18 - -[ONI] -peggy_denom = inj1aexws9pf9g0h3032fvdmxd3a9l2u9ex9aklugs -decimals = 18 - -[ONP] -peggy_denom = inj15wvxl4xq4zrx37kvh6tsqyqysukws46reywy06 -decimals = 18 - -[ONTON] -peggy_denom = inj1a3hxfatcu7yfz0ufp233m3q2egu8al2tesu4k5 -decimals = 6 - -[OOZARU] -peggy_denom = ibc/9E161F95E105436E3DB9AFD49D9C8C4C386461271A46DBA1AB2EDF6EC9364D62 -decimals = 6 - -[OP] -peggy_denom = op -decimals = 18 - -[OPHIR] -peggy_denom = ibc/19DEC3C890D19A782A3CD0C62EA8F2F8CC09D0C9AAA8045263F40526088FEEDB -decimals = 6 - -[ORAI] -peggy_denom = ibc/C20C0A822BD22B2CEF0D067400FCCFB6FAEEE9E91D360B4E0725BD522302D565 -decimals = 6 - -[ORN] -peggy_denom = peggy0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a -decimals = 8 - -[ORNE] -peggy_denom = ibc/3D99439444ACDEE71DBC4A774E49DB74B58846CCE31B9A868A7A61E4C14D321E -decimals = 6 - -[OSMO] -peggy_denom = ibc/92E0120F15D037353CFB73C14651FC8930ADC05B93100FD7754D3A689E53B333 -decimals = 6 - -[OSMO-BOOST-LP] -peggy_denom = ibc/316146775EEA89F34D029F63EB8C8CAC5F33696CD537E23F86BDDEE93433D91A -decimals = 6 - -[OSMO-USDC-LP] -peggy_denom = ibc/EB478A301AA49FBF979839FA5F1DAF5C5DAA7FF9D330EB83920DD3E280B3DED8 -decimals = 6 - -[OSMO-YIELD-LP] -peggy_denom = ibc/C4095EE7A436CDCD76F0F9F782B67F6D62A93310A7FB9642D395802374DC67D6 -decimals = 6 - -[OUTIES] -peggy_denom = factory/inj1282wzngdg46gjuttvhxumkx65fnqx0aqmyl0lu/OUTIES -decimals = 6 - -[OUTLINES] -peggy_denom = inj1zutqugjm9nfz4tx6rv5zzj77ts4ert0umnqsjm -decimals = 6 - -[OX] -peggy_denom = peggy0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f -decimals = 18 - -[Ocean Protocol] -peggy_denom = inj1cxnqp39cn972gn2qaw2qc7hrryaa52chx7lnpk -decimals = 18 - -[OjoD] -peggy_denom = inj1ku6t0pgaejg2ykmyzvfwd2qulx5gjjsae23kgm -decimals = 18 - -[Omni Cat] -peggy_denom = factory/inj1vzmmdd2prja64hs4n2vk8n4dr8luk6522wdrgk/OMNI -decimals = 6 - -[OmniCat] -peggy_denom = inj188rmn0k9hzdy35ue7nt5lvyd9g9ldnm0v9neyz -decimals = 8 - -[One-Bit-Coin] -peggy_denom = inj1ju8j0xtaavmzwlvp3pkjhw04mkasgln2smqfed -decimals = 18 - -[Onj] -peggy_denom = inj1p9kk998d6rapzmfhjdp4ee7r5n4f2klu7xf8td -decimals = 8 - -[Open Exchange Token] -peggy_denom = ibc/3DC896EFF521814E914264A691D9D462A7108E96E53DE135FC4D91A370F4CD77 -decimals = 18 - -[Optimism] -peggy_denom = ibc/87D6CCE4CC5005B049334F0C36928196EBCE41B22DB21F5BA4AD1BE9CDBF2F95 -decimals = 18 - -[Oraichain] -peggy_denom = peggy0x4c11249814f11b9346808179Cf06e71ac328c1b5 -decimals = 18 - -[Orcat] -peggy_denom = inj1ldp0pssszyguhhey5dufagdwc5ara09fnlq8ms -decimals = 18 - -[PA1N] -peggy_denom = factory/inj1u6j86hy6a2z0ksuhuh54x6kh532e7esdfjd2k7/PA1N -decimals = 10 - -[PAIN] -peggy_denom = factory/inj1u6j86hy6a2z0ksuhuh54x6kh532e7esdfjd2k7/PAIN -decimals = 6 - -[PAMBI] -peggy_denom = factory/inj1wa976p5kzd5v2grzaz9uhdlcd2jcexaxlwghyj/PAMBI -decimals = 6 - -[PANDA] -peggy_denom = factory/inj1p8ey297l9qf835eprx4s3nlkesrugg28s23u0g/PANDA -decimals = 6 - -[PANDANINJA] -peggy_denom = factory/inj1ekvx0ftc46hqk5vfxcgw0ytd8r7u94ywjpjtt8/pandaninja -decimals = 6 - -[PANTERA] -peggy_denom = inj1hl4y29q5na4krdpk4umejwvpw4v5c3kpmxm69q -decimals = 8 - -[PARABOLIC] -peggy_denom = factory/inj126c3fck4ufvw3n0a7rsq75gx69pdxk8npnt5r5/PARABOLIC -decimals = 6 - -[PASS] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/pass -decimals = 6 - -[PAXG] -peggy_denom = peggy0x45804880De22913dAFE09f4980848ECE6EcbAf78 -decimals = 18 - -[PBB] -peggy_denom = ibc/05EC5AA673220183DBBA6825C66DB1446D3E56E5C9DA3D57D0DE5215BA7DE176 -decimals = 6 - -[PBJ] -peggy_denom = ibc/2B6F15447F07EA9DC0151E06A6926F4ED4C3EE38AB11D0A67A4E79BA97329830 -decimals = 6 - -[PBinj] -peggy_denom = inj1k4v0wzgxm5zln8asekgkdljvctee45l7ujwlr4 -decimals = 8 - -[PDIX] -peggy_denom = inj13m85m3pj3ndll30fxeudavyp85ffjaapdmhel5 -decimals = 18 - -[PEGGY0XDAC17F958D2EE523A2206206994597C13D831EC7] -peggy_denom = ibc/13EF490ADD26F95B3FEFBA0C8BC74345358B4C5A8D431AAE92CDB691CF8796FF -decimals = 0 - -[PEPE] -peggy_denom = peggy0x6982508145454Ce325dDbE47a25d4ec3d2311933 -decimals = 18 - -[PEPE Injective] -peggy_denom = inj1ytxxfuajl0fvhgy2qsx85s3t882u7qgv64kf2g -decimals = 18 - -[PEPE MEME ] -peggy_denom = inj1jev373k3l77mnhugwzke0ytuygrn8r8497zn6e -decimals = 18 - -[PEPE on INJ] -peggy_denom = factory/inj1aey234egq5efqr7zfvtzdsq6h2c5wsrma4lw7h/pepe -decimals = 1 - -[PEPEA] -peggy_denom = factory/inj1gaf6yxle4h6993qwsxdg0pkll57223qjetyn3n/PEPEA -decimals = 6 - -[PEPINJ] -peggy_denom = factory/inj12jtagr03n6fqln4q8mg06lrpaj4scwts49x2cp/pepinj -decimals = 6 - -[PETER] -peggy_denom = inj1xuqedjshmrqadvqhk4evn9kwzgkk5u9ewdua6z -decimals = 18 - -[PGN] -peggy_denom = inj1gx88hu6xjfvps4ddyap27kvgd5uxktl8ndauvp -decimals = 18 - -[PHEW] -peggy_denom = inj128usk4mqn69h9hmthqxhasyewkrhmprl7jp6lv -decimals = 6 - -[PHUC] -peggy_denom = factory/inj1995xnrrtnmtdgjmx0g937vf28dwefhkhy6gy5e/phuc -decimals = 6 - -[PHUC-INJ LP] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1jd845wf6zr4cxjne8j4580qq7cg0g5ueeaxpk4 -decimals = 18 - -[PICA] -peggy_denom = ibc/9C2212CB87241A8D038222CF66BBCFABDD08330DFA0AC9B451135287DCBDC7A8 -decimals = 12 - -[PIG] -peggy_denom = factory/inj1ruwdh4vc29t75eryvxs7vwzt7trtrz885teuwa/pig -decimals = 6 - -[PIGS] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1mcmjk2zgh5wpxkdmkevlpmah6tsmwvql78twpf -decimals = 18 - -[PIKA] -peggy_denom = factory/inj1h4usvhhva6dgmun9rk4haeh8lynln7yhk6ym00/PIKA -decimals = 6 - -[PIKACHU] -peggy_denom = factory/inj1h9zu2u6yqf3t5uym75z94zsqfhazzkyg39957u/PIKACHU -decimals = 6 - -[PIKACHU ] -peggy_denom = inj1x3m7cgzdl7402fhe29aakdwda5630r2hpx3gm2 -decimals = 18 - -[PING] -peggy_denom = inj1ty0274r9754kq8qn7hnlhmv35suq6ars7y2qnt -decimals = 18 - -[PING'S BROTHER PONG] -peggy_denom = inj1qrcr0xqraaldk9c85pfzxryjquvy9jfsgdkur7 -decimals = 18 - -[PINGDEV] -peggy_denom = inj17dlj84plm8yqjtp82mmg35494v8wjqfk29lzyf -decimals = 18 - -[PINJA] -peggy_denom = factory/inj1gyxrvcdvjr22l5fu43ng4c607nxpc8yuxslcv3/pinja -decimals = 6 - -[PINJEON] -peggy_denom = factory/inj1l73eqd7w5vu4srwmc722uwv7u9px7k5azzsqm2/pinjeon -decimals = 6 - -[PINJU] -peggy_denom = factory/inj1j43ya8q0u5dx64x362u62yq5zyvasvg98asm0d/pinju -decimals = 6 - -[PIO] -peggy_denom = factory/inj1ufkjuvf227gccns4nxjqc8vzktfvrz6y7xs9sy/PIO -decimals = 6 - -[PIPI] -peggy_denom = factory/inj1rhaefktcnhe3y73e82x4edcsn9h5y99gwmud6v/pipi -decimals = 6 - -[PIRATE] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/PIRATE -decimals = 6 - -[PIXDOG] -peggy_denom = inj1thsy9k5c90wu7sxk37r2g3u006cszqup8r39cl -decimals = 18 - -[PIXEL] -peggy_denom = inj1wmlkhs5y6qezacddsgwxl9ykm40crwp4fpp9vl -decimals = 8 - -[PIZZA] -peggy_denom = factory/inj1cus3dx8lxq2h2y9mzraxagaw8kjjcx6ul5feak/PIZZA -decimals = 6 - -[PKS] -peggy_denom = inj1m4z4gjrcq9wg6508ds4z2g43wcgynlyflaawef -decimals = 18 - -[PLASMA] -peggy_denom = ibc/6AB355A4BAB266B4C3959BE69AD29521A79A45EE7090A9F95F04910537404D0D -decimals = 6 - -[PLNK] -peggy_denom = ibc/020098CDEC3D7555210CBC1593A175A6B24253823B0B711D072EC95F76FA4D42 -decimals = 6 - -[POINT] -peggy_denom = factory/inj1zaem9jqplp08hkkd5vcl6vmvala9qury79vfj4/point -decimals = 0 - -[POK] -peggy_denom = inj18nzsj7sef46q7puphfxvr5jrva6xtpm9zsqvhh -decimals = 18 - -[POLAR] -peggy_denom = inj1kgdp3wu5pr5ftuzczpgl5arg28tz44ucsjqsn9 -decimals = 8 - -[POLLY] -peggy_denom = factory/inj1nhswhqrgfu3hpauvyeycz7pfealx4ack2c5hfp/POLLY -decimals = 6 - -[PONDO] -peggy_denom = factory/inj168pjvcxwdr28uv295fchjtkk6pc5cd0lg3h450/pondo -decimals = 6 - -[PONG] -peggy_denom = inj1lgy5ne3a5fja6nxag2vv2mwaan69sql9zfj7cl -decimals = 18 - -[POOL] -peggy_denom = peggy0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e -decimals = 18 - -[POOLDFB8434D5A80B4EAFA94B6878BD5B85265AC6C5D37204AB899B1C3C52543DA7E] -peggy_denom = ibc/9E9FFBF2C6921D1DFB3326DF5A140D1F802E336FE0BF38C0D708B62492A7326D -decimals = 0 - -[POOR] -peggy_denom = peggy0x9D433Fa992C5933D6843f8669019Da6D512fd5e9 -decimals = 8 - -[POP] -peggy_denom = factory/inj1a9dsv5whfhqptkycx4l9uly9x684lwmwuv7l3n/POP -decimals = 6 - -[POPCAT] -peggy_denom = inj1pfx2k2mtflde5yz0gz6f7xfks9klx3lv93llr6 -decimals = 18 - -[POPEYE] -peggy_denom = ibc/7E4EA08D14451712CC921456E2FBA57B54D4CA80AE9E471FAAF16610029B9145 -decimals = 6 - -[PORK] -peggy_denom = inj14u3qj9fhrc6d337vlx4z7h3zucjsfrwwvnsrnt -decimals = 18 - -[PORNGPT] -peggy_denom = inj1ptlmxvkjxmjap436v9wrryd20r2gqf94fr57ga -decimals = 8 - -[PORTAL] -peggy_denom = factory/inj163072g64wsn8a9n2mydwlx7c0aqt4l7pjseeuu/PORTAL -decimals = 6 - -[POTIN] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/POTIN -decimals = 6 - -[POTION] -peggy_denom = factory/inj1r7thtn5zj6mv9zupelkkw645ve8kgx35rf43ja/POTION -decimals = 18 - -[POTTER] -peggy_denom = factory/inj1c7h6wnfdz0dpc5llsdxfq9yemmq9nwfpr0c59r/potter -decimals = 6 - -[PPICA] -peggy_denom = ibc/455C0229DFEB1ADCA527BAE29F4F5B30EE50F282DBEB7124D2836D2DD31514C8 -decimals = 0 - -[PRERICH] -peggy_denom = factory/inj18p952tvf264784sf9f90rpge4w7dhsjrtgn4lw/prerich -decimals = 7 - -[PROD] -peggy_denom = inj1y2mev78vrd4mcfrjunnktctwqhm7hznguue7fc -decimals = 18 - -[PROMETHEUS] -peggy_denom = inj1tugjw7wy3vhtqjap22j9e62yzrurrsu4efu0ph -decimals = 8 - -[PROOF] -peggy_denom = factory/inj1jpddz58n2ugstuhp238qwwvdf3shxsxy5g6jkn/PROOF -decimals = 6 - -[PROP420] -peggy_denom = factory/inj1l2gcrfr6aenjyt5jddk79j7w5v0twskw6n70y8/PROP420 -decimals = 6 - -[PROTON-011] -peggy_denom = inj1vts6mh344msrwr885ej5naev87yesred5mp23r -decimals = 8 - -[PRYZM] -peggy_denom = ibc/2A88907A69C27C7481E478005AAD1976F044246E0CDB4DB3367EADA4EF38373B -decimals = 6 - -[PSPS] -peggy_denom = inj145p4shl9xdutc7cv0v9qpfallh3s8z64yd66rg -decimals = 18 - -[PSYCHO] -peggy_denom = factory/inj18aptztz0pxvvjzumpnd36szzljup0t7t3pauu8/psycho -decimals = 6 - -[PUFF] -peggy_denom = inj1f8kkrgrfd7utflvsq7xknuxtzf92nm80vkshu2 -decimals = 6 - -[PUG] -peggy_denom = peggy0xf9a06dE3F6639E6ee4F079095D5093644Ad85E8b -decimals = 18 - -[PUNK] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1wmrzttj7ms7glplek348vedx4v2ls467n539xt -decimals = 18 - -[PUNKINJ] -peggy_denom = inj1vq0f9sgvg0zj5hc4vvg8yd6x9wzepzq5nekh4l -decimals = 8 - -[PUPZA] -peggy_denom = factory/inj13y9m57hw2rnvdmsym8na45z9kvexy82c4n6apc/PUPZA -decimals = 6 - -[PUTIN] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/putin -decimals = 6 - -[PVP] -peggy_denom = peggy0x9B44793a0177C84DD01AD81137db696531902871 -decimals = 8 - -[PVV] -peggy_denom = inj1rk5y4m3qgm8h68z2lp3e2dqqjmpkx7m0aa84ah -decimals = 6 - -[PYTH] -peggy_denom = ibc/F3330C1B8BD1886FE9509B94C7B5398B892EA41420D2BC0B7C6A53CB8ED761D6 -decimals = 6 - -[PYTHlegacy] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1tjcf9497fwmrnk22jfu5hsdq82qshga54ajvzy -decimals = 6 - -[PYUSD] -peggy_denom = ibc/4367FD29E33CDF0487219CD3E88D8C432BD4C2776C0C1034FF05A3E6451B8B11 -decimals = 6 - -[Panda Itamae] -peggy_denom = factory/inj1wpttce7eccrutxkddtzug4xyz4ztny88httxpg/panda -decimals = 6 - -[Pedro] -peggy_denom = inj1c6lxety9hqn9q4khwqvjcfa24c2qeqvvfsg4fm -decimals = 18 - -[People] -peggy_denom = inj13pegx0ucn2e8w2g857n5828cmvl687jgq692t4 -decimals = 6 - -[Pepe] -peggy_denom = pepe -decimals = 18 - -[Phepe] -peggy_denom = inj1mtt0a4evtfxazpxjqlv5aesdn3mnysl78lppts -decimals = 8 - -[Pie] -peggy_denom = inj1m707m3ngxje4adfr86tll8z7yzm5e6eln8e3kr -decimals = 18 - -[PigFucker] -peggy_denom = factory/inj17p7p03yn0z6zmjwk4kjfd7jh7uasxwmgt8wv26/pigfucker -decimals = 6 - -[Pigs] -peggy_denom = inj1mcmjk2zgh5wpxkdmkevlpmah6tsmwvql78twpf -decimals = 18 - -[Pikachu] -peggy_denom = factory/inj1h9zu2u6yqf3t5uym75z94zsqfhazzkyg39957u/pika -decimals = 6 - -[PingDevRtard] -peggy_denom = inj1c8v52n2wyye96m4xwama3pwqkdc56gw03dlkcq -decimals = 18 - -[Point Token] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1l73x8hh6du0h8upp65r7ltzpj5twadtp5490n0 -decimals = 18 - -[Polkadot] -peggy_denom = ibc/624BA9DD171915A2B9EA70F69638B2CEA179959850C1A586F6C485498F29EDD4 -decimals = 10 - -[Popcat] -peggy_denom = popcat -decimals = 9 - -[Popeye] -peggy_denom = ibc/833095AF2D530639121F8A07E24E5D02921CA19FF3192D082E9C80210515716C -decimals = 6 - -[Punk DAO Token] -peggy_denom = factory/inj1esz96ru3guug4ctmn5chjmkymt979sfvufq0hs/PUNK -decimals = 6 - -[Punk Token] -peggy_denom = inj1wmrzttj7ms7glplek348vedx4v2ls467n539xt -decimals = 18 - -[Pyth Network (legacy)] -peggy_denom = inj1tjcf9497fwmrnk22jfu5hsdq82qshga54ajvzy -decimals = 6 - -[QAT] -peggy_denom = inj1m4g54lg2mhhm7a4h3ms5xlyecafhe4macgsuen -decimals = 8 - -[QNT] -peggy_denom = peggy0x4a220E6096B25EADb88358cb44068A3248254675 -decimals = 18 - -[QOC] -peggy_denom = inj1czcj5472ukkj6pect59z5et39esr3kvquxl6dh -decimals = 8 - -[QTUM] -peggy_denom = factory/inj1jgc9ptfwgyapfrr0kgdjjnwpdqck24pp59uma3/qtum -decimals = 0 - -[QTest] -peggy_denom = factory/inj1dda3mee75nppg9drvx8zc88zdj4qzvmlnrtrnh/QTest -decimals = 6 - -[QUNT] -peggy_denom = factory/inj127l5a2wmkyvucxdlupqyac3y0v6wqfhq03ka64/qunt -decimals = 6 - -[QUNT-INJ LP] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1l6e65hq8w79zepulpt768rj8qd2e2qejxl5uga -decimals = 18 - -[QUOK] -peggy_denom = factory/inj1jdnjwhcjhpw8v0cmk80r286w5d426ns6tw3nst/QUOK -decimals = 6 - -[Quants] -peggy_denom = factory/inj1yttneqwxxc4qju4p54549p6dq2j0d09e7gdzx8/Quants -decimals = 6 - -[RAA] -peggy_denom = inj1vzpjnmm4s9qa74x2n7vgcesq46afjj5yfwvn4q -decimals = 18 - -[RAB] -peggy_denom = inj1xmdyafnth7g6pvg6zd687my3ekw3htvh95t2c8 -decimals = 18 - -[RAC] -peggy_denom = inj1y6dgj675ttk2tzeasdwsk6n7etn0cfh9wz20vy -decimals = 18 - -[RAD] -peggy_denom = inj1r9wxpyqp4a75k9dhk5qzcfmkwtrg7utgrvx0zu -decimals = 18 - -[RAE] -peggy_denom = inj1lvtcdka9prgtugcdxeyw5kd9rm35p0y2whwj7j -decimals = 18 - -[RAF] -peggy_denom = inj1l8hztn806saqkacw8rur4qdgexp6sl7k0n6xjm -decimals = 18 - -[RAG] -peggy_denom = inj1k45q0qf0jwepajlkqcx5a6w833mm0lufzz0kex -decimals = 18 - -[RAH] -peggy_denom = inj1mpcxzhkk0c7wjrwft2xafsvds9un59gfdml706 -decimals = 18 - -[RAI] -peggy_denom = peggy0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919 -decimals = 18 - -[RAMEN] -peggy_denom = factory/inj1z5utcc5u90n8a5m8gv30char6j4hdzxz6t3pke/ramen -decimals = 6 - -[RAMEN2] -peggy_denom = factory/inj15d5v02thnac8mc79hx0nzuz4rjxuccy7rc63x3/RAMEN2 -decimals = 6 - -[RAMEN22] -peggy_denom = factory/inj15d5v02thnac8mc79hx0nzuz4rjxuccy7rc63x3/RAMEN22 -decimals = 6 - -[RAMENV2] -peggy_denom = factory/inj15d5v02thnac8mc79hx0nzuz4rjxuccy7rc63x3/RAMENV2 -decimals = 6 - -[RAMSES] -peggy_denom = inj1jttaxqcjtsys54k3m6mx4kzulzasg4tc6hhpp6 -decimals = 8 - -[RAPTR] -peggy_denom = ibc/592FDF11D4D958105B1E4620FAECAA6708655AB815F01A01C1540968893CDEBF -decimals = 6 - -[RATJA] -peggy_denom = inj1kl5pzllv782r8emj3umgn3dwcewc6hw6xdmvrv -decimals = 18 - -[RAY] -peggy_denom = factory/inj1ckddr5lfwjvm2lvtzra0ftx7066seqr3navva0/RAY -decimals = 6 - -[REAL] -peggy_denom = inj1uhralmk73lkxeyd9zhskmzz44lsmcxneluqgp9 -decimals = 18 - -[REALS] -peggy_denom = inj1g3l8chts5wrt437tkpmuy554wcky6devphqxf0 -decimals = 18 - -[RED] -peggy_denom = inj15ytmt6gng36relzntgz0qmgfqnygluz894yt28 -decimals = 18 - -[REDINJ] -peggy_denom = inj1jkts7lhvwx27z92l6dwgz6wpyd0xf9wu6qyfrh -decimals = 18 - -[REFIs] -peggy_denom = factory/inj1uklzzlu9um8rq922czs8g6f2ww760xhvgr6pat/REFIs -decimals = 6 - -[REIS] -peggy_denom = ibc/444BCB7AC154587F5D4ABE36EF6D7D65369224509DCBCA2E27AD539519DD66BB -decimals = 6 - -[RETRO] -peggy_denom = ibc/ACDEFBA440F37D89E2933AB2B42AA0855C30852588B7DF8CD5FBCEB0EB1471EB -decimals = 6 - -[RHINO] -peggy_denom = inj1t5f60ewnq8hepuvmwnlm06h0q23fxymldh0hpr -decimals = 6 - -[RIBBIT] -peggy_denom = peggy0xb794Ad95317f75c44090f64955954C3849315fFe -decimals = 18 - -[RICE] -peggy_denom = factory/inj1mt876zny9j6xae25h7hl7zuqf7gkx8q63k0426/rice -decimals = 12 - -[RICHINJ] -peggy_denom = inj143l8dlvhudhzuggrp5sakwmn8kw24hutr43fe2 -decimals = 8 - -[RICK] -peggy_denom = factory/inj1ga7xu92w0yxhedk92v6ckge6q76vx2hxcwxsxx/RICK -decimals = 6 - -[RIP] -peggy_denom = inj1eu8ty289eyjvm4hcrg70n4u95jggh9eekfxs5y -decimals = 18 - -[RITSU] -peggy_denom = inj17cqglnfpx7w20pc6urwxklw6kkews4hmfj6z28 -decimals = 18 - -[RKO] -peggy_denom = factory/inj1muuaghrdm2rfss9cdpxzhk3v7xqj8ltngrm0xd/RKO -decimals = 6 - -[RKT] -peggy_denom = factory/inj1af5v85xm5upykzsjj29lpr9dyp4n37746kpfmq/RKT -decimals = 6 - -[RNDR] -peggy_denom = inj1092d3j7yqup5c8lp92vv5kadl567rynj59yd92 -decimals = 18 - -[ROAR] -peggy_denom = ibc/E6CFB0AC1D339A8CBA3353DF0D7E080B4B14D026D1C90F63F666C223B04D548C -decimals = 6 - -[ROB] -peggy_denom = inj1x6lvx8s2gkjge0p0dnw4vscdld3rdcw94fhter -decimals = 18 - -[ROCK] -peggy_denom = factory/inj1xjcq2ch3pacc9gql24hfwpuvy9gxszxpz7nzmz/rock -decimals = 6 - -[ROCKET] -peggy_denom = inj1zrw6acmpnghlcwjyrqv0ta5wmzute7l4f0n3dz -decimals = 8 - -[ROLL] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1qv98cmfdaj5f382a0klq7ps4mnjp6calzh20h3 -decimals = 18 - -[ROM] -peggy_denom = inj16w9qp30vrpng8kr83efvmveen688klvtd00qdy -decimals = 6 - -[ROMAN] -peggy_denom = inj1h3z3gfzypugnctkkvz7vvucnanfa5nffvxgh2z -decimals = 18 - -[RONI] -peggy_denom = factory/inj13y9m57hw2rnvdmsym8na45z9kvexy82c4n6apc/RONI -decimals = 6 - -[RONIN] -peggy_denom = inj142hawfqncg5hd3z7rvpvx7us0h7c4mwjmeslpu -decimals = 6 - -[RONOLDO] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/ronoldo -decimals = 6 - -[ROOT] -peggy_denom = peggy0xa3d4BEe77B05d4a0C943877558Ce21A763C4fa29 -decimals = 6 - -[RSNL] -peggy_denom = factory/inj1uvexgrele9lr5p87kksg6gmz2telncpe0mxsm6/RSNL -decimals = 6 - -[RSTK] -peggy_denom = ibc/102810E506AC0FB1F14755ECA7A1D05066E0CBD574526521EF31E9B3237C0C02 -decimals = 6 - -[RTD] -peggy_denom = inj1ek524mnenxfla235pla3cec7ukmr3fwkgf6jq3 -decimals = 18 - -[RUDY] -peggy_denom = factory/inj1ykggxun6crask6eywr4a2lfy36f4we5l9rg2an/RUDY -decimals = 6 - -[RUG] -peggy_denom = factory/inj174r3j8pm93gfcdu0g36dg6g7u0alygppypa45e/RUG -decimals = 6 - -[RUGAOI] -peggy_denom = factory/inj1pe8rs2gfmem5ak8vtqkduzkgcyargk2fg6u4as/RUGAOI -decimals = 6 - -[RUGMYASS] -peggy_denom = inj18n9rpsstxsxgpmgegkn6fsvq9x3alqekqddgnq -decimals = 18 - -[RUGPULL] -peggy_denom = factory/inj1vrktrmvtxkzd52kk45ptc5m53zncm56d278qza/RUGPULL -decimals = 6 - -[RUMBLERZ] -peggy_denom = inj1pcwdvq866uqd8lhpmasya2xqw9hk2u0euvvqxl -decimals = 8 - -[RUNE] -peggy_denom = peggy0x3155BA85D5F96b2d030a4966AF206230e46849cb -decimals = 18 - -[RYAN] -peggy_denom = inj1mng4fr0ckvrq8xvgtsjrj6mqzm7passfzjqxcx -decimals = 6 - -[RYU] -peggy_denom = factory/inj1cm0jn67exeqm5af8lrlra4epfhyk0v38w98g42/ryu -decimals = 18 - -[Rai Reflex Index] -peggy_denom = ibc/27817BAE3958FFB2BFBD8F4F6165153DFD230779994A7C42A91E0E45E8201768 -decimals = 18 - -[RealMadrid] -peggy_denom = factory/inj1a7697s5yg3tsgkfrm0u5hvxm34mu8v0v3trryx/RealMadrid -decimals = 6 - -[Rice Token] -peggy_denom = inj1j6qq40826d695eyszmekzu5muzmdey5mxelxhl -decimals = 18 - -[RileyReid] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/rileyreid -decimals = 6 - -[Rise] -peggy_denom = inj123aevc4lmpm09j6mqemrjpxgsa7dncg2yn2xt7 -decimals = 18 - -[Roll] -peggy_denom = inj15wuxx78q5p9h7fqg3ux7zljczj7jh5qxqhrevv -decimals = 18 - -[Roll Token] -peggy_denom = inj1qv98cmfdaj5f382a0klq7ps4mnjp6calzh20h3 -decimals = 18 - -[Rush] -peggy_denom = inj1r2gjtqgzhfcm4wgvmctpuul2m700v4ml24l7cq -decimals = 18 - -[SAE] -peggy_denom = factory/inj152mdu38fkkk4fl7ycrpdqxpm63w3ztadgtktyr/SAE -decimals = 6 - -[SAFAS] -peggy_denom = inj1vphq25x2r69mpf2arzsut8yxcav709kwd3t5ck -decimals = 18 - -[SAFEMOON] -peggy_denom = factory/inj1pgkwcngxel97d9qjvg75upe8y3lvvzncq5tdr0/safemoon -decimals = 6 - -[SAGA] -peggy_denom = ibc/AF921F0874131B56897A11AA3F33D5B29CD9C147A1D7C37FE8D918CB420956B2 -decimals = 6 - -[SAIL] -peggy_denom = ibc/2718A31D59C81CD1F972C829F097BDBE32D7B84025F909FFB6163AAD314961B3 -decimals = 6 - -[SAKE] -peggy_denom = factory/inj1mdyw30cuct3haazw546t4t92sadeuwde0tmqxx/SAKE -decimals = 6 - -[SAKI] -peggy_denom = factory/inj1gg43076kmy0prkxtn5xxka47lfmwwjsq6ygcfa/SAKI -decimals = 6 - -[SAKURA] -peggy_denom = factory/inj183fjyma33jsx0wndkmk69yukk3gpll7gunkyz6/sakura -decimals = 6 - -[SALT] -peggy_denom = factory/inj15e6p3slz9pa7kcn280y7hgp6rvhsqm3vnczlaw/salt -decimals = 6 - -[SAM] -peggy_denom = factory/inj1wuw7wa8fvp0leuyvh9ypzmndduzd5vg0xc77ha/sam -decimals = 6 - -[SAMI] -peggy_denom = factory/inj13jvw7hl6hkyg8a8ltag47xyzxcc6h2qkk0u9kr/SAMI -decimals = 6 - -[SAMOORAII] -peggy_denom = factory/inj1056f9jwmdxjmc3xf3urpka00gjfsnna7ct3gy3/SAMOORAII -decimals = 6 - -[SAMP] -peggy_denom = inj1xd2l3406kypepnnczcn6fm0lnmsk6qk7dakryn -decimals = 18 - -[SAMURAI] -peggy_denom = factory/inj16nffej2c5xx93lf976wkp7vlhenau464rawhkc/samurai -decimals = 6 - -[SANSU] -peggy_denom = factory/inj1x5thnvjfwzmtxxhqckrap8ysgs2duy29m4xwsp/sansu -decimals = 6 - -[SANTA] -peggy_denom = factory/inj12qf874wcfxtxt004qmuhdtxw4l6d0f5w6cyfpz/santa -decimals = 6 - -[SANTABONK] -peggy_denom = inj1zjdtxmvkrxcd20q8nru4ws47nemkyxwnpuk34v -decimals = 8 - -[SANTAGODX] -peggy_denom = inj1j8nvansvyvhnz4vzf5d8cyjpwu85ksdhyjf3n4 -decimals = 8 - -[SANTAINJ] -peggy_denom = inj17cqy5lr4gprjgnlv0j2mw4rhqfhr9zpupkur8t -decimals = 8 - -[SANTAMEME] -peggy_denom = inj1dds0a220twm3pjprypmy0qun3cn727hzj0tpaa -decimals = 8 - -[SASUKE] -peggy_denom = inj1alpg8nw7lw8uplsrah8q0qn66rqq0fxzd3wf9f -decimals = 18 - -[SATOR] -peggy_denom = factory/inj1lv5ndarq6jcpysf9yuf7zmk656qq0r87led75v/SATOR -decimals = 6 - -[SATOSHIVM] -peggy_denom = inj1y7pvzc8h05e8qs9de2c9qcypxw6xkj5wttvm70 -decimals = 8 - -[SATS] -peggy_denom = inj1ck568jpww8wludqh463lk6h32hhe58u0nrnnxe -decimals = 8 - -[SAVEOURSTRAYS] -peggy_denom = factory/inj1a5h6erkyttcsyjmrn4k3rxyjuktsxq4fnye0hg/SAVEOURSTRAYS -decimals = 6 - -[SAVM] -peggy_denom = inj1wuw0730q4rznqnhkw2nqwk3l2gvun7mll9ew3n -decimals = 6 - -[SAYVE] -peggy_denom = ibc/DF2B99CF1FEA6B292E79617BD6F7EF735C0B47CEF09D7104E270956E96C38B12 -decimals = 6 - -[SB] -peggy_denom = inj1cqq89rjk4v5a0teyaefqje3skntys7q6j5lu2p -decimals = 8 - -[SBF] -peggy_denom = factory/inj1j2me24lslpaa03fw8cuct8586t6f6qf0wcf4fm/SBF -decimals = 6 - -[SCAM] -peggy_denom = inj1f9rppeq5yduz2te5fxxwnalg54lsa3ac6da5fg -decimals = 18 - -[SCLX] -peggy_denom = factory/inj1faq30xe497yh5ztwt00krpf9a9lyakg2zhslwh/SCLX -decimals = 6 - -[SCORPION] -peggy_denom = factory/inj10w3p2qyursc03crkhg9djdm5tnu9xg63r2zumh/scorpion -decimals = 6 - -[SCRT] -peggy_denom = ibc/0954E1C28EB7AF5B72D24F3BC2B47BBB2FDF91BDDFD57B74B99E133AED40972A -decimals = 6 - -[SDEX] -peggy_denom = peggy0x5DE8ab7E27f6E7A1fFf3E5B337584Aa43961BEeF -decimals = 18 - -[SDOGE] -peggy_denom = inj1525sjr836apd4xkz8utflsm6e4ecuhar8qckhd -decimals = 8 - -[SEAS] -peggy_denom = ibc/FF5AC3E28E50C2C52063C18D0E2F742B3967BE5ACC6D7C8713118E54E1DEE4F6 -decimals = 6 - -[SECOND] -peggy_denom = inj1rr08epad58xlg5auytptgctysn7lmsk070qeer -decimals = 18 - -[SEI] -peggy_denom = factory/inj1hae0z4qsxw90ghy249ymghyz2ewa0ww3qrkyx2/SEI -decimals = 6 - -[SEIFU] -peggy_denom = inj1jtenkjgqhwxdl93eak2aark5s9kl72awc4rk47 -decimals = 6 - -[SEISEI] -peggy_denom = factory/inj1lm95gdmz7qatcgw933t97rg58wnzz3dpxv7ldk/SEISEI -decimals = 6 - -[SEIWHAT?] -peggy_denom = inj1qjgtplwsrflwgqjy0ffp72mfzckwsqmlq2ml6n -decimals = 8 - -[SEIYAN] -peggy_denom = ibc/ECC41A6731F0C6B26606A03C295236AA516FA0108037565B7288868797F52B91 -decimals = 6 - -[SEKIRO] -peggy_denom = factory/inj1nn8xzngf2ydkppk2h0n9nje72ttee726hvjplx/Sekiro -decimals = 6 - -[SENJU] -peggy_denom = factory/inj1qdamq2fk7xs6m34qv8swl9un04w8fhk42k35e5/SENJU -decimals = 6 - -[SENSEI] -peggy_denom = factory/inj1qpv9su9nkkka5djeqjtt5puwn6lw90eh0yfy0f/sensei -decimals = 6 - -[SEQUENCE] -peggy_denom = factory/inj1nz984w2xnpwrtzsj7mt8rsc57vyhpwa360fq2r/sequence -decimals = 6 - -[SER] -peggy_denom = inj128cqeg7a78k64xdxsr6v5s6js97dxjgxynwdxc -decimals = 18 - -[SEUL] -peggy_denom = ibc/1C17C28AEA3C5E03F1A586575C6BE426A18B03B48C11859B82242EF32D372FDA -decimals = 6 - -[SEX] -peggy_denom = factory/inj174r3j8pm93gfcdu0g36dg6g7u0alygppypa45e/SEX -decimals = 6 - -[SHARINGAN] -peggy_denom = factory/inj1056f9jwmdxjmc3xf3urpka00gjfsnna7ct3gy3/SHARINGAN -decimals = 18 - -[SHARK] -peggy_denom = ibc/08B66006A5DC289F8CB3D7695F16D211D8DDCA68E4701A1EB90BF641D8637ACE -decimals = 6 - -[SHARP] -peggy_denom = inj134p6skwcyjac60d2jtff0daps7tvzuqj4n56fr -decimals = 8 - -[SHB] -peggy_denom = inj19zzdev3nkvpq26nfvdcm0szp8h272u2fxf0myv -decimals = 6 - -[SHBL] -peggy_denom = factory/inj1zp8a6nhhf3hc9pg2jp67vlxjmxgwjd8g0ck9mq/SHBL -decimals = 6 - -[SHENZI] -peggy_denom = factory/inj1e05u43qmn9jt502784c009u4elz5l86678esrk/SHENZI -decimals = 6 - -[SHI] -peggy_denom = inj1w7wwyy6pjs9k2ecxte8p6tp8g7kh6k3ut402af -decimals = 6 - -[SHIB] -peggy_denom = peggy0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE -decimals = 18 - -[SHIB-WEI] -peggy_denom = ibc/07794B62FE5A48C49C27966BBF566CD447418A2DBAD9CB7F3C01B297040909A5 -decimals = 0 - -[SHIBINJ] -peggy_denom = factory/inj13yzzxz90naqer4utnp03zlj5rguhu7v0hd2jzl/SHIBINJ -decimals = 6 - -[SHIELD] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/SHIELD -decimals = 6 - -[SHINJ] -peggy_denom = factory/inj1h3vg2546p42hr955a7fwalaexjrypn8npds0nq/SHINJ -decimals = 6 - -[SHINJU] -peggy_denom = factory/inj1my757j0ndftrsdf2tuxsdhhy5qfkpuxw4x3wnc/shinju -decimals = 6 - -[SHINOBI] -peggy_denom = factory/inj1xawhm3d8lf9n0rqdljpal033yackja3dt0kvp0/SHINOBI -decimals = 6 - -[SHIRO] -peggy_denom = factory/inj1wu5464syj9xmud55u99hfwhyjd5u8fxfmurs8j/shiro -decimals = 6 - -[SHITMOS] -peggy_denom = ibc/96C34D4D443A2FBCA10B120679AB50AE61195DF9D48DEAD60F798A6AC6B3B653 -decimals = 6 - -[SHOGUN] -peggy_denom = factory/inj1yg24mn8enl5e6v4jl2j6cce47mx4vyd6e8dpck/shogun -decimals = 6 - -[SHRK] -peggy_denom = factory/inj15xhherczv9q83lgdx3zna66s3pcznq6v2sh53d/SHRK -decimals = 6 - -[SHROOM] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1300xcg9naqy00fujsr9r8alwk7dh65uqu87xm8 -decimals = 18 - -[SHSA] -peggy_denom = inj1tsrxu2pxusyn24zgxyh2z36apxmhu22jfwd4v7 -decimals = 18 - -[SHT] -peggy_denom = factory/inj1sp8s6ng0e8a7q5dqywgyupwjyjgq2sk553t6r5/SHT -decimals = 6 - -[SHU] -peggy_denom = factory/inj1mllxwgvx0zhhr83rfawjl05dmuwwzfcrs9xz6t/SHU -decimals = 6 - -[SHURIKEN] -peggy_denom = factory/inj1gflhshg8yrk8rrr3sgswhmsnygw9ghzdsn05a0/shuriken -decimals = 6 - -[SILLY] -peggy_denom = inj19j6q86wt75p3pexfkajpgxhkjht589zyu0e4rd -decimals = 8 - -[SIMPSONS] -peggy_denom = factory/inj168pjvcxwdr28uv295fchjtkk6pc5cd0lg3h450/simpsons -decimals = 6 - -[SINU] -peggy_denom = inj1mxjvtp38yj866w7djhm9yjkwqc4ug7klqrnyyj -decimals = 8 - -[SJAKE] -peggy_denom = factory/inj1s4xa5jsp5sfv5nql5h3c2l8559l7rqyzckheha/SJAKE -decimals = 6 - -[SKI] -peggy_denom = inj167xkgla9kcpz5gxz6ak4vrqs7nqxr08kvyfqkz -decimals = 18 - -[SKIBIDI] -peggy_denom = factory/inj1ztugej2ytfwj9kxa8m5md85e5z3v8jvaxapz6n/skibidi -decimals = 6 - -[SKIPBIDIDOBDOBDOBYESYESYESYES] -peggy_denom = peggy0x5085202d0A4D8E4724Aa98C42856441c3b97Bc6d -decimals = 9 - -[SKR] -peggy_denom = factory/inj1xjcq2ch3pacc9gql24hfwpuvy9gxszxpz7nzmz/sakura -decimals = 6 - -[SKULL] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/SKULL -decimals = 6 - -[SKULLS] -peggy_denom = inj1qk4cfp3su44qzragr55fc9adeehle7lal63jpz -decimals = 18 - -[SKYPE] -peggy_denom = inj1e9nezwf7wvjj4rzfkjfad7teqjfa7r0838f6cs -decimals = 18 - -[SLOTH] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/sloth -decimals = 6 - -[SMART] -peggy_denom = factory/inj105ujajd95znwjvcy3hwcz80pgy8tc6v77spur0/SMART -decimals = 6 - -[SMAUG] -peggy_denom = inj1a2wzkydpw54f8adq76dkf6kwx6zffnjju93r0y -decimals = 18 - -[SMB] -peggy_denom = inj13xkzlcd490ky7uuh3wwd48r4qy35hlhqxjpe0r -decimals = 18 - -[SMELLY] -peggy_denom = factory/inj10pz3xq7zf8xudqxaqealgyrnfk66u3c99ud5m2/SMELLY -decimals = 6 - -[SMILE] -peggy_denom = factory/inj1tuwuzza5suj9hq4n8pwlfw2gfua8223jfaa6v7/SMILE -decimals = 6 - -[SMLE] -peggy_denom = inj13ent4rmkzf2dht7hnlhg89t527k8xn5ft92e69 -decimals = 18 - -[SMOKE] -peggy_denom = factory/inj1t0vyy5c3cnrw9f0mpjz9xk7fp22ezjjmrza7xn/SMOKE -decimals = 6 - -[SMOKEe] -peggy_denom = factory/inj1t0vyy5c3cnrw9f0mpjz9xk7fp22ezjjmrza7xn/SMOKEe -decimals = 6 - -[SNAPPY] -peggy_denom = factory/inj13y5nqf8mymy9tfxkg055th7hdm2uaahs9q6q5w/SNAPPY -decimals = 6 - -[SNAPPY inj] -peggy_denom = inj19dfkr2rm8g5kltyu93ppgmvdzj799vug2m9jqp -decimals = 18 - -[SNARL] -peggy_denom = factory/inj1dskk29zmzjtc49w3fjxac4q4m87yg7gshw8ps9/SNARL -decimals = 6 - -[SNASA] -peggy_denom = factory/inj1peusyhlu85s3gq82tz8jcfxzkszte4zeqhdthw/SNASA -decimals = 6 - -[SNEK] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/snek -decimals = 6 - -[SNIPE] -peggy_denom = factory/inj16g5w38hqehsmye9yavag0g0tw7u8pjuzep0sys/SNIPE -decimals = 6 - -[SNIPEONE] -peggy_denom = inj146tnhg42q52jpj6ljefu6xstatactyd09wcgwh -decimals = 18 - -[SNIPER] -peggy_denom = factory/inj1qzxna8fqr56g83rvyyylxnyghpguzt2jx3dgr8/SNIPER -decimals = 6 - -[SNJT] -peggy_denom = inj1h6hma5fahwutgzynjrk3jkzygqfxf3l32hv673 -decimals = 18 - -[SNOWY] -peggy_denom = factory/inj1ml33x7lkxk6x2x95d3alw4h84evlcdz2gnehmk/SNOWY -decimals = 6 - -[SNS] -peggy_denom = ibc/4BFB3FB1903142C5A7570EE7697636436E52FDB99AB8ABE0257E178A926E2568 -decimals = 8 - -[SNX] -peggy_denom = peggy0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F -decimals = 18 - -[SOCRATES] -peggy_denom = inj18qupdvxmgswj9kfz66vaw4d4wn0453ap6ydxmy -decimals = 8 - -[SOGGS] -peggy_denom = factory/inj1c0f9ze9wh2xket0zs6wy59v66alwratsdx648k/soggs -decimals = 6 - -[SOK] -peggy_denom = inj1jdpc9y459hmce8yd699l9uf2aw97q3y7kwhg7t -decimals = 18 - -[SOKE] -peggy_denom = inj1ryqavpjvhfj0lewule2tvafnjga46st2q7dkee -decimals = 18 - -[SOL] -peggy_denom = ibc/A8B0B746B5AB736C2D8577259B510D56B8AF598008F68041E3D634BCDE72BE97 -decimals = 8 - -[SOLANAinj] -peggy_denom = inj18e7x9myj8vq58ycdutd6eq6luy7frrp4d2nglr -decimals = 6 - -[SOLinj] -peggy_denom = inj1n9nga2t49ep9hvew5u8xka0d4lsrxxg4cw4uaj -decimals = 6 - -[SOLlegacy] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1sthrn5ep8ls5vzz8f9gp89khhmedahhdkqa8z3 -decimals = 8 - -[SOMM] -peggy_denom = ibc/34346A60A95EB030D62D6F5BDD4B745BE18E8A693372A8A347D5D53DBBB1328B -decimals = 6 - -[SONICFLOKITRUMPSPIDERMAN INU] -peggy_denom = inj16afzhsepkne4vc7hhu7fzx4cjpgkqzagexqaz6 -decimals = 8 - -[SONINJ] -peggy_denom = factory/inj1cm5lg3z9l3gftt0c09trnllmayxpwt8825zxw3/soninj -decimals = 6 - -[SOS] -peggy_denom = inj13wdqnmv40grlmje48akc2l0azxl38d2wzl5t92 -decimals = 6 - -[SPDR] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/spdr -decimals = 6 - -[SPK] -peggy_denom = inj18wclk6g0qwwqxa36wd4ty8g9eqgm6q04zjgnpp -decimals = 18 - -[SPONCH] -peggy_denom = factory/inj1qw7egul6sr0yjpxfqq5qars2qvxucgp2sartet/sponch -decimals = 6 - -[SPOONWORMS] -peggy_denom = inj1qt3c5sx94ag3rn7403qrwqtpnqthg4gr9cccrx -decimals = 6 - -[SPORTS] -peggy_denom = factory/inj1dewkg7z8vffqxk7jcer6sf9ttnx54z0c6gfjw6/SPORTS -decimals = 6 - -[SPUUN] -peggy_denom = factory/inj1flkktfvf8nxvk300f2z3vxglpllpw59c563pk7/SPUUN -decimals = 6 - -[SPUUN INJ] -peggy_denom = inj1zrd6wwvyh4rqsx5tvje6ug6qd2xtn0xgu6ylml -decimals = 18 - -[SQRL] -peggy_denom = peggy0x762dD004fc5fB08961449dd30cDf888efb0Adc4F -decimals = 18 - -[SQUID] -peggy_denom = factory/inj1a7697s5yg3tsgkfrm0u5hvxm34mu8v0v3trryx/SQUID -decimals = 6 - -[SSFS] -peggy_denom = inj1m7hd99423w39aug74f6vtuqqzvw5vp0h2e85u0 -decimals = 6 - -[SSTST] -peggy_denom = factory/inj1wmu4fq03zvu60crvjdhksk62e8m08xsn9d5nv3/stream-swap-test -decimals = 0 - -[STAKELAND] -peggy_denom = inj1sx4mtq9kegurmuvdwddtr49u0hmxw6wt8dxu3v -decimals = 8 - -[STAR] -peggy_denom = inj1nkxdx2trqak6cv0q84sej5wy23k988wz66z73w -decimals = 8 - -[STARK] -peggy_denom = factory/inj106etgay573e32ksysc9dpdrynxhk7kkmaclhfc/stark -decimals = 6 - -[STARS] -peggy_denom = peggy0xc55c2175E90A46602fD42e931f62B3Acc1A013Ca -decimals = 18 - -[STINJ] -peggy_denom = ibc/AC87717EA002B0123B10A05063E69BCA274BA2C44D842AEEB41558D2856DCE93 -decimals = 18 - -[STINJER] -peggy_denom = factory/inj1fepsfp58ff2l7fasj47ytwrrwwp6k7uz6uhfvn/stinjer -decimals = 6 - -[STK/UATOM] -peggy_denom = ibc/BBA6CC7A35489A10596662AC4E49D3BA6288330B79CA5315AF7D892C7CFD96D9 -decimals = 0 - -[STL] -peggy_denom = inj1m2pce9f8wfql0st8jrf7y2en7gvrvd5wm573xc -decimals = 18 - -[STRD] -peggy_denom = ibc/3FDD002A3A4019B05A33D324B2F29748E77AF501BEA5C96D1F28B2D6755F9F25 -decimals = 6 - -[STT] -peggy_denom = peggy0xaC9Bb427953aC7FDDC562ADcA86CF42D988047Fd -decimals = 18 - -[STX] -peggy_denom = stx -decimals = 6 - -[SUGAR] -peggy_denom = factory/inj1qukvpzhyjguma030s8dmvw4lxaluvlqq5jk3je/SUGAR -decimals = 6 - -[SUI] -peggy_denom = sui -decimals = 9 - -[SUMO] -peggy_denom = factory/inj15e6p3slz9pa7kcn280y7hgp6rvhsqm3vnczlaw/sumo -decimals = 6 - -[SUMOCOCO] -peggy_denom = factory/inj1056f9jwmdxjmc3xf3urpka00gjfsnna7ct3gy3/SUMOCOCO -decimals = 6 - -[SUPE] -peggy_denom = factory/inj1rl4sadxgt8c0qhl4pehs7563vw7j2dkz80cf55/SUPE -decimals = 6 - -[SUPERMARIO] -peggy_denom = inj1mgts7d5c32w6aqr8h9f5th08x0p4jaya2tp4zp -decimals = 18 - -[SUSHI] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1n73yuus64z0yrda9hvn77twkspc4uste9j9ydd -decimals = 18 - -[SUSHI FIGHTER] -peggy_denom = inj1n73yuus64z0yrda9hvn77twkspc4uste9j9ydd -decimals = 18 - -[SUSHII] -peggy_denom = inj1p6evqfal5hke6x5zy8ggk2h5fhn4hquk63g20d -decimals = 6 - -[SVM] -peggy_denom = inj1jyhzeqxnh8qnupt08gadn5emxpmmm998gwhuvv -decimals = 8 - -[SVN] -peggy_denom = inj1u4zp264el8hyxsqkeuj5yesp8pqmfh4fya86w6 -decimals = 18 - -[SWAP] -peggy_denom = peggy0xCC4304A31d09258b0029eA7FE63d032f52e44EFe -decimals = 18 - -[SWP] -peggy_denom = ibc/70CF1A54E23EA4E480DEDA9E12082D3FD5684C3483CBDCE190C5C807227688C5 -decimals = 6 - -[SWTH] -peggy_denom = ibc/8E697D6F7DAC1E5123D087A50D0FE0EBDD8A323B90DC19C7BA8484742AEB2D90 -decimals = 8 - -[SXC] -peggy_denom = inj1a4lr8sulev42zgup2g0sk8x4hl9th20cj4fqmu -decimals = 8 - -[SXI] -peggy_denom = inj12mjzeu7qrhn9w85dd02fkvjt8hgaewdk6j72fj -decimals = 8 - -[SYN] -peggy_denom = factory/inj1a6xdezq7a94qwamec6n6cnup02nvewvjtz6h6e/SYN -decimals = 6 - -[SamOrai] -peggy_denom = inj1a7fqtlllaynv6l4h2dmtzcrucx2a9r04e5ntnu -decimals = 18 - -[Samurai] -peggy_denom = factory/inj1s5php9vmd03w6nszlnsny43cmuhw3y6u3vt7qc/samurai -decimals = 6 - -[Samurai dex token] -peggy_denom = factory/inj1c0f9ze9wh2xket0zs6wy59v66alwratsdx648k/samurai -decimals = 6 - -[Santa] -peggy_denom = factory/inj1mwsgdlq6rxs3xte8p2m0pcw565czhgngrxgl38/Santa -decimals = 6 - -[SantaInjective] -peggy_denom = inj19wccuev2399ad0ftdfyvw8h9qq5dvqxqw0pqxe -decimals = 8 - -[Satoru Gojo] -peggy_denom = inj1hwc0ynah0xv6glpq89jvm3haydhxjs35yncuq2 -decimals = 6 - -[Sei] -peggy_denom = ibc/0D0B98E80BA0158D325074100998A78FB6EC1BF394EFF632E570A5C890ED7CC2 -decimals = 6 - -[Sekiro] -peggy_denom = factory/inj1nn8xzngf2ydkppk2h0n9nje72ttee726hvjplx/ak -decimals = 6 - -[Sendor] -peggy_denom = inj1hpwp280wsrsgn3r3mvufx09dy4e8glj8sq4vzx -decimals = 6 - -[Sensei Dog] -peggy_denom = ibc/12612A3EBAD01200A7FBD893D4B0D71F3AD65C41B2AEE5B42EE190672EBE57E9 -decimals = 6 - -[She] -peggy_denom = inj1k59du6npg24x2wacww9lmmleh5qrscf9gl7fr5 -decimals = 6 - -[Shiba INJ] -peggy_denom = factory/inj1v0yk4msqsff7e9zf8ktxykfhz2hen6t2u4ue4r/shiba inj -decimals = 6 - -[Shiba Inu] -peggy_denom = ibc/E68343A4DEF4AFBE7C5A9004D4C11888EE755A7B43B3F1AFA52F2C34C07990D5 -decimals = 18 - -[ShihTzu] -peggy_denom = factory/inj1x78kr9td7rk3yqylvhgg0ru2z0wwva9mq9nh92/ShihTzu -decimals = 6 - -[Shinobi] -peggy_denom = factory/inj1t02au5gsk40ev9jaq0ggcyry9deuvvza6s4wav/nobi -decimals = 6 - -[Shinobi Inu] -peggy_denom = factory/inj1t02au5gsk40ev9jaq0ggcyry9deuvvza6s4wav/Shinobi -decimals = 6 - -[Shuriken] -peggy_denom = inj1kxamn5nmsn8l7tyu752sm2tyt6qlpufupjyscl -decimals = 18 - -[Shuriken Token] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shuriken -decimals = 6 - -[Sin] -peggy_denom = inj10fnmtl9mh95gjtgl67ww6clugl35d8lc7tewkd -decimals = 18 - -[Sinful] -peggy_denom = inj1lhfk33ydwwnnmtluyuu3re2g4lp79c86ge546g -decimals = 18 - -[Smoking Nonja] -peggy_denom = factory/inj1nvv2gplh009e4s32snu5y3ge7tny0mauy9dxzg/smokingnonja -decimals = 6 - -[Solana (legacy)] -peggy_denom = inj1sthrn5ep8ls5vzz8f9gp89khhmedahhdkqa8z3 -decimals = 8 - -[Sommelier] -peggy_denom = peggy0xa670d7237398238DE01267472C6f13e5B8010FD1 -decimals = 6 - -[SpoonWORMS] -peggy_denom = inj1klc8puvggvjwuee6yksmxx4za6xdh20pwjdnec -decimals = 6 - -[Spuun] -peggy_denom = inj1hs0xupdsrnwfx3lcpz56qkp72q7rn57v3jm0x7 -decimals = 18 - -[Spuurk] -peggy_denom = inj1m9yfd6f2dw0f6uyx4r2av2xk8s5fq5m7pt3mec -decimals = 18 - -[Spuvn] -peggy_denom = inj1f66rlllh2uef95p3v7cswqmnnh2w3uv3f97kv3 -decimals = 18 - -[SteadyBTC] -peggy_denom = peggy0x4986fD36b6b16f49b43282Ee2e24C5cF90ed166d -decimals = 18 - -[SteadyETH] -peggy_denom = peggy0x3F07A84eCdf494310D397d24c1C78B041D2fa622 -decimals = 18 - -[Sui (Wormhole)] -peggy_denom = ibc/F96C68219E987465D9EB253DACD385855827C5705164DAFDB0161429F8B95780 -decimals = 8 - -[Summoners Arena Essence] -peggy_denom = ibc/0AFCFFE18230E0E703A527F7522223D808EBB0E02FDBC84AAF8A045CD8FE0BBB -decimals = 8 - -[Sushi Staked INJ] -peggy_denom = inj1hwj3xz8ljajs87km07nev9jt7uhmvf9k9q4k0f -decimals = 6 - -[SushiSwap] -peggy_denom = peggy0x6B3595068778DD592e39A122f4f5a5cF09C90fE2 -decimals = 18 - -[TAB] -peggy_denom = peggy0x36B3D7ACe7201E28040eFf30e815290D7b37ffaD -decimals = 18 - -[TABOO] -peggy_denom = inj1ttxw2rn2s3hqu4haew9e3ugekafu3hkhtqzmyw -decimals = 8 - -[TACOS] -peggy_denom = inj1ac9d646xzyam5pd2yx4ekgfjhc65564533fl2m -decimals = 6 - -[TAJIK] -peggy_denom = factory/inj1dvlqazkar9jdy8x02j5k2tftwjnp7c53sgfavp/TAJIK -decimals = 6 - -[TAKUMI] -peggy_denom = ibc/ADE961D980CB5F2D49527E028774DE42BFD3D78F4CBBD4B8BA54890E60606DBD -decimals = 6 - -[TALIS] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Talis -decimals = 6 - -[TANSHA] -peggy_denom = factory/inj1qw7egul6sr0yjpxfqq5qars2qvxucgp2sartet/tansha -decimals = 6 - -[TAO] -peggy_denom = tao -decimals = 18 - -[TATAS] -peggy_denom = factory/inj10pz3xq7zf8xudqxaqealgyrnfk66u3c99ud5m2/tatas -decimals = 6 - -[TC] -peggy_denom = factory/inj1ureedhqkm8tv2v60de54xzgqgu9u25xkuw8ecs/tyler -decimals = 6 - -[TENSOR] -peggy_denom = inj1py9r5ghr2rx92c0hyn75pjl7ung4euqdm8tvn5 -decimals = 6 - -[TERRAFORMS] -peggy_denom = inj19rev0qmuz3eccvkluz8sptm6e9693jduexrc4v -decimals = 8 - -[TERT] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/tert -decimals = 6 - -[TEST] -peggy_denom = factory/inj12qy3algm6e0zdpv8zxvauzquumuvd39ccdcdjt/TEST -decimals = 6 - -[TEST1] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/TEST1 -decimals = 18 - -[TEST13] -peggy_denom = factory/inj1mux0he68umjpcy8ltefeuxm9ha2ww3689rv2g4/TEST13 -decimals = 6 - -[TESTI] -peggy_denom = inj1mzcamv0w3q797x4sj4ny05hfpgacm90a2d2xqp -decimals = 18 - -[TESTT] -peggy_denom = factory/inj18xsczx27lanjt40y9v79q0v57d76j2s8ctj85x/TESTT -decimals = 6 - -[TF] -peggy_denom = factory/inj1pjcmuxd2ek7mvx4gnv6quyn6c6rjxwcrs4h5y4/truffle -decimals = 6 - -[THE10] -peggy_denom = factory/inj18u2790weecgqkmcyh2sg9uupz538kwgmmcmtps/THE10 -decimals = 6 - -[THREE] -peggy_denom = inj1qqfhg6l8d7punj4z597t0p3wwwxdcpfew4fz7a -decimals = 18 - -[THUG] -peggy_denom = factory/inj108qcx6eu6l6adl6kxm0qpyshlmzf3w9mnq5vav/THUGLIFE -decimals = 6 - -[THUNDER] -peggy_denom = inj1gacpupgyt74farecd9pv20emdv6vpkpkhft59y -decimals = 6 - -[TIA] -peggy_denom = ibc/F51BB221BAA275F2EBF654F70B005627D7E713AFFD6D86AFD1E43CAA886149F4 -decimals = 6 - -[TIA-USDC-LP] -peggy_denom = ibc/4D5C872E29C3F3B88E4BEAE9ED2FA753F5F3B7F7FAD2FEBC9D21B4EA5F93C57A -decimals = 6 - -[TIK] -peggy_denom = inj1xetmk66rv8nhjur9s8t8szkdff0xwks8e4vym3 -decimals = 6 - -[TINJER] -peggy_denom = factory/inj1srha80fxkk40gzymgrgt3m3ya0u8ms3z022f70/tinjer -decimals = 6 - -[TITAN] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/titan -decimals = 6 - -[TJCLUB] -peggy_denom = factory/inj12lhhu0hpszdq5wmt630wcspdxyewz3x2m04khh/TJCLUB -decimals = 6 - -[TKN] -peggy_denom = factory/inj1f4sglhz3ss74fell9ecvqrj2qvlt6wmk3ctd3f/TKN -decimals = 6 - -[TMB] -peggy_denom = factory/inj1dg4n304450kswa7hdj8tqq3p28f5kkye2fxey3/TMB -decimals = 6 - -[TMNT] -peggy_denom = inj1yt6erfe7a55es7gnwhta94g08zq9qrsjw25eq5 -decimals = 18 - -[TOKYO] -peggy_denom = inj1k8ad5x6auhzr9tu3drq6ahh5dtu5989utxeu89 -decimals = 18 - -[TOM] -peggy_denom = factory/inj1k9tqa6al637y8qu9yvmsw3ke6r3knsn8ewv73f/TOM -decimals = 18 - -[TOMO] -peggy_denom = inj1d08rut8e0u2e0rlf3pynaplas6q0akj5p976kv -decimals = 8 - -[TON] -peggy_denom = peggy0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1 -decimals = 9 - -[TONKURU] -peggy_denom = factory/inj1krswly444gyuunnmchg4uz2ekqvu02k7903skh/tonkuru -decimals = 6 - -[TORO] -peggy_denom = ibc/37DF4CCD7D156B9A8BF3636CD7E073BADBFD54E7C7D5B42B34C116E33DB0FE81 -decimals = 6 - -[TOTS] -peggy_denom = factory/inj1u09lh0p69n7salm6l8ufytfsm0p40pnlxgpcz5/TOTS -decimals = 6 - -[TRASH] -peggy_denom = inj1re43j2d6jxlk4m5sn9lc5qdc0rwkz64c8gqk5x -decimals = 18 - -[TREN] -peggy_denom = inj14y8f4jc0qmmwzcyj9k7dxnlq6tgjq9ql6n2kdn -decimals = 18 - -[TRG] -peggy_denom = inj1scn6ssfehuw735llele39kk7w6ylg4auw3epjp -decimals = 8 - -[TRH] -peggy_denom = inj1dxtnr2cmqaaq0h5sgnhdftjhh5t6dmsu37x40q -decimals = 18 - -[TRIPPY] -peggy_denom = inj1puwde6qxl5v96f5sw0dmql4r3a0e9wvxp3w805 -decimals = 18 - -[TRR] -peggy_denom = inj1cqwslhvaaferrf3c933efmddfsvakdhzaaex5h -decimals = 18 - -[TRS] -peggy_denom = ibc/CE25D8CCF02CB74F4B5CDFF8CF64A633CA0CCA05ECC539485F32E77DEC1C8421 -decimals = 6 - -[TRUCPI] -peggy_denom = trucpi -decimals = 18 - -[TRUFFLE] -peggy_denom = factory/inj1e5va7kntnq245j57hfe78tqhnd763ekrtu9fez/TRUFFLE -decimals = 6 - -[TRUMP] -peggy_denom = factory/inj16c0cnvw4jd20k9fkdlt4cauyd05hhg6jk7fedh/TRUMP -decimals = 6 - -[TRX] -peggy_denom = inj17ssa7q9nnv5e5p6c4ezzxj02yjhmvv5jmg6adq -decimals = 6 - -[TRY] -peggy_denom = inj10dqyn46ljqwzx4947zc3dska84hpnwc7r6rzzs -decimals = 18 - -[TRY2] -peggy_denom = factory/inj1jpddz58n2ugstuhp238qwwvdf3shxsxy5g6jkn/TRY2 -decimals = 6 - -[TSNG] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/tsng -decimals = 6 - -[TST] -peggy_denom = factory/inj1cq5ygzlgh6l2pll2thtx82rhde2v7cpxlqfz93/TST -decimals = 6 - -[TSTI] -peggy_denom = factory/inj1lvlvg3mkc3txakeyrqfzemkc7muvm9656mf2az/TSTI -decimals = 6 - -[TSTT] -peggy_denom = inj19p5am8kye6r7xu3xy9crzh4dj7uhqvpw3n3mny -decimals = 18 - -[TSUNADE] -peggy_denom = inj1vwzqtjcwv2wt5pcajvlhmaeejwme57q52mhjy3 -decimals = 18 - -[TTNY] -peggy_denom = inj10c0ufysjj52pe7m9a3ncymzf98sysl3nr730r5 -decimals = 18 - -[TTS] -peggy_denom = factory/inj1en4mpfud040ykmlneentdf77ksa3usjcgw9hax/TTS -decimals = 6 - -[TURBO] -peggy_denom = factory/inj1hhmra48t7xwz4snc7ttn6eu5nvmgzu0lwalmwk/TURBO -decimals = 6 - -[TURBOTOAD] -peggy_denom = factory/inj1nmc5namhwszx0yartvjm6evsxrj0ctq2qa30l7/TURBOTOAD -decimals = 6 - -[TURD] -peggy_denom = ibc/3CF3E1A31015028265DADCA63920C320E4ECDEC2F77D2B4A0FD7DD2E460B9EF3 -decimals = 6 - -[TURTLE] -peggy_denom = factory/inj1nshrauly795k2h97l98gy8zx6gl63ak2489q0u/TURTLE -decimals = 8 - -[TURTLENINJ] -peggy_denom = factory/inj1lv9v2z2zvvng6v9qm8eh02t2mre6f8q6ez5jxl/turtleninj -decimals = 6 - -[TWO] -peggy_denom = inj19fza325yjfnx9zxvtvawn0rrjwl73g4nkzmm2w -decimals = 18 - -[Talis NFT] -peggy_denom = inj155kuqqlmdz7ft2jas4fc23pvtsecce8xps47w5 -decimals = 8 - -[Terra] -peggy_denom = peggy0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9 -decimals = 6 - -[TerraUSD] -peggy_denom = peggy0xa47c8bf37f92aBed4A126BDA807A7b7498661acD -decimals = 18 - -[Test] -peggy_denom = factory/inj135plhn7dkun9rd8uj3hs5v06mk3g88ryd30qxr/Test -decimals = 6 - -[Test QAT] -peggy_denom = peggy0x1902e18fEB1234D00d880f1fACA5C8d74e8501E9 -decimals = 18 - -[Test Token] -peggy_denom = inj1a6qdxdanekzgq6dluymlk7n7khg3dqq9lua9q9 -decimals = 18 - -[Test coin don't buy] -peggy_denom = inj19xpgme02uxc55hgplg4vkm4vw0n7p6xl4ksqcz -decimals = 18 - -[TestOne] -peggy_denom = inj1f8fsu2xl97c6yss7s3vgmvnjau2qdlk3vq3fg2 -decimals = 18 - -[TestThree] -peggy_denom = inj14e3anyw3r9dx4wchnkcg8nlzps73x86cze3nq6 -decimals = 18 - -[TestTwo] -peggy_denom = inj1krcpgdu3a83pdtnus70qlalrxken0h4y52lfhg -decimals = 18 - -[TestingToken] -peggy_denom = inj1j5y95qltlyyjayjpyupgy7e5y7kkmvjgph888r -decimals = 18 - -[Tether] -peggy_denom = inj13yrhllhe40sd3nj0lde9azlwfkyrf2t9r78dx5 -decimals = 6 - -[Tether USD] -peggy_denom = ibc/F055E5BCED86221CD5CAFFC5F2D685DF841656133617E52EB87999C1E99B0280 -decimals = 6 - -[Tether USD (Wormhole)] -peggy_denom = ibc/3384DCE14A72BBD0A47107C19A30EDD5FD1AC50909C632CB807680DBC798BB30 -decimals = 6 - -[The Mask] -peggy_denom = factory/inj1wgzj93vs2rdfff0jrhp6t7xfzsjpsay9g7un3l/mask -decimals = 6 - -[TheJanitor] -peggy_denom = factory/inj1w7cw5tltax6dx7znehul98gel6yutwuvh44j77/TheJanitor -decimals = 6 - -[Toncoin] -peggy_denom = ibc/C5D810101729DB073C0AF464A4698BAFBB6AB2A779446784D975368DA9D13B4C -decimals = 9 - -[TrempBoden] -peggy_denom = factory/inj168pjvcxwdr28uv295fchjtkk6pc5cd0lg3h450/trempboden -decimals = 6 - -[Tronix] -peggy_denom = ibc/58FCFF2ED22596D22620047BA8171F6698E75FDBD6A68AC70DA6B020DB96FF26 -decimals = 6 - -[Trump] -peggy_denom = inj1neclyywnhlhe4me0g2tky9fznjnun2n9maxuhx -decimals = 6 - -[Trump Ninja] -peggy_denom = inj1dj0u7mqn3z8vxz6muwudhpl95sajmy00w7t6gq -decimals = 18 - -[TryCW] -peggy_denom = inj15res2a5r94y8s33lc7c5czcswx76pygjk827t0 -decimals = 18 - -[Tsu Grenade] -peggy_denom = inj1zgxh52u45qy3xxrq72ypdajhhjftj0hu5x4eea -decimals = 18 - -[TunaSniper] -peggy_denom = inj1r3vswh4hevfj6ynfn7ypudzhe2rrngzjn4lv5a -decimals = 8 - -[UAKT] -peggy_denom = ibc/3BADB97E59D4BB8A26AD5E5485EF0AF123982363D1174AA1C6DEA9BE9C7E934D -decimals = 0 - -[UATOM] -peggy_denom = ibc/057B70A05AFF2A38C082ACE15A260080D29627CCBF1655EA38B043275AFAADCE -decimals = 0 - -[UAXL] -peggy_denom = ibc/2FB8CEA9180069DD4DB8883CA8E263D9879F446D6895CDAA90487ABCCFB4A45C -decimals = 0 - -[UBLD] -peggy_denom = ibc/40AE872789CC2B160222CC4301CA9B097493BD858EAD84218E2EC29C64F0BBAB -decimals = 0 - -[UBTSG] -peggy_denom = ibc/861CA7EF82BD341F2EB80C6F47730908E14A4E569099C510C0DAD8DA07F6DCC6 -decimals = 0 - -[UCMDX] -peggy_denom = ibc/2609F5ECC10691FE306DE1B99E4F6AF18F689ED328969F93186F28BE1173EEED -decimals = 0 - -[UCORE] -peggy_denom = ibc/478A95ED132D071603C8AD0FC5E1A74717653880144E0D9B2508A230820921EF -decimals = 0 - -[UCRBRUS] -peggy_denom = ibc/617A276F35F40221C033B0662301374A225A9784653C30184F9305398054525D -decimals = 0 - -[UCRE] -peggy_denom = ibc/021FDD63F6D8DA6998A93DD25A72BD18421604A50819D01932136E934F9A26C4 -decimals = 0 - -[UDOKI] -peggy_denom = ibc/80A2109FA720FF39E302876F885039D7378B3FC7B9FAF22E05E29EFB8F7B3306 -decimals = 0 - -[UHUAHUA] -peggy_denom = ibc/613786F0A8E01B0436DE4EBC2F922672063D8348AE5C7FEBA5CB22CD2B12E1D6 -decimals = 0 - -[UIA] -peggy_denom = inj1h6avzdsgkfvymg3sq5utgpq2aqg4pdee7ep77t -decimals = 18 - -[UICIDE] -peggy_denom = factory/inj158g7dfclyg9rr6u4ddxg9d2afwevq5d79g2tm6/UICIDE -decimals = 6 - -[UIST] -peggy_denom = ibc/388C7B1A3F5156BF983E9F3F81430156A0B635DE6CFA295C92D046659B2A3244 -decimals = 0 - -[UKAVA] -peggy_denom = ibc/BEF60A41B9311A281E62D00D4DF55FDADAC23466CD2CD05A74925D0BF647AE2C -decimals = 0 - -[UKUJI] -peggy_denom = ibc/B391CCE2B6954ED823E70244D3447C7910B4E1E2032F902D2B57F7EE052E91DC -decimals = 0 - -[ULUNA] -peggy_denom = ibc/2B3FA34CE2779629F4CBDD4D52EFF1FED8AD78EBA63786E946C7CE6D06034D0D -decimals = 0 - -[UMA] -peggy_denom = peggy0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828 -decimals = 18 - -[UMEE] -peggy_denom = ibc/221E9E20795E6E250532A6A871E7F6310FCEDFC69B681037BBA6561270360D86 -decimals = 6 - -[UNI] -peggy_denom = peggy0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 -decimals = 18 - -[UNLS] -peggy_denom = ibc/849AF9574F64D1A1228FC2EFC79C857D562BAFB5C44657B5D89BB08A454C6DF9 -decimals = 0 - -[UNOIS] -peggy_denom = ibc/D2C7259861170E5EE7B21DBEC44D4720EC6C97293F1CAA79B0A0FF84B508C012 -decimals = 0 - -[UNTRN] -peggy_denom = ibc/6E512756C29F76C31032D456A4C957309E377827A443F1267D19DE551EB76048 -decimals = 0 - -[UOSMO] -peggy_denom = ibc/49CE7E3072FB1C70C1B2DE9AD1E74D15E2AC2AFD62949DB82EC653EB3E2B0A84 -decimals = 0 - -[UP10X] -peggy_denom = inj1zeu70usj0gtgqapy2srsp7pstf9r82ckqk45hs -decimals = 6 - -[UPGRADE] -peggy_denom = inj1f32xp69g4qf7t8tnvkgnmhh70gzy43nznkkk7f -decimals = 8 - -[UPHOTON] -peggy_denom = ibc/48BC9C6ACBDFC1EBA034F1859245D53EA4BF74147189D66F27C23BF966335DFB -decimals = 6 - -[UPONLY] -peggy_denom = factory/inj1sg085jzjrg4ttmhh3cm0x6km4u9u302mj34py4/UPONLY -decimals = 6 - -[UPONLYv2] -peggy_denom = factory/inj1sg085jzjrg4ttmhh3cm0x6km4u9u302mj34py4/UPONLYv2 -decimals = 6 - -[UPTENX] -peggy_denom = inj10jgxzcqdf6phdmettetd8m92gxucxz5rpp9kwu -decimals = 6 - -[URO] -peggy_denom = factory/inj1t8wuan5zxp58uwtn6j50kx4tjv25argx6lucwy/URO -decimals = 6 - -[USC] -peggy_denom = ibc/5307C5A7B88337FE81565E210CDB5C50FBD6DCCF2D90D524A7E9D1FE00C40139 -decimals = 8 - -[USCRT] -peggy_denom = ibc/3C38B741DF7CD6CAC484343A4994CFC74BC002D1840AAFD5416D9DAC61E37F10 -decimals = 0 - -[USD] -peggy_denom = ibc/7474CABFDF3CF58A227C19B2CEDE34315A68212C863E367FC69928ABA344024C -decimals = 18 - -[USD Coin] -peggy_denom = inj12pwnhtv7yat2s30xuf4gdk9qm85v4j3e60dgvu -decimals = 6 - -[USD Coin (BEP-20)] -peggy_denom = ibc/5FF8FE2FDCD9E28C0608B17FA177A918DFAF7218FA18E5A2C688F34D86EF2407 -decimals = 18 - -[USD Coin (legacy)] -peggy_denom = inj1q6zlut7gtkzknkk773jecujwsdkgq882akqksk -decimals = 6 - -[USD Coin from Avalanche] -peggy_denom = ibc/705E7E25F94467E363B2EB324A5A6FF4C683A4A6D20AAD2AEEABA2D9EB1B897F -decimals = 6 - -[USD Coin from Polygon] -peggy_denom = ibc/2E93E8914CA07B73A794657DA76170A016057D1C6B0DC42D969918D4F22D95A3 -decimals = 6 - -[USD Con] -peggy_denom = peggy0xB855dBC314C39BFa2583567E02a40CBB246CF82B -decimals = 18 - -[USDC] -peggy_denom = ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E -decimals = 6 - -[USDC-MPL] -peggy_denom = peggy0xf875aef00C4E21E9Ab4A335eB36A1175Ab00424A -decimals = 6 - -[USDC-USDC.axl-LP] -peggy_denom = ibc/FCC82F1F936A6D147738113E2D895968C9FEE804AA50DACFED16475EBB8CF36A -decimals = 6 - -[USDCarb] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1lmcfftadjkt4gt3lcvmz6qn4dhx59dv2m7yv8r -decimals = 6 - -[USDCbsc] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1dngqzz6wphf07fkdam7dn55t8t3r6qenewy9zu -decimals = 6 - -[USDCet] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q6zlut7gtkzknkk773jecujwsdkgq882akqksk -decimals = 6 - -[USDCgateway] -peggy_denom = ibc/7BE71BB68C781453F6BB10114F8E2DF8DC37BA791C502F5389EA10E7BEA68323 -decimals = 6 - -[USDClegacy] -peggy_denom = peggy0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 -decimals = 6 - -[USDCpoly] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj19s2r64ghfqq3py7f5dr0ynk8yj0nmngca3yvy3 -decimals = 6 - -[USDCso] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj12pwnhtv7yat2s30xuf4gdk9qm85v4j3e60dgvu -decimals = 6 - -[USDLR] -peggy_denom = ibc/E15121C1541741E0A7BA2B96B30864C1B1052F1AD8189D81E6C97939B415D12E -decimals = 6 - -[USDT] -peggy_denom = peggy0xdAC17F958D2ee523a2206206994597C13D831ec7 -decimals = 6 - -[USDT.axl] -peggy_denom = ibc/90C6F06139D663CFD7949223D257C5B5D241E72ED61EBD12FFDDA6F068715E47 -decimals = 6 - -[USDT.multi] -peggy_denom = ibc/24E5D0825D3D71BF00C4A01CD8CA8F2D27B1DD32B7446CF633534AEA25379271 -decimals = 6 - -[USDTap] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13yrhllhe40sd3nj0lde9azlwfkyrf2t9r78dx5 -decimals = 6 - -[USDTbsc] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1l9eyrnv3ret8da3qh8j5aytp6q4f73crd505lj -decimals = 6 - -[USDTet] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18zykysxw9pcvtyr9ylhe0p5s7yzf6pzdagune8 -decimals = 6 - -[USDTkv] -peggy_denom = ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB -decimals = 6 - -[USDTso] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1qjn06jt7zjhdqxgud07nylkpgnaurq6xc5c4fd -decimals = 6 - -[USDX] -peggy_denom = ibc/C78F65E1648A3DFE0BAEB6C4CDA69CC2A75437F1793C0E6386DFDA26393790AE -decimals = 6 - -[USDY] -peggy_denom = ibc/93EAE5F9D6C14BFAC8DD1AFDBE95501055A7B22C5D8FA8C986C31D6EFADCA8A9 -decimals = 18 - -[USDYet] -peggy_denom = peggy0x96F6eF951840721AdBF46Ac996b59E0235CB985C -decimals = 18 - -[USDe] -peggy_denom = peggy0x4c9EDD5852cd905f086C759E8383e09bff1E68B3 -decimals = 18 - -[USDi] -peggy_denom = peggy0x83E7D0451da91Ac509cd7F545Fb4AA04D4dD3BA8 -decimals = 18 - -[USEI] -peggy_denom = ibc/262300516331DBB83707BF21D485454F5608610B74F9232FB2503ABA3363BD59 -decimals = 0 - -[USK] -peggy_denom = ibc/58BC643F2EB5758C08D8B1569C7948A5DA796802576005F676BBFB7526E520EB -decimals = 6 - -[USOMM] -peggy_denom = ibc/748882D770862C95C8826D958F225F8458604A0776AA03952C97E05C2DB00F01 -decimals = 0 - -[UST] -peggy_denom = ibc/B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C -decimals = 18 - -[USTRD] -peggy_denom = ibc/CACFB6FEEC434B66254E2E27B2ABAD991171212EC8F67C566024D90490B7A079 -decimals = 0 - -[UTIA] -peggy_denom = ibc/056FEA49A8266ECD3EEF407A17EDC3FCEED144BE5EEF3A09ED6BC33F7118009F -decimals = 0 - -[UTK] -peggy_denom = peggy0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c -decimals = 18 - -[UUMEE] -peggy_denom = ibc/EE0EC814EF89AFCA8C9CB385F5A69CFF52FAAD00879BEA44DE78F9AABFFCCE42 -decimals = 0 - -[UUSD] -peggy_denom = ibc/4A0647EB49CC3170676F5A6016042B78292BCD0DF7F3AE906254901EE49FCFF8 -decimals = 0 - -[UUSDC] -peggy_denom = ibc/02FF79280203E6BF0E7EAF70C5D0396B81B3CC95BA309354A539511387161AA5 -decimals = 0 - -[UUSDT] -peggy_denom = ibc/63ADE20D7FF880975E9EC5FEBE87DB7CFCE6E85AB7F8E5097952052583C237EC -decimals = 0 - -[UWHALE] -peggy_denom = ibc/08E058987E0EB7A4ABEF68956D4AB2247447BA95EF06E6B43CB7D128E2924355 -decimals = 0 - -[UXPRT] -peggy_denom = ibc/A1D2A5E125114E63EE6E19FBA05E0949A14B5A51BB91D6193EEAE771C76C91E6 -decimals = 0 - -[Ulp] -peggy_denom = inj1ynqtgucs3z20n80c0zammyqd7skfgc7kyanc2j -decimals = 18 - -[Umee] -peggy_denom = ibc/2FF3DC3A0265B9A220750E75E75E5D44ED2F716B8AC4EDC378A596CC958ABF6B -decimals = 6 - -[Uniswap] -peggy_denom = ibc/3E3A8A403AE81114F4341962A6D73162D586C9DF4CE3BE7C7B459108430675F7 -decimals = 18 - -[Unknown] -peggy_denom = ibc/078184C66B073F0464BA0BBD736DD601A0C637F9C42B592DDA5D6A95289D99A4 -decimals = 6 - -[VATRENI] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1tn457ed2gg5vj2cur5khjjw63w73y3xhyhtaay -decimals = 8 - -[VAULT] -peggy_denom = factory/inj16j0dhn7qg9sh7cg8y3vm6fecpfweq4f46tzrvd/VAULT -decimals = 6 - -[VEGAS] -peggy_denom = inj12sy2vdgspes6p7af4ssv2sv0u020ew4httwp5y -decimals = 6 - -[VELO] -peggy_denom = inj1srz2afh8cmay4nuk8tjkq9lhu6tz3hhmjnevlv -decimals = 8 - -[VENUS] -peggy_denom = inj109z6sf8pxl4l6dwh7s328hqcn0ruzflch8mnum -decimals = 8 - -[VERHA] -peggy_denom = inj1v2rqvnaavskyhjkx7xfkkyljhnyhuv6fmczprq -decimals = 18 - -[VIDA] -peggy_denom = inj18wa0xa2xg8ydass70e8uvlvzupt9wcn5l9tuxm -decimals = 6 - -[VINJETTA] -peggy_denom = factory/inj1f4x4j5zcv3uf8d2806umhd50p78gfrftjc3gg4/vinjetta -decimals = 6 - -[VIU] -peggy_denom = inj1ccpccejcrql2878cq55nqpgsl46s26qj8hm6ws -decimals = 8 - -[VIX] -peggy_denom = inj108qxa8lvywqgg0cqma0ghksfvvurgvv7wcf4qy -decimals = 6 - -[VOID] -peggy_denom = factory/inj14y4mwxdaf38qaw673vc9whe3xdtm2sc7ud0qmr/VOID -decimals = 9 - -[VRD] -peggy_denom = peggy0xf25304e75026E6a35FEDcA3B0889aE5c4D3C55D8 -decimals = 18 - -[VYK] -peggy_denom = inj15ssgwg2whxt3qnthlrq288uxtda82mcy258xp9 -decimals = 18 - -[Vatreni Token] -peggy_denom = inj1tn457ed2gg5vj2cur5khjjw63w73y3xhyhtaay -decimals = 8 - -[W] -peggy_denom = ibc/F16F0F685BEF7BC6A145F16CBE78C6EC8C7C3A5F3066A98A9E57DCEA0903E537 -decimals = 6 - -[WAGMI] -peggy_denom = factory/inj188veuqed0dygkcmq5d24u3807n6csv4wdv28gh/wagmi -decimals = 9 - -[WAIFU] -peggy_denom = factory/inj12dvzf9tx2ndc9498aqpkrxgugr3suysqwlmn49/waifu -decimals = 6 - -[WAIFUBOT] -peggy_denom = inj1fmw3t86ncrlz35pm0q66ca5kpudlxzg55tt54f -decimals = 6 - -[WAIFUDOGE] -peggy_denom = inj1py5zka74z0h02gqqaexllddn8232vqxsc946qf -decimals = 6 - -[WAIT] -peggy_denom = inj17pg77tx07drrx6tm6c72cd9sz6qxhwd4gp93ep -decimals = 8 - -[WAR] -peggy_denom = inj1nfkjyevl6z0fyc86w88xr8qq3awugw0nt2dvxq -decimals = 8 - -[WASABI] -peggy_denom = factory/inj1h6j2hwdn446d3nye82q2thte5pc6qqvyehsjzj/WASABI -decimals = 6 - -[WASSIE] -peggy_denom = peggy0x2c95d751da37a5c1d9c5a7fd465c1d50f3d96160 -decimals = 18 - -[WAVAX] -peggy_denom = ibc/A4FF8E161D2835BA06A7522684E874EFC91004AD0CD14E038F37940562158D73 -decimals = 18 - -[WBNB] -peggy_denom = ibc/B877B8EF095028B807370AB5C7790CA0C328777C9FF09AA7F5436BA7FAE4A86F -decimals = 18 - -[WBTC] -peggy_denom = ibc/48E69ED9995415D94BEA06BE70E4A6C2BEA0F5E83996D1E17AF95126770E06B2 -decimals = 8 - -[WBTC-SATOSHI] -peggy_denom = ibc/A4D4E73A15DD9C815C039C0648111FDC83C3B63089E358565EA0AFB78C024E57 -decimals = 0 - -[WDDG] -peggy_denom = factory/inj1hse75gfje5jllds5t9gnzdwyp3cdc3cvdt7gpw/wddg -decimals = 6 - -[WEED] -peggy_denom = factory/inj1nm8kf7pn60mww3hnqj5je28q49u4h9gnk6g344/WEED -decimals = 6 - -[WEIRD] -peggy_denom = ibc/5533268E098543E02422FF94216D50A97CD9732AEBBC436AF5F492E7930CF152 -decimals = 6 - -[WEN] -peggy_denom = inj1wvd7jt2fwsdqph0culwmf3c4l4y63x4t6gu27v -decimals = 18 - -[WETH] -peggy_denom = ibc/4AC4A819B0BFCB25497E83B92A7D124F24C4E8B32B0E4B45704CC4D224A085A0 -decimals = 8 - -[WETH-WEI] -peggy_denom = ibc/69097262E36DBD83A39DF92161A4FD7D104462BC8C9D9C2A4CD65488080CBBB0 -decimals = 0 - -[WFTM] -peggy_denom = ibc/31E8DDA49D53535F358B29CFCBED1B9224DAAFE82788C0477930DCDE231DA878 -decimals = 18 - -[WGLMR] -peggy_denom = ibc/8FF72FB47F07B4AFA8649500A168683BEFCB9EE164BD331FA597D26224D51055 -decimals = 18 - -[WGLMR-WEI] -peggy_denom = ibc/0C8737145CF8CAE5DC1007450882E251744B57119600E1A2DACE72C8C272849D -decimals = 0 - -[WGMI] -peggy_denom = factory/inj1rmjzj9fn47kdmfk4f3z39qr6czexxe0yjyc546/WGMI -decimals = 6 - -[WHALE] -peggy_denom = ibc/D6E6A20ABDD600742D22464340A7701558027759CE14D12590F8EA869CCCF445 -decimals = 6 - -[WHITE] -peggy_denom = factory/inj1hdlavqur8ayu2kcdc9qv4dvee47aere5g80vg5/WHITE -decimals = 6 - -[WIF] -peggy_denom = factory/inj19xkrf82jar2qmf4tn92fajspq2e0warfufplhf/DogWifhat -decimals = 6 - -[WIFDOG] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/wifdog -decimals = 6 - -[WIFLUCK] -peggy_denom = inj10vhddx39e3q8ayaxw4dg36tfs9lpf6xx649zfn -decimals = 18 - -[WIGO] -peggy_denom = inj1jzarcskrdgqzn9ynqn05uthv07sepnpftw8xg9 -decimals = 18 - -[WIHA] -peggy_denom = ibc/E1BD2AE3C3879D2D79EA2F81E2A106BC8781CF449F70DDE6D97EF1A45F18C270 -decimals = 6 - -[WINJ] -peggy_denom = inj1cxp5f0m79a9yexyplx550vxtnun8vjdaqf28r5 -decimals = 18 - -[WINJA] -peggy_denom = factory/inj1mq6we23vx50e4kyq6fyqgty4zqq27p20czq283/WINJA -decimals = 6 - -[WINK] -peggy_denom = ibc/325300CEF4149AD1BBFEB540FF07699CDEEFBB653401E872532030CFB31CD767 -decimals = 6 - -[WIZZ] -peggy_denom = factory/inj1uvfpvnmuqhx8jwg4786y59tkagmph827h38mst/WIZZ -decimals = 6 - -[WKLAY] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14cl67lprqkt3pncjav070gavaxslc0tzpc56f4 -decimals = 8 - -[WMATIC] -peggy_denom = ibc/4DEFEB42BAAB2788723759D95B7550BCE460855563ED977036248F5B94C842FC -decimals = 8 - -[WMATIC-WEI] -peggy_denom = ibc/8042DF9D0B312FE068D0336E5E9AFFE408839DA15643D83CA9AB005D0A2E38D8 -decimals = 0 - -[WMATIClegacy] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1dxv423h8ygzgxmxnvrf33ws3k94aedfdevxd8h -decimals = 8 - -[WNINJ] -peggy_denom = factory/inj1ducfa3t9sj5uyxs7tzqwxhp6mcfdag2jcq2km6/wnINJ -decimals = 18 - -[WOJAK] -peggy_denom = factory/inj17kqcwkgdayv585dr7mljclechqzymgfsqc8x9k/WOJAK -decimals = 6 - -[WOJO] -peggy_denom = inj1n7qrdluu3gve6660dygc0m5al3awdg8gv07v62 -decimals = 6 - -[WOKE] -peggy_denom = inj17ka378ydj6ka5q0jlqt0eqhk5tmzqynx43ue7m -decimals = 18 - -[WOLF] -peggy_denom = factory/inj18pe85zjlrg5fcmna8tzqr0lysppcw5x7ecq33n/WOLF -decimals = 6 - -[WONDER] -peggy_denom = inj1ppg7jkl9vaj9tafrceq6awgr4ngst3n0musuq3 -decimals = 8 - -[WOOF] -peggy_denom = factory/inj1wu5464syj9xmud55u99hfwhyjd5u8fxfmurs8j/woof -decimals = 6 - -[WOOF INU] -peggy_denom = inj1h0h49fpkn5r0pjmscywws0m3e7hwskdsff4qkr -decimals = 8 - -[WORM] -peggy_denom = ibc/13C9967E4F065F5E4946302C1F94EA5F21261F3F90DAC0212C4037FA3E058297 -decimals = 6 - -[WOSMO] -peggy_denom = ibc/DD648F5D3CDA56D0D8D8820CF703D246B9FC4007725D8B38D23A21FF1A1477E3 -decimals = 6 - -[WSTETH] -peggy_denom = peggy0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0 -decimals = 18 - -[WTF] -peggy_denom = ibc/3C788BF2FC1269D66CA3E339634E14856A90336C5562E183EFC9B743C343BC31 -decimals = 6 - -[WUBBA] -peggy_denom = inj17g65zpdwql8xjju92k6fne8luqe35cjvf3j54v -decimals = 6 - -[Waifu] -peggy_denom = factory/inj12dvzf9tx2ndc9498aqpkrxgugr3suysqwlmn49/waifuinj -decimals = 6 - -[What does the fox say?] -peggy_denom = inj1x0nz4k6k9pmjq0y9uutq3kp0rj3vt37p2p39sy -decimals = 6 - -[Wolf Party] -peggy_denom = factory/inj1xjcq2ch3pacc9gql24hfwpuvy9gxszxpz7nzmz/wolf -decimals = 6 - -[Wormhole] -peggy_denom = factory/inj1xmxx0c3elm96s9s30t0k0gvr4h7l4wx9enndsl/wormhole -decimals = 6 - -[Wrapped Bitcoin] -peggy_denom = peggy0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 -decimals = 8 - -[Wrapped Ether] -peggy_denom = ibc/65A6973F7A4013335AE5FFE623FE019A78A1FEEE9B8982985099978837D764A7 -decimals = 18 - -[Wrapped Ethereum] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1plsk58sxqjw9828aqzeskmc8xy9eu5kppw3jg4 -decimals = 8 - -[Wrapped Klaytn] -peggy_denom = inj14cl67lprqkt3pncjav070gavaxslc0tzpc56f4 -decimals = 8 - -[Wrapped Matic] -peggy_denom = ibc/7E23647941230DA0AB4ED10F599647D9BE34E1C991D0DA032B5A1522941EBA73 -decimals = 18 - -[Wrapped Matic (legacy)] -peggy_denom = inj1dxv423h8ygzgxmxnvrf33ws3k94aedfdevxd8h -decimals = 8 - -[Wrapped liquid staked Ether 2.0 (Wormhole)] -peggy_denom = ibc/AF173F64492152DA94107B8AD53906589CA7B844B650EFC2FEFED371A3FA235E -decimals = 8 - -[Wynn] -peggy_denom = factory/inj1mmn3lqt5eahuu7cmpcjme6lj0xhjlhj3qj4fhh/Wynn -decimals = 18 - -[X747] -peggy_denom = factory/inj12ccehmgslwzkg4d4n4t78mpz0ja3vxyctu3whl/X747 -decimals = 6 - -[XAC] -peggy_denom = peggy0xDe4C5a791913838027a2185709E98c5C6027EA63 -decimals = 8 - -[XAEAXii] -peggy_denom = inj1wlw9hzsrrtnttgl229kvmu55n4z2gfjqzr6e2k -decimals = 18 - -[XAG] -peggy_denom = xag -decimals = 6 - -[XAI] -peggy_denom = inj15a8vutf0edqcuanpwrz0rt8hfclz9w8v6maum3 -decimals = 8 - -[XAU] -peggy_denom = xau -decimals = 6 - -[XBX] -peggy_denom = peggy0x080B12E80C9b45e97C23b6ad10a16B3e2a123949 -decimals = 18 - -[XCN] -peggy_denom = ibc/79D01DE88DFFC0610003439D38200E77A3D2A1CCCBE4B1958D685026ABB01814 -decimals = 18 - -[XDD] -peggy_denom = inj10e64r6exkrm52w9maa2e99nse2zh5w4zajzv7e -decimals = 18 - -[XIII] -peggy_denom = factory/inj18flmwwaxxqj8m8l5zl8xhjrnah98fcjp3gcy3e/XIII -decimals = 6 - -[XIII-INJ LP] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1pwf7q5vtq0thplnkdsp4v09mr66jkfyrsjr5g3 -decimals = 18 - -[XMAS] -peggy_denom = factory/inj1sn34edy635nv4yhts3khgpy5qxw8uey6wvzq53/XMAS -decimals = 6 - -[XMASINJ] -peggy_denom = inj1yhp235hgpa0nartawhtx0q2hkhr6y8cdth4neu -decimals = 8 - -[XMASPUMP] -peggy_denom = inj165lcmjswrkuz2m5p45wn00qz4k2zpq8r9axkp9 -decimals = 8 - -[XNJ] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17pgmlk6fpfmqyffs205l98pmnmp688mt0948ar -decimals = 18 - -[XPLA] -peggy_denom = inj1j08452mqwadp8xu25kn9rleyl2gufgfjqjvewe -decimals = 8 - -[XPRT] -peggy_denom = ibc/B786E7CBBF026F6F15A8DA248E0F18C62A0F7A70CB2DABD9239398C8B5150ABB -decimals = 6 - -[XRAY] -peggy_denom = inj1aqgkr4r272dg62l9err5v3d3hme2hpt3rzy4zt -decimals = 8 - -[XRP] -peggy_denom = peggy0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe -decimals = 18 - -[XTALIS] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xTalis -decimals = 6 - -[XTRUMP] -peggy_denom = ibc/5339B0D20986A7C20C2548ED9D6B8DE47BB64E03ABFD051B7792E713036EA20C -decimals = 6 - -[XUPS] -peggy_denom = inj1f3ppu7jgputk3qr833f4hsl8n3sm3k88zw6um0 -decimals = 8 - -[XYZ] -peggy_denom = factory/inj12aljr5fewp8vlns0ny740wuwd60q89x0xsqcz3/XYZ -decimals = 6 - -[XmasPump] -peggy_denom = inj1yjtgs6a9nwsljwk958ypf2u7l5kqf5ld8h3tmd -decimals = 8 - -[YAKUZA] -peggy_denom = factory/inj1r5pgeg9xt3xr0mw5n7js8kux7hyvjlsjn6k8ce/YAKUZA -decimals = 6 - -[YAMEI] -peggy_denom = inj1042ucqa8edhazdc27xz0gsphk3cdwxefkfycsr -decimals = 18 - -[YEA] -peggy_denom = inj1vfasyvcp7jpqfpdp980w28xemyurdnfys84xwn -decimals = 18 - -[YEET] -peggy_denom = inj10vhq60u08mfxuq3zr6ffpm7uelcc9ape94xq5f -decimals = 18 - -[YFI] -peggy_denom = peggy0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e -decimals = 18 - -[YKZ] -peggy_denom = factory/inj16a7s0v3c2hp575s0ugmva8cedq9yvsmz4mvdcd/YKZ -decimals = 6 - -[YMOS] -peggy_denom = ibc/26AB5A32422A0E9BC3B7FFCCF57CB30F3E8AEEA0F1705D64DCF4D8FA3DD71B9D -decimals = 6 - -[YOAN] -peggy_denom = inj1hgrgkrpwsu6n44ueucx0809usskkp6vdcr3ul9 -decimals = 18 - -[YOKAI] -peggy_denom = inj1y7k7hdw0nyw05rc8qr6nmwlp2kq3vzh065frd6 -decimals = 18 - -[YOSHI] -peggy_denom = inj13y8susc9dle4x664ktps3ynksxxgt6lhmckuxp -decimals = 18 - -[YSIR] -peggy_denom = inj1zff494cl7wf0g2fzqxdtxn5ws4mkgy5ypxwlql -decimals = 18 - -[YUKI] -peggy_denom = factory/inj1spdy83ds5ezq9rvtg0ndy8480ad5rlczcpvtu2/YUKI -decimals = 6 - -[YUM.axl] -peggy_denom = ibc/253F76EB6D04F50492930A5D97465A495E5D6ED674A33EB60DDD46F01EF56504 -decimals = 18 - -[Yakuza] -peggy_denom = factory/inj1t0vyy5c3cnrw9f0mpjz9xk7fp22ezjjmrza7xn/Yakuza -decimals = 6 - -[Yang] -peggy_denom = inj10ga6ju39mxt94suaqsfagea9t9p2ys2lawml9z -decimals = 6 - -[YeetYak] -peggy_denom = factory/inj1k2kcx5n03pe0z9rfzvs9lt764jja9xpvwrxk7c/YeetYak -decimals = 6 - -[YieldETH] -peggy_denom = ibc/6B7E243C586784E1BE150B71F541A3880F0409E994365AF31FF63A2764B72556 -decimals = 18 - -[Ykz] -peggy_denom = inj1ur8dhklqn5ntq45jcm5vy2tzp5zfc05w2pmjam -decimals = 18 - -[Yogi] -peggy_denom = inj1zc3uujkm2sfwk5x8xlrudaxwsc0t903rj2jcen -decimals = 6 - -[ZEUS] -peggy_denom = inj1302yft4ppsj99qy5avv2qv6hfuvzluy4q8eq0k -decimals = 18 - -[ZIG] -peggy_denom = peggy0xb2617246d0c6c0087f18703d576831899ca94f01 -decimals = 18 - -[ZIG-INJ LP] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1j0hepy2mrfc705djm2q53ucnyq5ygejq5mr4n2 -decimals = 18 - -[ZIGZAG] -peggy_denom = inj1d70m92ml2cjzy2lkj5t2addyz6jq4qu8gyfwn8 -decimals = 6 - -[ZIL] -peggy_denom = ibc/AE996D1AF771FED531442A232A4403FAC51ACFFF9B645FF4363CFCB76019F5BD -decimals = 12 - -[ZK] -peggy_denom = zk -decimals = 18 - -[ZOE] -peggy_denom = factory/inj17v462f55kkuhjhvw7vdcjzd2wdk85yh8js3ug9/ZOE -decimals = 6 - -[ZOMBIE] -peggy_denom = factory/inj12yvvkskjdedhztpl4g2vh888z00rgl0wctarst/ZOMBIE -decimals = 6 - -[ZOOMER] -peggy_denom = inj173zkm8yfuqagcc5m7chc4dhnq0k5hdl7vwca4n -decimals = 18 - -[ZORO] -peggy_denom = factory/inj1z70nam7mp5qq4wd45ker230n3x4e35dkca9la4/ZORO -decimals = 18 - -[ZRO] -peggy_denom = zro -decimals = 6 - -[ZRX] -peggy_denom = peggy0xE41d2489571d322189246DaFA5ebDe1F4699F498 -decimals = 18 - -[ZUZU] -peggy_denom = factory/inj1v05uapg65p6f4307qg0hdkzssn82js6n5gc03q/ZUZU -decimals = 6 - -[ZZZ] -peggy_denom = factory/inj1a2qk8tsd4qv7rmtp8g8ktj7zfldj60hpp0arqp/ZZZ -decimals = 6 - -[aUSD] -peggy_denom = inj1p3nrwgm9u3dtln6rwdvrsmjt5fwlhhhq3ugckd -decimals = 18 - -[allARB] -peggy_denom = ibc/3E70B2EC4586439CF36FFA492BB17289B7F9B4F5FD774E18A5CA63125912A2B0 -decimals = 18 - -[allBTC] -peggy_denom = ibc/2D805BFDFB164DE4CE69514BF2CD203C07BF79DF52EF1971763DCBD325917CC5 -decimals = 8 - -[allDOT] -peggy_denom = ibc/6AE5D5748931D81AA53B411F8AF4AD129BA4C29743DB7B4294BDA5E558AF8757 -decimals = 18 - -[allETH] -peggy_denom = ibc/1638ABB0A4233B36CC9EBBD43775D17DB9A86190E826580963A0B59A621BD7FD -decimals = 18 - -[allLINK] -peggy_denom = ibc/58376D3ECCAA33DC2E9E3FFA591B1D7451C64DFE67CD909FAEE6616E4883E2D0 -decimals = 18 - -[allOP] -peggy_denom = ibc/DA39B90398E84753036C686E39D119A25D7EA8C005DC16F3C135A43209AC6C02 -decimals = 18 - -[allPEPE] -peggy_denom = ibc/E19F364C283602F033EC6655C74084AAB6C1EEF5BD3B688EE5D6B3BE15150E4F -decimals = 18 - -[allSHIB] -peggy_denom = ibc/97339E314F6AAA5012E9772B4FC2EF585985375022D2BF4B4920E10D70937BDE -decimals = 18 - -[allSOL] -peggy_denom = ibc/FA2D0C9110C1DFBAEF084C161D1A0EFC6270C64B446FDEC686C30FCF99FE22CA -decimals = 9 - -[allUSDT] -peggy_denom = ibc/7991930BA02EBF3893A7E244233E005C2CB14679898D8C9E680DA5F7D54E647D -decimals = 6 - -[ampGASH] -peggy_denom = ibc/B52F9774CA89A45FFB924CEE4D1E586013E33628A3784F3CCF10C8CE26A89E7F -decimals = 6 - -[ampINJ] -peggy_denom = factory/inj1cdwt8g7nxgtg2k4fn8sj363mh9ahkw2qt0vrnc/ampINJ -decimals = 6 - -[ampKUJI] -peggy_denom = ibc/34E48C7C43383203519D996D1D93FE80ED50153E28FB6A9465DE463AEF2EC9EC -decimals = 6 - -[ampLUNA] -peggy_denom = ibc/751CCECAF75D686B1DC8708BE62F8C7411B211750E6009C6AC4C93881F0543E8 -decimals = 6 - -[ampMNTA] -peggy_denom = ibc/A87178EAA371050DDFD80F78630AE622B176C7634160EE515C27CE62FCC8A0CC -decimals = 6 - -[ampOSMO] -peggy_denom = ibc/012D069D557C4DD59A670AA17E809CB7A790D778E364D0BC0A3248105DA6432D -decimals = 6 - -[ampROAR] -peggy_denom = ibc/7BE54594EAE77464217B9BB5171035946ED23DB309B030B5708E15C9455BB557 -decimals = 6 - -[ampSEI] -peggy_denom = ibc/6293B8AAE79F71B7DA3E8DEE00BEE0740D6D8495DB9BAED2342949B0A90152A5 -decimals = 6 - -[ampWHALE] -peggy_denom = ibc/168C3904C45C6FE3539AE85A8892DF87371D00EA7942515AFC50AA43C4BB0A32 -decimals = 6 - -[ampWHALEt] -peggy_denom = ibc/DF3225D7381562B58AA8BE107A87260DDDC7FA08E4B0898E3D795392CF844BBE -decimals = 6 - -[anon] -peggy_denom = factory/inj15n8jl0dcepjfy3nhsa3gm734rjx5x2ff3y9f2s/anon -decimals = 6 - -[ape] -peggy_denom = factory/inj1rhaefktcnhe3y73e82x4edcsn9h5y99gwmud6v/ape -decimals = 6 - -[ashLAB] -peggy_denom = ibc/D3D5FB034E9CAA6922BB9D7D52D909116B7FFF7BD73299F686C972643B4767B9 -decimals = 6 - -[ashLUNA] -peggy_denom = ibc/19C3905E752163B6EEB903A611E0832CCD05A32007E98C018759905025619D8F -decimals = 6 - -[ashSYN] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/syn.ash -decimals = 6 - -[avalanche.USDC.wh] -peggy_denom = ibc/348633370BE07A623D7FC9CD229150936ADCD3A4E842DAD246BBA817D21FF6C7 -decimals = 6 - -[axlETH] -peggy_denom = ibc/34EF5DA5B1CFB23FA25F1D486C89AFC9E5CC5727C224975438583C444E88F039 -decimals = 18 - -[axlFIL] -peggy_denom = ibc/9D1889339AEC850B1D719CCF19BD813955C086BE1ED323ED68318A273922E40D -decimals = 18 - -[axlUSDC] -peggy_denom = ibc/7E1AF94AD246BE522892751046F0C959B768642E5671CC3742264068D49553C0 -decimals = 6 - -[axlWBTC] -peggy_denom = ibc/F57B53E102171E6DC254532ECC184228BB8E23B755AD55FA6FDCBD70464A9A54 -decimals = 6 - -[bCRE] -peggy_denom = ibc/83D54420DD46764F2ED5EE511DAA63EC28012480A245D8E33AA1F7D1FB15D736 -decimals = 6 - -[bINJ] -peggy_denom = factory/inj1dxp690rd86xltejgfq2fa7f2nxtgmm5cer3hvu/bINJ -decimals = 18 - -[bKUJI] -peggy_denom = ibc/5C48695BF3A6BCC5DD147CC1A2D09DC1A30683FE369BF472704A52CF9D59B42D -decimals = 6 - -[bLUNA] -peggy_denom = ibc/C9D55B62C9D9CA84DD94DC019009B840DDFD861BF2F33F7CF2A8A74933797680 -decimals = 6 - -[bNEO] -peggy_denom = ibc/48F6A028444987BB26299A074A5C32DC1679A050D5563AC10FF81EED9E22D8B8 -decimals = 8 - -[bOSMO] -peggy_denom = ibc/C949BEFD9026997A65D0125340B096AA809941B3BB13D6C2D1E8E4A17F2130C4 -decimals = 6 - -[bWHALE] -peggy_denom = ibc/ECB0AA28D6001EF985047558C410B65581FC85BD92D4E3CFCCA0D3D964C67CC2 -decimals = 6 - -[baby INJ] -peggy_denom = inj1j0l9t4n748k2zy8zm7yfwjlpkf069d2jslfh3d -decimals = 18 - -[babyBENANCE] -peggy_denom = inj1rfv2lhr0qshztmk86f05vdmx2sft9zs6cc2ltj -decimals = 6 - -[babyCLON] -peggy_denom = inj1pyghkw9q0kx8mnuhcxpqnczfxst0way2ep9s54 -decimals = 6 - -[babyCOKE] -peggy_denom = inj14mu7fw0hzxvz3dl9y628xva2xuvngmz4zrwllz -decimals = 6 - -[babyDIB] -peggy_denom = inj1tquat4mh95g33q5rhg5c72yh6j6x5w3p6ynuqg -decimals = 18 - -[babyDOJO] -peggy_denom = inj10ny97fhd827s3u4slfwehu7m5swnpnmwzxsc40 -decimals = 6 - -[babyDRAGON] -peggy_denom = inj1lfemyjlce83a7wre4k5kzd8zyytqavran5ckkv -decimals = 18 - -[babyDRUGS] -peggy_denom = inj1nqcrsh0fs60k06mkc2ptxa9l4g9ktu4jct8z2w -decimals = 6 - -[babyDrugs] -peggy_denom = inj1457z9m26aqvga58demjz87uyt6su7hyf65aqvr -decimals = 6 - -[babyGINGER] -peggy_denom = inj1y4dk7ey2vrd4sqems8hnzh2ays8swealvfzdmg -decimals = 6 - -[babyINJUSSY] -peggy_denom = factory/inj1kk6dnn7pl7e508lj4qvllprwa44qtgf98es2ak/babyINJUSSY -decimals = 6 - -[babyJUNIORES] -peggy_denom = inj1m4k5fcjz86dyz25pgagj50jcydh9llvpw8lxyj -decimals = 18 - -[babyKAGE] -peggy_denom = inj12gh464eqc4su4qd3frxxlyjymf0nhzgzm9a203 -decimals = 6 - -[babyKANGAROO] -peggy_denom = inj12s9a6vnmgyf8vx448cmt2hzmhhfuptw8agn2xs -decimals = 6 - -[babyKOALA] -peggy_denom = inj19lm6nrfvam539ahr0c8nuapfh6xzlhjaxv2a39 -decimals = 6 - -[babyMONKS] -peggy_denom = inj17udts7hdggcurc8892tmd7y56w5dkxsgv2v6eu -decimals = 18 - -[babyNINJA] -peggy_denom = inj1n8883sfdp3cufstk05sd8dkp7pcdxr3m2fp24m -decimals = 6 - -[babyNONJA] -peggy_denom = inj15hxdpukklz4c4f3l20rl50h9wqa7rams74gyah -decimals = 18 - -[babyPANDA] -peggy_denom = inj1lpu8rcw04zenfwkxdld2dm2pd70g7yv6hz7dnf -decimals = 18 - -[babyPING] -peggy_denom = inj17fa3gt6lvwj4kguyulkqrc0lcmxcgcqr7xddr0 -decimals = 18 - -[babySAMURAI] -peggy_denom = inj1arnd0xnxzg4qgxn4kupnzsra2a0rzrspwpwmrs -decimals = 6 - -[babySHEROOM] -peggy_denom = inj1cmw4kwqkhwzx6ha7d5e0fu9zj7aknn4mxqqtf0 -decimals = 6 - -[babySHROOM] -peggy_denom = inj14zxwefzz5p3l4mltlzgmfwh2jkgjqum256qhna -decimals = 6 - -[babySMELLY] -peggy_denom = inj16hl3nlwlg2va07y4zh09vzh9xtxy6uwpmy0f5l -decimals = 6 - -[babySPUUN] -peggy_denom = factory/inj1nhswhqrgfu3hpauvyeycz7pfealx4ack2c5hfp/babyspuun -decimals = 6 - -[babySYN] -peggy_denom = inj1m6jtz6kh6ezysempdy0juzsv5e2xew2y2j6f7q -decimals = 18 - -[babyYAKUZA] -peggy_denom = inj1rep4p2x86avty00qvgcu4vfhywmsznf42jdpzs -decimals = 6 - -[babyYKZ] -peggy_denom = inj16wa97auct633ft6cjzr22xv2pxvym3k38rzskc -decimals = 18 - -[babyYODA] -peggy_denom = factory/inj1qpv9su9nkkka5djeqjtt5puwn6lw90eh0yfy0f/babyYODA -decimals = 6 - -[babyshroomin] -peggy_denom = inj1qgcfkznvtw96h950wraae20em9zmhtcm0rws68 -decimals = 18 - -[bapc] -peggy_denom = inj13j4ymx9kz3cdasg0e00tsc8ruq03j6q8fftcll -decimals = 18 - -[beef] -peggy_denom = factory/inj18xg8yh445ernwxdquklwpngffqv3agfyt5uqqs/beef -decimals = 6 - -[bellboy] -peggy_denom = inj1ywvmwtpe253qhtrnvratjqmhy4aar4yl5an9dk -decimals = 6 - -[bnUSD] -peggy_denom = inj1qspaxnztkkzahvp6scq6xfpgafejmj2td83r9j -decimals = 18 - -[bobmarley] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/bobmarley -decimals = 6 - -[bobo] -peggy_denom = factory/inj1ne49gse9uxujj3fjdc0evxez4yeq9k2larmuxu/bobo -decimals = 18 - -[boden] -peggy_denom = factory/inj1c0f9ze9wh2xket0zs6wy59v66alwratsdx648k/boden -decimals = 6 - -[boneWHALEt] -peggy_denom = ibc/F993B2C44A70D8B97B09581F12CF1A68A38DF8BBCFBA9F82016984138C718A57 -decimals = 6 - -[bonja the bad ninja] -peggy_denom = inj155fauc0h355fk5t9qa2x2uzq7vlt26sv0u08fp -decimals = 18 - -[bonkinu] -peggy_denom = factory/inj1936pplnstvecjgttz9eug83x2cs7xs2emdad4z/bonkinu -decimals = 6 - -[bonkmas] -peggy_denom = factory/inj17a0fp4rguzgf9mwz90y2chc3lr445nujdwc063/bonkmas -decimals = 6 - -[bozo] -peggy_denom = inj14r42t23gx9yredm37q3wjw3vx0q6du85vuugdr -decimals = 18 - -[brian] -peggy_denom = factory/inj1pgkwcngxel97d9qjvg75upe8y3lvvzncq5tdr0/brian -decimals = 6 - -[burn] -peggy_denom = inj1p6h58futtvzw5gdjs30fqv4l9ljq8aepk3e0k5 -decimals = 18 - -[cATOM] -peggy_denom = ibc/C2B5C9C8E44D2C35EC6CC29E570C4AFC6075EB668F237D49418994C06262877E -decimals = 6 - -[cAUUU] -peggy_denom = ibc/DFC3A28BBBA0CE50BD290A423AF4E06F25BE78125806A390CE366061509CA281 -decimals = 6 - -[cINJ] -peggy_denom = inj1l7vah2zmwancwup5y8ltnqphrwy0qg8hrryw6w -decimals = 18 - -[cInj] -peggy_denom = ibc/6F2838A189A5EEB14231F39B3033912F3B5E652CCB76F491B4FE26E21FE7DCBB -decimals = 6 - -[cLUNA] -peggy_denom = ibc/9CD1A7491660EE969236EE193FFC154D8940AE019855F393C258F3176C4556AB -decimals = 6 - -[cOSMO] -peggy_denom = ibc/8932F2DFA131317128CAAE325FF4D043E87960E3616D6A18BE4B69900186C5C0 -decimals = 6 - -[candy] -peggy_denom = inj1wyagfdn65kp5a2x03g9n5fllr02h4nyy5aunjy -decimals = 18 - -[cartel] -peggy_denom = ibc/FDD71937DFA4E18BBF16734EB0AD0EFA9F7F1B0F21D13FAF63F0B4F3EA7DEF28 -decimals = 6 - -[cat] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/cat -decimals = 6 - -[cbETH] -peggy_denom = ibc/545E97C6EFB2633645720DEBCA78B2BE6F5382C4693EA7DEB2D4C456371EA4F0 -decimals = 18 - -[ccsl] -peggy_denom = inj1mpande8tekavagemc998amgkqr5yte0qdvaaah -decimals = 18 - -[cdj] -peggy_denom = inj1qwx2gx7ydumz2wt43phzkrqsauqghvct48pplw -decimals = 18 - -[chad] -peggy_denom = factory/inj182lgxnfnztjalxqxcjn7jal27w7xg28aeygwd9/chad -decimals = 6 - -[coke] -peggy_denom = factory/inj1cdlqynzr2ktn54l3azhlulzkyksuw8yj3mfadx/coke -decimals = 6 - -[cook] -peggy_denom = factory/inj1cadquzdmqe04hyjfyag3d9me9vxh9t6py383sy/cook -decimals = 6 - -[cookie] -peggy_denom = factory/inj1cadquzdmqe04hyjfyag3d9me9vxh9t6py383sy/cookie -decimals = 6 - -[crypto] -peggy_denom = inj19w5ntlx023v9rnecjuy7yem7s5lrg5gxlfrxfj -decimals = 18 - -[dATOM] -peggy_denom = ibc/9495CFCB73E9D060D7B8C974C22AD8D5F1D97F93B66A4E326A3052ABE6470BB6 -decimals = 6 - -[dATOM-BOOST-LP] -peggy_denom = ibc/2F595556E2BFF5649C688FB2C6164DDBC64F479B747323056A6AE1F3863878B6 -decimals = 6 - -[dATOM-YIELD-LP] -peggy_denom = ibc/AC1769D4FB3B3AC3FFF39219F22E5EFCBD4EB266970E3B1306E1664C9595C017 -decimals = 6 - -[dINJ] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj134wfjutywny9qnyux2xgdmm0hfj7mwpl39r3r9 -decimals = 18 - -[dYdX] -peggy_denom = peggy0x92D6C1e31e14520e676a687F0a93788B716BEff5 -decimals = 18 - -[dab] -peggy_denom = inj1a93l8989wmjupyq4ftnu06836n2jjn7hjee68d -decimals = 18 - -[dada] -peggy_denom = inj1yqwjse85pqmum5pkyxz9x4aqdz8etwhervtv66 -decimals = 18 - -[dalton] -peggy_denom = factory/inj168pjvcxwdr28uv295fchjtkk6pc5cd0lg3h450/dalton -decimals = 6 - -[devUSDC] -peggy_denom = inj13mpkggs6t62kzt6pjd6guqfy6naljpp2jd3eue -decimals = 8 - -[dmo] -peggy_denom = inj10uwj0vx6d42p67z8jl75eh4tgxrgm3mp4mqwq3 -decimals = 18 - -[dmoone] -peggy_denom = inj12qlppehc4fsfduv46gmtgu5n38ngl6annnr4r4 -decimals = 18 - -[dmotree] -peggy_denom = inj15x7u49kw47krzlhrrj9mr5gq20d3797kv3fh3y -decimals = 18 - -[dmotwo] -peggy_denom = inj1tegs6sre80hhvyj204x5pu52e5p3p9pl9vy4ue -decimals = 18 - -[dogwifhat] -peggy_denom = inj1802ascnwzdhvv84url475eyx26ptuc6jc590nl -decimals = 8 - -[dogwifshoess] -peggy_denom = factory/inj10edtfelcttj3s98f755ntfplt0da5xv4z8z0lf/dogwifshoess -decimals = 6 - -[dojo] -peggy_denom = inj1p0ccaveldsv7hq4s53378und5ke9jz24rtsr9z -decimals = 18 - -[dojodoge] -peggy_denom = inj1nueaw6mc7t7703t65f7xamj63zwaew3dqx90sn -decimals = 18 - -[dojodojo] -peggy_denom = inj1ht0qh7csdl3txk6htnalf8qpz26xzuq78x7h87 -decimals = 18 - -[dojoinu] -peggy_denom = inj14hszr5wnhshu4zre6e4l5ae2el9v2420eypu6k -decimals = 18 - -[dojoswap] -peggy_denom = inj1tml6e474rxgc0gc5pd8ljmheqep5wrqrm9m9ks -decimals = 6 - -[done] -peggy_denom = factory/inj12yazr8lq5ptlz2qj9y36v8zwmz90gy9gh35026/done -decimals = 6 - -[dontbuy] -peggy_denom = factory/inj1vg2vj46d3cy54l63qkjprtcnel2svkjhgwkfhy/dontbuy -decimals = 10 - -[dsINJ] -peggy_denom = inj1nfsxxz3q59f0yyqsjjnr7ze020klxyfefy6wcg -decimals = 6 - -[dtwo] -peggy_denom = factory/inj12yazr8lq5ptlz2qj9y36v8zwmz90gy9gh35026/dtwo -decimals = 12 - -[enuk] -peggy_denom = inj1x0km562rxugpvxq8nucy7pdmefguv6xxumng27 -decimals = 18 - -[erec] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/erec -decimals = 6 - -[estamina] -peggy_denom = inj1sklu3me2d8e2e0k6eu83t4pzcnleczal7d2zra -decimals = 18 - -[estate] -peggy_denom = inj16mx8h5updpwkslymehlm0wq84sckaytru0apvx -decimals = 18 - -[ezETH] -peggy_denom = peggy0xbf5495Efe5DB9ce00f80364C8B423567e58d2110 -decimals = 18 - -[fBAD] -peggy_denom = ibc/E3586A5E146782283A6E70CC0DF98D70244345914DAE5E4DA9D0693DC8DA2613 -decimals = 9 - -[fMAD] -peggy_denom = ibc/E4021F852137E5B78737478AE82C97BE4EFC1DF07E00CCB2B457EEAF69C4DEB2 -decimals = 9 - -[fNUT] -peggy_denom = ibc/6FC47CA4645C80156D8F5DB27911E3EE7C42814439312461C1F70D845714A307 -decimals = 9 - -[fSLOTH] -peggy_denom = ibc/2DC0014CF6F1564F043B31E81D080C09BED30A2A33F0A72D47BF09805F0CB68F -decimals = 9 - -[fUSDT] -peggy_denom = peggy0x81994b9607e06ab3d5cF3AffF9a67374f05F27d7 -decimals = 8 - -[factory/inj102jhts2dfqh80nygmzx8hzxl9nm282vnstf5w6/position] -peggy_denom = factory/inj102jhts2dfqh80nygmzx8hzxl9nm282vnstf5w6/position -decimals = 0 - -[factory/inj1043hsv3ug5z9updx32a0a3rae87w6fzlzhcjm4/INJ] -peggy_denom = factory/inj1043hsv3ug5z9updx32a0a3rae87w6fzlzhcjm4/INJ -decimals = 6 - -[factory/inj105ujajd95znwjvcy3hwcz80pgy8tc6v77spur0/LILKRYSTAL] -peggy_denom = factory/inj105ujajd95znwjvcy3hwcz80pgy8tc6v77spur0/LILKRYSTAL -decimals = 6 - -[factory/inj106u05e6rwg7n7xnmp2uet7jucyw5msuskyefvu/position] -peggy_denom = factory/inj106u05e6rwg7n7xnmp2uet7jucyw5msuskyefvu/position -decimals = 0 - -[factory/inj107grqcr0ugrx8jt8rdyru2ywmfngz5lrermw8q/INJ] -peggy_denom = factory/inj107grqcr0ugrx8jt8rdyru2ywmfngz5lrermw8q/INJ -decimals = 6 - -[factory/inj107zjs4j5p92pl78kwfulh8ea7nqhlq8fj6s6fr/INJ] -peggy_denom = factory/inj107zjs4j5p92pl78kwfulh8ea7nqhlq8fj6s6fr/INJ -decimals = 6 - -[factory/inj10cplvlvpnkd9ch5cfw7gn9ed9vhlkzg0y73w8y/INJ] -peggy_denom = factory/inj10cplvlvpnkd9ch5cfw7gn9ed9vhlkzg0y73w8y/INJ -decimals = 6 - -[factory/inj10cvs9y7akta2kzucu3u9mfu25h080nygrtn2xs/position] -peggy_denom = factory/inj10cvs9y7akta2kzucu3u9mfu25h080nygrtn2xs/position -decimals = 0 - -[factory/inj10pz3xq7zf8xudqxaqealgyrnfk66u3c99ud5m2/ROAR] -peggy_denom = factory/inj10pz3xq7zf8xudqxaqealgyrnfk66u3c99ud5m2/ROAR -decimals = 0 - -[factory/inj10t3rc9u6hpvwm3kq8fx648z5elv2use4mtc8cv/INJ] -peggy_denom = factory/inj10t3rc9u6hpvwm3kq8fx648z5elv2use4mtc8cv/INJ -decimals = 6 - -[factory/inj10w0glw8d30weulv3pu6r7mx6vmflxyck27fqkd/INJ] -peggy_denom = factory/inj10w0glw8d30weulv3pu6r7mx6vmflxyck27fqkd/INJ -decimals = 6 - -[factory/inj120uxkql0jh750lgm0payyc48wpx4p5tpzsvqsl/position] -peggy_denom = factory/inj120uxkql0jh750lgm0payyc48wpx4p5tpzsvqsl/position -decimals = 0 - -[factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/BLACK] -peggy_denom = factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/BLACK -decimals = 6 - -[factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/EA] -peggy_denom = factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/EA -decimals = 0 - -[factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/PUG] -peggy_denom = factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/PUG -decimals = 6 - -[factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/TALIS] -peggy_denom = factory/inj1238tn4srtzzplhgtd7fdrzdrf77hf9fye6q2xa/TALIS -decimals = 6 - -[factory/inj1255swku4m04m533wmkmtmvhnh77zrk83dqgwfr/position] -peggy_denom = factory/inj1255swku4m04m533wmkmtmvhnh77zrk83dqgwfr/position -decimals = 0 - -[factory/inj125anxwhzcsqksvthce0xhktqhn4x406vfgxasx/INJ] -peggy_denom = factory/inj125anxwhzcsqksvthce0xhktqhn4x406vfgxasx/INJ -decimals = 6 - -[factory/inj12dgml8gwd2v88yn0kfcs6mtkmvlu32llekfzzv/position] -peggy_denom = factory/inj12dgml8gwd2v88yn0kfcs6mtkmvlu32llekfzzv/position -decimals = 0 - -[factory/inj12vhmdjtvyxzr0vmg5znxvhw7dsakjuj7adz5a4/INJ] -peggy_denom = factory/inj12vhmdjtvyxzr0vmg5znxvhw7dsakjuj7adz5a4/INJ -decimals = 6 - -[factory/inj12wkmu2y4vp0hg69k36pkve6rgczwga0yzff7ha/position] -peggy_denom = factory/inj12wkmu2y4vp0hg69k36pkve6rgczwga0yzff7ha/position -decimals = 0 - -[factory/inj12ytu4vvxmsclxuqm9w0g2jazllvztlvdxjdvvg/INJ] -peggy_denom = factory/inj12ytu4vvxmsclxuqm9w0g2jazllvztlvdxjdvvg/INJ -decimals = 6 - -[factory/inj133np9gr58athpjgv3d9cuzmaed84gnm95sp97h/LowQ] -peggy_denom = factory/inj133np9gr58athpjgv3d9cuzmaed84gnm95sp97h/LowQ -decimals = 6 - -[factory/inj138fs6ctxd0vwsn7xmw0v29a2jxe3s7uhgn405w/position] -peggy_denom = factory/inj138fs6ctxd0vwsn7xmw0v29a2jxe3s7uhgn405w/position -decimals = 0 - -[factory/inj13gc95nsrtv3da5x6ujmktekaljwhj5npl2nszl/ELON] -peggy_denom = factory/inj13gc95nsrtv3da5x6ujmktekaljwhj5npl2nszl/ELON -decimals = 6 - -[factory/inj13jjz8nlt7wjpt5m2semml2ytdjkfrltnjtphsv/position] -peggy_denom = factory/inj13jjz8nlt7wjpt5m2semml2ytdjkfrltnjtphsv/position -decimals = 0 - -[factory/inj13q8npcxrx6yd22c096495qyf3mgvq2ekzflge3/position] -peggy_denom = factory/inj13q8npcxrx6yd22c096495qyf3mgvq2ekzflge3/position -decimals = 0 - -[factory/inj13qr6jk3y20ulaj3mvjzn2rnxx9y8d8nl7ahxpg/position] -peggy_denom = factory/inj13qr6jk3y20ulaj3mvjzn2rnxx9y8d8nl7ahxpg/position -decimals = 0 - -[factory/inj13t7ypq4g9nlc89d5vqqrawxykca6yhzv5vgdsx/position] -peggy_denom = factory/inj13t7ypq4g9nlc89d5vqqrawxykca6yhzv5vgdsx/position -decimals = 0 - -[factory/inj13vau2mgx6mg7ams9nngjhyng58tl9zyw0n8s93/BABYKIRA] -peggy_denom = factory/inj13vau2mgx6mg7ams9nngjhyng58tl9zyw0n8s93/BABYKIRA -decimals = 6 - -[factory/inj13xdqhnegnj37fna95nyjtj68cyk4exut9mp9am/position] -peggy_denom = factory/inj13xdqhnegnj37fna95nyjtj68cyk4exut9mp9am/position -decimals = 0 - -[factory/inj13xwndajdxqz2jjg05caycedjdj099vy2mzdha2/INJ] -peggy_denom = factory/inj13xwndajdxqz2jjg05caycedjdj099vy2mzdha2/INJ -decimals = 6 - -[factory/inj140z6rk5x40rn842c648yvgl9zp7q206gyvj3w4/INJ] -peggy_denom = factory/inj140z6rk5x40rn842c648yvgl9zp7q206gyvj3w4/INJ -decimals = 6 - -[factory/inj143gkmw2nrfpks6faf66eskuxx6td6phs23752s/position] -peggy_denom = factory/inj143gkmw2nrfpks6faf66eskuxx6td6phs23752s/position -decimals = 0 - -[factory/inj144javr53kzz7qedyynwrpa83tnykw9lrzzxsr9/position] -peggy_denom = factory/inj144javr53kzz7qedyynwrpa83tnykw9lrzzxsr9/position -decimals = 0 - -[factory/inj1499ez5npathr0zkphz2yq6npdfc6xvg3d4zynj/ISILLY] -peggy_denom = factory/inj1499ez5npathr0zkphz2yq6npdfc6xvg3d4zynj/ISILLY -decimals = 6 - -[factory/inj14czx0fv80fnkfxtj9zn9wg7thdca8ynlu6vrg8/INJ] -peggy_denom = factory/inj14czx0fv80fnkfxtj9zn9wg7thdca8ynlu6vrg8/INJ -decimals = 6 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj100cpphf3gjq4xwzaun8dm22h6zk6tjlzl57uhe] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj100cpphf3gjq4xwzaun8dm22h6zk6tjlzl57uhe -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj109hqm6wdaq2f6nlvrf46f4gj7rwl55nmhmcslp] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj109hqm6wdaq2f6nlvrf46f4gj7rwl55nmhmcslp -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10dctm5qkm722pgazwq0wy9lxnzh8mlnnv9mr65] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10dctm5qkm722pgazwq0wy9lxnzh8mlnnv9mr65 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10hyl7t5zxrs83thk33yk90lue34lttf9wuccf8] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10hyl7t5zxrs83thk33yk90lue34lttf9wuccf8 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10nfzrxq5jl9v3ymyuna49jhhxe3x4yd2sxxs8p] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10nfzrxq5jl9v3ymyuna49jhhxe3x4yd2sxxs8p -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10x6rq57rhc7ekce0jgzcjl3ywplcjh66ufqanv] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj10x6rq57rhc7ekce0jgzcjl3ywplcjh66ufqanv -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj12sl2vnrja04juaan5rt3pn4h3lwa6d9348yh6h] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj12sl2vnrja04juaan5rt3pn4h3lwa6d9348yh6h -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13844sjp45gta5hshs0avptawnptz23gfdjy8eg] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13844sjp45gta5hshs0avptawnptz23gfdjy8eg -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13j6rdjsakqt6ymv48ytfkr563k7h9mc9h9lh5s] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13j6rdjsakqt6ymv48ytfkr563k7h9mc9h9lh5s -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13qqk8lgn6x68r34c9w938vxwmxm5pl72kzjufq] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13qqk8lgn6x68r34c9w938vxwmxm5pl72kzjufq -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13tqf9a4tssf8gsqejecp90a03nvfpa2h29sc6y] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13tqf9a4tssf8gsqejecp90a03nvfpa2h29sc6y -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13w3fqm6zn068slf6mh4jvf7lxva4qdchrlws9u] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13w3fqm6zn068slf6mh4jvf7lxva4qdchrlws9u -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj147ymh390v733ty3l0t7yv0w3vllnky5vr78xeh] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj147ymh390v733ty3l0t7yv0w3vllnky5vr78xeh -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1494q6d3un6rpew6znydq0a0l5edw80gptj3p27] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1494q6d3un6rpew6znydq0a0l5edw80gptj3p27 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14fjgyt69ayhlz9gtgrutqdqyaf50wfxs7xx89e] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14fjgyt69ayhlz9gtgrutqdqyaf50wfxs7xx89e -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14n26cr7dj79smrgg44hfylhph9y45h4yx5gvzm] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14n26cr7dj79smrgg44hfylhph9y45h4yx5gvzm -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14r3dv360jptv4wugpcca4h5ychltfn8j738l6k] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14r3dv360jptv4wugpcca4h5ychltfn8j738l6k -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14txwtn7rkt999kek39qlxwcm2fwfqzpfyrxcvq] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj14txwtn7rkt999kek39qlxwcm2fwfqzpfyrxcvq -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1557zqvn2lwg3lvl3cfk3kurd6d2gq9klypg83g] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1557zqvn2lwg3lvl3cfk3kurd6d2gq9klypg83g -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj15f3xcpv3m9wgycmgc62gn3av9k7a9lydnkcrdr] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj15f3xcpv3m9wgycmgc62gn3av9k7a9lydnkcrdr -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj15hgev8qm20mhttw6xrjts37puqm068dfupj5m2] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj15hgev8qm20mhttw6xrjts37puqm068dfupj5m2 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj15xk5d4d3we8z9s9avcqfns2xsrqq9u5mgaw6q6] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj15xk5d4d3we8z9s9avcqfns2xsrqq9u5mgaw6q6 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1623vfn9glj9wtd34yv3ck5z3adp673ad2ssuh2] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1623vfn9glj9wtd34yv3ck5z3adp673ad2ssuh2 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj164j450vfh7chdsxdqna3925sdqg9xry38fxf4w] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj164j450vfh7chdsxdqna3925sdqg9xry38fxf4w -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj16eggztyy9ul8hfkckwgjvj43naefhazt04ruzl] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj16eggztyy9ul8hfkckwgjvj43naefhazt04ruzl -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj174whv2m9y92vawm0rnte3czu3g4anr56eacqpc] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj174whv2m9y92vawm0rnte3czu3g4anr56eacqpc -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17e3zurs95u5rqp7amj4hz9sk43hu5n6f06n5g8] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17e3zurs95u5rqp7amj4hz9sk43hu5n6f06n5g8 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17g3sn33ld59n2uyevp833u4pwynvfw7chfcxq6] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17g3sn33ld59n2uyevp833u4pwynvfw7chfcxq6 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17gvlu9v8h0kk06aqf66u9zk235824ksknugpqm] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17gvlu9v8h0kk06aqf66u9zk235824ksknugpqm -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17m8xuqntg5sc3m78jzajte5r4my4erwhujq3uh] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17m8xuqntg5sc3m78jzajte5r4my4erwhujq3uh -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17pda96ujt7fzr3d5jmfkh4dzvrqzc0nk56kt34] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj17pda96ujt7fzr3d5jmfkh4dzvrqzc0nk56kt34 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj180zwmntk4yw8mp90qzedvgg63lc8g9ju4f79pn] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj180zwmntk4yw8mp90qzedvgg63lc8g9ju4f79pn -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj185gqewrlde8vrqw7j8lpad67v8jfrx9u28w38t] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj185gqewrlde8vrqw7j8lpad67v8jfrx9u28w38t -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj188yjwj0gpnd39ysgas0f95pngdacwma2jmm8ne] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj188yjwj0gpnd39ysgas0f95pngdacwma2jmm8ne -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18cd8sht8pksj07z8k36rwytn6gyg3kku8x6xgq] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18cd8sht8pksj07z8k36rwytn6gyg3kku8x6xgq -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18dc3m7xtxa6wx0auycyfrq239atvzwe9g2s0nt] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18dc3m7xtxa6wx0auycyfrq239atvzwe9g2s0nt -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18ms5jl7dtdjzsj0gwceqnc46apdfym7xpjqyes] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18ms5jl7dtdjzsj0gwceqnc46apdfym7xpjqyes -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18x46txl47l8gtcrl05a7xynhjx6w0xgtmnng7s] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18x46txl47l8gtcrl05a7xynhjx6w0xgtmnng7s -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj19f6ww9peaa3tjhjynjcsxms9v4mcpqrpdxz76l] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj19f6ww9peaa3tjhjynjcsxms9v4mcpqrpdxz76l -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj19t6urf7j7t85xa8yf5h85323j5zmvpg030dr6w] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj19t6urf7j7t85xa8yf5h85323j5zmvpg030dr6w -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1a36gng2z5p7m3ecx528zx09eclg5hsmnhrjaun] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1a36gng2z5p7m3ecx528zx09eclg5hsmnhrjaun -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1a52nehymq2m779j7zy6ra4eus70y6dnahfs4a5] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1a52nehymq2m779j7zy6ra4eus70y6dnahfs4a5 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1a7wd7ks949wxzcw69n6md60c0qhykk93w0r8g6] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1a7wd7ks949wxzcw69n6md60c0qhykk93w0r8g6 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1a8mlar2l3r25uaxdgk0zxyapq7h0435264h8jk] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1a8mlar2l3r25uaxdgk0zxyapq7h0435264h8jk -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1c43k77927yryd8wkzupnppen83alqkm5myt6we] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1c43k77927yryd8wkzupnppen83alqkm5myt6we -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ceq66p5aahn6txg5fvyg4mhy2vfq00cuk75y9r] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ceq66p5aahn6txg5fvyg4mhy2vfq00cuk75y9r -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ch7unkwz0v99ynz98v5p0xae4gg0yxnjw6meg7] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ch7unkwz0v99ynz98v5p0xae4gg0yxnjw6meg7 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1clr2v2jwx8umtd4t3ent5la6q2ngsureenjqtg] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1clr2v2jwx8umtd4t3ent5la6q2ngsureenjqtg -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ctr4vujpjvmqxxkqym9zgm76p4uf0hyklvdp25] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ctr4vujpjvmqxxkqym9zgm76p4uf0hyklvdp25 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1cv6d835mxs5wsahaf6dp6pqs4h453s3lpk5wxd] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1cv6d835mxs5wsahaf6dp6pqs4h453s3lpk5wxd -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1d3rkrv8f4xm4zv5rcdkydy36xzdksq94ewy5md] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1d3rkrv8f4xm4zv5rcdkydy36xzdksq94ewy5md -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1d4vlrslnwxn3zpq64e8z7ap04c5svu5s83f2k5] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1d4vlrslnwxn3zpq64e8z7ap04c5svu5s83f2k5 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1d62ry5fwsafggxu67fwhavpu3954vf5n8e5pmt] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1d62ry5fwsafggxu67fwhavpu3954vf5n8e5pmt -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1dsd2d4ac60gs2sc34nmwu6x9q2h5cvdr0vz4du] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1dsd2d4ac60gs2sc34nmwu6x9q2h5cvdr0vz4du -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1dtpqn48watxrezj6gg630x0xzxw4jm70mqxgpt] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1dtpqn48watxrezj6gg630x0xzxw4jm70mqxgpt -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1e4r4gcx3z4f2cey2wyy27zcnr8tvjs0zrdvtvs] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1e4r4gcx3z4f2cey2wyy27zcnr8tvjs0zrdvtvs -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1e7zmlmkexknfseutx2anr0mhkry8mwg000xm0r] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1e7zmlmkexknfseutx2anr0mhkry8mwg000xm0r -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1elhv36r9nkw0praytqqgjpxgyd8lte7r4msp5y] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1elhv36r9nkw0praytqqgjpxgyd8lte7r4msp5y -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1esca7pkwcptl7xcwfntnye9lgmqj7exnh4waqw] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1esca7pkwcptl7xcwfntnye9lgmqj7exnh4waqw -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ete5curf5mjtznmtzu5xxyrvyxclgsscxd9qk9] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ete5curf5mjtznmtzu5xxyrvyxclgsscxd9qk9 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1eux0764t05hmmyfksjmwhahq9kh3yq4stcg0rs] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1eux0764t05hmmyfksjmwhahq9kh3yq4stcg0rs -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1f8nq8vvlhms85ywsnp9vnkua3jszqjfd6ts4qq] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1f8nq8vvlhms85ywsnp9vnkua3jszqjfd6ts4qq -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1fz2tp874h856zuhtujjz3a65c0x6fh742lwdv9] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1fz2tp874h856zuhtujjz3a65c0x6fh742lwdv9 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1gzcx85m49u6y8a9dwx6eddfw8d9r4xtzzna83y] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1gzcx85m49u6y8a9dwx6eddfw8d9r4xtzzna83y -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1h5f6vxsn5hpln75c4mfmntza9m7maj6s396u4w] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1h5f6vxsn5hpln75c4mfmntza9m7maj6s396u4w -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hawmarr2vaswduu09xvkcqjqm79d5zp8zku95r] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hawmarr2vaswduu09xvkcqjqm79d5zp8zku95r -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hqp8mnaa0m9zj77y9qqrv33v3k8w2jx3xjahm2] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hqp8mnaa0m9zj77y9qqrv33v3k8w2jx3xjahm2 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hxq5q8h7d8up6j4jcmxje42zpkzr409j6ay4wu] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hxq5q8h7d8up6j4jcmxje42zpkzr409j6ay4wu -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hza9v3f32kt8vjx24twpj46c5gx52uhylj5qzm] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1hza9v3f32kt8vjx24twpj46c5gx52uhylj5qzm -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1j62tv3rr6ypyfft09q2uvgnplvdy5h7knas83w] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1j62tv3rr6ypyfft09q2uvgnplvdy5h7knas83w -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1jm4q2da9xutly7uslzce3ftgjr0xunvj6ek5ve] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1jm4q2da9xutly7uslzce3ftgjr0xunvj6ek5ve -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1kvlz7j3meau8uy5upr95p2kn0j275jck9vjh4j] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1kvlz7j3meau8uy5upr95p2kn0j275jck9vjh4j -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ln2tayrlh0vl73cdzxryhkuuppkycxpna5jm87] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ln2tayrlh0vl73cdzxryhkuuppkycxpna5jm87 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ln9zmpv8nruce89hrf6z0m5t8t93jswyrw89r9] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ln9zmpv8nruce89hrf6z0m5t8t93jswyrw89r9 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1lp0lcf67tk4y8ccnmmggpj8c8wf3gkhtt439r8] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1lp0lcf67tk4y8ccnmmggpj8c8wf3gkhtt439r8 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1lpctts3ah545m8q0pnd696kwthdzgaxur70cm0] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1lpctts3ah545m8q0pnd696kwthdzgaxur70cm0 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1lt4tg3zxula8kgg4q73s02mqdnjnyu2mal4fv9] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1lt4tg3zxula8kgg4q73s02mqdnjnyu2mal4fv9 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1m5czravjfjjmf6l0qujkvxtue373e4cff07d4n] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1m5czravjfjjmf6l0qujkvxtue373e4cff07d4n -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1m9chxsuw52eydkah423ue2e6w8pyj89zxlla6m] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1m9chxsuw52eydkah423ue2e6w8pyj89zxlla6m -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1mgypkdu4esseefz7dgahuduft33a3any5lrx8a] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1mgypkdu4esseefz7dgahuduft33a3any5lrx8a -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ms0ycmqsqnnd8zztvzrq0jts0cudfujjmzesw2] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ms0ycmqsqnnd8zztvzrq0jts0cudfujjmzesw2 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1mve80zt9gyetq9e2qsjdz579qc9nnpxprkuqjt] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1mve80zt9gyetq9e2qsjdz579qc9nnpxprkuqjt -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1mw99k3jrxhzhktphtr55e9fhp2rncc2elh75js] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1mw99k3jrxhzhktphtr55e9fhp2rncc2elh75js -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1n0cq8p8zd36ecq2tljtsg0uqkpxn830n5mk38j] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1n0cq8p8zd36ecq2tljtsg0uqkpxn830n5mk38j -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1nemphsdeqekqr7j8ve8gz8jcz4z2lurzty9dw3] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1nemphsdeqekqr7j8ve8gz8jcz4z2lurzty9dw3 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1nkj7k722lduxvhs376qkl9lhjw0le0pwux57wp] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1nkj7k722lduxvhs376qkl9lhjw0le0pwux57wp -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1np2ylwgqgyzwppx4k2lr8rkqq5vs8v5y84ghwp] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1np2ylwgqgyzwppx4k2lr8rkqq5vs8v5y84ghwp -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1nssppa309t2pty5agwrmrjqx9md9764ntesce6] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1nssppa309t2pty5agwrmrjqx9md9764ntesce6 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1pljwjmkngg7atyxwm8mpwwdayyqk0pfjz8d4j0] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1pljwjmkngg7atyxwm8mpwwdayyqk0pfjz8d4j0 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ps7s09q5mldj3wghtcvpsflt0uvc9c0wllqvm0] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ps7s09q5mldj3wghtcvpsflt0uvc9c0wllqvm0 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1pwqllsz0d7377v6gvx5vd3df9xurekpyrsscln] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1pwqllsz0d7377v6gvx5vd3df9xurekpyrsscln -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q37t59kug9hhjvht20uc8kheva0tfdjak4yys8] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q37t59kug9hhjvht20uc8kheva0tfdjak4yys8 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q62knrccf8n2386jzzv2plr6rat2lfvx95muqv] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1q62knrccf8n2386jzzv2plr6rat2lfvx95muqv -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1qg8x9eec40aqjzezku7r2dpz0sz3962ljsk8ga] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1qg8x9eec40aqjzezku7r2dpz0sz3962ljsk8ga -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1qu0zyksruugw9az7e0m7wf9lmatacf5d2uznqw] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1qu0zyksruugw9az7e0m7wf9lmatacf5d2uznqw -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rl004yqz80hdkn5ctnqfxngv24cs2yc39zqaxt] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rl004yqz80hdkn5ctnqfxngv24cs2yc39zqaxt -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rm88t0crsdfkjpgs9k6tzupzf9qsv2az8u06a7] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rm88t0crsdfkjpgs9k6tzupzf9qsv2az8u06a7 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rn0hfpfcj09uq7r6l7tx2fhdwsufptv340w904] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rn0hfpfcj09uq7r6l7tx2fhdwsufptv340w904 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rnraxu54huv7wkmpff3v8mzhqh49g0e6fj67sd] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rnraxu54huv7wkmpff3v8mzhqh49g0e6fj67sd -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rx2yfurr3zh4nzv5gazh899dyc2v4lhx2fex3r] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1rx2yfurr3zh4nzv5gazh899dyc2v4lhx2fex3r -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ry55p3hcfwqd0r4d6hkd2hgldfamf63ehkem8a] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ry55p3hcfwqd0r4d6hkd2hgldfamf63ehkem8a -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1s2rs23gg0mw6jr7s3rjhwsrssnnhn8vck24n2r] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1s2rs23gg0mw6jr7s3rjhwsrssnnhn8vck24n2r -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1s66zhks8v3fm24974crzxufh7w6ktt694g9t3j] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1s66zhks8v3fm24974crzxufh7w6ktt694g9t3j -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1sn40ldl8ud3dalqk39mxp7t4unqaadnt9cg9a4] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1sn40ldl8ud3dalqk39mxp7t4unqaadnt9cg9a4 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1sqc9jap0yye84dx5uyqyvepg83p7hvqke5sjvk] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1sqc9jap0yye84dx5uyqyvepg83p7hvqke5sjvk -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ta03vxka8mpgem44xvhewekg89wxel8leyvugw] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ta03vxka8mpgem44xvhewekg89wxel8leyvugw -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ufx78kwvwpds77hxrmxkedsp6yhvflk5lz2a58] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1ufx78kwvwpds77hxrmxkedsp6yhvflk5lz2a58 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1uhukgtdm0xyq35w34rxh73g3yhffxw4qg568sx] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1uhukgtdm0xyq35w34rxh73g3yhffxw4qg568sx -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1uq30shptkerand4zl6xr8ga2jt0mu0c6npak0a] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1uq30shptkerand4zl6xr8ga2jt0mu0c6npak0a -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1uu9dsss65z2dt6cz9avr2tk6wrdjxxe0cxh4d5] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1uu9dsss65z2dt6cz9avr2tk6wrdjxxe0cxh4d5 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1v0dxtj5ku80w4h96jc0scyxlnk3j869dj2nnay] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1v0dxtj5ku80w4h96jc0scyxlnk3j869dj2nnay -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1v3z2nx0k9fjv83ktx4dtsau82ff2c68gxfqah9] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1v3z2nx0k9fjv83ktx4dtsau82ff2c68gxfqah9 -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1vd8qv39y8ay7x0ldlhhnfcjc0k6ya69fvp2vzw] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1vd8qv39y8ay7x0ldlhhnfcjc0k6ya69fvp2vzw -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1vy9xhn2gmswm7xyt39wnnd8pz4w6e93zjzurdu] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1vy9xhn2gmswm7xyt39wnnd8pz4w6e93zjzurdu -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1w9z5t04v2jl6r85s8e0984f4v2drdpq8fnl6hs] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1w9z5t04v2jl6r85s8e0984f4v2drdpq8fnl6hs -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1wea6emsvgrxnsg07wsf9kx5djn2r4fyqzsxcja] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1wea6emsvgrxnsg07wsf9kx5djn2r4fyqzsxcja -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1wyd57qlwdhfj4sepl4y2eedsn077gzgg95cgwh] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1wyd57qlwdhfj4sepl4y2eedsn077gzgg95cgwh -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1x9uecns088t3dw2map7q235nzvyfhtzqkgneux] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1x9uecns088t3dw2map7q235nzvyfhtzqkgneux -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1xjvf8nzcx5uvjnmey6x7vx4xe08k95k7gx0fyl] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1xjvf8nzcx5uvjnmey6x7vx4xe08k95k7gx0fyl -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1yzjcwy4m2qyn3kvspgsxhdltxz5kw34n8x80xx] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1yzjcwy4m2qyn3kvspgsxhdltxz5kw34n8x80xx -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1yzm2tg8mv3ajgw4z4vnjynpanjqvezywcgjkzf] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1yzm2tg8mv3ajgw4z4vnjynpanjqvezywcgjkzf -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1zcssxvw4x9zdqww2atu7at0n5ss2lv8gg8u6ul] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1zcssxvw4x9zdqww2atu7at0n5ss2lv8gg8u6ul -decimals = 0 - -[factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1zejzp0ne0hh7c0wupuspkcqwajlw6kww3r86jl] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1zejzp0ne0hh7c0wupuspkcqwajlw6kww3r86jl -decimals = 0 - -[factory/inj14epxlhe56lhk5s3nc8wzmetwh6rpehuufe89ak/SUSHI] -peggy_denom = factory/inj14epxlhe56lhk5s3nc8wzmetwh6rpehuufe89ak/SUSHI -decimals = 6 - -[factory/inj14epxlhe56lhk5s3nc8wzmetwh6rpehuufe89ak/UNI] -peggy_denom = factory/inj14epxlhe56lhk5s3nc8wzmetwh6rpehuufe89ak/UNI -decimals = 6 - -[factory/inj14fx6k6an38hmqz58nxzggxycmy7mpy9ju7mqxq/INJ] -peggy_denom = factory/inj14fx6k6an38hmqz58nxzggxycmy7mpy9ju7mqxq/INJ -decimals = 6 - -[factory/inj14r67lv9phdjs94x6zsd446ptw04cmkq2j4t6wm/position] -peggy_denom = factory/inj14r67lv9phdjs94x6zsd446ptw04cmkq2j4t6wm/position -decimals = 0 - -[factory/inj1532ekcsx3mqtmxx0s5uc32my0et9vazdkkfcna/INJ] -peggy_denom = factory/inj1532ekcsx3mqtmxx0s5uc32my0et9vazdkkfcna/INJ -decimals = 6 - -[factory/inj153w639226jrytrcpy3tuvnheqydmxtkgucsgy0/position] -peggy_denom = factory/inj153w639226jrytrcpy3tuvnheqydmxtkgucsgy0/position -decimals = 0 - -[factory/inj15446d66cyfqh97hp0x3n749mvq4kx0lnfvuwt5/INJ] -peggy_denom = factory/inj15446d66cyfqh97hp0x3n749mvq4kx0lnfvuwt5/INJ -decimals = 6 - -[factory/inj157g6qg542h735ww6kzk5jf7s2ayscgtcg7mvv3/position] -peggy_denom = factory/inj157g6qg542h735ww6kzk5jf7s2ayscgtcg7mvv3/position -decimals = 0 - -[factory/inj157l55k7pt6wlkmvs95kx96m2y30tgvxuld6zfc/INJ] -peggy_denom = factory/inj157l55k7pt6wlkmvs95kx96m2y30tgvxuld6zfc/INJ -decimals = 6 - -[factory/inj158g7dfclyg9rr6u4ddxg9d2afwevq5d79g2tm6/coke] -peggy_denom = factory/inj158g7dfclyg9rr6u4ddxg9d2afwevq5d79g2tm6/coke -decimals = 6 - -[factory/inj158gzqc0hlwtwx4jhu92wssxslvm2xcyg256qck/position] -peggy_denom = factory/inj158gzqc0hlwtwx4jhu92wssxslvm2xcyg256qck/position -decimals = 0 - -[factory/inj158xvl6jgd6cgdetnxu4rus4vcv50u3q06wryjl/INJ] -peggy_denom = factory/inj158xvl6jgd6cgdetnxu4rus4vcv50u3q06wryjl/INJ -decimals = 6 - -[factory/inj1598f9vtwc3furg3dnat9lnjw5eflcyuazv2c3m/position] -peggy_denom = factory/inj1598f9vtwc3furg3dnat9lnjw5eflcyuazv2c3m/position -decimals = 0 - -[factory/inj15rddsgzhts4lyuk4a92aq7g4wemgf7r3u6w80p/INJ] -peggy_denom = factory/inj15rddsgzhts4lyuk4a92aq7g4wemgf7r3u6w80p/INJ -decimals = 6 - -[factory/inj15sqzlm42xks73nxez8tw8k6tp9xln7gfth2sv6/position] -peggy_denom = factory/inj15sqzlm42xks73nxez8tw8k6tp9xln7gfth2sv6/position -decimals = 0 - -[factory/inj15w5mrks9eqwng5c39jglnxztmzy33yr6pd7umm/position] -peggy_denom = factory/inj15w5mrks9eqwng5c39jglnxztmzy33yr6pd7umm/position -decimals = 0 - -[factory/inj15xxgscstfpaztar2hjluzphvq4m8jffjym8svh/lpinj1alqcad69f6y4zepfu3k8cx0ysynjemju4auc42] -peggy_denom = factory/inj15xxgscstfpaztar2hjluzphvq4m8jffjym8svh/lpinj1alqcad69f6y4zepfu3k8cx0ysynjemju4auc42 -decimals = 0 - -[factory/inj164shttz4dv6ec8m44gulucpej3pgl7tjqhdvyk/position] -peggy_denom = factory/inj164shttz4dv6ec8m44gulucpej3pgl7tjqhdvyk/position -decimals = 0 - -[factory/inj16936rlm3gm2z7gd8t677t926qz93hqy07qhh3z/position] -peggy_denom = factory/inj16936rlm3gm2z7gd8t677t926qz93hqy07qhh3z/position -decimals = 0 - -[factory/inj169rj69y0td97a0gvz3jthr63ml79h0ez2sc0rm/position] -peggy_denom = factory/inj169rj69y0td97a0gvz3jthr63ml79h0ez2sc0rm/position -decimals = 0 - -[factory/inj16dz5cway50f6sv0l4hus2wg84mltfs7c6zwggs/position] -peggy_denom = factory/inj16dz5cway50f6sv0l4hus2wg84mltfs7c6zwggs/position -decimals = 0 - -[factory/inj16hsmv4grd5ru3axtvgc8c0dygc0skpfct837dv/position] -peggy_denom = factory/inj16hsmv4grd5ru3axtvgc8c0dygc0skpfct837dv/position -decimals = 0 - -[factory/inj16tth6zcljja520fetw9u7plyza5e6sj0rta6ua/inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc] -peggy_denom = factory/inj16tth6zcljja520fetw9u7plyza5e6sj0rta6ua/inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc -decimals = 0 - -[factory/inj16xkr5efuae9ur5tftr5epxtse43falevltugdt/TEST] -peggy_denom = factory/inj16xkr5efuae9ur5tftr5epxtse43falevltugdt/TEST -decimals = 6 - -[factory/inj16zm5htn50fm4veztrazn2a6yjp2kjwnvthq8r8/PEPE] -peggy_denom = factory/inj16zm5htn50fm4veztrazn2a6yjp2kjwnvthq8r8/PEPE -decimals = 6 - -[factory/inj16zquths3dwk0varlj32ur9skutl640umvllxeu/position] -peggy_denom = factory/inj16zquths3dwk0varlj32ur9skutl640umvllxeu/position -decimals = 0 - -[factory/inj17g9jsj37jt0w77x4gfmt6rxf0r2zr307kky875/INJ] -peggy_denom = factory/inj17g9jsj37jt0w77x4gfmt6rxf0r2zr307kky875/INJ -decimals = 6 - -[factory/inj17kqcwkgdayv585dr7mljclechqzymgfsqc8x9k/THUG] -peggy_denom = factory/inj17kqcwkgdayv585dr7mljclechqzymgfsqc8x9k/THUG -decimals = 6 - -[factory/inj17pn6nwvk33404flhglujj4n5y3p2esy5x0cfhm/SPUUN] -peggy_denom = factory/inj17pn6nwvk33404flhglujj4n5y3p2esy5x0cfhm/SPUUN -decimals = 6 - -[factory/inj17vgy7dxx5j0a3xag8hg53e74ztjs50qrycj2pn/INJ] -peggy_denom = factory/inj17vgy7dxx5j0a3xag8hg53e74ztjs50qrycj2pn/INJ -decimals = 6 - -[factory/inj183fjyma33jsx0wndkmk69yukk3gpll7gunkyz6/sakurasakura] -peggy_denom = factory/inj183fjyma33jsx0wndkmk69yukk3gpll7gunkyz6/sakurasakura -decimals = 6 - -[factory/inj18c9gq53gs52rmj6nevfg48v3xx222stnxgwpku/position] -peggy_denom = factory/inj18c9gq53gs52rmj6nevfg48v3xx222stnxgwpku/position -decimals = 0 - -[factory/inj18prwk9vqw82x86lx9d8kmymmzl9vzuznzye3l0/INJ] -peggy_denom = factory/inj18prwk9vqw82x86lx9d8kmymmzl9vzuznzye3l0/INJ -decimals = 6 - -[factory/inj190kxvhadeqawy85mhv0n3m5mtza4cyndplaqnr/position] -peggy_denom = factory/inj190kxvhadeqawy85mhv0n3m5mtza4cyndplaqnr/position -decimals = 0 - -[factory/inj19a6vl3srten0csmjgeek26vkppxtpy4veyh6wj/position] -peggy_denom = factory/inj19a6vl3srten0csmjgeek26vkppxtpy4veyh6wj/position -decimals = 0 - -[factory/inj19fa4pmpnxysawtps7aq7nhh7k2x8wvvqwxv7kl/position] -peggy_denom = factory/inj19fa4pmpnxysawtps7aq7nhh7k2x8wvvqwxv7kl/position -decimals = 0 - -[factory/inj19g8xh8wfaxl7a4z5pr67e908ph68n5zamsagxt/position] -peggy_denom = factory/inj19g8xh8wfaxl7a4z5pr67e908ph68n5zamsagxt/position -decimals = 0 - -[factory/inj19h8ypfpczenmslgvxk73kszedfd9h9ptn2a5ml/position] -peggy_denom = factory/inj19h8ypfpczenmslgvxk73kszedfd9h9ptn2a5ml/position -decimals = 0 - -[factory/inj19jeceymrrcvqty0mapdf7daa47gr33khpwpfnt/position] -peggy_denom = factory/inj19jeceymrrcvqty0mapdf7daa47gr33khpwpfnt/position -decimals = 0 - -[factory/inj19mznavp32fkmwzdyuute4al2lrjzvy6ym9em3h/babypanda] -peggy_denom = factory/inj19mznavp32fkmwzdyuute4al2lrjzvy6ym9em3h/babypanda -decimals = 6 - -[factory/inj19uyuzl6chkdp3ez8aua2marzqwuv3n23ynf2x0/position] -peggy_denom = factory/inj19uyuzl6chkdp3ez8aua2marzqwuv3n23ynf2x0/position -decimals = 0 - -[factory/inj19xq90yxtaar7xlz5jdzvqgkjw285rqzsjvxc2j/position] -peggy_denom = factory/inj19xq90yxtaar7xlz5jdzvqgkjw285rqzsjvxc2j/position -decimals = 0 - -[factory/inj19y42qwvf6s9aq6qqjk09qfe0f4n78e48cqe7w4/INJ] -peggy_denom = factory/inj19y42qwvf6s9aq6qqjk09qfe0f4n78e48cqe7w4/INJ -decimals = 6 - -[factory/inj19yyllwqvapt4hsn7cpcg540qt5c3fekxxhjppg/position] -peggy_denom = factory/inj19yyllwqvapt4hsn7cpcg540qt5c3fekxxhjppg/position -decimals = 0 - -[factory/inj1a0n3xm83w6d0gzheffkve30z8wpz6xq8zdf48r/ETH] -peggy_denom = factory/inj1a0n3xm83w6d0gzheffkve30z8wpz6xq8zdf48r/ETH -decimals = 6 - -[factory/inj1a3lpj7yf5spw344pfa9gjcgwx3zyx5v9e6cpg2/INJ] -peggy_denom = factory/inj1a3lpj7yf5spw344pfa9gjcgwx3zyx5v9e6cpg2/INJ -decimals = 6 - -[factory/inj1a3m6hv5hmt4lxkw0uqqz7m3m7dgtd2uy4hmenp/position] -peggy_denom = factory/inj1a3m6hv5hmt4lxkw0uqqz7m3m7dgtd2uy4hmenp/position -decimals = 0 - -[factory/inj1a4hvejdwaf9gd9rltwftxf0fyz6mrzwmnauacp/SOL] -peggy_denom = factory/inj1a4hvejdwaf9gd9rltwftxf0fyz6mrzwmnauacp/SOL -decimals = 6 - -[factory/inj1a6xdezq7a94qwamec6n6cnup02nvewvjtz6h6e/uabc] -peggy_denom = factory/inj1a6xdezq7a94qwamec6n6cnup02nvewvjtz6h6e/uabc -decimals = 0 - -[factory/inj1a7ezydnsl7ea5xz0h8lcdjlp07e3leavkmct7q/position] -peggy_denom = factory/inj1a7ezydnsl7ea5xz0h8lcdjlp07e3leavkmct7q/position -decimals = 0 - -[factory/inj1aavd3p5f5xzr0ld0mygxp0vz84uutkclul3qhk/position] -peggy_denom = factory/inj1aavd3p5f5xzr0ld0mygxp0vz84uutkclul3qhk/position -decimals = 0 - -[factory/inj1acyx78g70fwu2fcjx6dj9yff34gscu0g4tg8vw/INJ] -peggy_denom = factory/inj1acyx78g70fwu2fcjx6dj9yff34gscu0g4tg8vw/INJ -decimals = 6 - -[factory/inj1adam3fc7h0wjlhht0utgyl53rcataw3q70vntr/INJ] -peggy_denom = factory/inj1adam3fc7h0wjlhht0utgyl53rcataw3q70vntr/INJ -decimals = 6 - -[factory/inj1alwxgkns9x7d2sprymwwfvzl5t7teetym02lrj/NONJA] -peggy_denom = factory/inj1alwxgkns9x7d2sprymwwfvzl5t7teetym02lrj/NONJA -decimals = 6 - -[factory/inj1aq5rpkexhycqk54afj630ktmgaqvc468fwk34k/position] -peggy_denom = factory/inj1aq5rpkexhycqk54afj630ktmgaqvc468fwk34k/position -decimals = 0 - -[factory/inj1ary3d4xl6jjlkht33ktqc2py7lvc3l4mqrfq00/SEX] -peggy_denom = factory/inj1ary3d4xl6jjlkht33ktqc2py7lvc3l4mqrfq00/SEX -decimals = 6 - -[factory/inj1avm2ruactjhxlrd8cq7ja7vhmtqwpu2lpnnq79/position] -peggy_denom = factory/inj1avm2ruactjhxlrd8cq7ja7vhmtqwpu2lpnnq79/position -decimals = 0 - -[factory/inj1awuqzd4sgmw9pguaftekx87pnl8ylqhvm3n97y/INJ] -peggy_denom = factory/inj1awuqzd4sgmw9pguaftekx87pnl8ylqhvm3n97y/INJ -decimals = 6 - -[factory/inj1c6eq9yp3c3ray4prfyumyv9m5ttkdzxawpg6c0/position] -peggy_denom = factory/inj1c6eq9yp3c3ray4prfyumyv9m5ttkdzxawpg6c0/position -decimals = 0 - -[factory/inj1c8vg7hteehax3nek92ysqknns5fcs64jwkvqn0/position] -peggy_denom = factory/inj1c8vg7hteehax3nek92ysqknns5fcs64jwkvqn0/position -decimals = 0 - -[factory/inj1cjzufvday63thkgqkxnesgav69c5afsm5aws8w/test] -peggy_denom = factory/inj1cjzufvday63thkgqkxnesgav69c5afsm5aws8w/test -decimals = 6 - -[factory/inj1cm5lg3z9l3gftt0c09trnllmayxpwt8825zxw3/elon] -peggy_denom = factory/inj1cm5lg3z9l3gftt0c09trnllmayxpwt8825zxw3/elon -decimals = 6 - -[factory/inj1cq5ygzlgh6l2pll2thtx82rhde2v7cpxlqfz93/GME] -peggy_denom = factory/inj1cq5ygzlgh6l2pll2thtx82rhde2v7cpxlqfz93/GME -decimals = 6 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707147655.812049146InjUsdt1d1.08C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707147655.812049146InjUsdt1d1.08C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707151420.026670141InjUsdt1d1.08C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707151420.026670141InjUsdt1d1.08C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707230551.918032637InjUsdt20d1.21C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707230551.918032637InjUsdt20d1.21C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707230884.525553719InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707230884.525553719InjUsdt28d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707231283.066300029InjUsdt20d1.21C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707231283.066300029InjUsdt20d1.21C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707231469.923471325InjUsdt16d0.87P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707231469.923471325InjUsdt16d0.87P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707570015.556318592InjUsdt20d1.21C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707570015.556318592InjUsdt20d1.21C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707570076.365183070InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707570076.365183070InjUsdt28d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707570225.110365254InjUsdt16d0.87P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707570225.110365254InjUsdt16d0.87P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707915798.275383427InjUsdt24d1.22C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707915798.275383427InjUsdt24d1.22C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707915921.506232293InjUsdt30d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707915921.506232293InjUsdt30d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707916064.752464733InjUsdt18d0.87P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1707916064.752464733InjUsdt18d0.87P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708434382.147236316InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708434382.147236316InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708434608.109548440InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708434608.109548440InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708434695.365984945InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708434695.365984945InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708952496.551991999InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708952496.551991999InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708952558.556210993InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708952558.556210993InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708952714.916449575InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1708952714.916449575InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709471628.501760810InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709471628.501760810InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709471628.501760810InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709471628.501760810InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709471628.501760810InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709471628.501760810InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709989206.952525115InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709989206.952525115InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709989206.952525115InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709989206.952525115InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709989206.952525115InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1709989206.952525115InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1710512672.125817391InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1710512672.125817391InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1710512672.125817391InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1710512672.125817391InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1710512672.125817391InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1710512672.125817391InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711026012.447108856InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711026012.447108856InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711026012.447108856InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711026012.447108856InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711026012.447108856InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711026012.447108856InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711544412.396311094InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711544412.396311094InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711544412.396311094InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711544412.396311094InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711544412.396311094InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1711544412.396311094InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712063630.920057621InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712063630.920057621InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712063630.920057621InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712063630.920057621InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712063630.920057621InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712063630.920057621InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712583066.521732861InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712583066.521732861InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712583066.521732861InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712583066.521732861InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712583066.521732861InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1712583066.521732861InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713104421.579085515InjUsdt18d0.9P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713104421.579085515InjUsdt18d0.9P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713104421.579085515InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713104421.579085515InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713104421.579085515InjUsdt30d1.12C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713104421.579085515InjUsdt30d1.12C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713342050InjUsdt18d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713342050InjUsdt18d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713356956InjUsdt18d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713356956InjUsdt18d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713618016InjUsdt18d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713618016InjUsdt18d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713618016InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713618016InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713618016InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713618016InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713618060InjUsdt16d0.89P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713618060InjUsdt16d0.89P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713974295InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713974295InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713974528InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713974528InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713974528InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1713974528InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714309564InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714309564InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714309564InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714309564InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714309564InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714309564InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714658833InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714658833InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714658833InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714658833InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714658833InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1714658833InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715000420InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715000420InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715000420InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715000420InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715000420InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715000420InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715346009InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715346009InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715346009InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715346009InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715346009InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715346009InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715691712InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715691712InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715691712InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715691712InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715691712InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1715691712InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716037433InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716037433InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716037433InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716037433InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716037433InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716037433InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716385437InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716385437InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716385437InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716385437InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716385437InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716385437InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716728415InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716728415InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716728415InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716728415InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716728415InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1716728415InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717074021InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717074021InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717074021InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717074021InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717074021InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717074021InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717419602InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717419602InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717419602InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717419602InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717419602InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717419602InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717769182InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717769182InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717769182InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717769182InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717769182InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1717769182InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718110812InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718110812InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718110812InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718110812InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718110812InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718110812InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718456416InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718456416InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718456416InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718456416InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718456416InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718456416InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718802323InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718802323InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718802323InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718802323InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718802323InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1718802323InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719147607InjUsdt16d0.85P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719147607InjUsdt16d0.85P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719147607InjUsdt24d1.17C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719147607InjUsdt24d1.17C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719147607InjUsdt28d1.13C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719147607InjUsdt28d1.13C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719493268InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719493268InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719493268InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719493268InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719493268InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719493268InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719804902InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719804902InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719804902InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719804902InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719805152InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1719805152InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720184412InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720184412InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720184412InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720184412InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720184412InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720184412InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720530062InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720530062InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720530062InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720530062InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720530062InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720530062InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720875614InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720875614InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720875614InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720875614InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720875614InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1720875614InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721221498InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721221498InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721221498InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721221498InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721221498InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721221498InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721566814InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721566814InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721566814InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721566814InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721566814InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721566814InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721912418InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721912418InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721912418InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721912418InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721912418InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1721912418InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722259395InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722259395InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722259395InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722259395InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722259395InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722259395InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722607035InjUsdt16d0.82P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722607035InjUsdt16d0.82P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722607164InjUsdt24d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722607164InjUsdt24d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722607245InjUsdt28d1.18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722607245InjUsdt28d1.18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722949211InjUsdt16d0.76P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722949211InjUsdt16d0.76P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722949211InjUsdt24d1.35C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722949211InjUsdt24d1.35C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722949211InjUsdt28d1.27C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1722949211InjUsdt28d1.27C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723202947InjUsdt30d1.2C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723202947InjUsdt30d1.2C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723214654InjUsdt30d1.2C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723214654InjUsdt30d1.2C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723276425InjUsdt30d1.2C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723276425InjUsdt30d1.2C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723277252InjUsdt30d1.2C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723277252InjUsdt30d1.2C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723290960InjUsdt16d0.79P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723290960InjUsdt16d0.79P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723290960InjUsdt24d1.3C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723290960InjUsdt24d1.3C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723290960InjUsdt28d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723290960InjUsdt28d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723642339InjUsdt16d0.79P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723642339InjUsdt16d0.79P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723642339InjUsdt24d1.3C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723642339InjUsdt24d1.3C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723642339InjUsdt28d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723642339InjUsdt28d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723986017InjUsdt16d0.79P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723986017InjUsdt16d0.79P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723986017InjUsdt24d1.3C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723986017InjUsdt24d1.3C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723986017InjUsdt28d1.25C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1723986017InjUsdt28d1.25C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724331608InjUsdt16d0.83P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724331608InjUsdt16d0.83P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724331608InjUsdt24d1.23C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724331608InjUsdt24d1.23C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724331608InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724331608InjUsdt28d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724677217InjUsdt16d0.83P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724677217InjUsdt16d0.83P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724677217InjUsdt24d1.23C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724677217InjUsdt24d1.23C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724677217InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1724677217InjUsdt28d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725022808InjUsdt16d0.83P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725022808InjUsdt16d0.83P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725022808InjUsdt24d1.23C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725022808InjUsdt24d1.23C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725022808InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725022808InjUsdt28d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725364014InjUsdt12d18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725364014InjUsdt12d18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725364636InjUsdt12d15P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725364636InjUsdt12d15P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725364913InjUsdt12d18C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725364913InjUsdt12d18C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725365020InjUsdt12d15P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725365020InjUsdt12d15P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725368409InjUsdt16d0.83P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725368409InjUsdt16d0.83P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725368409InjUsdt24d1.23C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725368409InjUsdt24d1.23C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725368409InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725368409InjUsdt28d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725714009InjUsdt16d0.83P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725714009InjUsdt16d0.83P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725714009InjUsdt24d1.23C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725714009InjUsdt24d1.23C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725714009InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1725714009InjUsdt28d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726059611InjUsdt16d0.83P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726059611InjUsdt16d0.83P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726059611InjUsdt24d1.23C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726059611InjUsdt24d1.23C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726059611InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726059611InjUsdt28d1.16C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726141329InjUsdt2d1.5C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726141329InjUsdt2d1.5C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726142560InjUsdt2d1.5C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726142560InjUsdt2d1.5C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726163228InjUsdt2d1.5C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726163228InjUsdt2d1.5C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726405213InjUsdt16d0.83P] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726405213InjUsdt16d0.83P -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726405213InjUsdt24d1.23C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726405213InjUsdt24d1.23C -decimals = 0 - -[factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726405213InjUsdt28d1.16C] -peggy_denom = factory/inj1cs57nurqssdy09a0tuzqetxn6nyzphj5w220jh/1726405213InjUsdt28d1.16C -decimals = 0 - -[factory/inj1csmzuxsp5vp2ng5cue7wdknudk8m69wlr62rq5/uLP] -peggy_denom = factory/inj1csmzuxsp5vp2ng5cue7wdknudk8m69wlr62rq5/uLP -decimals = 0 - -[factory/inj1cus3dx8lxq2h2y9mzraxagaw8kjjcx6ul5feak/EA] -peggy_denom = factory/inj1cus3dx8lxq2h2y9mzraxagaw8kjjcx6ul5feak/EA -decimals = 0 - -[factory/inj1cuv9fu0p28u60e5rtw7u6pch8zdm840zctlx84/position] -peggy_denom = factory/inj1cuv9fu0p28u60e5rtw7u6pch8zdm840zctlx84/position -decimals = 0 - -[factory/inj1cvhsxdjs64q9l83s7twdhsw3vjx54haqgv2d6k/position] -peggy_denom = factory/inj1cvhsxdjs64q9l83s7twdhsw3vjx54haqgv2d6k/position -decimals = 0 - -[factory/inj1cxcjn04l2vxg4zwrlhpghh32fdel856xn3a3rr/BONK] -peggy_denom = factory/inj1cxcjn04l2vxg4zwrlhpghh32fdel856xn3a3rr/BONK -decimals = 6 - -[factory/inj1cy64n9h6hne99crlue4s8x0g09gq9947haqhaf/position] -peggy_denom = factory/inj1cy64n9h6hne99crlue4s8x0g09gq9947haqhaf/position -decimals = 0 - -[factory/inj1d4zluv70jrx4nl68fp7rqjhpq7egdey2433l96/position] -peggy_denom = factory/inj1d4zluv70jrx4nl68fp7rqjhpq7egdey2433l96/position -decimals = 0 - -[factory/inj1d5f6tfldvpmgzk5n3pcjdetuzlgk9xag5lvvdn/position] -peggy_denom = factory/inj1d5f6tfldvpmgzk5n3pcjdetuzlgk9xag5lvvdn/position -decimals = 0 - -[factory/inj1d5fe04g9xa577e2zn82n4m0ksq8wp8vxgvfupw/PINKIE] -peggy_denom = factory/inj1d5fe04g9xa577e2zn82n4m0ksq8wp8vxgvfupw/PINKIE -decimals = 6 - -[factory/inj1d80r2q4lcsajwr494wyswykn46smag0yy8scfv/position] -peggy_denom = factory/inj1d80r2q4lcsajwr494wyswykn46smag0yy8scfv/position -decimals = 0 - -[factory/inj1dg6eay6q34r2eh88u6hghlz5r3y25n2wpp494v/position] -peggy_denom = factory/inj1dg6eay6q34r2eh88u6hghlz5r3y25n2wpp494v/position -decimals = 0 - -[factory/inj1dl8d43lz8ctmtka5d0tta8yj2urmgal7fgqcmh/position] -peggy_denom = factory/inj1dl8d43lz8ctmtka5d0tta8yj2urmgal7fgqcmh/position -decimals = 0 - -[factory/inj1dpyjsuehlrsmr78cddezd488euydtew3vukjmf/INJ] -peggy_denom = factory/inj1dpyjsuehlrsmr78cddezd488euydtew3vukjmf/INJ -decimals = 6 - -[factory/inj1drpns3cxn82e5q0nmmdaz8zxmla5lqsh6txmc9/position] -peggy_denom = factory/inj1drpns3cxn82e5q0nmmdaz8zxmla5lqsh6txmc9/position -decimals = 0 - -[factory/inj1dvr32vqxs8m6tmzv50xnnpzgph0wxp2jcfvl4u/INJ] -peggy_denom = factory/inj1dvr32vqxs8m6tmzv50xnnpzgph0wxp2jcfvl4u/INJ -decimals = 6 - -[factory/inj1dwfggufv8vkjcfkuk7fkkucs4rje0krav9ruyr/presale] -peggy_denom = factory/inj1dwfggufv8vkjcfkuk7fkkucs4rje0krav9ruyr/presale -decimals = 0 - -[factory/inj1dxprjkxz06cpahgqrv90hug9d8z504j52ms07n/test] -peggy_denom = factory/inj1dxprjkxz06cpahgqrv90hug9d8z504j52ms07n/test -decimals = 0 - -[factory/inj1e2pu02vjnh27mte3s0wqld9f85mzglyrxxuuvz/position] -peggy_denom = factory/inj1e2pu02vjnh27mte3s0wqld9f85mzglyrxxuuvz/position -decimals = 0 - -[factory/inj1e60tjgqhfsxutrcvklhgc7gechtq3pcej8gy4e/position] -peggy_denom = factory/inj1e60tjgqhfsxutrcvklhgc7gechtq3pcej8gy4e/position -decimals = 0 - -[factory/inj1e66ekacsxnv60yk006mymnrprged95n6crzzwg/INJ] -peggy_denom = factory/inj1e66ekacsxnv60yk006mymnrprged95n6crzzwg/INJ -decimals = 6 - -[factory/inj1e6wv0fn2cggsgwlmywp9u5pyd0zcx5vth3djrv/position] -peggy_denom = factory/inj1e6wv0fn2cggsgwlmywp9u5pyd0zcx5vth3djrv/position -decimals = 0 - -[factory/inj1e94cdzndq5xr2lx5dsjnz0ts5lm8nc8k9wanax/INJ] -peggy_denom = factory/inj1e94cdzndq5xr2lx5dsjnz0ts5lm8nc8k9wanax/INJ -decimals = 6 - -[factory/inj1ea4p8khg0e4zusfv339cy5h9h3myctfcl74ee6/INJ] -peggy_denom = factory/inj1ea4p8khg0e4zusfv339cy5h9h3myctfcl74ee6/INJ -decimals = 6 - -[factory/inj1egnhxmtnh76p2lgdky8985msrue92ag499ev6w/position] -peggy_denom = factory/inj1egnhxmtnh76p2lgdky8985msrue92ag499ev6w/position -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/GINGER.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/GINGER.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/HACHI.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/HACHI.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/Hava.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/Hava.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/KIRA.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/KIRA.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/SYN.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/SYN.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/Talis.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/Talis.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/autism.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/autism.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/coping.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/coping.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/inj.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/inj.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/katana.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/katana.ash -decimals = 0 - -[factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/ninja.ash] -peggy_denom = factory/inj1ej2f3lmpxj4djsmmuxvnfuvplrut7zmwrq7zj8/ninja.ash -decimals = 0 - -[factory/inj1ejwjldm2k7k9zcgzvglkht5hhxg50lcnnnud9l/position] -peggy_denom = factory/inj1ejwjldm2k7k9zcgzvglkht5hhxg50lcnnnud9l/position -decimals = 0 - -[factory/inj1ekmnc56xkc3cl7wzrew8q89700vtry5wnjlgqw/INJ] -peggy_denom = factory/inj1ekmnc56xkc3cl7wzrew8q89700vtry5wnjlgqw/INJ -decimals = 6 - -[factory/inj1em0ejkywcq6lnzpgj9wx7z4jx7r9gpcntys04x/INJ] -peggy_denom = factory/inj1em0ejkywcq6lnzpgj9wx7z4jx7r9gpcntys04x/INJ -decimals = 6 - -[factory/inj1ep9yuk86cwdeaytmgsz3hz7qsargsn4sgnlrrs/INJ] -peggy_denom = factory/inj1ep9yuk86cwdeaytmgsz3hz7qsargsn4sgnlrrs/INJ -decimals = 6 - -[factory/inj1evy243kr8kh8prtgwv8vtvtj6m5vcahpt94f28/position] -peggy_denom = factory/inj1evy243kr8kh8prtgwv8vtvtj6m5vcahpt94f28/position -decimals = 0 - -[factory/inj1ezvtzukpf6x7aa4p52sejvyky8lkl6l5j47tym/position] -peggy_denom = factory/inj1ezvtzukpf6x7aa4p52sejvyky8lkl6l5j47tym/position -decimals = 0 - -[factory/inj1f4u2643nw7ennyadqmv428fmhg56jduc90xpgy/position] -peggy_denom = factory/inj1f4u2643nw7ennyadqmv428fmhg56jduc90xpgy/position -decimals = 0 - -[factory/inj1f533qqlgu8e3wy56457hlz3rxnf8dlfn507055/position] -peggy_denom = factory/inj1f533qqlgu8e3wy56457hlz3rxnf8dlfn507055/position -decimals = 0 - -[factory/inj1f79dkr20ax43ah3c3velf3ttxjdqe645k5rws3/position] -peggy_denom = factory/inj1f79dkr20ax43ah3c3velf3ttxjdqe645k5rws3/position -decimals = 0 - -[factory/inj1fa8ayqjnzup3af2heatnlyvmr2ljjm5f8x83fn/position] -peggy_denom = factory/inj1fa8ayqjnzup3af2heatnlyvmr2ljjm5f8x83fn/position -decimals = 0 - -[factory/inj1faqh7wcap9h2z007yx63eqvpqlzghdmser5l7u/position] -peggy_denom = factory/inj1faqh7wcap9h2z007yx63eqvpqlzghdmser5l7u/position -decimals = 0 - -[factory/inj1ff64ftrd6plvxurruzh3kthaxk5h050e0s5t95/position] -peggy_denom = factory/inj1ff64ftrd6plvxurruzh3kthaxk5h050e0s5t95/position -decimals = 0 - -[factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/LowQ] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/LowQ -decimals = 6 - -[factory/inj1frr7kyd4nuemr0hrzlqyrgc72sggv7ukc3dfx0/chain-factory] -peggy_denom = factory/inj1frr7kyd4nuemr0hrzlqyrgc72sggv7ukc3dfx0/chain-factory -decimals = 0 - -[factory/inj1frr7kyd4nuemr0hrzlqyrgc72sggv7ukc3dfx0/chainfactory] -peggy_denom = factory/inj1frr7kyd4nuemr0hrzlqyrgc72sggv7ukc3dfx0/chainfactory -decimals = 0 - -[factory/inj1fzej8p0acdplqad876a0mdewejqwuaea9e0rjl/position] -peggy_denom = factory/inj1fzej8p0acdplqad876a0mdewejqwuaea9e0rjl/position -decimals = 0 - -[factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/TBT] -peggy_denom = factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/TBT -decimals = 0 - -[factory/inj1g6j6w6860sfe7um3q6ja60cktfd50a2vxxy7qr/position] -peggy_denom = factory/inj1g6j6w6860sfe7um3q6ja60cktfd50a2vxxy7qr/position -decimals = 0 - -[factory/inj1gg43076kmy0prkxtn5xxka47lfmwwjsq6ygcfa/SAMURAI] -peggy_denom = factory/inj1gg43076kmy0prkxtn5xxka47lfmwwjsq6ygcfa/SAMURAI -decimals = 6 - -[factory/inj1ghcjw8w7a7ettwn97fadhamywvwf7kk3mhkndy/DOGE] -peggy_denom = factory/inj1ghcjw8w7a7ettwn97fadhamywvwf7kk3mhkndy/DOGE -decimals = 6 - -[factory/inj1gj9w2vq22xglwvjhwkfj9gwfj9e8709u9wg406/position] -peggy_denom = factory/inj1gj9w2vq22xglwvjhwkfj9gwfj9e8709u9wg406/position -decimals = 0 - -[factory/inj1gk4thnx4t9y4ltnau60mpst5xyu0u57hqfl0qs/uLP] -peggy_denom = factory/inj1gk4thnx4t9y4ltnau60mpst5xyu0u57hqfl0qs/uLP -decimals = 0 - -[factory/inj1gpf6gxs9hyz4jty423pxuns8cduhcuyvcxwxkv/position] -peggy_denom = factory/inj1gpf6gxs9hyz4jty423pxuns8cduhcuyvcxwxkv/position -decimals = 0 - -[factory/inj1gtpdm0dt5zg7p7nf9ftghrgvyt9ftz0w3f7kfk/WIF] -peggy_denom = factory/inj1gtpdm0dt5zg7p7nf9ftghrgvyt9ftz0w3f7kfk/WIF -decimals = 6 - -[factory/inj1gutzdupyjzzk46hrpf6lsf8ul030ty8wszvpta/INJ] -peggy_denom = factory/inj1gutzdupyjzzk46hrpf6lsf8ul030ty8wszvpta/INJ -decimals = 6 - -[factory/inj1h2dqvlca2lay8amfk5fgvateslp3h0sgf8wmmp/geisha] -peggy_denom = factory/inj1h2dqvlca2lay8amfk5fgvateslp3h0sgf8wmmp/geisha -decimals = 6 - -[factory/inj1h3h0yjxlchmydvsjpazcfyhp57lajdurznpeh0/grinj] -peggy_denom = factory/inj1h3h0yjxlchmydvsjpazcfyhp57lajdurznpeh0/grinj -decimals = 6 - -[factory/inj1h3vcnx6f2r9hxf8mf7s3ck9pu02r3zxes6t50t/INJ] -peggy_denom = factory/inj1h3vcnx6f2r9hxf8mf7s3ck9pu02r3zxes6t50t/INJ -decimals = 6 - -[factory/inj1h4ppr74nmqmftmzd8d54nk439rftyxaxgx42fa/INJ] -peggy_denom = factory/inj1h4ppr74nmqmftmzd8d54nk439rftyxaxgx42fa/INJ -decimals = 6 - -[factory/inj1h75s3ne4vjpp3wtf300uv2xuz7r9lt2xu87jjk/BAT] -peggy_denom = factory/inj1h75s3ne4vjpp3wtf300uv2xuz7r9lt2xu87jjk/BAT -decimals = 6 - -[factory/inj1hgs8gzt3ww6t6p5f3xvfjugk72h4lechll2qer/SEI] -peggy_denom = factory/inj1hgs8gzt3ww6t6p5f3xvfjugk72h4lechll2qer/SEI -decimals = 6 - -[factory/inj1hkzntx25hpq37dfrms6ymtrch8dskx8t8u0e5r/INJ] -peggy_denom = factory/inj1hkzntx25hpq37dfrms6ymtrch8dskx8t8u0e5r/INJ -decimals = 6 - -[factory/inj1hteau2zqjwn2m62zshrg2v30hvhpwwrkymsaeq/INJ] -peggy_denom = factory/inj1hteau2zqjwn2m62zshrg2v30hvhpwwrkymsaeq/INJ -decimals = 6 - -[factory/inj1hvhtcmzphss9ks9rlst8xshw00dqq3nvdazm6w/cheems] -peggy_denom = factory/inj1hvhtcmzphss9ks9rlst8xshw00dqq3nvdazm6w/cheems -decimals = 6 - -[factory/inj1j4vj8qzqyyf77ffxnwxwtm4lqvsalzfqg0yk9v/KIMJ] -peggy_denom = factory/inj1j4vj8qzqyyf77ffxnwxwtm4lqvsalzfqg0yk9v/KIMJ -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TESTSP] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TESTSP -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TESTSTAYAWAY] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TESTSTAYAWAY -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TESTTSTAYAWAY] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TESTTSTAYAWAY -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/teeeeeeeeest] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/teeeeeeeeest -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testinggggggg] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testinggggggg -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/tstttttttt] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/tstttttttt -decimals = 6 - -[factory/inj1j9sczxqcyhtvt586qywk8hmz3sk4rrk8rypv28/position] -peggy_denom = factory/inj1j9sczxqcyhtvt586qywk8hmz3sk4rrk8rypv28/position -decimals = 0 - -[factory/inj1ja9dyvqlx5u7rvlevmjwhr29p42424242pp3wn/CROCO] -peggy_denom = factory/inj1ja9dyvqlx5u7rvlevmjwhr29p42424242pp3wn/CROCO -decimals = 6 - -[factory/inj1jc4zt6y82gy3n0j8g2mh9n3f7fwf35sj6jq5zu/TEST] -peggy_denom = factory/inj1jc4zt6y82gy3n0j8g2mh9n3f7fwf35sj6jq5zu/TEST -decimals = 6 - -[factory/inj1jcvx3q6rfj7rdw60grjj3rah5uqsk64msnlafc/position] -peggy_denom = factory/inj1jcvx3q6rfj7rdw60grjj3rah5uqsk64msnlafc/position -decimals = 0 - -[factory/inj1jdvx7mpauukwhdlgay0jgxaj393rju42ht9mkn/position] -peggy_denom = factory/inj1jdvx7mpauukwhdlgay0jgxaj393rju42ht9mkn/position -decimals = 0 - -[factory/inj1jknhf2m8f9plqa2g7rm78vdhwr58nlyjfd62ru/BAMBOO] -peggy_denom = factory/inj1jknhf2m8f9plqa2g7rm78vdhwr58nlyjfd62ru/BAMBOO -decimals = 6 - -[factory/inj1jls5kflqlfylyq42n8e5k3t6wn5jnhhlyq3w2r/INJ] -peggy_denom = factory/inj1jls5kflqlfylyq42n8e5k3t6wn5jnhhlyq3w2r/INJ -decimals = 6 - -[factory/inj1jpaxtp8jvepvhc7pqk5xgumz3jghwuh7xrqatw/position] -peggy_denom = factory/inj1jpaxtp8jvepvhc7pqk5xgumz3jghwuh7xrqatw/position -decimals = 0 - -[factory/inj1js4qpjl2f9cpl8s764d0y9jl96ham3g4kkaaqd/position] -peggy_denom = factory/inj1js4qpjl2f9cpl8s764d0y9jl96ham3g4kkaaqd/position -decimals = 0 - -[factory/inj1k0mzgwd4ujuu9w95xzs8p7qu8udy3atqj3sau7/POTIN] -peggy_denom = factory/inj1k0mzgwd4ujuu9w95xzs8p7qu8udy3atqj3sau7/POTIN -decimals = 6 - -[factory/inj1k2kcx5n03pe0z9rfzvs9lt764jja9xpvwrxk7c/INJDOGE] -peggy_denom = factory/inj1k2kcx5n03pe0z9rfzvs9lt764jja9xpvwrxk7c/INJDOGE -decimals = 6 - -[factory/inj1k7ygz5ufgavnutv0hkgsz7u9g4c3yj6lq6p0jn/ELON] -peggy_denom = factory/inj1k7ygz5ufgavnutv0hkgsz7u9g4c3yj6lq6p0jn/ELON -decimals = 6 - -[factory/inj1k7ygz5ufgavnutv0hkgsz7u9g4c3yj6lq6p0jn/MOON] -peggy_denom = factory/inj1k7ygz5ufgavnutv0hkgsz7u9g4c3yj6lq6p0jn/MOON -decimals = 6 - -[factory/inj1k9jy245r9749kl008h7nf764wnrnj9kgkmj6vz/position] -peggy_denom = factory/inj1k9jy245r9749kl008h7nf764wnrnj9kgkmj6vz/position -decimals = 0 - -[factory/inj1k9k62nfrsnznd2ekzgmsxr74apglqfa2h6wz9g/INJ] -peggy_denom = factory/inj1k9k62nfrsnznd2ekzgmsxr74apglqfa2h6wz9g/INJ -decimals = 6 - -[factory/inj1k9tqa6al637y8qu9yvmsw3ke6r3knsn8ewv73f/test] -peggy_denom = factory/inj1k9tqa6al637y8qu9yvmsw3ke6r3knsn8ewv73f/test -decimals = 6 - -[factory/inj1k9xr7frkwkjjsd3w9yf8kdxu7wdfqtrkp0a809/position] -peggy_denom = factory/inj1k9xr7frkwkjjsd3w9yf8kdxu7wdfqtrkp0a809/position -decimals = 0 - -[factory/inj1kc39gtudjmy7dj0sc2s0d83qy86qdlemswejjx/position] -peggy_denom = factory/inj1kc39gtudjmy7dj0sc2s0d83qy86qdlemswejjx/position -decimals = 0 - -[factory/inj1kcda2te0sjxmcvykyr9cfpleyyx283d46nkspv/test] -peggy_denom = factory/inj1kcda2te0sjxmcvykyr9cfpleyyx283d46nkspv/test -decimals = 0 - -[factory/inj1kf7t8qjq83gg6kn7nl5zwzscfystyqzr62ydsn/injx] -peggy_denom = factory/inj1kf7t8qjq83gg6kn7nl5zwzscfystyqzr62ydsn/injx -decimals = 6 - -[factory/inj1khy2c3pzu22c25z2zg3vmzh2fw7eh8yhluzlux/INJ] -peggy_denom = factory/inj1khy2c3pzu22c25z2zg3vmzh2fw7eh8yhluzlux/INJ -decimals = 6 - -[factory/inj1kjpk9s9fm5c7ltgf54m5vz39n70x4quskl9sfu/INJ] -peggy_denom = factory/inj1kjpk9s9fm5c7ltgf54m5vz39n70x4quskl9sfu/INJ -decimals = 6 - -[factory/inj1kk6dnn7pl7e508lj4qvllprwa44qtgf98es2ak/ENA] -peggy_denom = factory/inj1kk6dnn7pl7e508lj4qvllprwa44qtgf98es2ak/ENA -decimals = 18 - -[factory/inj1kkarwsh947c34emv3wju779ys2tt2g76m6kequ/position] -peggy_denom = factory/inj1kkarwsh947c34emv3wju779ys2tt2g76m6kequ/position -decimals = 0 - -[factory/inj1krsf4as63jnytzekzndlv9eflku5nmkavtr3d3/SNAPPY] -peggy_denom = factory/inj1krsf4as63jnytzekzndlv9eflku5nmkavtr3d3/SNAPPY -decimals = 6 - -[factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/SHRK] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/SHRK -decimals = 6 - -[factory/inj1kvug5dcjdmkpdrjr088xdh9h4e8wvr04vrplmh/INJ] -peggy_denom = factory/inj1kvug5dcjdmkpdrjr088xdh9h4e8wvr04vrplmh/INJ -decimals = 6 - -[factory/inj1l2r43rx3p79yhspt48qvtd0qvqz4zyf70puxv6/position] -peggy_denom = factory/inj1l2r43rx3p79yhspt48qvtd0qvqz4zyf70puxv6/position -decimals = 0 - -[factory/inj1lcsc97wz2ztyn50vxqz2gcdjnzf53qd3gzvdt2/position] -peggy_denom = factory/inj1lcsc97wz2ztyn50vxqz2gcdjnzf53qd3gzvdt2/position -decimals = 0 - -[factory/inj1lgq2vj9xhptzflqk05fnaf585c2vtv33s76l68/INJ] -peggy_denom = factory/inj1lgq2vj9xhptzflqk05fnaf585c2vtv33s76l68/INJ -decimals = 6 - -[factory/inj1lhr06p7k3rdgk0knw5hfsde3fj87g2aq4e9a52/BINJ] -peggy_denom = factory/inj1lhr06p7k3rdgk0knw5hfsde3fj87g2aq4e9a52/BINJ -decimals = 6 - -[factory/inj1ljdraxlvy4cjdhytpxd7vhw387dq0r0g0fqucd/nbla] -peggy_denom = factory/inj1ljdraxlvy4cjdhytpxd7vhw387dq0r0g0fqucd/nbla -decimals = 0 - -[factory/inj1ljdraxlvy4cjdhytpxd7vhw387dq0r0g0fqucd/point] -peggy_denom = factory/inj1ljdraxlvy4cjdhytpxd7vhw387dq0r0g0fqucd/point -decimals = 0 - -[factory/inj1ljdraxlvy4cjdhytpxd7vhw387dq0r0g0fqucd/zzzza] -peggy_denom = factory/inj1ljdraxlvy4cjdhytpxd7vhw387dq0r0g0fqucd/zzzza -decimals = 0 - -[factory/inj1lnealva69klvt2dxpe0gxzj4a2ea7jqcjar7rq/INJ] -peggy_denom = factory/inj1lnealva69klvt2dxpe0gxzj4a2ea7jqcjar7rq/INJ -decimals = 6 - -[factory/inj1lnvtsm9avzyqs67syzakg0mncq6naldlw6eqek/ELON] -peggy_denom = factory/inj1lnvtsm9avzyqs67syzakg0mncq6naldlw6eqek/ELON -decimals = 6 - -[factory/inj1lszpzvlcvjg60x0ndqj98mct28m5j8resxs9de/position] -peggy_denom = factory/inj1lszpzvlcvjg60x0ndqj98mct28m5j8resxs9de/position -decimals = 0 - -[factory/inj1m3cvaumsw5l9mnhu53g2s7nd8pwqhsgm0r7zc5/position] -peggy_denom = factory/inj1m3cvaumsw5l9mnhu53g2s7nd8pwqhsgm0r7zc5/position -decimals = 0 - -[factory/inj1m3l3tfynquwh84j5d637gqnlsgz647979f957l/position] -peggy_denom = factory/inj1m3l3tfynquwh84j5d637gqnlsgz647979f957l/position -decimals = 0 - -[factory/inj1m3lcqdyfrnqqva6mvefmqvt9nfwatsqmwg3qq3/position] -peggy_denom = factory/inj1m3lcqdyfrnqqva6mvefmqvt9nfwatsqmwg3qq3/position -decimals = 0 - -[factory/inj1m9myf06pt3kq3caeksz0ghvzr0xthhxqenu622/NLC] -peggy_denom = factory/inj1m9myf06pt3kq3caeksz0ghvzr0xthhxqenu622/NLC -decimals = 6 - -[factory/inj1mattkwm6arhf3l5q84zdcnk5enm23q3s3w9c4s/position] -peggy_denom = factory/inj1mattkwm6arhf3l5q84zdcnk5enm23q3s3w9c4s/position -decimals = 0 - -[factory/inj1mck4g2zd7p057un8l3kfamsyj57w7gymgrdyjw/cheems] -peggy_denom = factory/inj1mck4g2zd7p057un8l3kfamsyj57w7gymgrdyjw/cheems -decimals = 6 - -[factory/inj1me7s2kyfk7ffdwh8qatluy9nj8yvh89kuwr235/INJ] -peggy_denom = factory/inj1me7s2kyfk7ffdwh8qatluy9nj8yvh89kuwr235/INJ -decimals = 6 - -[factory/inj1me8ewn42y8n0snvnecf3skpu8eq2rsph74kgmt/position] -peggy_denom = factory/inj1me8ewn42y8n0snvnecf3skpu8eq2rsph74kgmt/position -decimals = 0 - -[factory/inj1mfe2m554uffc9lul3q3fxzmzw8k7cuglnxvxjc/INJ] -peggy_denom = factory/inj1mfe2m554uffc9lul3q3fxzmzw8k7cuglnxvxjc/INJ -decimals = 6 - -[factory/inj1mg2pnk0djfmvlrrfucnhsfs4um08mwdue3hp9x/DRAGON] -peggy_denom = factory/inj1mg2pnk0djfmvlrrfucnhsfs4um08mwdue3hp9x/DRAGON -decimals = 6 - -[factory/inj1mly2ykhf6f9tdj58pvndjf4q8dzdl4myjqm9t6/ALIEN] -peggy_denom = factory/inj1mly2ykhf6f9tdj58pvndjf4q8dzdl4myjqm9t6/ALIEN -decimals = 6 - -[factory/inj1mthhttrxpewts2k8vlp276xtsa5te9mt8vws38/position] -peggy_denom = factory/inj1mthhttrxpewts2k8vlp276xtsa5te9mt8vws38/position -decimals = 0 - -[factory/inj1mu6w5fmvrp8kkxpaxxdvkcqfmm7rh79tr9pzr4/position] -peggy_denom = factory/inj1mu6w5fmvrp8kkxpaxxdvkcqfmm7rh79tr9pzr4/position -decimals = 0 - -[factory/inj1n2f2ehc6eplk7s5kwwy6e0hl9vf08mdqjxdacs/INJ] -peggy_denom = factory/inj1n2f2ehc6eplk7s5kwwy6e0hl9vf08mdqjxdacs/INJ -decimals = 6 - -[factory/inj1nassp2d59e6glt27vfcj0wrfnrtwmuyzm9jdy2/position] -peggy_denom = factory/inj1nassp2d59e6glt27vfcj0wrfnrtwmuyzm9jdy2/position -decimals = 0 - -[factory/inj1nguhj0ph48vfs2pnrf0kqz5zyn7znys5cymx3y/SHINJI] -peggy_denom = factory/inj1nguhj0ph48vfs2pnrf0kqz5zyn7znys5cymx3y/SHINJI -decimals = 0 - -[factory/inj1nhytjfkznfqsj4zalhml8dpfdszmv42ursh4xq/position] -peggy_denom = factory/inj1nhytjfkznfqsj4zalhml8dpfdszmv42ursh4xq/position -decimals = 0 - -[factory/inj1nma9d4a2eaqcht9826wrw26y3n3aakqg727qys/position] -peggy_denom = factory/inj1nma9d4a2eaqcht9826wrw26y3n3aakqg727qys/position -decimals = 0 - -[factory/inj1nvln3a8ezhsc60kq58kghhdev4f4jpv5la5d5g/position] -peggy_denom = factory/inj1nvln3a8ezhsc60kq58kghhdev4f4jpv5la5d5g/position -decimals = 0 - -[factory/inj1p65r3rdzwxq9xykp3pvwvajukauxulsn28uxdr/position] -peggy_denom = factory/inj1p65r3rdzwxq9xykp3pvwvajukauxulsn28uxdr/position -decimals = 0 - -[factory/inj1pgkwcngxel97d9qjvg75upe8y3lvvzncq5tdr0/haki] -peggy_denom = factory/inj1pgkwcngxel97d9qjvg75upe8y3lvvzncq5tdr0/haki -decimals = 6 - -[factory/inj1pgkwcngxel97d9qjvg75upe8y3lvvzncq5tdr0/samurai] -peggy_denom = factory/inj1pgkwcngxel97d9qjvg75upe8y3lvvzncq5tdr0/samurai -decimals = 6 - -[factory/inj1pgwrcf3j7yk0a5lxcyyuztr2ekpnzwqsqlkgke/position] -peggy_denom = factory/inj1pgwrcf3j7yk0a5lxcyyuztr2ekpnzwqsqlkgke/position -decimals = 0 - -[factory/inj1phq9r67sd6ypgsgsmh62dvf5eyj3lac6nqvdnt/position] -peggy_denom = factory/inj1phq9r67sd6ypgsgsmh62dvf5eyj3lac6nqvdnt/position -decimals = 0 - -[factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/Shinobi] -peggy_denom = factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/Shinobi -decimals = 6 - -[factory/inj1ptze5zs7f8upr3fdj6dsrh0gpq97rsugfl5efe/position] -peggy_denom = factory/inj1ptze5zs7f8upr3fdj6dsrh0gpq97rsugfl5efe/position -decimals = 0 - -[factory/inj1q42vrh9rhdnr20eq9ju9lymsxaqxcjpuqgd2cg/KZB] -peggy_denom = factory/inj1q42vrh9rhdnr20eq9ju9lymsxaqxcjpuqgd2cg/KZB -decimals = 6 - -[factory/inj1q4z7jjxdk7whwmkt39x7krc49xaqapuswhjhkn/BOYS] -peggy_denom = factory/inj1q4z7jjxdk7whwmkt39x7krc49xaqapuswhjhkn/BOYS -decimals = 6 - -[factory/inj1q4z7jjxdk7whwmkt39x7krc49xaqapuswhjhkn/COCK] -peggy_denom = factory/inj1q4z7jjxdk7whwmkt39x7krc49xaqapuswhjhkn/COCK -decimals = 9 - -[factory/inj1q7unmeeqkj8r4m4en50wqlfnptfvgf0wavuah8/BOYS] -peggy_denom = factory/inj1q7unmeeqkj8r4m4en50wqlfnptfvgf0wavuah8/BOYS -decimals = 6 - -[factory/inj1q8ky6w56wcv2ya3kxzg83s667q86xtrlvwytcs/position] -peggy_denom = factory/inj1q8ky6w56wcv2ya3kxzg83s667q86xtrlvwytcs/position -decimals = 0 - -[factory/inj1qdepvfux04s8pqvzs4leam4pgl46wy0fx37eyt/injoy] -peggy_denom = factory/inj1qdepvfux04s8pqvzs4leam4pgl46wy0fx37eyt/injoy -decimals = 9 - -[factory/inj1qjjhhdn95u8s6tqqhx27n8g9vqtn6uhn63szp8/TEST] -peggy_denom = factory/inj1qjjhhdn95u8s6tqqhx27n8g9vqtn6uhn63szp8/TEST -decimals = 6 - -[factory/inj1qpf0xj4w824774q8mp9x29q547qe66607h96ll/ELON] -peggy_denom = factory/inj1qpf0xj4w824774q8mp9x29q547qe66607h96ll/ELON -decimals = 12 - -[factory/inj1qqc56qqlqyzsycj50kqne8ygr6r6dk4a3e23z9/position] -peggy_denom = factory/inj1qqc56qqlqyzsycj50kqne8ygr6r6dk4a3e23z9/position -decimals = 0 - -[factory/inj1qqc7ekvm06tch3dtyselt2rl5y4s9daman0ahv/uLP] -peggy_denom = factory/inj1qqc7ekvm06tch3dtyselt2rl5y4s9daman0ahv/uLP -decimals = 0 - -[factory/inj1qqge7uaftfykr9wjqy4khwwzyr2wgcctwwgqv2/MIB] -peggy_denom = factory/inj1qqge7uaftfykr9wjqy4khwwzyr2wgcctwwgqv2/MIB -decimals = 6 - -[factory/inj1qrdfxrx7kg0kvgapxyj8dc0wuj4yr2npw7gmkr/QTUM] -peggy_denom = factory/inj1qrdfxrx7kg0kvgapxyj8dc0wuj4yr2npw7gmkr/QTUM -decimals = 6 - -[factory/inj1qwlpnrg97jq0ytl28pm6c20apr6c6ga3fqc75t/position] -peggy_denom = factory/inj1qwlpnrg97jq0ytl28pm6c20apr6c6ga3fqc75t/position -decimals = 0 - -[factory/inj1qx7qnj9wwdrxc9e239ycshqnqgapdh7s44vez7/APE] -peggy_denom = factory/inj1qx7qnj9wwdrxc9e239ycshqnqgapdh7s44vez7/APE -decimals = 6 - -[factory/inj1qz4fua8emzx9h2sdafkpxazl5rwyl75t0d6vc8/position] -peggy_denom = factory/inj1qz4fua8emzx9h2sdafkpxazl5rwyl75t0d6vc8/position -decimals = 0 - -[factory/inj1r3krfh3nh6qhe3znwkfpzs4rdedgyu0wryfsjf/position] -peggy_denom = factory/inj1r3krfh3nh6qhe3znwkfpzs4rdedgyu0wryfsjf/position -decimals = 0 - -[factory/inj1r42k2w9rf6jtqktpfceg3f0a8eu2flm98vm9cs/position] -peggy_denom = factory/inj1r42k2w9rf6jtqktpfceg3f0a8eu2flm98vm9cs/position -decimals = 0 - -[factory/inj1r4usuj62gywdwhq9uvx6tg0ywqpppcjqu7z4js/crinj] -peggy_denom = factory/inj1r4usuj62gywdwhq9uvx6tg0ywqpppcjqu7z4js/crinj -decimals = 6 - -[factory/inj1rau42vnjsz7hrr3fh9nf7hyzrrv4ajuc2kzulq/INJ] -peggy_denom = factory/inj1rau42vnjsz7hrr3fh9nf7hyzrrv4ajuc2kzulq/INJ -decimals = 6 - -[factory/inj1rdu7lqpvq4h2fyrjdfnp9gycdkut5ewql3e4uq/testor] -peggy_denom = factory/inj1rdu7lqpvq4h2fyrjdfnp9gycdkut5ewql3e4uq/testor -decimals = 6 - -[factory/inj1rfw3sugvss3z22zzuhlccqug0y8lvd4q95runz/position] -peggy_denom = factory/inj1rfw3sugvss3z22zzuhlccqug0y8lvd4q95runz/position -decimals = 0 - -[factory/inj1rlcfjuhupp56nkk3gspy0x0nstmd02ptzxzkvx/position] -peggy_denom = factory/inj1rlcfjuhupp56nkk3gspy0x0nstmd02ptzxzkvx/position -decimals = 0 - -[factory/inj1rmf0pe6dns2kaasjt82j5lps3t8ke9dzyh3nqt/HOSHI] -peggy_denom = factory/inj1rmf0pe6dns2kaasjt82j5lps3t8ke9dzyh3nqt/HOSHI -decimals = 0 - -[factory/inj1rmlm94wu0unvveueyvuczcgsae76esjm7wcudh/BRO] -peggy_denom = factory/inj1rmlm94wu0unvveueyvuczcgsae76esjm7wcudh/BRO -decimals = 6 - -[factory/inj1rnlhp35xqtl0zwlp9tnrelykea9f52nd8av7ec/CATNIP] -peggy_denom = factory/inj1rnlhp35xqtl0zwlp9tnrelykea9f52nd8av7ec/CATNIP -decimals = 6 - -[factory/inj1rnlhp35xqtl0zwlp9tnrelykea9f52nd8av7ec/NIPPY] -peggy_denom = factory/inj1rnlhp35xqtl0zwlp9tnrelykea9f52nd8av7ec/NIPPY -decimals = 6 - -[factory/inj1rrg35k5g58vunyze4tqvqhef2fgrurkpxxdr43/KiraWifHat] -peggy_denom = factory/inj1rrg35k5g58vunyze4tqvqhef2fgrurkpxxdr43/KiraWifHat -decimals = 6 - -[factory/inj1rvg9a58qtcf8f464w2hkynrvpnl9x59wsaq922/NINJAPE] -peggy_denom = factory/inj1rvg9a58qtcf8f464w2hkynrvpnl9x59wsaq922/NINJAPE -decimals = 6 - -[factory/inj1rw5ndf4g2ppl586guwgx6ry06tr2sk9vmpd9jk/position] -peggy_denom = factory/inj1rw5ndf4g2ppl586guwgx6ry06tr2sk9vmpd9jk/position -decimals = 0 - -[factory/inj1s0tcn9c42fz3fpfdy7pargxj4rwrcp0aushf2p/INJ] -peggy_denom = factory/inj1s0tcn9c42fz3fpfdy7pargxj4rwrcp0aushf2p/INJ -decimals = 6 - -[factory/inj1s79ssggksqujyrwhq5zwxart33t98mmm2xd8f7/CHEN] -peggy_denom = factory/inj1s79ssggksqujyrwhq5zwxart33t98mmm2xd8f7/CHEN -decimals = 6 - -[factory/inj1s8uw9vqpk7tvhjj2znqyhfxwfcvfl9g6d2drtc/position] -peggy_denom = factory/inj1s8uw9vqpk7tvhjj2znqyhfxwfcvfl9g6d2drtc/position -decimals = 0 - -[factory/inj1s9pckznjz4hmgtxu5t9gerxtalch7wtle4y3a6/MIB] -peggy_denom = factory/inj1s9pckznjz4hmgtxu5t9gerxtalch7wtle4y3a6/MIB -decimals = 6 - -[factory/inj1sdkwtcjd0wkp5sft3pyzpaesfgllxl06sgvnkk/INJ] -peggy_denom = factory/inj1sdkwtcjd0wkp5sft3pyzpaesfgllxl06sgvnkk/INJ -decimals = 6 - -[factory/inj1se3jy798wzjtlf588e8qh7342pqs4n0yhjxd0p/position] -peggy_denom = factory/inj1se3jy798wzjtlf588e8qh7342pqs4n0yhjxd0p/position -decimals = 0 - -[factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/FROGIY] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/FROGIY -decimals = 6 - -[factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/FROGY] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/FROGY -decimals = 0 - -[factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/test] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/test -decimals = 6 - -[factory/inj1sf0ldwenurgttrmvgt65xgsj8jn487dggsy7el/position] -peggy_denom = factory/inj1sf0ldwenurgttrmvgt65xgsj8jn487dggsy7el/position -decimals = 0 - -[factory/inj1sg3yjgjlwhtrepeuusj4jwv209rh6cmk882cw3/LIOR] -peggy_denom = factory/inj1sg3yjgjlwhtrepeuusj4jwv209rh6cmk882cw3/LIOR -decimals = 6 - -[factory/inj1sgnkljwsekkf36p4lgd7v9qa0p66rj64xa756j/BONK] -peggy_denom = factory/inj1sgnkljwsekkf36p4lgd7v9qa0p66rj64xa756j/BONK -decimals = 6 - -[factory/inj1sgvrzysd32xdqtscaen2gprrjyg997lkn2h4wg/uLP] -peggy_denom = factory/inj1sgvrzysd32xdqtscaen2gprrjyg997lkn2h4wg/uLP -decimals = 0 - -[factory/inj1sklcy2px26jj73ffs2f7fmxw77zsts66prrqxr/DRUGS] -peggy_denom = factory/inj1sklcy2px26jj73ffs2f7fmxw77zsts66prrqxr/DRUGS -decimals = 9 - -[factory/inj1sm4l3jrh4cynhwv3x3yudkf4gtepv3wdjsryj3/INJ] -peggy_denom = factory/inj1sm4l3jrh4cynhwv3x3yudkf4gtepv3wdjsryj3/INJ -decimals = 6 - -[factory/inj1sz76uf4fj7jn4wptpsszt63x27uthjvehhwsk9/MEOW] -peggy_denom = factory/inj1sz76uf4fj7jn4wptpsszt63x27uthjvehhwsk9/MEOW -decimals = 6 - -[factory/inj1t0vyy5c3cnrw9f0mpjz9xk7fp22ezjjmrza7xn/BONK] -peggy_denom = factory/inj1t0vyy5c3cnrw9f0mpjz9xk7fp22ezjjmrza7xn/BONK -decimals = 6 - -[factory/inj1t6wfs24ewwnx9mxtm26n6q6zpm73wsan9u8n0v/position] -peggy_denom = factory/inj1t6wfs24ewwnx9mxtm26n6q6zpm73wsan9u8n0v/position -decimals = 0 - -[factory/inj1taqmwnnd3rucr8ydyl8u30vc29dkyc9rzrjy6r/position] -peggy_denom = factory/inj1taqmwnnd3rucr8ydyl8u30vc29dkyc9rzrjy6r/position -decimals = 0 - -[factory/inj1tdk9unhr5x9h74z4hecxquq6qhygcp6g0n4gya/BRO] -peggy_denom = factory/inj1tdk9unhr5x9h74z4hecxquq6qhygcp6g0n4gya/BRO -decimals = 6 - -[factory/inj1tdv8p2pp68veauzezvgt8ze0wpf6ysddh99s6g/hINJ] -peggy_denom = factory/inj1tdv8p2pp68veauzezvgt8ze0wpf6ysddh99s6g/hINJ -decimals = 6 - -[factory/inj1tgphgjqsz8fupkfjx6cy275e3s0l8xfu6rd6jh/DINO] -peggy_denom = factory/inj1tgphgjqsz8fupkfjx6cy275e3s0l8xfu6rd6jh/DINO -decimals = 6 - -[factory/inj1tgphgjqsz8fupkfjx6cy275e3s0l8xfu6rd6jh/lior] -peggy_denom = factory/inj1tgphgjqsz8fupkfjx6cy275e3s0l8xfu6rd6jh/lior -decimals = 6 - -[factory/inj1tl8w4z9a7ykdmardg2a5qgryzc9e92fduqy8vj/position] -peggy_denom = factory/inj1tl8w4z9a7ykdmardg2a5qgryzc9e92fduqy8vj/position -decimals = 0 - -[factory/inj1tm6kuf59h46q0sy73cdyxyjwexwjp4a3h07yvt/position] -peggy_denom = factory/inj1tm6kuf59h46q0sy73cdyxyjwexwjp4a3h07yvt/position -decimals = 0 - -[factory/inj1tn2nqgzsgu8ts87fe3fdhh2zy85ymdrc4qd37s/position] -peggy_denom = factory/inj1tn2nqgzsgu8ts87fe3fdhh2zy85ymdrc4qd37s/position -decimals = 0 - -[factory/inj1tpuscn4wl7sf35zx5w95d74ulzsdfle67x7cq5/Sekiro] -peggy_denom = factory/inj1tpuscn4wl7sf35zx5w95d74ulzsdfle67x7cq5/Sekiro -decimals = 6 - -[factory/inj1tuemzz3xa2gurzv828y795r7uycmcafr0ktzwk/uLP] -peggy_denom = factory/inj1tuemzz3xa2gurzv828y795r7uycmcafr0ktzwk/uLP -decimals = 0 - -[factory/inj1tvnxhtnlkad7xzq7kkd0fcrtn0lncnvydp8mh3/position] -peggy_denom = factory/inj1tvnxhtnlkad7xzq7kkd0fcrtn0lncnvydp8mh3/position -decimals = 0 - -[factory/inj1u2nhcc06qvxscfmqwqwq5x6saf0smlhmykgg2j/position] -peggy_denom = factory/inj1u2nhcc06qvxscfmqwqwq5x6saf0smlhmykgg2j/position -decimals = 0 - -[factory/inj1u7xh7k9w5kddcyjjkq2rmpmnw7scrx25526x0k/lpinj13t8y6evvue023zg5q4f4ngaav54285pfw482xd] -peggy_denom = factory/inj1u7xh7k9w5kddcyjjkq2rmpmnw7scrx25526x0k/lpinj13t8y6evvue023zg5q4f4ngaav54285pfw482xd -decimals = 0 - -[factory/inj1u7xh7k9w5kddcyjjkq2rmpmnw7scrx25526x0k/lpinj1tpmwkd0psrutlqd4ytjq7pugj5dedjys9u0wd3] -peggy_denom = factory/inj1u7xh7k9w5kddcyjjkq2rmpmnw7scrx25526x0k/lpinj1tpmwkd0psrutlqd4ytjq7pugj5dedjys9u0wd3 -decimals = 0 - -[factory/inj1ucamzt4l70qnwwtqac4wjpvqdfmuhuft5ezy6x/sniperfactory] -peggy_denom = factory/inj1ucamzt4l70qnwwtqac4wjpvqdfmuhuft5ezy6x/sniperfactory -decimals = 6 - -[factory/inj1uja2y06ef8mmygnalg5hsugpa8q5m4pscjduec/INJ] -peggy_denom = factory/inj1uja2y06ef8mmygnalg5hsugpa8q5m4pscjduec/INJ -decimals = 6 - -[factory/inj1ujd7rlhp8980lwg74tek7gv4yv4qj4xcvxrx45/FROG] -peggy_denom = factory/inj1ujd7rlhp8980lwg74tek7gv4yv4qj4xcvxrx45/FROG -decimals = 6 - -[factory/inj1ul7m4hcf72jn3ah4rgez6vsykqjs90jwyqkkjm/position] -peggy_denom = factory/inj1ul7m4hcf72jn3ah4rgez6vsykqjs90jwyqkkjm/position -decimals = 0 - -[factory/inj1uq9wzg2hc6gsl9hue8qj5ymdfv4k8ccluxhesj/INJ] -peggy_denom = factory/inj1uq9wzg2hc6gsl9hue8qj5ymdfv4k8ccluxhesj/INJ -decimals = 6 - -[factory/inj1ur2gpeg5yw67dagpcm5946lnd6v8l2s2k9tx3q/position] -peggy_denom = factory/inj1ur2gpeg5yw67dagpcm5946lnd6v8l2s2k9tx3q/position -decimals = 0 - -[factory/inj1utkmtctnp767m0rdl294ypshrjjv8qendcm3md/position] -peggy_denom = factory/inj1utkmtctnp767m0rdl294ypshrjjv8qendcm3md/position -decimals = 0 - -[factory/inj1utyrpze9qzx037av0vrxz2w63y2et4wcd84j3q/position] -peggy_denom = factory/inj1utyrpze9qzx037av0vrxz2w63y2et4wcd84j3q/position -decimals = 0 - -[factory/inj1uv64p5ky9c298dlswy5krq4xcn78qearqaqqc9/DOGO] -peggy_denom = factory/inj1uv64p5ky9c298dlswy5krq4xcn78qearqaqqc9/DOGO -decimals = 0 - -[factory/inj1uyvpwvurunezljvear62kswrcduup8e4hkf3er/INJ] -peggy_denom = factory/inj1uyvpwvurunezljvear62kswrcduup8e4hkf3er/INJ -decimals = 6 - -[factory/inj1uz997yw7vq5ala7hhr5rpn386v7w7uva9v4e23/INJ] -peggy_denom = factory/inj1uz997yw7vq5ala7hhr5rpn386v7w7uva9v4e23/INJ -decimals = 6 - -[factory/inj1uzasxz38jtgjmsd6m52h2yy3zqy36wswy5hta9/position] -peggy_denom = factory/inj1uzasxz38jtgjmsd6m52h2yy3zqy36wswy5hta9/position -decimals = 0 - -[factory/inj1v06t5cjcnzawlvk665s0wynqy6zfjuulvaadhh/position] -peggy_denom = factory/inj1v06t5cjcnzawlvk665s0wynqy6zfjuulvaadhh/position -decimals = 0 - -[factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/cook] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/cook -decimals = 6 - -[factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/cookie] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/cookie -decimals = 6 - -[factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/frog] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/frog -decimals = 6 - -[factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/ninja] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/ninja -decimals = 6 - -[factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/pain] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/pain -decimals = 6 - -[factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/wif] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/wif -decimals = 6 - -[factory/inj1vc3d90452zqh5vp265maz69wdg4dhj7m0g6aty/position] -peggy_denom = factory/inj1vc3d90452zqh5vp265maz69wdg4dhj7m0g6aty/position -decimals = 0 - -[factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1kf09fn0mjq3d9v7x25xlmvacp9rfjqw96039e3] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1kf09fn0mjq3d9v7x25xlmvacp9rfjqw96039e3 -decimals = 18 - -[factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1khp440nluesxmnr0mgdstzxujhkmcu8mad797f] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1khp440nluesxmnr0mgdstzxujhkmcu8mad797f -decimals = 18 - -[factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1kv5amrnaczurcyc9rw0uve4e3wh2jfujxn3zlz] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1kv5amrnaczurcyc9rw0uve4e3wh2jfujxn3zlz -decimals = 18 - -[factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1nvq8pyvt2kf5xctc4v3xt4gszq5a9lhpadyfwg] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1nvq8pyvt2kf5xctc4v3xt4gszq5a9lhpadyfwg -decimals = 18 - -[factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1rduwtul0x7fkryzpdn85yuujntwyel8z04h7cq] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1rduwtul0x7fkryzpdn85yuujntwyel8z04h7cq -decimals = 18 - -[factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1sfk9r0jk9wxs7n726qfjg5e649zf34yq6q65gn] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1sfk9r0jk9wxs7n726qfjg5e649zf34yq6q65gn -decimals = 18 - -[factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1xar9nfhqc9al47hkh7eljrc3g66lntqch8hh0r] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1xar9nfhqc9al47hkh7eljrc3g66lntqch8hh0r -decimals = 18 - -[factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1zqe2p2xegqyr3zeltt9kh7c934v7tlevmk6xg7] -peggy_denom = factory/inj1vcqkkvqs7prqu70dpddfj7kqeqfdz5gg662qs3/lpinj1zqe2p2xegqyr3zeltt9kh7c934v7tlevmk6xg7 -decimals = 18 - -[factory/inj1vk2re2ak5xf4w2vnscy4ym2a23cwx375872e73/INJ] -peggy_denom = factory/inj1vk2re2ak5xf4w2vnscy4ym2a23cwx375872e73/INJ -decimals = 6 - -[factory/inj1vr0te6wepj0pne8qaw5gt9jjm78g2aqgl4lz26/INJ] -peggy_denom = factory/inj1vr0te6wepj0pne8qaw5gt9jjm78g2aqgl4lz26/INJ -decimals = 6 - -[factory/inj1vrktrmvtxkzd52kk45ptc5m53zncm56d278qza/GINGERDOG] -peggy_denom = factory/inj1vrktrmvtxkzd52kk45ptc5m53zncm56d278qza/GINGERDOG -decimals = 6 - -[factory/inj1vss35hmc5fzy0d4glcyt39w425pvwfsqk9zu3p/ABC] -peggy_denom = factory/inj1vss35hmc5fzy0d4glcyt39w425pvwfsqk9zu3p/ABC -decimals = 6 - -[factory/inj1vtc2rlvqzfzdezn3dmg7ggyeylr6qzpq0ak88r/position] -peggy_denom = factory/inj1vtc2rlvqzfzdezn3dmg7ggyeylr6qzpq0ak88r/position -decimals = 0 - -[factory/inj1vug68m8evczhxm26hfe7tetycsfnmm92mr6aaj/GODS] -peggy_denom = factory/inj1vug68m8evczhxm26hfe7tetycsfnmm92mr6aaj/GODS -decimals = 6 - -[factory/inj1vyelgqnlmnwd8sq2rcmg7d0jglrvggdk6s5y4k/position] -peggy_denom = factory/inj1vyelgqnlmnwd8sq2rcmg7d0jglrvggdk6s5y4k/position -decimals = 0 - -[factory/inj1w4ru8gx7mjhagafdn2ljumrc8s5aaefzmynuqd/black] -peggy_denom = factory/inj1w4ru8gx7mjhagafdn2ljumrc8s5aaefzmynuqd/black -decimals = 0 - -[factory/inj1wc3a7mqvdvhe8mkglvzq6pmelex53e2x8safdv/position] -peggy_denom = factory/inj1wc3a7mqvdvhe8mkglvzq6pmelex53e2x8safdv/position -decimals = 0 - -[factory/inj1we0h7wyuzm4e6cy6ryu77mpvvt4xs9n5mace28/position] -peggy_denom = factory/inj1we0h7wyuzm4e6cy6ryu77mpvvt4xs9n5mace28/position -decimals = 0 - -[factory/inj1weyajq6ksmzzhfpum9texpsgm9u20fc0kdqpgy/PEPE] -peggy_denom = factory/inj1weyajq6ksmzzhfpum9texpsgm9u20fc0kdqpgy/PEPE -decimals = 6 - -[factory/inj1whxcxhncnftrc76w0zns3l6934rqfenj5fl0kg/position] -peggy_denom = factory/inj1whxcxhncnftrc76w0zns3l6934rqfenj5fl0kg/position -decimals = 0 - -[factory/inj1wjtuzkprkc4gdf4r7dlh9gu96yyxml8qpzzy9p/elon] -peggy_denom = factory/inj1wjtuzkprkc4gdf4r7dlh9gu96yyxml8qpzzy9p/elon -decimals = 6 - -[factory/inj1wl8fjknkq2ge4tgynls5kdkkmwstj5fm3ts7s4/BINJ] -peggy_denom = factory/inj1wl8fjknkq2ge4tgynls5kdkkmwstj5fm3ts7s4/BINJ -decimals = 6 - -[factory/inj1wm66m98g8yluvl7vzcmsq5fvh4c7eacs32u5xh/INJ] -peggy_denom = factory/inj1wm66m98g8yluvl7vzcmsq5fvh4c7eacs32u5xh/INJ -decimals = 6 - -[factory/inj1wrltqpkxk8w5whk09knfyq4tkx06j5c9553fwh/INJ] -peggy_denom = factory/inj1wrltqpkxk8w5whk09knfyq4tkx06j5c9553fwh/INJ -decimals = 6 - -[factory/inj1ws4f65dx7kmspn28v22lmta3hkfps9cqfjwkyj/INJ] -peggy_denom = factory/inj1ws4f65dx7kmspn28v22lmta3hkfps9cqfjwkyj/INJ -decimals = 6 - -[factory/inj1wud39wkdk6vlqy65v4ytqrmldagvaz8c7gtnjm/position] -peggy_denom = factory/inj1wud39wkdk6vlqy65v4ytqrmldagvaz8c7gtnjm/position -decimals = 0 - -[factory/inj1wx6k6wkamm5pudf43d8q77ug094rydd6gkg622/INJ] -peggy_denom = factory/inj1wx6k6wkamm5pudf43d8q77ug094rydd6gkg622/INJ -decimals = 6 - -[factory/inj1x8larhqwxyr39ytv38476rqpz723uy2ycc66cf/BONK] -peggy_denom = factory/inj1x8larhqwxyr39ytv38476rqpz723uy2ycc66cf/BONK -decimals = 6 - -[factory/inj1xaw8dvp6v05vsnxxwa4y7gpuddxhes97rqmcv6/position] -peggy_denom = factory/inj1xaw8dvp6v05vsnxxwa4y7gpuddxhes97rqmcv6/position -decimals = 0 - -[factory/inj1xawhm3d8lf9n0rqdljpal033yackja3dt0kvp0/nobi] -peggy_denom = factory/inj1xawhm3d8lf9n0rqdljpal033yackja3dt0kvp0/nobi -decimals = 6 - -[factory/inj1xdmkzn2zpfh0rp38mjly8xza4xhx54vrlslqad/position] -peggy_denom = factory/inj1xdmkzn2zpfh0rp38mjly8xza4xhx54vrlslqad/position -decimals = 0 - -[factory/inj1xfl2jxuwpvpxxc5upxm8fxxzv6nxd65z5kpqny/position] -peggy_denom = factory/inj1xfl2jxuwpvpxxc5upxm8fxxzv6nxd65z5kpqny/position -decimals = 0 - -[factory/inj1xhzt72xa3pyk25chwa3kh5j2dpuwehmycukh38/test] -peggy_denom = factory/inj1xhzt72xa3pyk25chwa3kh5j2dpuwehmycukh38/test -decimals = 6 - -[factory/inj1xns9khp247zkasydzvkcvv7et2qrf679gkudmy/FOMO] -peggy_denom = factory/inj1xns9khp247zkasydzvkcvv7et2qrf679gkudmy/FOMO -decimals = 6 - -[factory/inj1xnw3266sqst4xatdgu7qme69rf58vnlj99vsty/INJ] -peggy_denom = factory/inj1xnw3266sqst4xatdgu7qme69rf58vnlj99vsty/INJ -decimals = 6 - -[factory/inj1xu0jvcecnmxn576f3umnugfrfez3gcnawvkew0/position] -peggy_denom = factory/inj1xu0jvcecnmxn576f3umnugfrfez3gcnawvkew0/position -decimals = 0 - -[factory/inj1xzjfandwwadxws0a8x2p2vfwg9lzyfksceuhxr/bonk] -peggy_denom = factory/inj1xzjfandwwadxws0a8x2p2vfwg9lzyfksceuhxr/bonk -decimals = 18 - -[factory/inj1y4mmnuck96ffjswgd37963f5ch9kph8sk99zuj/position] -peggy_denom = factory/inj1y4mmnuck96ffjswgd37963f5ch9kph8sk99zuj/position -decimals = 0 - -[factory/inj1y5lrg2p5cmlne4jr8uj479ns05srq59cw99gm8/INJ] -peggy_denom = factory/inj1y5lrg2p5cmlne4jr8uj479ns05srq59cw99gm8/INJ -decimals = 6 - -[factory/inj1y6zxg76ltrjdx7xppvtrdqlc5ujyhfra8aqr3f/CROCO] -peggy_denom = factory/inj1y6zxg76ltrjdx7xppvtrdqlc5ujyhfra8aqr3f/CROCO -decimals = 6 - -[factory/inj1yc2pc60avmdv3sfvamt27nk3kxhcxlf53q8ysr/position] -peggy_denom = factory/inj1yc2pc60avmdv3sfvamt27nk3kxhcxlf53q8ysr/position -decimals = 0 - -[factory/inj1yfrx89p0v0cxz2zm92yvh4nturzxqw9yc22apw/position] -peggy_denom = factory/inj1yfrx89p0v0cxz2zm92yvh4nturzxqw9yc22apw/position -decimals = 0 - -[factory/inj1yg24mn8enl5e6v4jl2j6cce47mx4vyd6e8dpck/milk] -peggy_denom = factory/inj1yg24mn8enl5e6v4jl2j6cce47mx4vyd6e8dpck/milk -decimals = 6 - -[factory/inj1yg49drflp8vmf4hj07jy9c8wl2fmqrfq09etpm/position] -peggy_denom = factory/inj1yg49drflp8vmf4hj07jy9c8wl2fmqrfq09etpm/position -decimals = 0 - -[factory/inj1ykf3aln7wwx7la80z5xc7w572d7vwtq92x09h5/INJ] -peggy_denom = factory/inj1ykf3aln7wwx7la80z5xc7w572d7vwtq92x09h5/INJ -decimals = 6 - -[factory/inj1yq82w2mugv4qvuy863p2urrwqegde4fyksmcmj/position] -peggy_denom = factory/inj1yq82w2mugv4qvuy863p2urrwqegde4fyksmcmj/position -decimals = 0 - -[factory/inj1yqgc6sv5eyhkf3p3nynrq5lsffnwp5vwvwqgqf/position] -peggy_denom = factory/inj1yqgc6sv5eyhkf3p3nynrq5lsffnwp5vwvwqgqf/position -decimals = 0 - -[factory/inj1yqnt9aswsjdujxxdeyzm4twqchjtaw2ddrxkqv/position] -peggy_denom = factory/inj1yqnt9aswsjdujxxdeyzm4twqchjtaw2ddrxkqv/position -decimals = 0 - -[factory/inj1yt3dxjvwyq5f4hw86sadk5jd9nqu6dnml3v7sv/INJ] -peggy_denom = factory/inj1yt3dxjvwyq5f4hw86sadk5jd9nqu6dnml3v7sv/INJ -decimals = 6 - -[factory/inj1yu54sj0phd59dgcd023hhlezxmtzqwgf44c6ka/position] -peggy_denom = factory/inj1yu54sj0phd59dgcd023hhlezxmtzqwgf44c6ka/position -decimals = 0 - -[factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/Test] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/Test -decimals = 6 - -[factory/inj1z3mux0g3fw2ggem5qnuqcy46nl5wwsdcm9q5eg/position] -peggy_denom = factory/inj1z3mux0g3fw2ggem5qnuqcy46nl5wwsdcm9q5eg/position -decimals = 0 - -[factory/inj1z426atp9k68uv49kaam7m0vnehw5fulxkyvde0/SHURIKEN] -peggy_denom = factory/inj1z426atp9k68uv49kaam7m0vnehw5fulxkyvde0/SHURIKEN -decimals = 6 - -[factory/inj1z60w4nx27cyt8tygmwxe045aa5h8u0acupv3dl/position] -peggy_denom = factory/inj1z60w4nx27cyt8tygmwxe045aa5h8u0acupv3dl/position -decimals = 0 - -[factory/inj1z7mx2tc9ea4y2y0nx230pe7knm8fryk3rv6r2c/uLP] -peggy_denom = factory/inj1z7mx2tc9ea4y2y0nx230pe7knm8fryk3rv6r2c/uLP -decimals = 0 - -[factory/inj1ze3ad8k5aw7ejwlpvwfdht9yslnpfqez45sd3v/BCAT] -peggy_denom = factory/inj1ze3ad8k5aw7ejwlpvwfdht9yslnpfqez45sd3v/BCAT -decimals = 6 - -[factory/inj1zggasay6llcwevxwtuqfrfnpfwu28zr6srcuqk/position] -peggy_denom = factory/inj1zggasay6llcwevxwtuqfrfnpfwu28zr6srcuqk/position -decimals = 0 - -[factory/inj1zgpg4laenyplsjeqz4pxfhmsv55vcx70lf2sgz/MONKEY] -peggy_denom = factory/inj1zgpg4laenyplsjeqz4pxfhmsv55vcx70lf2sgz/MONKEY -decimals = 6 - -[factory/inj1zjd5nqyvyksjqzsc207v80pcd9a0r9fec8rvn6/INJ] -peggy_denom = factory/inj1zjd5nqyvyksjqzsc207v80pcd9a0r9fec8rvn6/INJ -decimals = 6 - -[factory/inj1zmlf85er8we52r9qsq8wdumwpkdrhqh0f0u27j/INJ] -peggy_denom = factory/inj1zmlf85er8we52r9qsq8wdumwpkdrhqh0f0u27j/INJ -decimals = 6 - -[factory/inj1zt0ts2z4r0sx0g3ae87ct9r9pgjmxexe4lj2h3/position] -peggy_denom = factory/inj1zt0ts2z4r0sx0g3ae87ct9r9pgjmxexe4lj2h3/position -decimals = 0 - -[factory/inj1zthvl3awskg6a7l2v4yq9srxjjatvl4ydesfhc/position] -peggy_denom = factory/inj1zthvl3awskg6a7l2v4yq9srxjjatvl4ydesfhc/position -decimals = 0 - -[factory/inj1zy0r4d9s4zmssym0u46j5vxqatt5k5phfxt6rf/bonk] -peggy_denom = factory/inj1zy0r4d9s4zmssym0u46j5vxqatt5k5phfxt6rf/bonk -decimals = 18 - -[faot] -peggy_denom = inj1vnhhrcnnnr6tq96eaa8gcsuaz55ugnhs3dmfqq -decimals = 18 - -[fatPEPE] -peggy_denom = factory/inj1an9qflgvpvjdhczce6xwrh4afkaap77c72k4yd/fatpepe -decimals = 6 - -[fff] -peggy_denom = factory/inj1xy7dcllc7wn5prcy73xr7xhpt9zwg49c6szqcz/fff -decimals = 6 - -[fiftycent] -peggy_denom = inj1rtgfdnja2xav84ta0twq8cmmvkqzycnu9uxzw5 -decimals = 18 - -[fmXEN] -peggy_denom = inj14vluf5wc7tsptnfzrjs9g579uyp9gvvlwre5e4 -decimals = 8 - -[foo] -peggy_denom = factory/inj12vxhuaamfs33sxgnf95lxvzy9lpugpgjsrsxl3/foo -decimals = 6 - -[footjob] -peggy_denom = inj1gn7tah4p0uvgmtwgwe5lp9q7ce8d4yr8jxrfcv -decimals = 18 - -[fox] -peggy_denom = factory/inj1ddmyuzh42n8ymyhcm5jla3aaq9tucjnye02dlf/fox -decimals = 6 - -[frINJa] -peggy_denom = factory/inj1sm0feg2fxpmx5yg3ywzdzyn0s93m6d9dt87jf5/frINJa -decimals = 7 - -[franklin] -peggy_denom = inj1zd0043cf6q7yft07aaqgsurgh53xy5gercpzuu -decimals = 18 - -[gay] -peggy_denom = inj15x48ts4jw429zd9vvkwxf0advg9j24z2q948fl -decimals = 18 - -[gayasf] -peggy_denom = inj1qu6eldq9ftz2wvr43848ff8x5586xm0639kg7a -decimals = 18 - -[get] -peggy_denom = factory/inj1ldee0qev4khjdpw8wpqpyeyw0n0z8nnqtc423g/get -decimals = 6 - -[ginj] -peggy_denom = factory/inj1r4usuj62gywdwhq9uvx6tg0ywqpppcjqu7z4js/ginj -decimals = 6 - -[gipsyCOINS] -peggy_denom = inj1pyeutpz66lhapppt2ny36s57zfspglqtvdwywd -decimals = 6 - -[godzilla] -peggy_denom = factory/inj1nhswhqrgfu3hpauvyeycz7pfealx4ack2c5hfp/godzilla -decimals = 6 - -[gto] -peggy_denom = inj1ehnt0lcek8wdf0xj7y5mmz7nzr8j7ytjgk6l7g -decimals = 18 - -[h2o] -peggy_denom = factory/inj1utlxkwfxhmfc826gu07w20mvguysavz72edy4n/fbi -decimals = 6 - -[hINJ] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc -decimals = 18 - -[httuy] -peggy_denom = inj1996tdgklvleuja56gfpv9v3cc2uflmm9vavw05 -decimals = 18 - -[hug] -peggy_denom = inj1ncjqkvnxpyyhvm475std34eyn5c7eydpxxagds -decimals = 18 - -[ibc/02683677B1A58ECF74FFF25711E09735C44153FE9490BE5EF9FD21DE82BCB542] -peggy_denom = ibc/02683677B1A58ECF74FFF25711E09735C44153FE9490BE5EF9FD21DE82BCB542 -decimals = 6 - -[ibc/052AF4B0650990067B8FC5345A39206497BCC12F0ABE94F15415413739B93B26] -peggy_denom = ibc/052AF4B0650990067B8FC5345A39206497BCC12F0ABE94F15415413739B93B26 -decimals = 0 - -[ibc/05B7984C0122CB535968FDDF78A78511727E2B08F4053B4E4DB4A653D1993309] -peggy_denom = ibc/05B7984C0122CB535968FDDF78A78511727E2B08F4053B4E4DB4A653D1993309 -decimals = 0 - -[ibc/063F4461F7317CFF10F50AB044E44932D22AAD84FA7107082744946E6DB7B7A8] -peggy_denom = ibc/063F4461F7317CFF10F50AB044E44932D22AAD84FA7107082744946E6DB7B7A8 -decimals = 6 - -[ibc/0D2C8BD2BF7C53A7873D5D038273DF6E4E44092193202021308B90C6D035A98A] -peggy_denom = ibc/0D2C8BD2BF7C53A7873D5D038273DF6E4E44092193202021308B90C6D035A98A -decimals = 0 - -[ibc/0F3A724673F682CF7812D0ED1A0C41D344C09E94C939E79D12712DC7C0676E80] -peggy_denom = ibc/0F3A724673F682CF7812D0ED1A0C41D344C09E94C939E79D12712DC7C0676E80 -decimals = 6 - -[ibc/10CE34C15047F36C29C0644383FD0908646D67C198A35CF089AD53902FE3CA28] -peggy_denom = ibc/10CE34C15047F36C29C0644383FD0908646D67C198A35CF089AD53902FE3CA28 -decimals = 0 - -[ibc/10E1BF4C7142E07AA8CE7C91292E89B806F31263FCE48E966385FD47B53C1FFA] -peggy_denom = ibc/10E1BF4C7142E07AA8CE7C91292E89B806F31263FCE48E966385FD47B53C1FFA -decimals = 0 - -[ibc/13978F693E2022E3D945147D29A5B233058B3F4378C3A48AD207BF1154309F8D] -peggy_denom = ibc/13978F693E2022E3D945147D29A5B233058B3F4378C3A48AD207BF1154309F8D -decimals = 0 - -[ibc/14B6264C363DA101C1E09CB308EFF6678EDEB8EB6AB6996C37E44CCEE4B365DD] -peggy_denom = ibc/14B6264C363DA101C1E09CB308EFF6678EDEB8EB6AB6996C37E44CCEE4B365DD -decimals = 0 - -[ibc/15FE2BB9D596F81B40D72E95953E0CB6E2280813799AED7058D499E0C2B561C6] -peggy_denom = ibc/15FE2BB9D596F81B40D72E95953E0CB6E2280813799AED7058D499E0C2B561C6 -decimals = 0 - -[ibc/18F1A8BF7084DCF2AD647F741A7B611EB790C3DC0B0C8AE58D0B18F4D0E2DE51] -peggy_denom = ibc/18F1A8BF7084DCF2AD647F741A7B611EB790C3DC0B0C8AE58D0B18F4D0E2DE51 -decimals = 0 - -[ibc/1C829D8C4EB420F185270BEF8F4F1F24F4F69DF097AB02B9E982E78F3D7F6BC6] -peggy_denom = ibc/1C829D8C4EB420F185270BEF8F4F1F24F4F69DF097AB02B9E982E78F3D7F6BC6 -decimals = 0 - -[ibc/1D4FB764C95C003A2E274D52EBDA0590DE2CD5DF21BA56C06E285BC1167E5073] -peggy_denom = ibc/1D4FB764C95C003A2E274D52EBDA0590DE2CD5DF21BA56C06E285BC1167E5073 -decimals = 0 - -[ibc/1E4DACCD788219206F93485352B39DF83F6268F389997141498FAFB5BA06493B] -peggy_denom = ibc/1E4DACCD788219206F93485352B39DF83F6268F389997141498FAFB5BA06493B -decimals = 0 - -[ibc/1F375E1B09D8021284732C55B321D772A3E4A3E959309405455F980EE630EABF] -peggy_denom = ibc/1F375E1B09D8021284732C55B321D772A3E4A3E959309405455F980EE630EABF -decimals = 0 - -[ibc/1FAB6A21584C2618581B83475D4F88773EB04A434336D971CFA421C6396E3B7A] -peggy_denom = ibc/1FAB6A21584C2618581B83475D4F88773EB04A434336D971CFA421C6396E3B7A -decimals = 0 - -[ibc/2138C4EA63EFD757D42F75B90177FE34A9508DC0046DC48844CFF26659AE7A9D] -peggy_denom = ibc/2138C4EA63EFD757D42F75B90177FE34A9508DC0046DC48844CFF26659AE7A9D -decimals = 5 - -[ibc/247FF5EB358DA07AE08BC0E975E1AD955494A51B6C11452271A216E67AF1E4D1] -peggy_denom = ibc/247FF5EB358DA07AE08BC0E975E1AD955494A51B6C11452271A216E67AF1E4D1 -decimals = 0 - -[ibc/24EF0F2C4115CF69E8CCFD205842A52008094893C33C24F5F4A36BDED9772C6A] -peggy_denom = ibc/24EF0F2C4115CF69E8CCFD205842A52008094893C33C24F5F4A36BDED9772C6A -decimals = 0 - -[ibc/28D8F5AB133E1E66EE24901B2BBAAAD73AFFE4DBBD46A72091FC86D08FE60566] -peggy_denom = ibc/28D8F5AB133E1E66EE24901B2BBAAAD73AFFE4DBBD46A72091FC86D08FE60566 -decimals = 0 - -[ibc/295BF44E68BDD1B0D32A28C2084D89D63EDA3A01612789B01B62B8F07254D04C] -peggy_denom = ibc/295BF44E68BDD1B0D32A28C2084D89D63EDA3A01612789B01B62B8F07254D04C -decimals = 0 - -[ibc/2BC6772AA534CE7DB68E43FC0DE08F74CA4C0AE6B0C0395AC3D7D6D91BEAB4E5] -peggy_denom = ibc/2BC6772AA534CE7DB68E43FC0DE08F74CA4C0AE6B0C0395AC3D7D6D91BEAB4E5 -decimals = 0 - -[ibc/2E2D915C43EEA931B4177A0C5935448CADBE397E35F9118B88725A8833C8E3E4] -peggy_denom = ibc/2E2D915C43EEA931B4177A0C5935448CADBE397E35F9118B88725A8833C8E3E4 -decimals = 0 - -[ibc/31861069CB177FFF7F11D4949F3AA8E7335CB545CC09B6E71258BA0EBCAC2857] -peggy_denom = ibc/31861069CB177FFF7F11D4949F3AA8E7335CB545CC09B6E71258BA0EBCAC2857 -decimals = 0 - -[ibc/328DC071BB445FF5C9B6A08D34674A9A3AFF2AF6FD66414A7A326C83863E7B03] -peggy_denom = ibc/328DC071BB445FF5C9B6A08D34674A9A3AFF2AF6FD66414A7A326C83863E7B03 -decimals = 0 - -[ibc/334B68D79945DEE86E2F8E20D8C744E98C87D0FED274D9684AA35ABD5F661699] -peggy_denom = ibc/334B68D79945DEE86E2F8E20D8C744E98C87D0FED274D9684AA35ABD5F661699 -decimals = 0 - -[ibc/34F18EB4E3CAA9786F86CEA5E73E1B369B4A23501B4B272FA68BEE5450EFFFB8] -peggy_denom = ibc/34F18EB4E3CAA9786F86CEA5E73E1B369B4A23501B4B272FA68BEE5450EFFFB8 -decimals = 0 - -[ibc/359EA1E69EF84A02FD453B9FC462F985287F51310FF2E3ECEDABFDF7D3EAC91A] -peggy_denom = ibc/359EA1E69EF84A02FD453B9FC462F985287F51310FF2E3ECEDABFDF7D3EAC91A -decimals = 0 - -[ibc/365501AC8CD65F1BCB22C4A546458C3CA702985A30443120992B61483399B836] -peggy_denom = ibc/365501AC8CD65F1BCB22C4A546458C3CA702985A30443120992B61483399B836 -decimals = 0 - -[ibc/377F82FD1E4F6408B1CB7C8BFF9134A1F2C5D5E5CC2760BAD972AF0F7F6D4675] -peggy_denom = ibc/377F82FD1E4F6408B1CB7C8BFF9134A1F2C5D5E5CC2760BAD972AF0F7F6D4675 -decimals = 6 - -[ibc/41A7E6B1E7EF8EE04BAFD95C59875743D2F4512F378E0BC00EA29B00787283F0] -peggy_denom = ibc/41A7E6B1E7EF8EE04BAFD95C59875743D2F4512F378E0BC00EA29B00787283F0 -decimals = 0 - -[ibc/41E3AFFDAED4578F4D7BFCF2106545AAF9CBCA904BF3E9FD5343DCC1DADBC00F] -peggy_denom = ibc/41E3AFFDAED4578F4D7BFCF2106545AAF9CBCA904BF3E9FD5343DCC1DADBC00F -decimals = 0 - -[ibc/4208C5321C958B6AEC0AA609DC513B7564BC7CCF94CF76021A95020A794B1BC6] -peggy_denom = ibc/4208C5321C958B6AEC0AA609DC513B7564BC7CCF94CF76021A95020A794B1BC6 -decimals = 0 - -[ibc/433133545CF68587777A01C3EFCF720EFE1B42F14AB2153D349DC4559984F2E8] -peggy_denom = ibc/433133545CF68587777A01C3EFCF720EFE1B42F14AB2153D349DC4559984F2E8 -decimals = 6 - -[ibc/45C1BDD0F44EA61B79E6F07C61F6FBC601E496B281316C867B542D7964A4BD82] -peggy_denom = ibc/45C1BDD0F44EA61B79E6F07C61F6FBC601E496B281316C867B542D7964A4BD82 -decimals = 6 - -[ibc/465B094023AC8545B0E07163C7111D4A876978712D8A33E546AADDDB4E11F265] -peggy_denom = ibc/465B094023AC8545B0E07163C7111D4A876978712D8A33E546AADDDB4E11F265 -decimals = 0 - -[ibc/46AA3E75F15D7EFA00BF6747E8CE668F6A515182B2355942C567F47B88761072] -peggy_denom = ibc/46AA3E75F15D7EFA00BF6747E8CE668F6A515182B2355942C567F47B88761072 -decimals = 0 - -[ibc/46FFF1A18F4AE92224E19065630685A16837C17FA3C59C23FE7012982216D0D5] -peggy_denom = ibc/46FFF1A18F4AE92224E19065630685A16837C17FA3C59C23FE7012982216D0D5 -decimals = 0 - -[ibc/4A1CC41B019E6D412E3A337A1E5C1F301E9D2CAE8EA8EF449538CBA4BED6E2FA] -peggy_denom = ibc/4A1CC41B019E6D412E3A337A1E5C1F301E9D2CAE8EA8EF449538CBA4BED6E2FA -decimals = 0 - -[ibc/4BC12869ADD45404F2A31FB2BCF0BC0FF8B8D8042C8CC294EAF511DD972AE2FF] -peggy_denom = ibc/4BC12869ADD45404F2A31FB2BCF0BC0FF8B8D8042C8CC294EAF511DD972AE2FF -decimals = 0 - -[ibc/4C8A332AE4FDE42709649B5F9A2A336192158C4465DF74B4513F5AD0C583EA6F] -peggy_denom = ibc/4C8A332AE4FDE42709649B5F9A2A336192158C4465DF74B4513F5AD0C583EA6F -decimals = 8 - -[ibc/4CCAF2B1D5957477C726FA2ADD4313981A6D6A7FBA1B3A12A2D22C7EE60EA1B0] -peggy_denom = ibc/4CCAF2B1D5957477C726FA2ADD4313981A6D6A7FBA1B3A12A2D22C7EE60EA1B0 -decimals = 0 - -[ibc/4CE2DDC2BE301B92DD08ECBBF39910A4F055DC68156132B222B8CEF651941D31] -peggy_denom = ibc/4CE2DDC2BE301B92DD08ECBBF39910A4F055DC68156132B222B8CEF651941D31 -decimals = 0 - -[ibc/4D29F082A3C083C85C886B92A1EB438C3FC0632E5F9E4D875479BEB7B9511BD5] -peggy_denom = ibc/4D29F082A3C083C85C886B92A1EB438C3FC0632E5F9E4D875479BEB7B9511BD5 -decimals = 6 - -[ibc/4D5A68067A682C1EFEAE08E2355A2DE229E62145943E53CAC97EF5E1DE430072] -peggy_denom = ibc/4D5A68067A682C1EFEAE08E2355A2DE229E62145943E53CAC97EF5E1DE430072 -decimals = 0 - -[ibc/4F58C072D9654E7A8A71BAE92F1919FB49D0311B48759805EE197852BF2B8146] -peggy_denom = ibc/4F58C072D9654E7A8A71BAE92F1919FB49D0311B48759805EE197852BF2B8146 -decimals = 0 - -[ibc/508C2B3CB4795DC85E5E8883AE2D4672EBAE1312D80F702C2B1E69D15B4028A7] -peggy_denom = ibc/508C2B3CB4795DC85E5E8883AE2D4672EBAE1312D80F702C2B1E69D15B4028A7 -decimals = 0 - -[ibc/51A7B673746D4DACE599D47E1F308AD2C12DAF10AD8D4E1DC6A0C95B974FA0D8] -peggy_denom = ibc/51A7B673746D4DACE599D47E1F308AD2C12DAF10AD8D4E1DC6A0C95B974FA0D8 -decimals = 0 - -[ibc/557C8BDED38445765DAEBEB4EBBFC88F8ACBD9C414F95A1795AB45017F4A1786] -peggy_denom = ibc/557C8BDED38445765DAEBEB4EBBFC88F8ACBD9C414F95A1795AB45017F4A1786 -decimals = 0 - -[ibc/566A39FE0AAC7E9A738DEE74130A161D029C2F0CBC3D2EDBEE0DD967BC288793] -peggy_denom = ibc/566A39FE0AAC7E9A738DEE74130A161D029C2F0CBC3D2EDBEE0DD967BC288793 -decimals = 0 - -[ibc/585092355C3CAC6A5C28637C0FF4EF09D2D113C3BC87D31D0317AC0CA83D0E05] -peggy_denom = ibc/585092355C3CAC6A5C28637C0FF4EF09D2D113C3BC87D31D0317AC0CA83D0E05 -decimals = 0 - -[ibc/5AC3EB515892B130EA995D4B13BEA8B4C4BC063AEB95CAE6A0A49DC16B4B3578] -peggy_denom = ibc/5AC3EB515892B130EA995D4B13BEA8B4C4BC063AEB95CAE6A0A49DC16B4B3578 -decimals = 0 - -[ibc/5B7757EBBB8774473017EE65A71D992D6B9E6A66859EC076EA63CD7D46883B4E] -peggy_denom = ibc/5B7757EBBB8774473017EE65A71D992D6B9E6A66859EC076EA63CD7D46883B4E -decimals = 0 - -[ibc/5B8F90B1E3A33B45FF7AE086621456E8C2C162CABCC95406001322818AE92B63] -peggy_denom = ibc/5B8F90B1E3A33B45FF7AE086621456E8C2C162CABCC95406001322818AE92B63 -decimals = 0 - -[ibc/5B9385ABA4F72BD0CD5D014BBF58C48B103C3FAF82A6283AA689AC76F5A80F66] -peggy_denom = ibc/5B9385ABA4F72BD0CD5D014BBF58C48B103C3FAF82A6283AA689AC76F5A80F66 -decimals = 0 - -[ibc/602F1E52AEDF8579AACDF98415E518CC0C7E0769E8F11434E6C448FD3A88B477] -peggy_denom = ibc/602F1E52AEDF8579AACDF98415E518CC0C7E0769E8F11434E6C448FD3A88B477 -decimals = 0 - -[ibc/60DC18B7771F14C0069205E538C0758FED60E92077F19C9485203743BC174C77] -peggy_denom = ibc/60DC18B7771F14C0069205E538C0758FED60E92077F19C9485203743BC174C77 -decimals = 0 - -[ibc/614B331A02D24E2AE4A4768EE6EE65A35A4800547F6E3AE65B1A5FA621E0F4D0] -peggy_denom = ibc/614B331A02D24E2AE4A4768EE6EE65A35A4800547F6E3AE65B1A5FA621E0F4D0 -decimals = 0 - -[ibc/63DBAA3362F15873B8038C3CE12F58CB66A5CACF8665ED176E7D942E8D81FF3B] -peggy_denom = ibc/63DBAA3362F15873B8038C3CE12F58CB66A5CACF8665ED176E7D942E8D81FF3B -decimals = 0 - -[ibc/63F1FCA502ADCA376A83257828085E542A10CD5CF3CF7FB3CFB33E055958EAB9] -peggy_denom = ibc/63F1FCA502ADCA376A83257828085E542A10CD5CF3CF7FB3CFB33E055958EAB9 -decimals = 0 - -[ibc/64431EE79F3216B8F7773A630549ADA852EA8E4B545D22BD35B0BF56FD5D5201] -peggy_denom = ibc/64431EE79F3216B8F7773A630549ADA852EA8E4B545D22BD35B0BF56FD5D5201 -decimals = 6 - -[ibc/646315E3B0461F5FA4C5C8968A88FC45D4D5D04A45B98F1B8294DD82F386DD85] -peggy_denom = ibc/646315E3B0461F5FA4C5C8968A88FC45D4D5D04A45B98F1B8294DD82F386DD85 -decimals = 0 - -[ibc/64D95807CA13CD9EC5BEF9D3709138A14295DDBDFBC9EF58A9FFE34B911545E6] -peggy_denom = ibc/64D95807CA13CD9EC5BEF9D3709138A14295DDBDFBC9EF58A9FFE34B911545E6 -decimals = 6 - -[ibc/651C663A245EC969FCD5BC0F11ABE4AE6D09BF42FAFB981A8B73C1123DD85547] -peggy_denom = ibc/651C663A245EC969FCD5BC0F11ABE4AE6D09BF42FAFB981A8B73C1123DD85547 -decimals = 0 - -[ibc/66DB244867B50966FCD71C0457A9C0E239AB8228EFF2E60216A83B8710B23EBE] -peggy_denom = ibc/66DB244867B50966FCD71C0457A9C0E239AB8228EFF2E60216A83B8710B23EBE -decimals = 0 - -[ibc/67E598A1480B588111C68FC0DFB074F3E109007B405A27C08EBAA2129B42EF18] -peggy_denom = ibc/67E598A1480B588111C68FC0DFB074F3E109007B405A27C08EBAA2129B42EF18 -decimals = 0 - -[ibc/69C979B0833FC4B34A9FCF6B75F2EAA4B93507E7F8629C69C03081C21837D038] -peggy_denom = ibc/69C979B0833FC4B34A9FCF6B75F2EAA4B93507E7F8629C69C03081C21837D038 -decimals = 0 - -[ibc/6A90DF53BE8CE3407DAF424FE119340075B821F25D26B5B7A0F2ACC5EB8D15B7] -peggy_denom = ibc/6A90DF53BE8CE3407DAF424FE119340075B821F25D26B5B7A0F2ACC5EB8D15B7 -decimals = 0 - -[ibc/6BBCFE43BE414294606BF4B05BB9EB18D685A9183DF5FD8CC5154879B8279C8D] -peggy_denom = ibc/6BBCFE43BE414294606BF4B05BB9EB18D685A9183DF5FD8CC5154879B8279C8D -decimals = 0 - -[ibc/6C55598A43348E41BCE1CE3C9313208CB953A036955869C47C3265A3BE2BB8D4] -peggy_denom = ibc/6C55598A43348E41BCE1CE3C9313208CB953A036955869C47C3265A3BE2BB8D4 -decimals = 18 - -[ibc/6D4B54A1D40939390FB1DD0953C95A0E9DE34451C4E5AD68D052224601C7F138] -peggy_denom = ibc/6D4B54A1D40939390FB1DD0953C95A0E9DE34451C4E5AD68D052224601C7F138 -decimals = 0 - -[ibc/6E2FE0B25FE6DE428D16B25D42832D13B8A6DF65B40844EA4AB49C94896BB932] -peggy_denom = ibc/6E2FE0B25FE6DE428D16B25D42832D13B8A6DF65B40844EA4AB49C94896BB932 -decimals = 0 - -[ibc/6EBC38FBA72747ABD6641E8B00DD5F717E5E0B21366460213D2A378A0DEDEED7] -peggy_denom = ibc/6EBC38FBA72747ABD6641E8B00DD5F717E5E0B21366460213D2A378A0DEDEED7 -decimals = 0 - -[ibc/6F8BB0716C7C8A4D8489749D9F86668D65B28270AD1BD4E04FF0F79FAE568AC6] -peggy_denom = ibc/6F8BB0716C7C8A4D8489749D9F86668D65B28270AD1BD4E04FF0F79FAE568AC6 -decimals = 0 - -[ibc/705B1CA519312502768926783464F5E1581D8626A837C55BD62B21ED121FB68F] -peggy_denom = ibc/705B1CA519312502768926783464F5E1581D8626A837C55BD62B21ED121FB68F -decimals = 0 - -[ibc/708E88A154130E672462B0E5BE3F8C3CC8B5716D618C77FF03B8B6F3E6278F0B] -peggy_denom = ibc/708E88A154130E672462B0E5BE3F8C3CC8B5716D618C77FF03B8B6F3E6278F0B -decimals = 0 - -[ibc/710DA81083B469FE562770EE16DCA2DB088D5796937BCB548DF27DA87156C5B3] -peggy_denom = ibc/710DA81083B469FE562770EE16DCA2DB088D5796937BCB548DF27DA87156C5B3 -decimals = 0 - -[ibc/72C208D790F59429C66542C648D69EDA1DC8A81C4B869C11444D906233678D3D] -peggy_denom = ibc/72C208D790F59429C66542C648D69EDA1DC8A81C4B869C11444D906233678D3D -decimals = 0 - -[ibc/745D31EA5FF54979B57A0797FF3E1B767E624D32498C9735A13E31A53DBC17F5] -peggy_denom = ibc/745D31EA5FF54979B57A0797FF3E1B767E624D32498C9735A13E31A53DBC17F5 -decimals = 0 - -[ibc/74BFF6BAC652D00C8F3382B1D1CFF086A91F1AF281E84F849A28358D6B81915B] -peggy_denom = ibc/74BFF6BAC652D00C8F3382B1D1CFF086A91F1AF281E84F849A28358D6B81915B -decimals = 0 - -[ibc/75BD031C1301C554833F205FAFA065178D51AC6100BCE608E6DC2759C2B71715] -peggy_denom = ibc/75BD031C1301C554833F205FAFA065178D51AC6100BCE608E6DC2759C2B71715 -decimals = 6 - -[ibc/75DCE6CD83EFF5A64187ECFCEE4F568A57C6C0B3854FB158EB706D9140E07FB0] -peggy_denom = ibc/75DCE6CD83EFF5A64187ECFCEE4F568A57C6C0B3854FB158EB706D9140E07FB0 -decimals = 0 - -[ibc/75F5D4A64938A16BCAEB5E8F103BD1E8F3A5FE3547C7F5F9FE3E51036FA814E6] -peggy_denom = ibc/75F5D4A64938A16BCAEB5E8F103BD1E8F3A5FE3547C7F5F9FE3E51036FA814E6 -decimals = 0 - -[ibc/7965483148018AFAA12DC569959897E7A5E474F4B41A87FFC5513B552C108DB5] -peggy_denom = ibc/7965483148018AFAA12DC569959897E7A5E474F4B41A87FFC5513B552C108DB5 -decimals = 6 - -[ibc/79AAED90BC8A3025E4CC344DF8F89D0DBAC646E5E2FD6B60783981BF1FE06DCA] -peggy_denom = ibc/79AAED90BC8A3025E4CC344DF8F89D0DBAC646E5E2FD6B60783981BF1FE06DCA -decimals = 0 - -[ibc/79FA72A2E7596298CD4CD7F79BDA0E9627D4B6A27150B43058CB0D1231C54F8C] -peggy_denom = ibc/79FA72A2E7596298CD4CD7F79BDA0E9627D4B6A27150B43058CB0D1231C54F8C -decimals = 0 - -[ibc/7A007AE05C3DDE189E554697450A2BF8FFF380E88F7BA6DC7DF39E329E80A49D] -peggy_denom = ibc/7A007AE05C3DDE189E554697450A2BF8FFF380E88F7BA6DC7DF39E329E80A49D -decimals = 0 - -[ibc/7A073FD73CCAD05DCF4571B92BC1E16D6E6211EF79A5AD1FEE6E5464D8348F27] -peggy_denom = ibc/7A073FD73CCAD05DCF4571B92BC1E16D6E6211EF79A5AD1FEE6E5464D8348F27 -decimals = 0 - -[ibc/7A2FE4D6F3156F60E38623C684C21A9F4684B730F035D75712928F71B0DB08B5] -peggy_denom = ibc/7A2FE4D6F3156F60E38623C684C21A9F4684B730F035D75712928F71B0DB08B5 -decimals = 0 - -[ibc/7C2AA3086423029B3E915B5563975DB87EF2E552A40F996C7F6D19FFBD5B2AEA] -peggy_denom = ibc/7C2AA3086423029B3E915B5563975DB87EF2E552A40F996C7F6D19FFBD5B2AEA -decimals = 0 - -[ibc/7C4A4847D6898FA8744A8F2A4FC287E98CA5A95E05842B897B3FB301103C8AB6] -peggy_denom = ibc/7C4A4847D6898FA8744A8F2A4FC287E98CA5A95E05842B897B3FB301103C8AB6 -decimals = 6 - -[ibc/7CF12F727C8C8A6589016D8565830B6DE0D87F70ED1A2C80270B2ABC77426DE7] -peggy_denom = ibc/7CF12F727C8C8A6589016D8565830B6DE0D87F70ED1A2C80270B2ABC77426DE7 -decimals = 0 - -[ibc/7D655739C7AE81A4FD2D21744654767E6721894969985588EC330C6396BA1C28] -peggy_denom = ibc/7D655739C7AE81A4FD2D21744654767E6721894969985588EC330C6396BA1C28 -decimals = 0 - -[ibc/7FF5CED7EF2ED6DFBC5B1278B5BE9ECBFB5939CC04218AC244A5E51D64ED50C8] -peggy_denom = ibc/7FF5CED7EF2ED6DFBC5B1278B5BE9ECBFB5939CC04218AC244A5E51D64ED50C8 -decimals = 0 - -[ibc/819B5FB8FA371CC26976CAF8CDF54F3B146060400AD55591B5F1BE3036E915D8] -peggy_denom = ibc/819B5FB8FA371CC26976CAF8CDF54F3B146060400AD55591B5F1BE3036E915D8 -decimals = 0 - -[ibc/81B756469E88FBB424E039018AC5BDEEA6C7A01B8794ECF176DA8C9C5B95FA78] -peggy_denom = ibc/81B756469E88FBB424E039018AC5BDEEA6C7A01B8794ECF176DA8C9C5B95FA78 -decimals = 0 - -[ibc/81B7F37966A8066DFAF1B2F07A3D3AFBBA2AAC479B1F0D4135AD85725592D7B1] -peggy_denom = ibc/81B7F37966A8066DFAF1B2F07A3D3AFBBA2AAC479B1F0D4135AD85725592D7B1 -decimals = 0 - -[ibc/83601F79992DCDF21ECCE0D876C6E1E9578AB97D77CD3E975B92B715CA851F19] -peggy_denom = ibc/83601F79992DCDF21ECCE0D876C6E1E9578AB97D77CD3E975B92B715CA851F19 -decimals = 0 - -[ibc/85409B5CEC4C363C224D6E1042116A19CEF76F8D35823B4664E71A467B475F44] -peggy_denom = ibc/85409B5CEC4C363C224D6E1042116A19CEF76F8D35823B4664E71A467B475F44 -decimals = 0 - -[ibc/85C83BD4F9557A367AA5D890D58CA60E6691833679167ED1E65A00268E480287] -peggy_denom = ibc/85C83BD4F9557A367AA5D890D58CA60E6691833679167ED1E65A00268E480287 -decimals = 0 - -[ibc/8A58946864367695DE89CE93634F5D76CCF7C8995915A0388FDF4D15A8BA8C4B] -peggy_denom = ibc/8A58946864367695DE89CE93634F5D76CCF7C8995915A0388FDF4D15A8BA8C4B -decimals = 0 - -[ibc/8B42C90767030357E99BE35BB5BCBD5A69F6E9E20F4A9FD0498823FD10FF86F9] -peggy_denom = ibc/8B42C90767030357E99BE35BB5BCBD5A69F6E9E20F4A9FD0498823FD10FF86F9 -decimals = 0 - -[ibc/8CE12C919F662B1563782DC4CF3696E5CED5287B82A59BBE17F3D65CE6A651AE] -peggy_denom = ibc/8CE12C919F662B1563782DC4CF3696E5CED5287B82A59BBE17F3D65CE6A651AE -decimals = 0 - -[ibc/8D0DA5929A6E7B901319D05D5434FB4BEB28459D72470A3A1C593A813FE461C8] -peggy_denom = ibc/8D0DA5929A6E7B901319D05D5434FB4BEB28459D72470A3A1C593A813FE461C8 -decimals = 0 - -[ibc/8D311D92BCD4E87F145DEB9DDA339416DEF7E13571D92A3521CAB0BF62760FBE] -peggy_denom = ibc/8D311D92BCD4E87F145DEB9DDA339416DEF7E13571D92A3521CAB0BF62760FBE -decimals = 6 - -[ibc/8D90E5706C22B488F4FA45CD81FEAC91112B35510A72FEB45DB561A8CAF7D775] -peggy_denom = ibc/8D90E5706C22B488F4FA45CD81FEAC91112B35510A72FEB45DB561A8CAF7D775 -decimals = 0 - -[ibc/8E1E49E35305C7002752F0C947B4118C23D1DFF1FB972363EB6F078567262CAC] -peggy_denom = ibc/8E1E49E35305C7002752F0C947B4118C23D1DFF1FB972363EB6F078567262CAC -decimals = 0 - -[ibc/8E29C07E81FDE94D898868F9EF92EE805B6D5902B75F2F90C9DE48E5BE6A2AFA] -peggy_denom = ibc/8E29C07E81FDE94D898868F9EF92EE805B6D5902B75F2F90C9DE48E5BE6A2AFA -decimals = 0 - -[ibc/8FB87BBB7E7B2A963A6F40A655F611F5F8DB30797E2B2CA1A0BAC856E58CA8F6] -peggy_denom = ibc/8FB87BBB7E7B2A963A6F40A655F611F5F8DB30797E2B2CA1A0BAC856E58CA8F6 -decimals = 0 - -[ibc/9144D78830C5ABD7B7D9E219EA7600E3A0E0AD5FC50C007668160595E94789AB] -peggy_denom = ibc/9144D78830C5ABD7B7D9E219EA7600E3A0E0AD5FC50C007668160595E94789AB -decimals = 18 - -[ibc/92F62B238D6C73A5CAA0930CEDE3781CEF41B6EED7A205129D69F4F3D77F392A] -peggy_denom = ibc/92F62B238D6C73A5CAA0930CEDE3781CEF41B6EED7A205129D69F4F3D77F392A -decimals = 0 - -[ibc/948D16A08718820A10DE8F7B35CE60409E7B5DC61043E88BB368C776147E70E8] -peggy_denom = ibc/948D16A08718820A10DE8F7B35CE60409E7B5DC61043E88BB368C776147E70E8 -decimals = 0 - -[ibc/949FD45325A74482FB0FC29CB19B744CED7340511EDA8E4F9337D9500F29D169] -peggy_denom = ibc/949FD45325A74482FB0FC29CB19B744CED7340511EDA8E4F9337D9500F29D169 -decimals = 0 - -[ibc/95B32740756E6DF2EAA242978EBF0FF6F3B632B8601DC12CB912D5957E8AB118] -peggy_denom = ibc/95B32740756E6DF2EAA242978EBF0FF6F3B632B8601DC12CB912D5957E8AB118 -decimals = 0 - -[ibc/95E6CD4D649BD33F938B2B7B2BED3CA6DC78F7765F7E5B01329D92DD22259AF3] -peggy_denom = ibc/95E6CD4D649BD33F938B2B7B2BED3CA6DC78F7765F7E5B01329D92DD22259AF3 -decimals = 0 - -[ibc/999FD9811C895A63FE1A2FCDDA24DEC6AF7D70D907BD97E9C455BDFD57B373CA] -peggy_denom = ibc/999FD9811C895A63FE1A2FCDDA24DEC6AF7D70D907BD97E9C455BDFD57B373CA -decimals = 0 - -[ibc/9A8083F8E50E5CAE85393E9BD52A3A5E2404B7CF9D2FCCD87A81BFADD38001E5] -peggy_denom = ibc/9A8083F8E50E5CAE85393E9BD52A3A5E2404B7CF9D2FCCD87A81BFADD38001E5 -decimals = 0 - -[ibc/9CAF108FCC3EB3815E029462100828461FFAA829002C4366716437F8C07F5F9C] -peggy_denom = ibc/9CAF108FCC3EB3815E029462100828461FFAA829002C4366716437F8C07F5F9C -decimals = 0 - -[ibc/9D592A0F3E812505C6B3F7860458B7AC4DBDECACC04A2602FC13ED0AB6C762B6] -peggy_denom = ibc/9D592A0F3E812505C6B3F7860458B7AC4DBDECACC04A2602FC13ED0AB6C762B6 -decimals = 0 - -[ibc/9D8B31B800A606CE820FC7604A5E85A15898630DDAFEB2733530594643119D4C] -peggy_denom = ibc/9D8B31B800A606CE820FC7604A5E85A15898630DDAFEB2733530594643119D4C -decimals = 0 - -[ibc/9D9B59CA222E54842555DBD81B22EEABE61796D4C6EC8AB47A97C388333AC340] -peggy_denom = ibc/9D9B59CA222E54842555DBD81B22EEABE61796D4C6EC8AB47A97C388333AC340 -decimals = 6 - -[ibc/9FF2D5FE9CBF1B6D51197FF2C94F84B842438136F4586B42DA06CEA8921CCEFA] -peggy_denom = ibc/9FF2D5FE9CBF1B6D51197FF2C94F84B842438136F4586B42DA06CEA8921CCEFA -decimals = 0 - -[ibc/A07BB73539F556DA5238F1B7E9471B34DD19897B1EE7050B959989F13EFE73B3] -peggy_denom = ibc/A07BB73539F556DA5238F1B7E9471B34DD19897B1EE7050B959989F13EFE73B3 -decimals = 8 - -[ibc/A211992C4D639DD2E59A45850BFC9CF1304519C1B7F46D7EDCFC1CFDFE9BFD31] -peggy_denom = ibc/A211992C4D639DD2E59A45850BFC9CF1304519C1B7F46D7EDCFC1CFDFE9BFD31 -decimals = 0 - -[ibc/A2C433944E7989D2B32565DDF6B6C2806B2AF4500675AA39D3C3A061D37CE576] -peggy_denom = ibc/A2C433944E7989D2B32565DDF6B6C2806B2AF4500675AA39D3C3A061D37CE576 -decimals = 0 - -[ibc/A2CF2B2B577769B7E025A21A24B28E443163E12987AA1A150AD9B6B58BFDF0D9] -peggy_denom = ibc/A2CF2B2B577769B7E025A21A24B28E443163E12987AA1A150AD9B6B58BFDF0D9 -decimals = 0 - -[ibc/A3B566239B955DEA9718EAB29B8FAB152ABE746E6040A9EA7B5CDE12FF912551] -peggy_denom = ibc/A3B566239B955DEA9718EAB29B8FAB152ABE746E6040A9EA7B5CDE12FF912551 -decimals = 0 - -[ibc/A55FFAE2F7E96F6E3D92F9E837350D47D2A2C3F6BD9584D55CCA39EC6949D598] -peggy_denom = ibc/A55FFAE2F7E96F6E3D92F9E837350D47D2A2C3F6BD9584D55CCA39EC6949D598 -decimals = 0 - -[ibc/A83851234A83F3FE51CDB44FF1A4435472A197C096EF9E7312B69E67C16B7FB7] -peggy_denom = ibc/A83851234A83F3FE51CDB44FF1A4435472A197C096EF9E7312B69E67C16B7FB7 -decimals = 6 - -[ibc/A96304F1680B9FB1705F3368320E4430D4A1E87CBAA5E8CFFC404B2A7AA8D83A] -peggy_denom = ibc/A96304F1680B9FB1705F3368320E4430D4A1E87CBAA5E8CFFC404B2A7AA8D83A -decimals = 0 - -[ibc/AB1E9C841105F28E9B70ED5EF1239B2D5E567F6E16818D87EFFA75E62778C8E4] -peggy_denom = ibc/AB1E9C841105F28E9B70ED5EF1239B2D5E567F6E16818D87EFFA75E62778C8E4 -decimals = 0 - -[ibc/ABF6109CA87727E3945C2DB5EA17D819D57041A91BFB0BC73320AFE097C230F5] -peggy_denom = ibc/ABF6109CA87727E3945C2DB5EA17D819D57041A91BFB0BC73320AFE097C230F5 -decimals = 6 - -[ibc/AC45D6359281E50A7498B10B9F38B7BE4868628E45E531D68F77422EFE430365] -peggy_denom = ibc/AC45D6359281E50A7498B10B9F38B7BE4868628E45E531D68F77422EFE430365 -decimals = 0 - -[ibc/AC8181FE5ECAC9A01FBC5C4A3A681537A01A95007C32C2FAF3CF7101E9DAE081] -peggy_denom = ibc/AC8181FE5ECAC9A01FBC5C4A3A681537A01A95007C32C2FAF3CF7101E9DAE081 -decimals = 0 - -[ibc/AD39C30C73231FCBE2ECF944E2D924ACE367D0F948FC7CAC1C9CEF6075574735] -peggy_denom = ibc/AD39C30C73231FCBE2ECF944E2D924ACE367D0F948FC7CAC1C9CEF6075574735 -decimals = 0 - -[ibc/AE198193A04103DD1AE4C8698E25DEDCA81396A4C484DA19E4221B3C3A3D2F2A] -peggy_denom = ibc/AE198193A04103DD1AE4C8698E25DEDCA81396A4C484DA19E4221B3C3A3D2F2A -decimals = 0 - -[ibc/AE3CE60389C8B666AEA33330C954A64C39EB25B60C5521631A1B605DBE575280] -peggy_denom = ibc/AE3CE60389C8B666AEA33330C954A64C39EB25B60C5521631A1B605DBE575280 -decimals = 0 - -[ibc/AE6D267A64EEFE1430D11221D579C91CFC6D7B0E7F885874AE1BC715FE8753E1] -peggy_denom = ibc/AE6D267A64EEFE1430D11221D579C91CFC6D7B0E7F885874AE1BC715FE8753E1 -decimals = 0 - -[ibc/AFE72652B9CF5954AD0EF11FA5A83D4E2B93631001D9E384B03BE1CEFBCDB458] -peggy_denom = ibc/AFE72652B9CF5954AD0EF11FA5A83D4E2B93631001D9E384B03BE1CEFBCDB458 -decimals = 0 - -[ibc/B024EC4AE846F690CB46C1CE886BE7DCE27CBBB6CE1E4EFBA4AA764E07B81A69] -peggy_denom = ibc/B024EC4AE846F690CB46C1CE886BE7DCE27CBBB6CE1E4EFBA4AA764E07B81A69 -decimals = 6 - -[ibc/B20C5AB7FC7D54DE3832F91A00002EE1A830F4ADE6CDD9F02378CDA79415E8B3] -peggy_denom = ibc/B20C5AB7FC7D54DE3832F91A00002EE1A830F4ADE6CDD9F02378CDA79415E8B3 -decimals = 0 - -[ibc/B2D7620D827D6AC87B4EB2757C1144E3B1EF2A31A84968C2720A4353BD856E69] -peggy_denom = ibc/B2D7620D827D6AC87B4EB2757C1144E3B1EF2A31A84968C2720A4353BD856E69 -decimals = 0 - -[ibc/B3D547DD7B46DE371F312F2970C2D9E2ABD7164F4A37836CA2282762B78E04D6] -peggy_denom = ibc/B3D547DD7B46DE371F312F2970C2D9E2ABD7164F4A37836CA2282762B78E04D6 -decimals = 0 - -[ibc/B4524C4C8F51F77C94D4E901AA26DF4F0E530F44E285D5D777E1634907E94CBD] -peggy_denom = ibc/B4524C4C8F51F77C94D4E901AA26DF4F0E530F44E285D5D777E1634907E94CBD -decimals = 0 - -[ibc/B5BB79AC621108184E03AD6B82456EBC96041B877A1652445CF32619CC9DA5C1] -peggy_denom = ibc/B5BB79AC621108184E03AD6B82456EBC96041B877A1652445CF32619CC9DA5C1 -decimals = 0 - -[ibc/B61DB68037EA3B6E9A1833093616CDFD8233EB014C1EA4C2D06E6A62B1FF2A64] -peggy_denom = ibc/B61DB68037EA3B6E9A1833093616CDFD8233EB014C1EA4C2D06E6A62B1FF2A64 -decimals = 0 - -[ibc/B8F80D51444F6DD4BD06A0B3C4A05C4F4AC13AA4AB7966A55BF2024A82D1FDD6] -peggy_denom = ibc/B8F80D51444F6DD4BD06A0B3C4A05C4F4AC13AA4AB7966A55BF2024A82D1FDD6 -decimals = 0 - -[ibc/B99CCD408EB17CBC3D295647F0D3A035576B109648ED833D4039B42C09DB4BDB] -peggy_denom = ibc/B99CCD408EB17CBC3D295647F0D3A035576B109648ED833D4039B42C09DB4BDB -decimals = 0 - -[ibc/BA26BE85B9D5F046FC7071ED0F77053662A4B2F5B7552B3834A3F1B2DD3BD18F] -peggy_denom = ibc/BA26BE85B9D5F046FC7071ED0F77053662A4B2F5B7552B3834A3F1B2DD3BD18F -decimals = 0 - -[ibc/BC8CCC6DE74A32C83BADC2B984295F78074375075610D8198E1AD64FBA780AA5] -peggy_denom = ibc/BC8CCC6DE74A32C83BADC2B984295F78074375075610D8198E1AD64FBA780AA5 -decimals = 0 - -[ibc/BCE43BA530FBE35282B62C1E1EA4AD1F51522C61D40FB761005E1A02F18E0E58] -peggy_denom = ibc/BCE43BA530FBE35282B62C1E1EA4AD1F51522C61D40FB761005E1A02F18E0E58 -decimals = 6 - -[ibc/BD1F347E40AEE5E7499E63B6D39F9AA783AC7003519933D3F88E83154A40FAD2] -peggy_denom = ibc/BD1F347E40AEE5E7499E63B6D39F9AA783AC7003519933D3F88E83154A40FAD2 -decimals = 0 - -[ibc/BDDF86413BCEAD3660A60F2B5B5C1D95635FA76B3E510924FEE2F6890CBD7E14] -peggy_denom = ibc/BDDF86413BCEAD3660A60F2B5B5C1D95635FA76B3E510924FEE2F6890CBD7E14 -decimals = 0 - -[ibc/BE3E2A75AFBA5F56017D7BB68FBAB013E08BF1633F92528197286C26967FBF42] -peggy_denom = ibc/BE3E2A75AFBA5F56017D7BB68FBAB013E08BF1633F92528197286C26967FBF42 -decimals = 0 - -[ibc/BE749147EF2813020A5A77D29183336CFAA1A53B67E522EF103D6803DE0E084B] -peggy_denom = ibc/BE749147EF2813020A5A77D29183336CFAA1A53B67E522EF103D6803DE0E084B -decimals = 0 - -[ibc/BE7AB5AEDF88351CF4E1AAE8EC00EC9EE36CD39AEE83D95A1555418E15FC88AD] -peggy_denom = ibc/BE7AB5AEDF88351CF4E1AAE8EC00EC9EE36CD39AEE83D95A1555418E15FC88AD -decimals = 0 - -[ibc/BE8166C09385A65A64366092FA14CEAD171EBB8E2464400196A1B19B4DC3AD50] -peggy_denom = ibc/BE8166C09385A65A64366092FA14CEAD171EBB8E2464400196A1B19B4DC3AD50 -decimals = 0 - -[ibc/BEF3E88134523FFB8ABB5A6D063071E96AF194B09BCA91A39FF67CC753C6A827] -peggy_denom = ibc/BEF3E88134523FFB8ABB5A6D063071E96AF194B09BCA91A39FF67CC753C6A827 -decimals = 0 - -[ibc/C2025C1D34ED74CD6F9DF86CD650D92219AF645E9D0ADFFACF4E2CBECE649536] -peggy_denom = ibc/C2025C1D34ED74CD6F9DF86CD650D92219AF645E9D0ADFFACF4E2CBECE649536 -decimals = 6 - -[ibc/C35A94A42FEDA8E01903CD7A78FB33AE60B2064C0007BF2E4FD5A6368BDBC546] -peggy_denom = ibc/C35A94A42FEDA8E01903CD7A78FB33AE60B2064C0007BF2E4FD5A6368BDBC546 -decimals = 6 - -[ibc/C3BD5051E685B9A447352FB2D5773F8E4A015521CBD0A534B3F514FCA17C9030] -peggy_denom = ibc/C3BD5051E685B9A447352FB2D5773F8E4A015521CBD0A534B3F514FCA17C9030 -decimals = 0 - -[ibc/C41000F89C71FB771148BDE5DA2EB8A77CF8DB65FF7A276C54B7BEB270DA17EF] -peggy_denom = ibc/C41000F89C71FB771148BDE5DA2EB8A77CF8DB65FF7A276C54B7BEB270DA17EF -decimals = 0 - -[ibc/C443ADA9C3388000268B8B892A07AB6838A904E1CCA2A1F084CB9572CA66F0E2] -peggy_denom = ibc/C443ADA9C3388000268B8B892A07AB6838A904E1CCA2A1F084CB9572CA66F0E2 -decimals = 0 - -[ibc/C49B72C4E85AE5361C3E0F0587B24F509CB16ECEB8970B6F917D697036AF49BE] -peggy_denom = ibc/C49B72C4E85AE5361C3E0F0587B24F509CB16ECEB8970B6F917D697036AF49BE -decimals = 0 - -[ibc/C508488741426E40AAE98E374F6D8DEA733A391D3388EBEC055F1C2A6845CBCA] -peggy_denom = ibc/C508488741426E40AAE98E374F6D8DEA733A391D3388EBEC055F1C2A6845CBCA -decimals = 0 - -[ibc/C51E233EC915CCBF69FAC3FE7F177F26526BDF92EDC3F22CF0AAED7008CEA3A6] -peggy_denom = ibc/C51E233EC915CCBF69FAC3FE7F177F26526BDF92EDC3F22CF0AAED7008CEA3A6 -decimals = 0 - -[ibc/C7132831617D38D152402A1F0E3B98A719C8288423A5116167E03A51D9B8B6D0] -peggy_denom = ibc/C7132831617D38D152402A1F0E3B98A719C8288423A5116167E03A51D9B8B6D0 -decimals = 0 - -[ibc/C740C029985A03309A990268DEC5084C53F185A99C0A42F1D61D7A89DE905230] -peggy_denom = ibc/C740C029985A03309A990268DEC5084C53F185A99C0A42F1D61D7A89DE905230 -decimals = 0 - -[ibc/C8099767548EA68F722AD0F8A8C807A5E6B6A8CA0A6FD7B8BD9B1AE96D19AC3E] -peggy_denom = ibc/C8099767548EA68F722AD0F8A8C807A5E6B6A8CA0A6FD7B8BD9B1AE96D19AC3E -decimals = 0 - -[ibc/C8245C403E8D7E15B4B306AD690669B0BB54F851E69316CAD464212D2772FBBA] -peggy_denom = ibc/C8245C403E8D7E15B4B306AD690669B0BB54F851E69316CAD464212D2772FBBA -decimals = 0 - -[ibc/C9EC3080B046D49949239E1704522EE8B7BE0A668027028059A7FE7BC20B0976] -peggy_denom = ibc/C9EC3080B046D49949239E1704522EE8B7BE0A668027028059A7FE7BC20B0976 -decimals = 6 - -[ibc/CA0B808874A9890C171944FA44B35287E9701402C732FE5B2C6371BA8113462C] -peggy_denom = ibc/CA0B808874A9890C171944FA44B35287E9701402C732FE5B2C6371BA8113462C -decimals = 6 - -[ibc/CA5D0BBEC26DECB072BA6E73F61E827ADB8154DFE22EC87E44BAED3E15D0E02B] -peggy_denom = ibc/CA5D0BBEC26DECB072BA6E73F61E827ADB8154DFE22EC87E44BAED3E15D0E02B -decimals = 0 - -[ibc/CB9BA999A7CDA4CE00784BFF705A1D0BDB95AD80334FD0F95A5BA306078C96E9] -peggy_denom = ibc/CB9BA999A7CDA4CE00784BFF705A1D0BDB95AD80334FD0F95A5BA306078C96E9 -decimals = 0 - -[ibc/CC610E1295BCF3ADE3C3DD4ABF3496C6EAA7541A1E45696E9D642D7B0A27B127] -peggy_denom = ibc/CC610E1295BCF3ADE3C3DD4ABF3496C6EAA7541A1E45696E9D642D7B0A27B127 -decimals = 0 - -[ibc/CDA55861E9E491479CB52D5C89F942F5EAF221F80B7CDDBBA8EE94D3658B03B4] -peggy_denom = ibc/CDA55861E9E491479CB52D5C89F942F5EAF221F80B7CDDBBA8EE94D3658B03B4 -decimals = 6 - -[ibc/CDDEE42F2BF083A267EB3A007C0593BF7D043F13D5F5C380EBE2F523B3FDEFEB] -peggy_denom = ibc/CDDEE42F2BF083A267EB3A007C0593BF7D043F13D5F5C380EBE2F523B3FDEFEB -decimals = 0 - -[ibc/CFD97474BEB91453470ABF422E94B4C55ACF2CBA300B1FE7ED494DB5F5E012B1] -peggy_denom = ibc/CFD97474BEB91453470ABF422E94B4C55ACF2CBA300B1FE7ED494DB5F5E012B1 -decimals = 6 - -[ibc/D0474D169562F9773959C7CF69ED413D77883F5B958BD52B5D31DE7F9CB64F9E] -peggy_denom = ibc/D0474D169562F9773959C7CF69ED413D77883F5B958BD52B5D31DE7F9CB64F9E -decimals = 0 - -[ibc/D18907CCF379EEA71AE2C3725A135AE678A67A35B7C6556A77A4E0B3520F7854] -peggy_denom = ibc/D18907CCF379EEA71AE2C3725A135AE678A67A35B7C6556A77A4E0B3520F7854 -decimals = 0 - -[ibc/D1EE9803C518B2DC07A23BE78E8817065E48BF264EBE29C3447571ACDFDEA4E2] -peggy_denom = ibc/D1EE9803C518B2DC07A23BE78E8817065E48BF264EBE29C3447571ACDFDEA4E2 -decimals = 0 - -[ibc/D208E775E677BAC87EB85C359E7A6BD123C7E6F0709D34DD4D8A1650CED77A77] -peggy_denom = ibc/D208E775E677BAC87EB85C359E7A6BD123C7E6F0709D34DD4D8A1650CED77A77 -decimals = 0 - -[ibc/D24B4564BCD51D3D02D9987D92571EAC5915676A9BD6D9B0C1D0254CB8A5EA34] -peggy_denom = ibc/D24B4564BCD51D3D02D9987D92571EAC5915676A9BD6D9B0C1D0254CB8A5EA34 -decimals = 0 - -[ibc/D2E5F3E4E591C72C9E36CFA9EF962D58165D4CF8D63F4FCA64CA6833AF9486AF] -peggy_denom = ibc/D2E5F3E4E591C72C9E36CFA9EF962D58165D4CF8D63F4FCA64CA6833AF9486AF -decimals = 0 - -[ibc/D3AAE460452B8D16C4569F108CB0462A68891278CCA73C82364D48DCAC258A0B] -peggy_denom = ibc/D3AAE460452B8D16C4569F108CB0462A68891278CCA73C82364D48DCAC258A0B -decimals = 0 - -[ibc/D3AF228E8FD11597F699BBE5428361A49F8EF808E271909E6A5AF9C76CB5E5AC] -peggy_denom = ibc/D3AF228E8FD11597F699BBE5428361A49F8EF808E271909E6A5AF9C76CB5E5AC -decimals = 0 - -[ibc/D3FA7185FEB5D4A07F08F8A0847290A2BAC9372C5C5DF1E7F7BFEEDD852E9052] -peggy_denom = ibc/D3FA7185FEB5D4A07F08F8A0847290A2BAC9372C5C5DF1E7F7BFEEDD852E9052 -decimals = 0 - -[ibc/D4ED143E25535EBF6374A1A077BE205A687B69872484DF064ED2BAD6E5C3D762] -peggy_denom = ibc/D4ED143E25535EBF6374A1A077BE205A687B69872484DF064ED2BAD6E5C3D762 -decimals = 0 - -[ibc/D505AA838A7BB7D22166DE53F4104BC86951E37B4D3B437B1FEB5F3468FF8DB5] -peggy_denom = ibc/D505AA838A7BB7D22166DE53F4104BC86951E37B4D3B437B1FEB5F3468FF8DB5 -decimals = 0 - -[ibc/D5AF5FAEA92918A24ACBF0DEB61C674C8951A97D13CFBF7F6617280E82ECB1E6] -peggy_denom = ibc/D5AF5FAEA92918A24ACBF0DEB61C674C8951A97D13CFBF7F6617280E82ECB1E6 -decimals = 0 - -[ibc/D64620F915AD2D3B93C958996CD0BD099DC5837490706FDE15E79440CF77CB36] -peggy_denom = ibc/D64620F915AD2D3B93C958996CD0BD099DC5837490706FDE15E79440CF77CB36 -decimals = 0 - -[ibc/D671DB6A024C3DCF36E5E44E0FA3AD8E9A379F07C0E746695F7E5994CCAD5746] -peggy_denom = ibc/D671DB6A024C3DCF36E5E44E0FA3AD8E9A379F07C0E746695F7E5994CCAD5746 -decimals = 0 - -[ibc/DA9F0C043A4A9DCFC96E4C75EE391AC5F7610C902E1E29EC0F7B90088BE35029] -peggy_denom = ibc/DA9F0C043A4A9DCFC96E4C75EE391AC5F7610C902E1E29EC0F7B90088BE35029 -decimals = 0 - -[ibc/DC9E276D4E80CD04F8A8C681842A3A16C59F85963FB262E34BBB6CB4F5BFDB14] -peggy_denom = ibc/DC9E276D4E80CD04F8A8C681842A3A16C59F85963FB262E34BBB6CB4F5BFDB14 -decimals = 0 - -[ibc/DDE000907D85FB1F358B3FBB1143452BE13F68E0BEA0DFFD8787095B76EEE0A1] -peggy_denom = ibc/DDE000907D85FB1F358B3FBB1143452BE13F68E0BEA0DFFD8787095B76EEE0A1 -decimals = 6 - -[ibc/DF32F083238097AD2CA5444BFB8F338534C32865EFE0696C5AF89AFB3A0144D6] -peggy_denom = ibc/DF32F083238097AD2CA5444BFB8F338534C32865EFE0696C5AF89AFB3A0144D6 -decimals = 6 - -[ibc/DFA6A6ADEDFFD00CAE5C2A3E3A87CEE28B51711762EE2985DFEDA81AF76298D8] -peggy_denom = ibc/DFA6A6ADEDFFD00CAE5C2A3E3A87CEE28B51711762EE2985DFEDA81AF76298D8 -decimals = 0 - -[ibc/E01C45463D148F2B469F17DB0497DFA70A746D0CFF6A90EE82825590ADE5F752] -peggy_denom = ibc/E01C45463D148F2B469F17DB0497DFA70A746D0CFF6A90EE82825590ADE5F752 -decimals = 0 - -[ibc/E175256127F32A27BB1FF863D15D8C4BB14968ED069B6A292723D485A33514A2] -peggy_denom = ibc/E175256127F32A27BB1FF863D15D8C4BB14968ED069B6A292723D485A33514A2 -decimals = 6 - -[ibc/E247857D53653BA3592A6CCAF9914227153B938BA768C415FF3BAD6CE6CFA316] -peggy_denom = ibc/E247857D53653BA3592A6CCAF9914227153B938BA768C415FF3BAD6CE6CFA316 -decimals = 0 - -[ibc/E43E4F1FD4B84EE30EDB8E0BE6F03E0A5596B292EAA0F198789DDF0C1301FB85] -peggy_denom = ibc/E43E4F1FD4B84EE30EDB8E0BE6F03E0A5596B292EAA0F198789DDF0C1301FB85 -decimals = 0 - -[ibc/E49728A25824EC0FF858A76975834DA11E3A2021285A6D62835D10829B4034F7] -peggy_denom = ibc/E49728A25824EC0FF858A76975834DA11E3A2021285A6D62835D10829B4034F7 -decimals = 0 - -[ibc/E4BDC3A9935959C715961FFC6C12159EAD8FA4A5955D069EE19D0423FF810C6E] -peggy_denom = ibc/E4BDC3A9935959C715961FFC6C12159EAD8FA4A5955D069EE19D0423FF810C6E -decimals = 18 - -[ibc/E53178A4F7B6492F01B5719D9C7AF89056DA3E50EE542403D8BA8E0657F02FE1] -peggy_denom = ibc/E53178A4F7B6492F01B5719D9C7AF89056DA3E50EE542403D8BA8E0657F02FE1 -decimals = 0 - -[ibc/E78F8AE12F4271904CBA6CF8262525C723DF42EBD2B74A34F33862BF5652C769] -peggy_denom = ibc/E78F8AE12F4271904CBA6CF8262525C723DF42EBD2B74A34F33862BF5652C769 -decimals = 0 - -[ibc/E7C0089E196DB00A88D6EA6D1CD87D80C320D721ACFAEFF4342CEF15AE9EDAE0] -peggy_denom = ibc/E7C0089E196DB00A88D6EA6D1CD87D80C320D721ACFAEFF4342CEF15AE9EDAE0 -decimals = 0 - -[ibc/E801CF19C7B3FFC5FD81A1C9662BCFAE08F4976B054923BC0DA377F1863D3E56] -peggy_denom = ibc/E801CF19C7B3FFC5FD81A1C9662BCFAE08F4976B054923BC0DA377F1863D3E56 -decimals = 0 - -[ibc/E8E84092B9063AAC97846712D43D6555928073B8A0BFFCC2549E55EE224F1610] -peggy_denom = ibc/E8E84092B9063AAC97846712D43D6555928073B8A0BFFCC2549E55EE224F1610 -decimals = 6 - -[ibc/E9BBE9BBF0925155892D6E47553E83B8476C880F65DEB33859E751C0B107B0B1] -peggy_denom = ibc/E9BBE9BBF0925155892D6E47553E83B8476C880F65DEB33859E751C0B107B0B1 -decimals = 0 - -[ibc/EA180E422271F35D66E7B9B57AFF072DABEE97EDA4522DAB91F97AE6DD45426D] -peggy_denom = ibc/EA180E422271F35D66E7B9B57AFF072DABEE97EDA4522DAB91F97AE6DD45426D -decimals = 0 - -[ibc/ECBEA5A9A992EE96B327CBA081AA35EB4E62C6A1A3990D2C0326E9A5840793A4] -peggy_denom = ibc/ECBEA5A9A992EE96B327CBA081AA35EB4E62C6A1A3990D2C0326E9A5840793A4 -decimals = 0 - -[ibc/ECC0DF3D9C80F79B81056569EE2140FD977886AB274FA08BA03E987264D6DE19] -peggy_denom = ibc/ECC0DF3D9C80F79B81056569EE2140FD977886AB274FA08BA03E987264D6DE19 -decimals = 0 - -[ibc/EEB2EB2A678B5788DB413B5A7EC81085B34F33DA9750C1C790CE8E1EDC8282B5] -peggy_denom = ibc/EEB2EB2A678B5788DB413B5A7EC81085B34F33DA9750C1C790CE8E1EDC8282B5 -decimals = 0 - -[ibc/EEC5E6CD97C728108D4352DFF1D67328055AD0DC25859F1F06F4AE4F2524987B] -peggy_denom = ibc/EEC5E6CD97C728108D4352DFF1D67328055AD0DC25859F1F06F4AE4F2524987B -decimals = 0 - -[ibc/EED40547772504DF629EFEC08892E689CD14498B1C0AD766CD5075BBBEE3D808] -peggy_denom = ibc/EED40547772504DF629EFEC08892E689CD14498B1C0AD766CD5075BBBEE3D808 -decimals = 6 - -[ibc/F1EEC63548B066D76B9B82D04DE25C424932DABD9234116836BAF759E8130BC3] -peggy_denom = ibc/F1EEC63548B066D76B9B82D04DE25C424932DABD9234116836BAF759E8130BC3 -decimals = 0 - -[ibc/F28C5C931D2673B7A2F06FC74934F7BDC0D2906D2AF40D582ED27D1E5C48D475] -peggy_denom = ibc/F28C5C931D2673B7A2F06FC74934F7BDC0D2906D2AF40D582ED27D1E5C48D475 -decimals = 18 - -[ibc/F433CC4D2A46173B47A691E8C432F11E47E8C06C574CEF798F6F7BA116EACCAC] -peggy_denom = ibc/F433CC4D2A46173B47A691E8C432F11E47E8C06C574CEF798F6F7BA116EACCAC -decimals = 0 - -[ibc/F643EAA961DF49F00CF53DA101C09837DE7945955CBD98C51B80E0BF6FA329E9] -peggy_denom = ibc/F643EAA961DF49F00CF53DA101C09837DE7945955CBD98C51B80E0BF6FA329E9 -decimals = 0 - -[ibc/F72F979601BD2FCF748C2E93092E9CB55A8BDB738567AB42C19D403A7C636110] -peggy_denom = ibc/F72F979601BD2FCF748C2E93092E9CB55A8BDB738567AB42C19D403A7C636110 -decimals = 0 - -[ibc/FA2E855E713B5D73C6AA54822791ADFD1BA73EFA5FDFDA903120A1FB0FF12733] -peggy_denom = ibc/FA2E855E713B5D73C6AA54822791ADFD1BA73EFA5FDFDA903120A1FB0FF12733 -decimals = 0 - -[ibc/FAFBDE851E97E4B566B050B843F6BBCE14D7DC88DA69840850271BA8DF72EAEE] -peggy_denom = ibc/FAFBDE851E97E4B566B050B843F6BBCE14D7DC88DA69840850271BA8DF72EAEE -decimals = 0 - -[ibc/FE2F22FEFB9E5F2EA063FD3135533B916577149A3D69CC2BF7BB4224BC9B1230] -peggy_denom = ibc/FE2F22FEFB9E5F2EA063FD3135533B916577149A3D69CC2BF7BB4224BC9B1230 -decimals = 0 - -[ibc/FECCDCFA89278B117C76A11A946A7991A68E5DD12DED6EB938ADC1B1286AC591] -peggy_denom = ibc/FECCDCFA89278B117C76A11A946A7991A68E5DD12DED6EB938ADC1B1286AC591 -decimals = 6 - -[inj104y5dpcdtga79tczv6rg3rsekx4hasw2k83h5s] -peggy_denom = inj104y5dpcdtga79tczv6rg3rsekx4hasw2k83h5s -decimals = 18 - -[inj106kv9he9xlj4np4qthlzeq6hyj7ns6hqfapyt3] -peggy_denom = inj106kv9he9xlj4np4qthlzeq6hyj7ns6hqfapyt3 -decimals = 6 - -[inj10jl28fj7yc2pmj7p08vmaa85nxm4a09kteqng0] -peggy_denom = inj10jl28fj7yc2pmj7p08vmaa85nxm4a09kteqng0 -decimals = 18 - -[inj10yr5mmvxez3h0xzrpaa89my99qlv3u2rmzg0ge] -peggy_denom = inj10yr5mmvxez3h0xzrpaa89my99qlv3u2rmzg0ge -decimals = 8 - -[inj122az278echmzpccw30yy4a4kfull4sfnytqqt7] -peggy_denom = inj122az278echmzpccw30yy4a4kfull4sfnytqqt7 -decimals = 18 - -[inj12e5vzu6a8jqr5dnl4mh04hdskjnx9rw5n86exk] -peggy_denom = inj12e5vzu6a8jqr5dnl4mh04hdskjnx9rw5n86exk -decimals = 6 - -[inj12kq4zh7kckuu0rfpxcr9l6l2x26ajf23uc0w55] -peggy_denom = inj12kq4zh7kckuu0rfpxcr9l6l2x26ajf23uc0w55 -decimals = 18 - -[inj12pt3p50kgsn6p33cchf5qvlf9mw2y0del8fnj3] -peggy_denom = inj12pt3p50kgsn6p33cchf5qvlf9mw2y0del8fnj3 -decimals = 18 - -[inj12xn584cdkhnz2nn08xz4yrwxscxa8tr2fuxwam] -peggy_denom = inj12xn584cdkhnz2nn08xz4yrwxscxa8tr2fuxwam -decimals = 18 - -[inj134pxgsexyt782qp3kvxf8nf9xl0q7dfdxk5tws] -peggy_denom = inj134pxgsexyt782qp3kvxf8nf9xl0q7dfdxk5tws -decimals = 18 - -[inj1395ty2rphfvxa6jdwxugk3qrk8h49wn245afcr] -peggy_denom = inj1395ty2rphfvxa6jdwxugk3qrk8h49wn245afcr -decimals = 6 - -[inj148quxv5nyu244hdzy37tmpn3f9s42hsk4tx485] -peggy_denom = inj148quxv5nyu244hdzy37tmpn3f9s42hsk4tx485 -decimals = 18 - -[inj14eaxewvy7a3fk948c3g3qham98mcqpm8v5y0dp] -peggy_denom = inj14eaxewvy7a3fk948c3g3qham98mcqpm8v5y0dp -decimals = 6 - -[inj14m99e5ge2cactnstklfz8w7rc004w0e0p7ezze] -peggy_denom = inj14m99e5ge2cactnstklfz8w7rc004w0e0p7ezze -decimals = 0 - -[inj14na0udjrdtsqjk22fgr44gfgph4cp220agmwe2] -peggy_denom = inj14na0udjrdtsqjk22fgr44gfgph4cp220agmwe2 -decimals = 6 - -[inj14nursn4ezeqy9cgxmush6vk2p2wjsrucsl6gc9] -peggy_denom = inj14nursn4ezeqy9cgxmush6vk2p2wjsrucsl6gc9 -decimals = 18 - -[inj14pq4ewrxju997x0y7g2ug6cn3lqyp66ygz5x6s] -peggy_denom = inj14pq4ewrxju997x0y7g2ug6cn3lqyp66ygz5x6s -decimals = 8 - -[inj14rgkkvwar36drhuajheu3u84jh9gdk27acfphy] -peggy_denom = inj14rgkkvwar36drhuajheu3u84jh9gdk27acfphy -decimals = 0 - -[inj14rry9q6dym3dgcwzq79yay0e9azdz55jr465ch] -peggy_denom = inj14rry9q6dym3dgcwzq79yay0e9azdz55jr465ch -decimals = 5 - -[inj14vcn23l3jdn50px0wxmj2s24h5pn3eawcnktkh] -peggy_denom = inj14vcn23l3jdn50px0wxmj2s24h5pn3eawcnktkh -decimals = 6 - -[inj14yh3a5jrcg4wckwdhj9sjxezkmdpuamkw9pghf] -peggy_denom = inj14yh3a5jrcg4wckwdhj9sjxezkmdpuamkw9pghf -decimals = 6 - -[inj154ksu0cw6ra2wqv7ujay8crg6hqe03jpxp7l4w] -peggy_denom = inj154ksu0cw6ra2wqv7ujay8crg6hqe03jpxp7l4w -decimals = 0 - -[inj15993xgce2tml487uhx6u2df8ltskgdlghc8zx7] -peggy_denom = inj15993xgce2tml487uhx6u2df8ltskgdlghc8zx7 -decimals = 18 - -[inj15fa69t6huq8nujze28ykdsldmtf23yk3sgxpns] -peggy_denom = inj15fa69t6huq8nujze28ykdsldmtf23yk3sgxpns -decimals = 18 - -[inj15hvdwk0zxxl2uegnryswvxre7pufuluahrl6s6] -peggy_denom = inj15hvdwk0zxxl2uegnryswvxre7pufuluahrl6s6 -decimals = 18 - -[inj15m47mfu8qjh9uc7cr04txp9udea635vkuwduck] -peggy_denom = inj15m47mfu8qjh9uc7cr04txp9udea635vkuwduck -decimals = 18 - -[inj15mfkraj8dhgye7s6gmrxm308w5z0ezd8pu2kef] -peggy_denom = inj15mfkraj8dhgye7s6gmrxm308w5z0ezd8pu2kef -decimals = 6 - -[inj15sslujc0pv3kdjsw0fhzvclwmgv2zh7a00fcx5] -peggy_denom = inj15sslujc0pv3kdjsw0fhzvclwmgv2zh7a00fcx5 -decimals = 6 - -[inj15wqfmtvdmzy34hm5jafm6uqnqf53ykr0kz6227] -peggy_denom = inj15wqfmtvdmzy34hm5jafm6uqnqf53ykr0kz6227 -decimals = 6 - -[inj15xz5537eujskaayp600gkke7qu82p5sa76lg50] -peggy_denom = inj15xz5537eujskaayp600gkke7qu82p5sa76lg50 -decimals = 18 - -[inj16exmkvtzkqgxgl44w6793hzjta78f4zpyv8z9p] -peggy_denom = inj16exmkvtzkqgxgl44w6793hzjta78f4zpyv8z9p -decimals = 6 - -[inj16ny2lq4tnxnfwz745kaanqyuq7997nk3tkkm0t] -peggy_denom = inj16ny2lq4tnxnfwz745kaanqyuq7997nk3tkkm0t -decimals = 6 - -[inj16pcxmpl3nquute5hrjta0rgrzc0ga5sj8n6vpv] -peggy_denom = inj16pcxmpl3nquute5hrjta0rgrzc0ga5sj8n6vpv -decimals = 6 - -[inj16tp2zfy0kd5jjd0vku879j43757qqmt5nezfl0] -peggy_denom = inj16tp2zfy0kd5jjd0vku879j43757qqmt5nezfl0 -decimals = 6 - -[inj16yxzdpw4fkyfzld98zt9l3txqpzj88pnme904j] -peggy_denom = inj16yxzdpw4fkyfzld98zt9l3txqpzj88pnme904j -decimals = 6 - -[inj17dtlpkmw4rtc02p7s9qwqz6kyx4nx8v380m0al] -peggy_denom = inj17dtlpkmw4rtc02p7s9qwqz6kyx4nx8v380m0al -decimals = 6 - -[inj17gh0tgtr2d7l5lv47x4ra557jq27qv0tenqxar] -peggy_denom = inj17gh0tgtr2d7l5lv47x4ra557jq27qv0tenqxar -decimals = 18 - -[inj17jwmn6gfrwvc9rz6atx3f3rc2g8zuxklcpw8za] -peggy_denom = inj17jwmn6gfrwvc9rz6atx3f3rc2g8zuxklcpw8za -decimals = 6 - -[inj17k84dsdjty50rs5pv5pvm9spz75qqe9stnx0vh] -peggy_denom = inj17k84dsdjty50rs5pv5pvm9spz75qqe9stnx0vh -decimals = 18 - -[inj17n0zrpvl3u67z4mphxq9qmhv6fuqs8sywxt04d] -peggy_denom = inj17n0zrpvl3u67z4mphxq9qmhv6fuqs8sywxt04d -decimals = 0 - -[inj182d65my2lfcc07fx658nt8zuf6yyham4r9dazk] -peggy_denom = inj182d65my2lfcc07fx658nt8zuf6yyham4r9dazk -decimals = 6 - -[inj187xc89gy4ffsl2n8dme88dzrpgazfkf8kgjkmz] -peggy_denom = inj187xc89gy4ffsl2n8dme88dzrpgazfkf8kgjkmz -decimals = 18 - -[inj18a2u6az6dzw528rptepfg6n49ak6hdzkny4um6] -peggy_denom = inj18a2u6az6dzw528rptepfg6n49ak6hdzkny4um6 -decimals = 8 - -[inj18ehdtnlrreg0ptdtvzx05nzpfvvjgnt8y95hns] -peggy_denom = inj18ehdtnlrreg0ptdtvzx05nzpfvvjgnt8y95hns -decimals = 6 - -[inj18j2lthr5pg44l69emknd4fe8msxdvyrt70clh2] -peggy_denom = inj18j2lthr5pg44l69emknd4fe8msxdvyrt70clh2 -decimals = 18 - -[inj18jn6s6605pa42qgxqekhqtku56gcmf24n2y03k] -peggy_denom = inj18jn6s6605pa42qgxqekhqtku56gcmf24n2y03k -decimals = 18 - -[inj18ywez34uk9n6y3u590pqr8hjmtel0ges6radf0] -peggy_denom = inj18ywez34uk9n6y3u590pqr8hjmtel0ges6radf0 -decimals = 6 - -[inj18zfazlnerhgsv0nur6tnm97uymf7zrazzghrtq] -peggy_denom = inj18zfazlnerhgsv0nur6tnm97uymf7zrazzghrtq -decimals = 18 - -[inj18zykysxw9pcvtyr9ylhe0p5s7yzf6pzdagune8] -peggy_denom = inj18zykysxw9pcvtyr9ylhe0p5s7yzf6pzdagune8 -decimals = 6 - -[inj194p79raj0qjesr26kzvhx9l2y77vyshvdpcgs9] -peggy_denom = inj194p79raj0qjesr26kzvhx9l2y77vyshvdpcgs9 -decimals = 6 - -[inj19dux2glqedeamjwltjv5srvhgxkf6gyawtce5s] -peggy_denom = inj19dux2glqedeamjwltjv5srvhgxkf6gyawtce5s -decimals = 6 - -[inj19hqn3gnxnwg4rm4c7kzc2k7gy9dj00ke9s9lm5] -peggy_denom = inj19hqn3gnxnwg4rm4c7kzc2k7gy9dj00ke9s9lm5 -decimals = 6 - -[inj19l7z2pezzt0xn52w647zxrffyrqag02ft88grm] -peggy_denom = inj19l7z2pezzt0xn52w647zxrffyrqag02ft88grm -decimals = 18 - -[inj19s2r64ghfqq3py7f5dr0ynk8yj0nmngca3yvy3] -peggy_denom = inj19s2r64ghfqq3py7f5dr0ynk8yj0nmngca3yvy3 -decimals = 6 - -[inj1aj27yjf5cg6aaccj0xxdpep9h5kymtmu3ccz9h] -peggy_denom = inj1aj27yjf5cg6aaccj0xxdpep9h5kymtmu3ccz9h -decimals = 6 - -[inj1ajws3g8x0r9p350xs4y3agyvmk4698ncmx72zk] -peggy_denom = inj1ajws3g8x0r9p350xs4y3agyvmk4698ncmx72zk -decimals = 0 - -[inj1ap9u5fa47yhgs4xv4dcnzn08qvlcpqn0dt59sy] -peggy_denom = inj1ap9u5fa47yhgs4xv4dcnzn08qvlcpqn0dt59sy -decimals = 18 - -[inj1aqjd9n8m86prgx0a2umtpjcyd6nu22gc82zjwj] -peggy_denom = inj1aqjd9n8m86prgx0a2umtpjcyd6nu22gc82zjwj -decimals = 6 - -[inj1as2gqhf6ct8fms53uashc2jtaejlj79h3rem2a] -peggy_denom = inj1as2gqhf6ct8fms53uashc2jtaejlj79h3rem2a -decimals = 6 - -[inj1c78258q4ahmaujmmj4emg7upx9n4muv0fzjrms] -peggy_denom = inj1c78258q4ahmaujmmj4emg7upx9n4muv0fzjrms -decimals = 6 - -[inj1cfjpn3mh0z0ptsn4ujmm5hdf9x4jmh3hvwd9c2] -peggy_denom = inj1cfjpn3mh0z0ptsn4ujmm5hdf9x4jmh3hvwd9c2 -decimals = 18 - -[inj1cgmxmra82qtxxjypjesnvu43e7nf6ucv3njy9u] -peggy_denom = inj1cgmxmra82qtxxjypjesnvu43e7nf6ucv3njy9u -decimals = 18 - -[inj1cjft36fxcspjdkcc5j45z6ucuqyxp7ky9ktu4f] -peggy_denom = inj1cjft36fxcspjdkcc5j45z6ucuqyxp7ky9ktu4f -decimals = 18 - -[inj1cjvssl698h094n6c2uqdx75degfewey26yt6uw] -peggy_denom = inj1cjvssl698h094n6c2uqdx75degfewey26yt6uw -decimals = 6 - -[inj1cncjaeg0q6d8kdr77wxz90t6jhmm5wn23s2gxr] -peggy_denom = inj1cncjaeg0q6d8kdr77wxz90t6jhmm5wn23s2gxr -decimals = 6 - -[inj1cnqf8xld9a2tezf4sq56lc3f9kfs257s45fd29] -peggy_denom = inj1cnqf8xld9a2tezf4sq56lc3f9kfs257s45fd29 -decimals = 6 - -[inj1d205gq2wm72x2unrz9pslsgqf53mhe09w9gx5v] -peggy_denom = inj1d205gq2wm72x2unrz9pslsgqf53mhe09w9gx5v -decimals = 6 - -[inj1d8x73kj4xtgzhpztf6d60vcjnrw9w0sh2vq8em] -peggy_denom = inj1d8x73kj4xtgzhpztf6d60vcjnrw9w0sh2vq8em -decimals = 6 - -[inj1dg3xz7pj56kqph98pnput5kuj5h2fq97c68mfz] -peggy_denom = inj1dg3xz7pj56kqph98pnput5kuj5h2fq97c68mfz -decimals = 6 - -[inj1dmfj6fuz0w5ffaxthax959w4jmswjdxr4f5jct] -peggy_denom = inj1dmfj6fuz0w5ffaxthax959w4jmswjdxr4f5jct -decimals = 0 - -[inj1dmn43jyt6w6kycgsuu5a3ygtmtk6fm49yvf73d] -peggy_denom = inj1dmn43jyt6w6kycgsuu5a3ygtmtk6fm49yvf73d -decimals = 0 - -[inj1dngqzz6wphf07fkdam7dn55t8t3r6qenewy9zu] -peggy_denom = inj1dngqzz6wphf07fkdam7dn55t8t3r6qenewy9zu -decimals = 6 - -[inj1edtqq8mvtlv83yfhuxcnayq2ks9fyvy670045s] -peggy_denom = inj1edtqq8mvtlv83yfhuxcnayq2ks9fyvy670045s -decimals = 0 - -[inj1ele6z2tg7cglx2ul2ss94crc60wt70uec8rs9m] -peggy_denom = inj1ele6z2tg7cglx2ul2ss94crc60wt70uec8rs9m -decimals = 18 - -[inj1elwp603lt09g8s4ezyp6gg8axhh2n3zkffwfmp] -peggy_denom = inj1elwp603lt09g8s4ezyp6gg8axhh2n3zkffwfmp -decimals = 6 - -[inj1emeyr4q657cw6wu4twqx6c59mzfv00fkf9nukv] -peggy_denom = inj1emeyr4q657cw6wu4twqx6c59mzfv00fkf9nukv -decimals = 18 - -[inj1eqtcpx655e582j5xyu7rf2z8w92pah2re5jmm3] -peggy_denom = inj1eqtcpx655e582j5xyu7rf2z8w92pah2re5jmm3 -decimals = 0 - -[inj1ezt2a9azlwp5ucq84twup0skx9vsewpvjhh20d] -peggy_denom = inj1ezt2a9azlwp5ucq84twup0skx9vsewpvjhh20d -decimals = 6 - -[inj1f2vr6hd9w4xujncyprw670l3g7x2esj50umn8k] -peggy_denom = inj1f2vr6hd9w4xujncyprw670l3g7x2esj50umn8k -decimals = 18 - -[inj1f59h6qh6vckz8asg307zajzrht948vlymesg8c] -peggy_denom = inj1f59h6qh6vckz8asg307zajzrht948vlymesg8c -decimals = 6 - -[inj1f6ejww220hnygsehh7pl7pd484dg4k9fl7wkr5] -peggy_denom = inj1f6ejww220hnygsehh7pl7pd484dg4k9fl7wkr5 -decimals = 6 - -[inj1fg8ffu74pm99nwd584ne3gwa9pexnh39csm7qp] -peggy_denom = inj1fg8ffu74pm99nwd584ne3gwa9pexnh39csm7qp -decimals = 6 - -[inj1fjg0pmf0fttg0g3vawttlshq7k58a49gv5u7up] -peggy_denom = inj1fjg0pmf0fttg0g3vawttlshq7k58a49gv5u7up -decimals = 6 - -[inj1ft73gxa35pzcqv6zjzqgllwtzs5hf4wnjsfq3t] -peggy_denom = inj1ft73gxa35pzcqv6zjzqgllwtzs5hf4wnjsfq3t -decimals = 6 - -[inj1fu5u29slsg2xtsj7v5la22vl4mr4ywl7wlqeck] -peggy_denom = inj1fu5u29slsg2xtsj7v5la22vl4mr4ywl7wlqeck -decimals = 18 - -[inj1fx6cg4xruk55rld4p9urrjc2v3gvmaqh2yx32q] -peggy_denom = inj1fx6cg4xruk55rld4p9urrjc2v3gvmaqh2yx32q -decimals = 6 - -[inj1gaszym657k5mmxp3z5gaz2ze0drs6xv0dz6u6g] -peggy_denom = inj1gaszym657k5mmxp3z5gaz2ze0drs6xv0dz6u6g -decimals = 18 - -[inj1ghdvetj39n6fze4lsfvqq42qjya0e8ljfx420r] -peggy_denom = inj1ghdvetj39n6fze4lsfvqq42qjya0e8ljfx420r -decimals = 6 - -[inj1gkc8ajx5pfkvdux3574r90ahgmtkpnprx0fuaa] -peggy_denom = inj1gkc8ajx5pfkvdux3574r90ahgmtkpnprx0fuaa -decimals = 18 - -[inj1gulvsqvun9qcdfxrsfc33ym82fuccu55zsw6ap] -peggy_denom = inj1gulvsqvun9qcdfxrsfc33ym82fuccu55zsw6ap -decimals = 18 - -[inj1h0ka230k265jtv5hnujr6tszd66rjk3dutmfuj] -peggy_denom = inj1h0ka230k265jtv5hnujr6tszd66rjk3dutmfuj -decimals = 6 - -[inj1h2ewqh3mjzm72sfrtvxhzd34kxn0qstc6phl4a] -peggy_denom = inj1h2ewqh3mjzm72sfrtvxhzd34kxn0qstc6phl4a -decimals = 18 - -[inj1h37nmz0r2dt8l33kt2c6us5hj00ykzgxmvyw55] -peggy_denom = inj1h37nmz0r2dt8l33kt2c6us5hj00ykzgxmvyw55 -decimals = 18 - -[inj1h8l2xcn4h9v0m67qem8x7rmf2akjwc34tjmm7a] -peggy_denom = inj1h8l2xcn4h9v0m67qem8x7rmf2akjwc34tjmm7a -decimals = 18 - -[inj1h9tu7ul5pyu2fl2qwpsyvshhqt2g4xqaqxm89z] -peggy_denom = inj1h9tu7ul5pyu2fl2qwpsyvshhqt2g4xqaqxm89z -decimals = 6 - -[inj1hd7pwkcwz9pweklkap04ucwztllxp70xu26dc8] -peggy_denom = inj1hd7pwkcwz9pweklkap04ucwztllxp70xu26dc8 -decimals = 18 - -[inj1hgh3dqc2kxl464qg9rnt3kctzplmsnqzycdtt7] -peggy_denom = inj1hgh3dqc2kxl464qg9rnt3kctzplmsnqzycdtt7 -decimals = 18 - -[inj1hnap888nfhv2gnlp4zvjlyq9wmsw6hm3afvhuf] -peggy_denom = inj1hnap888nfhv2gnlp4zvjlyq9wmsw6hm3afvhuf -decimals = 18 - -[inj1hsv0y599unrnv02xntzmcdquh4wagrns8gqfh7] -peggy_denom = inj1hsv0y599unrnv02xntzmcdquh4wagrns8gqfh7 -decimals = 18 - -[inj1j0spyxgnxavasfnj5r4pvc4wwmnd6psjf8j6rm] -peggy_denom = inj1j0spyxgnxavasfnj5r4pvc4wwmnd6psjf8j6rm -decimals = 6 - -[inj1j36ddpvef5jgmp4ngy6kl0r45c2tftu4qjuke8] -peggy_denom = inj1j36ddpvef5jgmp4ngy6kl0r45c2tftu4qjuke8 -decimals = 6 - -[inj1j4pwxtnf27qelps9erqg3fg47r9tz9qyl9l7gh] -peggy_denom = inj1j4pwxtnf27qelps9erqg3fg47r9tz9qyl9l7gh -decimals = 18 - -[inj1j9ld52dpgzyc6j42fv5ggk2xkzukm4tjun6449] -peggy_denom = inj1j9ld52dpgzyc6j42fv5ggk2xkzukm4tjun6449 -decimals = 6 - -[inj1jdn48px2andzq693c2uu4k3pnr9fm5rtywtvmz] -peggy_denom = inj1jdn48px2andzq693c2uu4k3pnr9fm5rtywtvmz -decimals = 6 - -[inj1jnswzkkdvkc6chwzffggrlp69efghlqdha6jaq] -peggy_denom = inj1jnswzkkdvkc6chwzffggrlp69efghlqdha6jaq -decimals = 18 - -[inj1jt20t0scnm6r048rklny7z7gyc4lfmm6s5c96e] -peggy_denom = inj1jt20t0scnm6r048rklny7z7gyc4lfmm6s5c96e -decimals = 18 - -[inj1jusxykgkl04rgaam65gmvyyymth9flxjdpdruh] -peggy_denom = inj1jusxykgkl04rgaam65gmvyyymth9flxjdpdruh -decimals = 9 - -[inj1k0f8fqym9t3gz8qq3f72d3x5uk2gx4prs6mld5] -peggy_denom = inj1k0f8fqym9t3gz8qq3f72d3x5uk2gx4prs6mld5 -decimals = 18 - -[inj1k23r395k2q5z4fw0zhtyzdymx5let8qw7q76lw] -peggy_denom = inj1k23r395k2q5z4fw0zhtyzdymx5let8qw7q76lw -decimals = 6 - -[inj1k9r62py07wydch6sj5sfvun93e4qe0lg7jyatc] -peggy_denom = inj1k9r62py07wydch6sj5sfvun93e4qe0lg7jyatc -decimals = 8 - -[inj1kjfeuqtp56newrdye4d5rczfkwe4dg3llc0kc9] -peggy_denom = inj1kjfeuqtp56newrdye4d5rczfkwe4dg3llc0kc9 -decimals = 18 - -[inj1kpsej4ejcwut5wgu4jyvwvyel6kezjzuf3fd6z] -peggy_denom = inj1kpsej4ejcwut5wgu4jyvwvyel6kezjzuf3fd6z -decimals = 8 - -[inj1ky5zcvc82t6hrfsu6da3d9u9u33jt30rjr0cnj] -peggy_denom = inj1ky5zcvc82t6hrfsu6da3d9u9u33jt30rjr0cnj -decimals = 0 - -[inj1kz94v8anl9j64cqwntd30l8vqw2p03w3fk7d03] -peggy_denom = inj1kz94v8anl9j64cqwntd30l8vqw2p03w3fk7d03 -decimals = 6 - -[inj1l3uhj7dd5sx5fk87z0pxu0jum6rkpgmmv37a66] -peggy_denom = inj1l3uhj7dd5sx5fk87z0pxu0jum6rkpgmmv37a66 -decimals = 6 - -[inj1l73x8hh6du0h8upp65r7ltzpj5twadtp5490n0] -peggy_denom = inj1l73x8hh6du0h8upp65r7ltzpj5twadtp5490n0 -decimals = 18 - -[inj1l9eyrnv3ret8da3qh8j5aytp6q4f73crd505lj] -peggy_denom = inj1l9eyrnv3ret8da3qh8j5aytp6q4f73crd505lj -decimals = 6 - -[inj1ljrzvjuupmglq62frdcywzlc9a90xrf3vrcp02] -peggy_denom = inj1ljrzvjuupmglq62frdcywzlc9a90xrf3vrcp02 -decimals = 18 - -[inj1llatk73a2935vky6nzv78w80ff5v3etqadzv76] -peggy_denom = inj1llatk73a2935vky6nzv78w80ff5v3etqadzv76 -decimals = 8 - -[inj1lmcfftadjkt4gt3lcvmz6qn4dhx59dv2m7yv8r] -peggy_denom = inj1lmcfftadjkt4gt3lcvmz6qn4dhx59dv2m7yv8r -decimals = 6 - -[inj1ltu2smt40xmz8lxvrg9xhkdc75rswkyflqf2p8] -peggy_denom = inj1ltu2smt40xmz8lxvrg9xhkdc75rswkyflqf2p8 -decimals = 6 - -[inj1lvnuam0w70d4yj03vy30umqv4rr7gwfkfsemnc] -peggy_denom = inj1lvnuam0w70d4yj03vy30umqv4rr7gwfkfsemnc -decimals = 6 - -[inj1m2h20qlrhs5nr89s48gm083qdl7333j3v83yjg] -peggy_denom = inj1m2h20qlrhs5nr89s48gm083qdl7333j3v83yjg -decimals = 6 - -[inj1m6ntlp05hxg6gvmkzyjej8a5at0jemamydzx4g] -peggy_denom = inj1m6ntlp05hxg6gvmkzyjej8a5at0jemamydzx4g -decimals = 8 - -[inj1m84527ec0zxfsssrp5c4an5xgjz9hp4d2ev0pz] -peggy_denom = inj1m84527ec0zxfsssrp5c4an5xgjz9hp4d2ev0pz -decimals = 6 - -[inj1mas3j8u02wzcfysjhgrx0uj0qprua2lm0gx27r] -peggy_denom = inj1mas3j8u02wzcfysjhgrx0uj0qprua2lm0gx27r -decimals = 18 - -[inj1mdzxqh9kag3a9e7x5488vn8hkeh42cuw0hnhrf] -peggy_denom = inj1mdzxqh9kag3a9e7x5488vn8hkeh42cuw0hnhrf -decimals = 6 - -[inj1mpm6l6g77c0flupzynj4lqvktdh5xuj0g4arn6] -peggy_denom = inj1mpm6l6g77c0flupzynj4lqvktdh5xuj0g4arn6 -decimals = 18 - -[inj1mv9jlerndqham75cp2sfyzkzxdz2rwqx20mpd5] -peggy_denom = inj1mv9jlerndqham75cp2sfyzkzxdz2rwqx20mpd5 -decimals = 6 - -[inj1nlcg7dgufuytaa2sfxam5hm0l38dyv3uk47kdf] -peggy_denom = inj1nlcg7dgufuytaa2sfxam5hm0l38dyv3uk47kdf -decimals = 18 - -[inj1nqy47ullz048d8lzck9yr89dnpfefrdx30c7fx] -peggy_denom = inj1nqy47ullz048d8lzck9yr89dnpfefrdx30c7fx -decimals = 18 - -[inj1plsk58sxqjw9828aqzeskmc8xy9eu5kppw3jg4] -peggy_denom = inj1plsk58sxqjw9828aqzeskmc8xy9eu5kppw3jg4 -decimals = 8 - -[inj1pvestds0e0f7y6znfjqa8vwws9ylz6eutny8c3] -peggy_denom = inj1pvestds0e0f7y6znfjqa8vwws9ylz6eutny8c3 -decimals = 0 - -[inj1qaakagef76lgu56uhdc9rdsycdrznf7pjfjt2c] -peggy_denom = inj1qaakagef76lgu56uhdc9rdsycdrznf7pjfjt2c -decimals = 6 - -[inj1qjn06jt7zjhdqxgud07nylkpgnaurq6xc5c4fd] -peggy_denom = inj1qjn06jt7zjhdqxgud07nylkpgnaurq6xc5c4fd -decimals = 6 - -[inj1qqn3urdskeq9mlm37c375978kv3rxgjx2kff9p] -peggy_denom = inj1qqn3urdskeq9mlm37c375978kv3rxgjx2kff9p -decimals = 18 - -[inj1qt32en8rjd0x486tganvc6u7q25xlr5wqr68xn] -peggy_denom = inj1qt32en8rjd0x486tganvc6u7q25xlr5wqr68xn -decimals = 18 - -[inj1quy82cgpf0jajc76w7why9kt94ph99uff2q7xh] -peggy_denom = inj1quy82cgpf0jajc76w7why9kt94ph99uff2q7xh -decimals = 6 - -[inj1ra46mrdcc4qd7m8mhdjd9fkut50pa07lwxsvst] -peggy_denom = inj1ra46mrdcc4qd7m8mhdjd9fkut50pa07lwxsvst -decimals = 18 - -[inj1rd2ej0vcg8crpgllv9k8f9dks96whhf3yqftd4] -peggy_denom = inj1rd2ej0vcg8crpgllv9k8f9dks96whhf3yqftd4 -decimals = 0 - -[inj1rdy2hzjw83hs2dec28lw6q3f8an5pma8l38uey] -peggy_denom = inj1rdy2hzjw83hs2dec28lw6q3f8an5pma8l38uey -decimals = 0 - -[inj1rluhqhev2v4kmz0m8qjfrlyrlrlqckajuf0ajs] -peggy_denom = inj1rluhqhev2v4kmz0m8qjfrlyrlrlqckajuf0ajs -decimals = 6 - -[inj1rmzufd7h09sqfrre5dtvu5d09ta7c0t4jzkr2f] -peggy_denom = inj1rmzufd7h09sqfrre5dtvu5d09ta7c0t4jzkr2f -decimals = 18 - -[inj1rtyuaxaqfxczuys3k3cdvlg89ut66ulmp8mvuy] -peggy_denom = inj1rtyuaxaqfxczuys3k3cdvlg89ut66ulmp8mvuy -decimals = 18 - -[inj1rytr7mwrentqhng3gldplyf59k23qd3x5umc36] -peggy_denom = inj1rytr7mwrentqhng3gldplyf59k23qd3x5umc36 -decimals = 18 - -[inj1ryzgvggaktks2pz69pugltfu7f3hpq7wc98t5e] -peggy_denom = inj1ryzgvggaktks2pz69pugltfu7f3hpq7wc98t5e -decimals = 18 - -[inj1s3w6k5snskregtfrjqdc2ee6t3llypw2yy4w3l] -peggy_denom = inj1s3w6k5snskregtfrjqdc2ee6t3llypw2yy4w3l -decimals = 18 - -[inj1savfv8nemxsp0870m0dsqgprcwwr447jrj2yh5] -peggy_denom = inj1savfv8nemxsp0870m0dsqgprcwwr447jrj2yh5 -decimals = 18 - -[inj1sfvyudz7m8jfsqu4s53uw2ls2k07yjg8tmcgzl] -peggy_denom = inj1sfvyudz7m8jfsqu4s53uw2ls2k07yjg8tmcgzl -decimals = 0 - -[inj1sgdvujejhvc0yqw26jz2kvg9fx2wvfvvjtjnjq] -peggy_denom = inj1sgdvujejhvc0yqw26jz2kvg9fx2wvfvvjtjnjq -decimals = 6 - -[inj1shlkety7fs0n7l2lxz3pyg6hr0j6dkcdvgvjch] -peggy_denom = inj1shlkety7fs0n7l2lxz3pyg6hr0j6dkcdvgvjch -decimals = 8 - -[inj1shzx0tx7x74ew6ewjdhvw2l3a828tfaggk5lj3] -peggy_denom = inj1shzx0tx7x74ew6ewjdhvw2l3a828tfaggk5lj3 -decimals = 18 - -[inj1sp8f3hg3qtjr75qxm89fgawwnme6lvldqxrz87] -peggy_denom = inj1sp8f3hg3qtjr75qxm89fgawwnme6lvldqxrz87 -decimals = 6 - -[inj1spzwwtr2luljr300ng2gu52zg7wn7j44m92mdf] -peggy_denom = inj1spzwwtr2luljr300ng2gu52zg7wn7j44m92mdf -decimals = 10 - -[inj1ss3d6gw5xzk5gdt9w4qhp3px62mqygk69uxwyv] -peggy_denom = inj1ss3d6gw5xzk5gdt9w4qhp3px62mqygk69uxwyv -decimals = 8 - -[inj1ss6rtzavmpr9ssf0pcw8x20vxmphfqdmlfyz9t] -peggy_denom = inj1ss6rtzavmpr9ssf0pcw8x20vxmphfqdmlfyz9t -decimals = 18 - -[inj1svrvyqm8uu6u4xnkz6tva207pztglcjylxe367] -peggy_denom = inj1svrvyqm8uu6u4xnkz6tva207pztglcjylxe367 -decimals = 18 - -[inj1sx8qf8upzccasf7ylv2adsek8nwzgwu944tqkd] -peggy_denom = inj1sx8qf8upzccasf7ylv2adsek8nwzgwu944tqkd -decimals = 0 - -[inj1syak43khmndn5t0f67kmmdzjzuf0cz3tnhm6wd] -peggy_denom = inj1syak43khmndn5t0f67kmmdzjzuf0cz3tnhm6wd -decimals = 0 - -[inj1t9r3s40sr3jjd20kp2w8dunff2466zwr89n2xr] -peggy_denom = inj1t9r3s40sr3jjd20kp2w8dunff2466zwr89n2xr -decimals = 18 - -[inj1tamr3fy4cyj6ezyppmeywxd4jz5knat8uqz0d6] -peggy_denom = inj1tamr3fy4cyj6ezyppmeywxd4jz5knat8uqz0d6 -decimals = 18 - -[inj1tcgye8ekwd0fcnrwncdtt7k9r7eg7k824c0pdg] -peggy_denom = inj1tcgye8ekwd0fcnrwncdtt7k9r7eg7k824c0pdg -decimals = 18 - -[inj1tjnjj9hvecuj3dpdvvl4yxhshgwzqyg57k7fnh] -peggy_denom = inj1tjnjj9hvecuj3dpdvvl4yxhshgwzqyg57k7fnh -decimals = 18 - -[inj1tr8dz3dudtnc7z3umjg7s5nwcw387phnjsy3pp] -peggy_denom = inj1tr8dz3dudtnc7z3umjg7s5nwcw387phnjsy3pp -decimals = 18 - -[inj1ttngjl2y886dcr7r34gp3r029f8l2pv8tdelk8] -peggy_denom = inj1ttngjl2y886dcr7r34gp3r029f8l2pv8tdelk8 -decimals = 18 - -[inj1u0y6k9grtux3dlzpvj6hspkg6n0l0l2zmlhygu] -peggy_denom = inj1u0y6k9grtux3dlzpvj6hspkg6n0l0l2zmlhygu -decimals = 18 - -[inj1u5mf7ueeym5qvvgtfkhgcu40gcc04fv7qmqx5u] -peggy_denom = inj1u5mf7ueeym5qvvgtfkhgcu40gcc04fv7qmqx5u -decimals = 18 - -[inj1ufew4geh63l45ugk6aett2rdtatjm9xtycjcyd] -peggy_denom = inj1ufew4geh63l45ugk6aett2rdtatjm9xtycjcyd -decimals = 6 - -[inj1uqhcsup58gjfxl26z9esenmr03hn8wyz2mlc02] -peggy_denom = inj1uqhcsup58gjfxl26z9esenmr03hn8wyz2mlc02 -decimals = 18 - -[inj1ur3qac37axxmuqpsegr7cts77t78jyupucpua3] -peggy_denom = inj1ur3qac37axxmuqpsegr7cts77t78jyupucpua3 -decimals = 8 - -[inj1usr473hh8hlff874tvcl4pe6qzsmc08w3k32nd] -peggy_denom = inj1usr473hh8hlff874tvcl4pe6qzsmc08w3k32nd -decimals = 6 - -[inj1uv2arm5gzd35zrxd7ghsslegn0cwpc9jwc0enz] -peggy_denom = inj1uv2arm5gzd35zrxd7ghsslegn0cwpc9jwc0enz -decimals = 18 - -[inj1vgm0pwes4fusmvha62grh5aq55yxdz2x5k58xw] -peggy_denom = inj1vgm0pwes4fusmvha62grh5aq55yxdz2x5k58xw -decimals = 18 - -[inj1vgmpx429y5jv8z5hkcxxv3r4x6hwtmxzhve0xz] -peggy_denom = inj1vgmpx429y5jv8z5hkcxxv3r4x6hwtmxzhve0xz -decimals = 0 - -[inj1vhsam3xn26fq6lpfpnsnrrg66tjfxts8p7hrrf] -peggy_denom = inj1vhsam3xn26fq6lpfpnsnrrg66tjfxts8p7hrrf -decimals = 6 - -[inj1vllv3w7np7t68acdn6xj85yd9dzkxdfcuyluz0] -peggy_denom = inj1vllv3w7np7t68acdn6xj85yd9dzkxdfcuyluz0 -decimals = 6 - -[inj1vt2sgyzrna5uj6yetju8k0fjex4g8t7fr3w0vc] -peggy_denom = inj1vt2sgyzrna5uj6yetju8k0fjex4g8t7fr3w0vc -decimals = 6 - -[inj1vulh2mq9awyexpsmntff0wyumafcte4p5pqeav] -peggy_denom = inj1vulh2mq9awyexpsmntff0wyumafcte4p5pqeav -decimals = 6 - -[inj1vwhkr9qmntsfe9vzegh7xevvfaj4lnx9t783nf] -peggy_denom = inj1vwhkr9qmntsfe9vzegh7xevvfaj4lnx9t783nf -decimals = 18 - -[inj1w2w4n4mjzlx5snwf65l54a2gh4x0kmpvzm43fy] -peggy_denom = inj1w2w4n4mjzlx5snwf65l54a2gh4x0kmpvzm43fy -decimals = 18 - -[inj1w2wlt28t93szklu38wnw4dsgegug5rk3jar5k5] -peggy_denom = inj1w2wlt28t93szklu38wnw4dsgegug5rk3jar5k5 -decimals = 6 - -[inj1w3j52pppjr452f8ukj5apwpf9sc4t4p5cmyfjl] -peggy_denom = inj1w3j52pppjr452f8ukj5apwpf9sc4t4p5cmyfjl -decimals = 6 - -[inj1wjh8gnp7a6yfcldnp82s0e4yt7n98xpm363c38] -peggy_denom = inj1wjh8gnp7a6yfcldnp82s0e4yt7n98xpm363c38 -decimals = 18 - -[inj1wltxzzuvl9tz8jrawcw756wcawcjt4l4cmsjru] -peggy_denom = inj1wltxzzuvl9tz8jrawcw756wcawcjt4l4cmsjru -decimals = 18 - -[inj1wu086fnygcr0sgytmt6pk8lsnqr9uev3dj700v] -peggy_denom = inj1wu086fnygcr0sgytmt6pk8lsnqr9uev3dj700v -decimals = 18 - -[inj1wze83lt3jk84f89era4ldakyv3mf90pj4af9cx] -peggy_denom = inj1wze83lt3jk84f89era4ldakyv3mf90pj4af9cx -decimals = 6 - -[inj1wzqsfnz6936efkejd9znvtp6m75eg085yl7wzc] -peggy_denom = inj1wzqsfnz6936efkejd9znvtp6m75eg085yl7wzc -decimals = 6 - -[inj1xcgprh58szttp0vqtztvcfy34tkpupr563ua40] -peggy_denom = inj1xcgprh58szttp0vqtztvcfy34tkpupr563ua40 -decimals = 18 - -[inj1xnk5ca6u4hl9rfm2qretz6p5wjt3yptvng2jvd] -peggy_denom = inj1xnk5ca6u4hl9rfm2qretz6p5wjt3yptvng2jvd -decimals = 18 - -[inj1xvlxqaxw0ef0596d96ecfwpta29y2jc9n5w9s9] -peggy_denom = inj1xvlxqaxw0ef0596d96ecfwpta29y2jc9n5w9s9 -decimals = 8 - -[inj1xx04zkrkrplefzgdgl78mrq3qmy9e3fkgspujk] -peggy_denom = inj1xx04zkrkrplefzgdgl78mrq3qmy9e3fkgspujk -decimals = 18 - -[inj1y7q956uxwk7xgyft49n7k3j3gt5faeskje6gq2] -peggy_denom = inj1y7q956uxwk7xgyft49n7k3j3gt5faeskje6gq2 -decimals = 6 - -[inj1yd07kujagk0t6rlj0zca2xsm6qpekv8mmwqknv] -peggy_denom = inj1yd07kujagk0t6rlj0zca2xsm6qpekv8mmwqknv -decimals = 18 - -[inj1yevjg9fdp7px757d6g3j2dkpzmeczturx3vpme] -peggy_denom = inj1yevjg9fdp7px757d6g3j2dkpzmeczturx3vpme -decimals = 6 - -[inj1ykfurk0jsxcz6hp9tqm8vn2p5k0hn76y6uans6] -peggy_denom = inj1ykfurk0jsxcz6hp9tqm8vn2p5k0hn76y6uans6 -decimals = 6 - -[inj1ypa69pvev7rlv8d2rdxkaxn23tk7rx5vgnxaam] -peggy_denom = inj1ypa69pvev7rlv8d2rdxkaxn23tk7rx5vgnxaam -decimals = 6 - -[inj1yv2mdu33whk4z6xdjxu6fkzjtl5c0ghdgt337f] -peggy_denom = inj1yv2mdu33whk4z6xdjxu6fkzjtl5c0ghdgt337f -decimals = 0 - -[inj1z647rvv0cfv5xx3tgsdx77qclkwu2ng7tg2zq5] -peggy_denom = inj1z647rvv0cfv5xx3tgsdx77qclkwu2ng7tg2zq5 -decimals = 18 - -[inj1z7d2f66wh0r653qp7lqpj6tx3z0yetnjahnsrd] -peggy_denom = inj1z7d2f66wh0r653qp7lqpj6tx3z0yetnjahnsrd -decimals = 18 - -[inj1zdhl0fk08tr8xwppych2f7apzdymw4r3gf9kyr] -peggy_denom = inj1zdhl0fk08tr8xwppych2f7apzdymw4r3gf9kyr -decimals = 18 - -[inj1zfcny0x77lt6z4rg04zt2mp6j4zuwm5uufkguz] -peggy_denom = inj1zfcny0x77lt6z4rg04zt2mp6j4zuwm5uufkguz -decimals = 6 - -[inj1zhqnqzdg6738q9wjrkr50c6qkkd5ghar9fp36s] -peggy_denom = inj1zhqnqzdg6738q9wjrkr50c6qkkd5ghar9fp36s -decimals = 18 - -[inj1zr4fs5xkkf4h99sdalaxyglr3txjuewtyzjvg5] -peggy_denom = inj1zr4fs5xkkf4h99sdalaxyglr3txjuewtyzjvg5 -decimals = 8 - -[inj1zw35mh6q23cnxa0j6kdh2n4dtss795avxmn9kn] -peggy_denom = inj1zw35mh6q23cnxa0j6kdh2n4dtss795avxmn9kn -decimals = 6 - -[injJay] -peggy_denom = factory/inj1ruwdh4vc29t75eryvxs7vwzt7trtrz885teuwa/injJay -decimals = 6 - -[injape] -peggy_denom = inj15ta6ukknq82qcaq38erkvv3ycvmuqc83kn2vqh -decimals = 18 - -[injbulls] -peggy_denom = factory/inj14t4aafu7v0vmls8f73ssrzptcm3prkx2r4tp0n/injbulls -decimals = 6 - -[injera] -peggy_denom = inj1curmejva2lcpu7r887q3skr5ew2jxh8kl0m50t -decimals = 8 - -[injmeme] -peggy_denom = inj18n3gzxa40ht824clrvg2p83fy6panstngkjakt -decimals = 18 - -[injpad] -peggy_denom = factory/inj17yqt8f5677hnxpv5gxjt7uwdrjxln0qhhfcj9j/injpad -decimals = 6 - -[injshiba] -peggy_denom = factory/inj1pgkwcngxel97d9qjvg75upe8y3lvvzncq5tdr0/injshiba -decimals = 6 - -[jack11] -peggy_denom = factory/inj17kgavlktg96nf6uhpje6sutjp60jj8wppx3y3p/jack11 -decimals = 6 - -[jack12] -peggy_denom = factory/inj1maj952d7h8ecseelsur6urhm7lwwnrasuug4y0/jack12 -decimals = 6 - -[jim] -peggy_denom = inj13f6gll3666sa2wnj978lhrvjv2803tu5q8kuqd -decimals = 18 - -[jomanji] -peggy_denom = inj1gy76l9p5ar4yqquk7mqqlmpygxtluu2nf7mt4c -decimals = 18 - -[kami] -peggy_denom = factory/inj1hyjg677dqp3uj3dh9vny874k2gjr5fuvdjjzk7/kami -decimals = 6 - -[keke] -peggy_denom = inj1037seqrvafhzmwffe2rqgcad3akh935d5p3kgk -decimals = 6 - -[ken] -peggy_denom = inj19ajm97y78hpqg5pxwy4ezyf437mccy57k4krh7 -decimals = 6 - -[kimo] -peggy_denom = inj1czegjew4z5tfq8mwljx3qax5ql5k57t38zpkg5 -decimals = 18 - -[kis] -peggy_denom = factory/inj1ygeap3ypldmjgl22al5rpqafemyw7dt6k45n8r/kis -decimals = 0 - -[kishida] -peggy_denom = factory/inj1gt60kj3se0yt8pysnygc3e0syrkrl87k4qc3mz/kishida -decimals = 6 - -[koINJ] -peggy_denom = factory/inj1ruwdh4vc29t75eryvxs7vwzt7trtrz885teuwa/koinj -decimals = 6 - -[ksdhjkahkjhaskj] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/ksdhjkahkjhaskj -decimals = 6 - -[localstorage] -peggy_denom = inj17auxme00fj267ccyhx9y9ue4tuwwuadgxshl7x -decimals = 18 - -[lootbox1] -peggy_denom = factory/inj1llr45x92t7jrqtxvc02gpkcqhqr82dvyzkr4mz/lootbox1 -decimals = 0 - -[lord] -peggy_denom = inj1xysu0n9sv5wv6aeygdegywz9qkq0v77culynum -decimals = 18 - -[lsdSHARK] -peggy_denom = ibc/E62FEA8924CD79277BD5170852416E863466FB39A6EC0E6AE95E98D6A487AE5F -decimals = 6 - -[mBERB] -peggy_denom = factory/inj168casv2pd0qhjup5u774qeyxlh8gd3g77yneuy/mBERB -decimals = 6 - -[massi] -peggy_denom = inj12n44z9mk0vmga7kv8gysv5w7tgdh6zh4q6t8r7 -decimals = 18 - -[mcNINJA] -peggy_denom = factory/inj1056f9jwmdxjmc3xf3urpka00gjfsnna7ct3gy3/mcNINJA -decimals = 6 - -[meme2] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/meme2 -decimals = 6 - -[memegod] -peggy_denom = factory/inj18fql07frqe0lkvk6ajmpq4smk3q6c0f0qa5yfw/memegod -decimals = 6 - -[memej] -peggy_denom = factory/inj1g5aagfv2t662prxul8ynlzsfmtcx8699w0j7tz/memej -decimals = 6 - -[milkTIA] -peggy_denom = ibc/C2A70D6717D595F388B115200E789DC6E7EE409167B918B5F4E73838B8451A71 -decimals = 6 - -[miniSHROOM] -peggy_denom = inj1mcdhsphq3rkyg9d0sax0arm95tkac4qxdynlkz -decimals = 6 - -[miniSUSHI] -peggy_denom = inj1ex7an3yw5hvw7a6rzd8ljaq9vfd4vc0a06skdp -decimals = 6 - -[mininonja] -peggy_denom = inj1zwhu648g5zm9dqtxfaa6vcja56q7rqz4vff988 -decimals = 18 - -[minions] -peggy_denom = inj1tq0fhr0p05az32c0ehx425c63xrm6ajhak2zpw -decimals = 18 - -[mockBERB] -peggy_denom = inj1s4fua53u7argmq3npm0x9lnm8hkamjjtwayznf -decimals = 6 - -[mycelium] -peggy_denom = factory/inj14cpnzf4mxyxel7le3wp2zxyvwr8g0wukch9865/mycelium -decimals = 6 - -[nATOM] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj16jf4qkcarp3lan4wl2qkrelf4kduvvujwg0780 -decimals = 6 - -[nINJ] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj13xlpypcwl5fuc84uhqzzqumnrcfpptyl6w3vrf -decimals = 18 - -[nTIA] -peggy_denom = inj1fzquxxxam59z6fzewy2hvvreeh3m04x83zg4vv -decimals = 6 - -[nUSD] -peggy_denom = factory/inj18nm3q7r2rckklp7h8hgfzu2dlc20sftvd2893w/nUSD -decimals = 18 - -[nUSDT] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1cy9hes20vww2yr6crvs75gxy5hpycya2hmjg9s -decimals = 6 - -[nWETH] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1kehk5nvreklhylx22p3x0yjydfsz9fv3fvg5xt -decimals = 18 - -[needle] -peggy_denom = inj145ueepjcu9xd42vkwvvwvqa3fvk0q66rnzdkxn -decimals = 6 - -[neiroINJ] -peggy_denom = inj1fxxwg8cnh39ws2f0xrwx5rt2k8kmny5dqv3n08 -decimals = 18 - -[nibba] -peggy_denom = inj1rk68f3a4kvcrt2nra6klz6npealww2g2avknuj -decimals = 18 - -[ninga] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/ninga -decimals = 6 - -[nipniptestest] -peggy_denom = factory/inj1rnlhp35xqtl0zwlp9tnrelykea9f52nd8av7ec/nipniptestest -decimals = 6 - -[nodevnorug] -peggy_denom = factory/inj14epxlhe56lhk5s3nc8wzmetwh6rpehuufe89ak/NODEVNORUG -decimals = 6 - -[nonjainu] -peggy_denom = factory/inj1gxq2pk3ufkpng5s4qc62rcq5rssdxsvk955xdw/nonjainu -decimals = 6 - -[nonjaktif] -peggy_denom = factory/inj1x6u4muldaqn2cm95yn7g07z5wwvpd6d6rpt4da/nonjaktif -decimals = 6 - -[notDOJO] -peggy_denom = inj1n2l9mq2ndyp83u6me4hf7yw76xkx7h792juksq -decimals = 6 - -[ntx] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/ntx -decimals = 6 - -[nub] -peggy_denom = inj1jaahfnl4zf5azy8x20kw43j2qv2vlhavecy9u5 -decimals = 8 - -[oneCENT] -peggy_denom = inj12fdu6zgd9z5pv9cm8klv9w98ue7hs25z7uukdg -decimals = 6 - -[ooga] -peggy_denom = inj1rysrq2nzm0fz3h7t25deh5wetlqz4k9rl06guu -decimals = 18 - -[opps] -peggy_denom = inj1wazl9873fqgs4p7rjvn6a4qgqfdafacz9jzzjd -decimals = 18 - -[pATOM-30Sep2024] -peggy_denom = ibc/368C7971AACA45D4E15D6C6299E22EE2FD2CA772C8CE1635B6498E62DFAA8E08 -decimals = 6 - -[pATOM-31Dec2024] -peggy_denom = ibc/57C2F2AD1A2FE89E7CF82D3234CAC94029ABADC04949269C5994C641C161CDDC -decimals = 6 - -[pATOM-31Dec2025] -peggy_denom = ibc/DFC8484D05ABEED6336C48468E9B03FFF808F9BD2F01985DBFADD98CA4099F33 -decimals = 6 - -[pAUUU-30Sep2024] -peggy_denom = ibc/49ADCAC494A9E9FE1EB1FE6FE5E8F32AA54F38A50DDDA3292DB4DCC0623893D7 -decimals = 6 - -[pAUUU-31Dec2024] -peggy_denom = ibc/7AA47960D29638950C9A96CD87D19883D325876A8AFE0B5367B26B1ABD290D04 -decimals = 6 - -[pAUUU-31Dec2025] -peggy_denom = ibc/BD80CB79FCE0BDD1B23E0275558628CC34D40849583E5B5C3C4059BF25E67B44 -decimals = 6 - -[pINJ-30Sep2024] -peggy_denom = ibc/D0F3CC8B6BAB6B597F02BB7F3EDEB3581AC4EA4302CAE673727E4BBBE076EB72 -decimals = 6 - -[pINJ-31Dec2024] -peggy_denom = ibc/338F1E8716BC3A62E6AF0C1C9D89CD165BA845EB07FEF6089E985D097CA650DA -decimals = 6 - -[pINJ-31Dec2025] -peggy_denom = ibc/ECB1978C49F5A56455C98BF3ED5898B352F09237F1591689E4BE9131A0D7C503 -decimals = 6 - -[pLUNA-30Sep2024] -peggy_denom = ibc/DFCDD25BA6D1AF26487B57FE7C3CEDE136D778A313B3BD5F8908C6FDC9A2D6F9 -decimals = 6 - -[pLUNA-31Dec2024] -peggy_denom = ibc/8D76730A902BEA1C1ED330F3BF367EF633F861BEBA66D68EF09D474C007F3737 -decimals = 6 - -[pLUNA-31Dec2025] -peggy_denom = ibc/0AD7F861767F69C332039D9AC97138A8FB8C58EE743C7827EC78A71F5B99C072 -decimals = 6 - -[pOSMO-30Sep2024] -peggy_denom = ibc/705F080D0191A6937EEAFD050D8FD03BE819790240D4F447F445716F22F887C6 -decimals = 6 - -[pOSMO-31Dec2024] -peggy_denom = ibc/102FF3A6E5585EC3A89B7C1611ADB27C9DD33049EC587A91488BDAF084F92854 -decimals = 6 - -[pOSMO-31Dec2025] -peggy_denom = ibc/DC05A4336A8321FA0F30C6FA0FD0078362358BF8A6CF181D816FE4962848CCA3 -decimals = 6 - -[paam] -peggy_denom = factory/inj1hg6n7nfhtevnxq87y2zj4xf28n4p38te6q56vx/paam -decimals = 6 - -[pdATOM-30Jun2025] -peggy_denom = ibc/A6398B01F40FBC297443EC45755660E4A34A7071FA0BDF95AF630E3C5AEAE30F -decimals = 6 - -[pdATOM-31Dec2024] -peggy_denom = ibc/FB19C7ABF25489E678C4D065F4FE20AA5889DB46E726924909D732948000B329 -decimals = 6 - -[pdATOM-31Dec2025] -peggy_denom = ibc/24161A7A6EF6597D81B0C7C8C66943127448B652484338C901F5B23A74406E1D -decimals = 6 - -[peggy0x138C2F1123cF3f82E4596d097c118eAc6684940B] -peggy_denom = peggy0x138C2F1123cF3f82E4596d097c118eAc6684940B -decimals = 18 - -[peggy0x420412E765BFa6d85aaaC94b4f7b708C89be2e2B] -peggy_denom = peggy0x420412E765BFa6d85aaaC94b4f7b708C89be2e2B -decimals = 4 - -[peggy0x43123e1d077351267113ada8bE85A058f5D492De] -peggy_denom = peggy0x43123e1d077351267113ada8bE85A058f5D492De -decimals = 6 - -[peggy0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32] -peggy_denom = peggy0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32 -decimals = 18 - -[peggy0x6c3ea9036406852006290770BEdFcAbA0e23A0e8] -peggy_denom = peggy0x6c3ea9036406852006290770BEdFcAbA0e23A0e8 -decimals = 6 - -[peggy0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2] -peggy_denom = peggy0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 -decimals = 18 - -[peggy0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080] -peggy_denom = peggy0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080 -decimals = 10 - -[peggy0xbC0899E527007f1B8Ced694508FCb7a2b9a46F53] -peggy_denom = peggy0xbC0899E527007f1B8Ced694508FCb7a2b9a46F53 -decimals = 5 - -[peggy0xe28b3b32b6c345a34ff64674606124dd5aceca30] -peggy_denom = peggy0xe28b3b32b6c345a34ff64674606124dd5aceca30 -decimals = 18 - -[peipei] -peggy_denom = inj1rd0ympknmutwvvq8egl6j7ukjyqeh2uteqyyx7 -decimals = 6 - -[pepe] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1f2vr6hd9w4xujncyprw670l3g7x2esj50umn8k -decimals = 18 - -[peresident] -peggy_denom = inj1txs2fdchzula47kt7pygs7fzxfjmp73zhqs4dj -decimals = 18 - -[pigs] -peggy_denom = factory/inj1prp8jk9fvxjzdgv8n2qlgrdfgxpq7t6k6rkmc7/PIGS -decimals = 6 - -[popINJay] -peggy_denom = factory/inj1rn2snthhvdt4m62uakp7snzk7melj2x8nfqkx5/popINJay -decimals = 6 - -[pstDYDX-30Sep2024] -peggy_denom = ibc/F9D2FBA8C2795DC27C4578A190DFB0608A18427F0B322BC90A339F5EA7F66D77 -decimals = 18 - -[pstDYDX-31Dec2024] -peggy_denom = ibc/730220B27C6C740A9A4535DC99D57E4ADE81E48107C428C1541F3AAE75C7F769 -decimals = 18 - -[pstDYDX-31Dec2025] -peggy_denom = ibc/1062574A328559A77CBF08D5C9C1A8C9F3F7583AC5769CCC81A7C239D6D1E7E6 -decimals = 18 - -[pstTIA-30Sep2024] -peggy_denom = ibc/7A18E05E78C867C18A593066E830BE95B789F643934FB58EAF77A00D0451591B -decimals = 6 - -[pstTIA-31Dec2024] -peggy_denom = ibc/4D68207899DB3A8AC13322871EEC3F35DE9EEF1EB4AD1E269B563C043425287C -decimals = 6 - -[pstTIA-31Dec2025] -peggy_denom = ibc/76BAC47E42CF4021CAA3E2341F65958B7FFC0719CB42C1630C4D61C229D68A24 -decimals = 6 - -[pumping] -peggy_denom = inj1rts275s729dqcf7htz4hulrerpz85leufsh8xl -decimals = 8 - -[qcAQLA] -peggy_denom = ibc/F33465130E040E67BFEA9BFF0F805F6B08BD49F87CC6C02EEBEB6D4E2D94FDCE -decimals = 6 - -[qcDYDX] -peggy_denom = ibc/8C2EAF8A02B654046964C0A2CDEF6167F9C961700EA830A50F57B55D42137C73 -decimals = 18 - -[qcFUZN] -peggy_denom = ibc/5E44326A289ED1CA0536517BC958881B611D21CBB33EBE068F1E04A502A9F548 -decimals = 6 - -[qcKUJI] -peggy_denom = ibc/B7C8418ABE8CF56B42A37215F6A715097FDD82AC322FE560CA589833FEE8C50D -decimals = 6 - -[qcMNTA] -peggy_denom = ibc/F770E830BC7E2992BC0DBECAC789432995B64BD6714C36EA092D877E28AA9493 -decimals = 6 - -[rBAGGIO] -peggy_denom = inj13z8pahkrcu2zk44el6lcnw9z3amstuneay5efs -decimals = 6 - -[rETH] -peggy_denom = ibc/8906BF683A89D1ABE075A49EFA35A3128D7E9D809775B8E9D5AEEAA55D2889DD -decimals = 18 - -[rFUZN] -peggy_denom = ibc/F5FFC37BBF4B24F94D920BC7DAFCCE5B9403B2DB33DF759B8CED76EA8A6E3E24 -decimals = 6 - -[rKUJI] -peggy_denom = ibc/57FA3F4E56F0700CA3DFDF1CD67430244224128FE4A82C351D798CA356215516 -decimals = 6 - -[ra] -peggy_denom = factory/inj1evhsnsrfpvq7jrjzkkn7zwcdtm9k5ac8rh47n8/ra -decimals = 6 - -[rat] -peggy_denom = factory/inj1evhsnsrfpvq7jrjzkkn7zwcdtm9k5ac8rh47n8/rat -decimals = 9 - -[rdl] -peggy_denom = inj1q6khaa8av7pet763qmz0ytvgndl6g4sn37tvs5 -decimals = 18 - -[roba] -peggy_denom = inj1gn3py3euhfunvt5qe8maanzuwzf8y2lm2ysy24 -decimals = 18 - -[sINJ] -peggy_denom = inj162hf4hjntzpdghq2c5e966g2ldd83jkmqcvqgq -decimals = 6 - -[sUSDE] -peggy_denom = peggy0x9D39A5DE30e57443BfF2A8307A4256c8797A3497 -decimals = 18 - -[santakurosu] -peggy_denom = factory/inj1dzd34k9x3pt09pc68emp85usgeyk33qn9a4euv/santakurosu -decimals = 6 - -[sclaleX Finance] -peggy_denom = inj1x04gt4mtdepdjy5j3dk22g8mymw3jgqkzrm0fc -decimals = 18 - -[scorpion] -peggy_denom = factory/inj1a37dnkznmek8l5uyg24xl5f7rvftpvqsduex24/scorpion -decimals = 6 - -[sei] -peggy_denom = sei -decimals = 6 - -[sentinel] -peggy_denom = inj172tsvz4t82m28rrthmvatfzqaphen66ty06qzn -decimals = 18 - -[seven] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/seven -decimals = 6 - -[sfrxETH] -peggy_denom = ibc/E918585C09958BD328DD9E7215E4726623E7A9A94342FEA5BE126A2AAF920730 -decimals = 18 - -[share1] -peggy_denom = share1 -decimals = 18 - -[share10] -peggy_denom = share10 -decimals = 18 - -[share11] -peggy_denom = share11 -decimals = 18 - -[share15] -peggy_denom = share15 -decimals = 18 - -[share16] -peggy_denom = share16 -decimals = 18 - -[share18] -peggy_denom = share18 -decimals = 18 - -[share2] -peggy_denom = share2 -decimals = 18 - -[share20] -peggy_denom = share20 -decimals = 18 - -[share24] -peggy_denom = share24 -decimals = 18 - -[share25] -peggy_denom = share25 -decimals = 18 - -[share26] -peggy_denom = share26 -decimals = 18 - -[share27] -peggy_denom = share27 -decimals = 18 - -[share28] -peggy_denom = share28 -decimals = 18 - -[share29] -peggy_denom = share29 -decimals = 18 - -[share3] -peggy_denom = share3 -decimals = 18 - -[share30] -peggy_denom = share30 -decimals = 18 - -[share31] -peggy_denom = share31 -decimals = 18 - -[share32] -peggy_denom = share32 -decimals = 18 - -[share33] -peggy_denom = share33 -decimals = 18 - -[share34] -peggy_denom = share34 -decimals = 18 - -[share35] -peggy_denom = share35 -decimals = 18 - -[share36] -peggy_denom = share36 -decimals = 18 - -[share37] -peggy_denom = share37 -decimals = 18 - -[share38] -peggy_denom = share38 -decimals = 18 - -[share39] -peggy_denom = share39 -decimals = 18 - -[share4] -peggy_denom = share4 -decimals = 18 - -[share40] -peggy_denom = share40 -decimals = 18 - -[share41] -peggy_denom = share41 -decimals = 18 - -[share42] -peggy_denom = share42 -decimals = 18 - -[share43] -peggy_denom = share43 -decimals = 18 - -[share44] -peggy_denom = share44 -decimals = 18 - -[share45] -peggy_denom = share45 -decimals = 18 - -[share46] -peggy_denom = share46 -decimals = 18 - -[share47] -peggy_denom = share47 -decimals = 18 - -[share48] -peggy_denom = share48 -decimals = 18 - -[share49] -peggy_denom = share49 -decimals = 18 - -[share5] -peggy_denom = share5 -decimals = 18 - -[share50] -peggy_denom = share50 -decimals = 18 - -[share51] -peggy_denom = share51 -decimals = 18 - -[share52] -peggy_denom = share52 -decimals = 18 - -[share53] -peggy_denom = share53 -decimals = 18 - -[share54] -peggy_denom = share54 -decimals = 18 - -[share55] -peggy_denom = share55 -decimals = 18 - -[share56] -peggy_denom = share56 -decimals = 18 - -[share57] -peggy_denom = share57 -decimals = 18 - -[share58] -peggy_denom = share58 -decimals = 18 - -[share59] -peggy_denom = share59 -decimals = 18 - -[share6] -peggy_denom = share6 -decimals = 18 - -[share60] -peggy_denom = share60 -decimals = 18 - -[share61] -peggy_denom = share61 -decimals = 18 - -[share62] -peggy_denom = share62 -decimals = 18 - -[share63] -peggy_denom = share63 -decimals = 18 - -[share64] -peggy_denom = share64 -decimals = 18 - -[share65] -peggy_denom = share65 -decimals = 18 - -[share66] -peggy_denom = share66 -decimals = 18 - -[share67] -peggy_denom = share67 -decimals = 18 - -[share68] -peggy_denom = share68 -decimals = 18 - -[share69] -peggy_denom = share69 -decimals = 18 - -[share70] -peggy_denom = share70 -decimals = 18 - -[share71] -peggy_denom = share71 -decimals = 18 - -[share72] -peggy_denom = share72 -decimals = 18 - -[share8] -peggy_denom = share8 -decimals = 18 - -[share9] -peggy_denom = share9 -decimals = 18 - -[shark] -peggy_denom = inj13y7ft3ppnwvnwey2meslv3w60arx074vlt6zwl -decimals = 18 - -[shiba] -peggy_denom = factory/inj1v0yk4msqsff7e9zf8ktxykfhz2hen6t2u4ue4r/shiba -decimals = 6 - -[shromin] -peggy_denom = inj1x084w0279944a2f4hwcr7hay5knrmuuf8xrvvs -decimals = 6 - -[shroomin] -peggy_denom = inj1300xcg9naqy00fujsr9r8alwk7dh65uqu87xm8 -decimals = 18 - -[shuriken] -peggy_denom = inj1afr2er5nrevh90nywpka0gv8ywcx3fjhlpz4w3 -decimals = 6 - -[smokingNONJA] -peggy_denom = factory/inj1907wkvrn9q256pulcc6n4dkk9425d2rd8t2qwt/smokingNONJA -decimals = 6 - -[socks] -peggy_denom = factory/inj1an64kx7fr7fgyrpsuhlzjmuw4a5mmwnwyk3udq/socks -decimals = 6 - -[solana.USDC.wh] -peggy_denom = ibc/FF3CF830E60679530072C4787A76D18E81C04F9725C3523F941DF0D8B7EB24F0 -decimals = 6 - -[space candy for degens] -peggy_denom = inj1qt78z7xru0fcks54ca56uehuzwal026ghhtxdv -decimals = 6 - -[spore] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/spore -decimals = 6 - -[spuun] -peggy_denom = factory/inj168pjvcxwdr28uv295fchjtkk6pc5cd0lg3h450/spuun -decimals = 6 - -[sqATOM] -peggy_denom = ibc/C63E6285FA0EE014B89671A7A633E1CE7F62310312843B9AC7248910619143C6 -decimals = 6 - -[sqBTC] -peggy_denom = ibc/81C212661A115B9799C71173DD131B5077B14A3FBD26A8A9A0C669F76F434E23 -decimals = 6 - -[sqOSMO] -peggy_denom = ibc/AFCDF4348DBDF92BCF631B1D38628F75683F45A8A0DCE304FC9AAD4F31609916 -decimals = 6 - -[sqTIA] -peggy_denom = ibc/D2098712E1B9398AD8D05966A5766D4C32137D9A06CF839376221176CFD9AF0B -decimals = 6 - -[squid] -peggy_denom = factory/inj1nhswhqrgfu3hpauvyeycz7pfealx4ack2c5hfp/squid -decimals = 6 - -[stATOM] -peggy_denom = ibc/A8F39212ED30B6A8C2AC736665835720D3D7BE4A1D18D68566525EC25ECF1C9B -decimals = 6 - -[stBAND] -peggy_denom = ibc/95A65C08D2A7BFE5630E1B7FDCD89B2134D1A5ACE0C5726D6060A992CBAFA504 -decimals = 6 - -[stCMDX] -peggy_denom = ibc/0CAB2CA45981598C95B6BE18252AEFE1E9E1691D8B4C661997AD7B836FD904D6 -decimals = 6 - -[stDYDX] -peggy_denom = ibc/9B324282388BEBD0E028749E9E10627BA2BA13ADBE7FF04274F2CFBDD271BA4B -decimals = 18 - -[stDYDX-BOOST-LP] -peggy_denom = ibc/2D179C66414C7C5A842FE73D19871CE8205F04B0B6973066859B67DC9509959E -decimals = 18 - -[stDYDX-YIELD-LP] -peggy_denom = ibc/A5E7901DFB03C4341C0798FD632C16689987014AE1BEBDD14436599A61895C3E -decimals = 18 - -[stDYM] -peggy_denom = ibc/7F4BE10120E17C0F493124FFEDC1A3397B8BECEA83701CE8DC8D8B1E3A2A7763 -decimals = 18 - -[stETH] -peggy_denom = peggy0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 -decimals = 18 - -[stEVMOS] -peggy_denom = ibc/75F64E20A70C5059F8EA792F1C47260DC7C6CBAC69DBA60E151AD5416E93C34C -decimals = 18 - -[stIBCX] -peggy_denom = ibc/0A6B424A8207047D9FD499F59177BABD8DB08BBC2316B29B702A403BFB414419 -decimals = 6 - -[stISLM] -peggy_denom = ibc/813891E20F25E46CF9DE9836EB7F34BCABA45927754DDE8C0E74FE694968F8C2 -decimals = 18 - -[stJUNO] -peggy_denom = ibc/580E52A2C2DB126EE2160D1BDBBA33B5839D53B5E59D04D4FF438AE9BB7BFAAB -decimals = 6 - -[stLUNA] -peggy_denom = ibc/E98796F283A8B56A221011C2EDF7079BB62D1EA3EEF3E7CF4C679E91C6D97D08 -decimals = 6 - -[stOSMO] -peggy_denom = ibc/6D821F3CFAE78E9EBD872FAEC61C400C0D9B72E77FA14614CF1B775A528854FD -decimals = 6 - -[stSAGA] -peggy_denom = ibc/7C9A65FC985CCD22D0B56F1CEB2DDA3D552088FCE17E9FDF6D18F49BEDBEBF97 -decimals = 6 - -[stSOMM] -peggy_denom = ibc/9C234DA49B8DDAFB8F71F21BEB109F6255ECA146A32FD3A36CB9210647CBD037 -decimals = 6 - -[stSTARS] -peggy_denom = ibc/DD0F92D576A9A60487F17685A987AB6EDB359E661D281ED31F3AE560650ECFCB -decimals = 6 - -[stTIA] -peggy_denom = ibc/32F6EDA3E2B2A7F9C4A62F11935CF5D25948372A5A85281D7ABB9A2D0F0B7182 -decimals = 6 - -[stTIA-BOOST-LP] -peggy_denom = ibc/4D510423D9EC56204AE3CC9B64DE9A61DB0EEA7B76C8F54F5F253340111FDDD9 -decimals = 6 - -[stTIA-YIELD-LP] -peggy_denom = ibc/424A6AD4B8DB6CE842FC02B0A3510B57D40F27F291FB2F1501D94444AADA8739 -decimals = 6 - -[stUMEE] -peggy_denom = ibc/FC8E98DF998AE88129183094E49383F94B3E5F1844C939D380AF18061FEF41EB -decimals = 6 - -[stkATOM] -peggy_denom = ibc/B8E30AECB0FB5BA1B02747BE003E55934A9E42488495412C7E9934FBEC06B201 -decimals = 6 - -[stkDYDX] -peggy_denom = ibc/93948A8FB433293F1C89970EA4596C4E8D4DD7E9F041058C7C47F0760F7C9693 -decimals = 18 - -[stkHUAHUA] -peggy_denom = ibc/7DC72C8C753E145A627515EC6DFFD23CDED27D443C79E4B8DB2B1AB1F18B6A66 -decimals = 6 - -[stkOSMO] -peggy_denom = ibc/F60E1792296F6264E594B5F87C3B5CDE859A1D9B3421F203E986B7BA3C4E05F1 -decimals = 6 - -[stkSTARS] -peggy_denom = ibc/77F4E05BDB54051FAF0BE956FCE83D8E0E4227DD53F764BB32D8ECF685A93F55 -decimals = 6 - -[stkXPRT] -peggy_denom = ibc/6E5EEA7EC6379417CA5A661AD367753359607BD74A58FD4F60E8D26254FB8D12 -decimals = 6 - -[storage] -peggy_denom = inj1dzatga5p63z2rpfqx7vh4fp6as8y46enkrfst0 -decimals = 18 - -[subs] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/subs -decimals = 6 - -[super] -peggy_denom = inj1fq8mjddyvkas32ltzzaqru6nesse2ft8xnn3vs -decimals = 18 - -[symbol] -peggy_denom = factory/inj1v0yk4msqsff7e9zf8ktxykfhz2hen6t2u4ue4r/inj-test -decimals = 6 - -[tBTC] -peggy_denom = ibc/CDF0747148A7E6FCF27143312A8A5B7F9AEF0EF8BD4FA4381815A5EDBFC9B87E -decimals = 8 - -[tama] -peggy_denom = factory/inj18feu0k5w2r0jsffgx8ue8pfj2nntfucaj0dr8v/tama -decimals = 6 - -[teclub] -peggy_denom = inj125hp6pmxyajhldefkrcmc87lx08kvwtag382ks -decimals = 18 - -[terever] -peggy_denom = inj14tepyvvxsn9yy2hgqrl4stqzm2h0vla9ee8ya9 -decimals = 18 - -[test] -peggy_denom = factory/inj18xg8yh445ernwxdquklwpngffqv3agfyt5uqqs/test -decimals = 6 - -[test1] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/test1 -decimals = 6 - -[test2] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/test2 -decimals = 6 - -[test3] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/test3 -decimals = 6 - -[test4] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/test4 -decimals = 6 - -[test5] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/test5 -decimals = 6 - -[test6] -peggy_denom = factory/inj1senn2rj7avpqerf0ha9xn7t6fmqlyr8hafu8ld/test6 -decimals = 6 - -[testBBL] -peggy_denom = factory/inj1fkm7sqmnzt9779unr9wnygqkq4f5t5s7tr46mz/testBBL -decimals = 0 - -[testclub] -peggy_denom = inj15v7mu4ywf8rvy5wk9ptrq7we32e3q0shkhuhg8 -decimals = 18 - -[testclubss] -peggy_denom = inj1r0rkq2v70lur23jczassuqu5qwc5npcjpp3e8c -decimals = 18 - -[testdaojo] -peggy_denom = inj174v6mke336kqzf7rl7ud43ddc4vsqh2q4mnl6t -decimals = 18 - -[testooo] -peggy_denom = factory/inj17pn6nwvk33404flhglujj4n5y3p2esy5x0cfhm/testooo -decimals = 6 - -[testt] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/testt -decimals = 6 - -[testtesttest] -peggy_denom = inj1w4clv0alsnt5ez2v7dl9yjzmg7mkfzjs0cf7cz -decimals = 18 - -[testuuu] -peggy_denom = factory/inj17pn6nwvk33404flhglujj4n5y3p2esy5x0cfhm/testuuu -decimals = 6 - -[tet1w3112] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/tet1w3112 -decimals = 6 - -[toby] -peggy_denom = factory/inj1temu696g738vldkgnn7fqmgvkq2l36qsng5ea7/toby -decimals = 6 - -[token] -peggy_denom = inj1l2juxl35xedtneaq2eyk535cw5hq4x3krjqsl3 -decimals = 6 - -[tonc] -peggy_denom = inj1aqtnpa0ghger4mlz4u46cl48rr82jes043pugz -decimals = 18 - -[tone] -peggy_denom = inj1rgfquap6gahcdekg4pv6ru030w9yaph7nhcp9g -decimals = 18 - -[tonf] -peggy_denom = inj180rq0xetfzwjquxg4mukc4qw0mzprkhetrygv5 -decimals = 18 - -[toto] -peggy_denom = inj17dpjwzzr05uvegj4hhwtf47y0u362qgm6r3f5r -decimals = 18 - -[tpixdog] -peggy_denom = inj17mxrt7ywxgjh4lsk8kqjgqt0zc6pzj5jwd5xt7 -decimals = 18 - -[tremp] -peggy_denom = factory/inj1fkq5lseels4xt20drvtck3rajvvte97uhyx85r/tremp -decimals = 6 - -[trs] -peggy_denom = factory/inj1h0w5sj0n07cugus02xfywaghvxxh8pp3e9egs6/trs -decimals = 12 - -[trump] -peggy_denom = inj1a6d54f5f737e8xs54qpxhs9v5l233n6qy9kyud -decimals = 18 - -[tst] -peggy_denom = inj1ukx6qs0guxzcf0an80vw8q88203cl75cey67lw -decimals = 18 - -[tsty] -peggy_denom = factory/inj1lvlvg3mkc3txakeyrqfzemkc7muvm9656mf2az/tsty -decimals = 6 - -[tve] -peggy_denom = inj1y208239ua6mchwayw8s8jfnuyqktycqhk6tmhv -decimals = 18 - -[uLP] -peggy_denom = factory/inj1dewkg7z8vffqxk7jcer6sf9ttnx54z0c6gfjw6/uLP -decimals = 6 - -[ulvn] -peggy_denom = factory/osmo1mlng7pz4pnyxtpq0akfwall37czyk9lukaucsrn30ameplhhshtqdvfm5c/ulvn -decimals = 6 - -[unknown] -peggy_denom = unknown -decimals = 0 - -[wBTC] -peggy_denom = inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku -decimals = 18 - -[wETH] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/inj1k9r62py07wydch6sj5sfvun93e4qe0lg7jyatc -decimals = 8 - -[wLIBRA] -peggy_denom = ibc/FCCACE2DFDF08422A050486E09697AE34D4C620DC51CFBEF59B60AE3946CC569 -decimals = 6 - -[wUSDM] -peggy_denom = peggy0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812 -decimals = 18 - -[wen] -peggy_denom = factory/inj1v5vml3038t0expy7vf5vkwj7t9xly9kudtjdg5/wen -decimals = 6 - -[wera] -peggy_denom = factory/inj1j3c89aqgw9g4sqwtxzldslqxla4d5a7csgaxgq/wera -decimals = 6 - -[wif] -peggy_denom = wif -decimals = 6 - -[winston] -peggy_denom = inj128kf4kufhd0w4zwpz4ug5x9qd7pa4hqyhm3re4 -decimals = 6 - -[wstETH] -peggy_denom = ibc/1E0FC59FB8495BF927B10E9D515661494B1BBEDAA15D80E52FE2BADA64656D16 -decimals = 18 - -[wynn] -peggy_denom = factory/inj1mmn3lqt5eahuu7cmpcjme6lj0xhjlhj3qj4fhh/wynn -decimals = 6 - -[x69] -peggy_denom = factory/inj1dkwqv24lyt94ukg65qf4xc8tj8wsu7x9p76enk/x69 -decimals = 6 - -[xASTRO] -peggy_denom = ibc/11B5974E9592AFEDBD74F08BE92A06A626CE01BEB395090C1567ABEE551B04C0 -decimals = 6 - -[xCC] -peggy_denom = inj1vnf98sw93chhpagtk54pr4z5dq02nxprhnhnm6 -decimals = 8 - -[xMNTA] -peggy_denom = ibc/0932033C2B34411381BB987F12539A031EF90CC7F818D65C531266413249F7DB -decimals = 6 - -[xNinja.Tech Token] -peggy_denom = inj17pgmlk6fpfmqyffs205l98pmnmp688mt0948ar -decimals = 18 - -[xSEUL] -peggy_denom = ibc/CC381CB977B79239696AC471777FEC12816B9EF7F601EE2DAF17C00F51C25F6F -decimals = 6 - -[xUSK] -peggy_denom = ibc/F8E646585298F0F0B4CF0F8EC0978CEB10E8092389E7866BFD9A5E46BE9542A6 -decimals = 6 - -[xxx] -peggy_denom = ibc/C0B67C5C6E3D8ED32B5FEC0E5A4F4E5D0257C62B4FDE5E569AF425B6A0059CC4 -decimals = 10 - -[yATOM-30Sep2024] -peggy_denom = ibc/7A994E4C7A02029E5FDA02F927787250F2BBCCCBC7B13A41009D2C548F3B234E -decimals = 6 - -[yATOM-31Dec2024] -peggy_denom = ibc/2504C9CFD5F0CF8220A83DF1437E83EFB1433D7B26C8B887AF5F7B1CB1C8CD47 -decimals = 6 - -[yATOM-31Dec2025] -peggy_denom = ibc/9E2194238758130F29211AAFB963FE69CA40DB065DAF8B72BB049F61B56F4BBE -decimals = 6 - -[yAUUU-30Sep2024] -peggy_denom = ibc/A0ADC985CD3BD5F76028433E6A1A694CAFC6859670992995FDCDF32B5AEB2340 -decimals = 6 - -[yAUUU-31Dec2024] -peggy_denom = ibc/1DD3F7C436B23B7105E1C92434F481162F8CDE2D67DC4F7F57431B4DA933296A -decimals = 6 - -[yAUUU-31Dec2025] -peggy_denom = ibc/0B0FDB379E84CCA18A6468E75737F4F3DEDD099CC298201DF089E2B2947410A0 -decimals = 6 - -[yFUZN] -peggy_denom = ibc/71C297610507CCB7D42E49EA49AF2ECBBE2D4A83D139C4A441EB7A2693C0464A -decimals = 6 - -[yINJ-30Sep2024] -peggy_denom = ibc/E912C340250ABAFDAAC0E76DF6ACFF20A33665794A2C2F03C19DACF51EDA19CF -decimals = 6 - -[yINJ-31Dec2024] -peggy_denom = ibc/2DFF81D4E81995579791F19D722697570CC1331ADF2F08FBEA8A76D51FCEC6E8 -decimals = 6 - -[yINJ-31Dec2025] -peggy_denom = ibc/39793B014139A056461F0E4444EE3E2F81F7846CF1AEA0EEBBE49C3667DC1F7A -decimals = 6 - -[yLUNA-30Sep2024] -peggy_denom = ibc/812CF63AC61F8C618801672103AB5A5651CE83FA2C5187ABD71D4181B83F21F0 -decimals = 6 - -[yLUNA-31Dec2024] -peggy_denom = ibc/8DC9F05FE9A3A1FD8244715ADA0EC9820FFA6CAA9255BC6E9A6A8FC41C2FC97E -decimals = 6 - -[yLUNA-31Dec2025] -peggy_denom = ibc/DBE8CB115CC6244C79DB9AC9C37364CE817E5D6B6DB4A609C3C6AE5B71786E3B -decimals = 6 - -[yOSMO-30Sep2024] -peggy_denom = ibc/C1C6E4CA01E5ADEF91E90E08B4B021FD63791C5D2AD576C495557A5FC950C1D4 -decimals = 6 - -[yOSMO-31Dec2024] -peggy_denom = ibc/6D2CCF76FC0DEA11AD471E28B9F0EC6EEB3ADEC26FC565B5695351A5635A73B7 -decimals = 6 - -[yOSMO-31Dec2025] -peggy_denom = ibc/B8C323AF887823F6F98576A8D9C861E7ACAA5BA661E61B3A841CCAC442EF0CE7 -decimals = 6 - -[ydATOM-30Jun2025] -peggy_denom = ibc/E54A33A3741EEB0834D8F3A24560D8CF36ACC04642E080C0343D70D3792F36C2 -decimals = 6 - -[ydATOM-31Dec2024] -peggy_denom = ibc/96BAA9DF835DE5C5BC5731D4CC5F881386211B230065B508B9C53FE34BFCAF51 -decimals = 6 - -[ydATOM-31Dec2025] -peggy_denom = ibc/A2473F5CB7E6A6489B15DE342D22935F403641722112A6360C82509297C564FE -decimals = 6 - -[ystDYDX-30Sep2024] -peggy_denom = ibc/8400E77857AD6BD9910D57409970BC61A6E6B3BDBBA284AF931F14304012253E -decimals = 6 - -[ystDYDX-31Dec2024] -peggy_denom = ibc/C31E802B564C5DCF8DC819118022868AB214CD21F1FCD08ECCD78BEB99B466A0 -decimals = 6 - -[ystDYDX-31Dec2025] -peggy_denom = ibc/0ADE8BDF371245DC02CD423DEA1D50C7B36818218592E11EBE18D36D0F73BEBB -decimals = 6 - -[ystTIA-30Sep2024] -peggy_denom = ibc/E826B3323727FFA2E9A960AF168582E9AD20404B021C0A6EDC9AFB3976FB559D -decimals = 6 - -[ystTIA-31Dec2024] -peggy_denom = ibc/5EBFD08C04D545428D6D6722908211C90135CCC20E93195BD78D70B6F9DA2660 -decimals = 6 - -[ystTIA-31Dec2025] -peggy_denom = ibc/A329F81812E746539897210B25B917A249F7DDB05D9EEC67741BE621CA8DACAD -decimals = 6 - -[zinjer] -peggy_denom = factory/inj1t0vyy5c3cnrw9f0mpjz9xk7fp22ezjjmrza7xn/zinjer -decimals = 6 diff --git a/pyinjective/denoms_testnet.ini b/pyinjective/denoms_testnet.ini deleted file mode 100644 index 83d80eb6..00000000 --- a/pyinjective/denoms_testnet.ini +++ /dev/null @@ -1,13415 +0,0 @@ -[0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe] -description = 'Testnet Spot INJ/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0x7a57e705bb4e09c88aecfc295569481dbf2fe1d5efe364651fbe72385938e9b0] -description = 'Testnet Spot APE/USDT' -base = 0 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.000000000000000000001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 1000000000000000 -min_notional = 0 - -[0xabed4a28baf4617bd4e04e4d71157c45ff6f95f181dee557aae59b4d1009aa97] -description = 'Testnet Spot INJ/APE' -base = 18 -quote = 0 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 1000 -min_quantity_tick_size = 1000000000000000000 -min_display_quantity_tick_size = 1 -min_notional = 0 - -[0xa97182f11f1aa5339c7f4c3fe3cc1c69b39079f11b864c86d912956c5c2db75c] -description = 'Testnet Spot WETH/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0x1c315bd2cfcc769a8d8eca49ce7b1bc5fb0353bfcb9fa82895fe0c1c2a62306e] -description = 'Testnet Spot WBTC/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0x491ee4fae7956dd72b6a97805046ffef65892e1d3254c559c18056a519b2ca15] -description = 'Testnet Spot ATOM/USDT' -base = 8 -quote = 6 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0xf88816466c4bdd77b3ac5d0eaf6c1d2547b2aa48a0ab5bffe81502d642209262] -description = 'Testnet Spot WBTC/USDC' -base = 8 -quote = 6 -min_price_tick_size = 0.000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 0.1 -min_notional = 0 - -[0x5fbd22eb44d9db413513f99ceb9a5ac4cc5b5e6893d5882877391d6927927e6d] -description = 'Testnet Spot USDC/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0x37c5ffe6d1c2318a7b9efde1e82c1186d688c1c4a1ad41da9a0878d353f1c88b] -description = 'Testnet Spot USDT/USDC' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0x9354b951718f87e1ffcc11800ee5890eef45a7f05884e9a604722eb8a907d07d] -description = 'Testnet Spot INJ/wBTC' -base = 18 -quote = 8 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.00001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 0 - -[0x2d92a74f1526c600c0913edd2c38e3ec2ffc5e458842f2cf83545528d5e51d0d] -description = 'Testnet Spot INJ/wETH' -base = 18 -quote = 8 -min_price_tick_size = 0.00000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000000000 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0xab5811fe4fa18b221216f01891775313310cfe85ea749f31bd0d2c58754710f4] -description = 'Testnet Spot INJ/wETH' -base = 8 -quote = 8 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 10000 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0x4ca031b7c8504fa2a8ee2fe6a47b78c7a8e01975c8c28e05029e07b2c5ec9ef5] -description = 'Testnet Spot INJ/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.0000000000000001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 100000000000000 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0xf3298cc12f12945c9da877766d320e4056e5dfd7d3c38208a0ef2f525f7ca0a2] -description = 'Testnet Spot APE/INJ' -base = 0 -quote = 18 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.000000000000000000001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 1000000000000000 -min_notional = 0 - -[0x263f7922659fa5b0ecb756a2dd8bf8e2aab9fe8d9ce375f7075d6e6d87b6f95d] -description = 'Testnet Spot INJ' -base = 8 -quote = 18 -min_price_tick_size = 100000000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 10000000 -min_display_quantity_tick_size = 0.1 -min_notional = 0 - -[0xba7096c2c49b845e6bfc8317e88831c15786bee3149836dde55481abd5ef040b] -description = 'Testnet Spot MITOTEST1/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 0 - -[0x21d4ee074f37f2a310929425e58f69850fca9f734d292bfc5ee48d3c28ea1c09] -description = 'Testnet Spot TEST2/INJ' -base = 6 -quote = 18 -min_price_tick_size = 100000000 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0xf2ced33ef12a73962be92686503450cc4966feeb9cf6c809f4dc43acad5d7efb] -description = 'Testnet Spot TEST2/USDT' -base = 6 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0xf02752c2c87728af7fd10a298a8a645261859eafd0295dcda7e2c5b45c8412cf] -description = 'Testnet Spot stINJ/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 0 - -[0x8a36130af747b111dc6a5bd5648974d9d973a72d8a17dad9071f80916cb8850d] -description = 'Testnet Spot UPHOTON/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000000000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.0000001 -min_display_quantity_tick_size = 0.0000000000001 -min_notional = 0 - -[0xd7a9fbff264246244d6e4afd7ec926aedc4c8f49118967f241126f47c5b44177] -description = 'Testnet Spot PROJ/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 0 - -[0x686d143de4268cac00ff6a7e9cb713484dadf40a5c993e166f260ca8081bc942] -description = 'Testnet Spot MT1/USDT' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0x5777730c1ab6f6b1e465d41778562ada8c136c0f11ffbbdb2faa7a5bbde5d5a5] -description = 'Testnet Spot PROJX/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 0 - -[0x876a81e382dc7a4b0acbae38fddd66a8fd53f7064f008c3716a13ad857bcf013] -description = 'Testnet Spot PROJX/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 0.00001 -min_notional = 0 - -[0x382a1cf37bcdbccd5698753154335fa56651d64b88b054691648710c8dcf43e0] -description = 'Testnet Spot ZEN/INJ' -base = 0 -quote = 18 -min_price_tick_size = 0.001 -min_display_price_tick_size = 0.000000000000000000001 -min_quantity_tick_size = 10000000000000 -min_display_quantity_tick_size = 10000000000000 -min_notional = 0 - -[0x40c7fcb089fc603f26c38a5a5bc71f27b0e33a92c2b76801bd9b2ac592d86305] -description = 'Testnet Spot ATOM/INJ' -base = 8 -quote = 6 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 100000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0xe93f09f7a06d507ff8b66f2969e1af931c9eb9ec3f640a6f87dbcd3456258466] -description = 'Testnet Spot Inj' -base = 18 -quote = 8 -min_price_tick_size = 0.0000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0xed865fd44f1bc9d46d978db415ed00444fac4f6aef7e09e2d0235f8d140b219f] -description = 'Testnet Spot MT/INJ' -base = 6 -quote = 18 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.00000001 -min_quantity_tick_size = 1000000000 -min_display_quantity_tick_size = 1000 -min_notional = 0 - -[0x215970bfdea5c94d8e964a759d3ce6eae1d113900129cc8428267db5ccdb3d1a] -description = 'Testnet Spot INJ/USDC' -base = 18 -quote = 6 -min_price_tick_size = 0.000000000000001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 10000000000000000 -min_display_quantity_tick_size = 0.01 -min_notional = 0 - -[0xd8e9ea042ac67990134d8e024a251809b1b76c5f7df49f511858e040a285efca] -description = 'Testnet Spot HDRO/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 0 - -[0x2d7f47811527bd721ce2e4e0ff27b0f3a281f65abcd41758baf157c8ddfcd910] -description = 'Testnet Spot hINJ/INJ' -base = 18 -quote = 18 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1000000000000000 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0xe4b31c0112c89e0963b2db6884b416c17101a899e0ce6dc9f5dde79e6a01b52b] -description = 'Testnet Spot TEST1/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 1 -min_notional = 0 - -[0xc0dd65c8371760699431c5ebbf4e507f9bbf8641483a719bd63c716fe585494a] -description = 'Testnet Spot PINKIE/INJ' -base = 6 -quote = 18 -min_price_tick_size = 1000000000000 -min_display_price_tick_size = 1 -min_quantity_tick_size = 10 -min_display_quantity_tick_size = 0.00001 -min_notional = 0 - -[0x03799aa2d9a4ffdf2c2621244287e9fe9a79eaf9d96f07b43bf6a7d03ecda8fe] -description = 'Testnet Spot WETH/USDC' -base = 8 -quote = 6 -min_price_tick_size = 0.00001 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 1000000 -min_display_quantity_tick_size = 0.01 -min_notional = 0.01 - -[0x2e94326a421c3f66c15a3b663c7b1ab7fb6a5298b3a57759ecf07f0036793fc9] -description = 'Testnet Derivative BTC/USDT PERP Pyth' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 0 - -[0x95698a9d8ba11660f44d7001d8c6fb191552ece5d9141a05c5d9128711cdc2e0] -description = 'Testnet Derivative SOL/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 10000 -min_display_price_tick_size = 0.01 -min_quantity_tick_size = 0.01 -min_display_quantity_tick_size = 0.01 -min_notional = 0 - -[0x820bad0e0cbee65bb0eea5a99c78720c97b7b2217c47dcc0e0875e1ebb35e546] -description = 'Testnet Derivative ARB/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 0 - -[0x155576f660b3b6116c1ab7a42fbf58a95adf11b3061f88f81bc8df228e7ac934] -description = 'Testnet Derivative XAU/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0xb6fd8f78b97238eb67146e9b097c131e94730c10170cbcafa82ea2fd14ff62c7] -description = 'Testnet Derivative EUR/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0xba9c96a1a9cc226cfe6bd9bca3a433e396569d1955393f38f2ee728cfda7ec58] -description = 'Testnet Derivative JPY/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0xe185b08a7ccd830a94060edd5e457d30f429aa6f0757f75a8b93aa611780cfac] -description = 'Testnet Derivative GBP/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0x0f03542809143c7e5d3c22f56bc6e51eb2c8bab5009161b58f6f468432dfa196] -description = 'Testnet Derivative XAG/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0x70bc8d7feab38b23d5fdfb12b9c3726e400c265edbcbf449b6c80c31d63d3a02] -description = 'Testnet Derivative ETH/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0xd97d0da6f6c11710ef06315971250e4e9aed4b7d4cd02059c9477ec8cf243782] -description = 'Testnet Derivative ATOM/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6] -description = 'Testnet Derivative INJ/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0xc10e8b25979a1620a6e088ce4c141f5fd2841e2089d4c99b6e5cd8f85986dcd3] -description = 'Testnet Derivative PEPE/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 1000 -min_notional = 0 - -[0x27f586c9911507c75bf604df00735b871119c5234f8e52bc54fbd54729588a0e] -description = 'Testnet Derivative 1000PEPE/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 1000 -min_notional = 0 - -[0x14f82598b92674598af196770a45e1b808a4ef3aa86eb9ca09aff1aeab33ac46] -description = 'Testnet Derivative 1MPEPE/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100 -min_display_price_tick_size = 0.0001 -min_quantity_tick_size = 1 -min_display_quantity_tick_size = 1 -min_notional = 0 - -[0xa12df259e07f9194389362153b42d8eb12368de5e22668d5f9fc3ac34dd43d18] -description = 'Testnet Derivative 1MPEPE/USDT' -base = 0 -quote = 6 -min_price_tick_size = 1 -min_display_price_tick_size = 0.000001 -min_quantity_tick_size = 1000 -min_display_quantity_tick_size = 1000 -min_notional = 0 - -[0x8f002b45cb287a4c3ecb89174ee42a7e933178d89c7eea94dbed8dc5dfd35d23] -description = 'Testnet Derivative GOLD/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 100000 -min_display_price_tick_size = 0.1 -min_quantity_tick_size = 0.0001 -min_display_quantity_tick_size = 0.0001 -min_notional = 0 - -[0x707fb74431a16c71e54d5cd2301daff1a464e1a854c0fef4bca3fe6c0a5b47d1] -description = 'Testnet Derivative TRUCPI/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 0 - -[0xdfbb038abf614c59decdaaa02c0446bbebcd16327bd4e9d0350a1e3b691a38ef] -description = 'Testnet Derivative EVINDEX/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 0 - -[0xf97a740538e10845e0c3db9ea94c6eaf8a570aeebe3e3511e2e387501a40e4bb] -description = 'Testnet Derivative TIA/USDT-01NOV2023' -base = 0 -quote = 6 -min_price_tick_size = 0.0001 -min_display_price_tick_size = 0.0000000001 -min_quantity_tick_size = 0.001 -min_display_quantity_tick_size = 0.001 -min_notional = 0 - -[0xc90e8ea048b8fe5c3174d4d0386191765db699d2bf83d0cbaf07e15462115a15] -description = 'Testnet Derivative TIA/USDT PERP' -base = 0 -quote = 6 -min_price_tick_size = 1000 -min_display_price_tick_size = 0.001 -min_quantity_tick_size = 0.1 -min_display_quantity_tick_size = 0.1 -min_notional = 0 - -[$ALIEN] -peggy_denom = factory/inj1mly2ykhf6f9tdj58pvndjf4q8dzdl4myjqm9t6/$alien -decimals = 6 - -[$AOI] -peggy_denom = factory/inj169ed97mcnf8ay6rgvskn95n6tyt46uwvy5qgs0/$aoi -decimals = 6 - -[$BIRB] -peggy_denom = factory/inj1j37gy4hx0xgm9crwhew3sd6gfrg2z92rphynln/INJECTEDBIRB -decimals = 6 - -[$BITCOIN] -peggy_denom = factory/inj1xqkz4cgw3qn3p6xa2296g5ma8gh4fws8f3fxg6/BITCOIN -decimals = 6 - -[$Babykira] -peggy_denom = factory/inj13vau2mgx6mg7ams9nngjhyng58tl9zyw0n8s93/$babykira -decimals = 6 - -[$FORTUNE] -peggy_denom = factory/inj1ncytr25znls3tdw8q5g5pju83t4wcv6hv48kaz/FORTUNE -decimals = 6 - -[$HONEY] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/honey -decimals = 0 - -[$NEWT] -peggy_denom = factory/inj1w4v783ckdxa4sg3xr7thtqy92u8pjt09cq84ns/newTest -decimals = 6 - -[$PUNKS] -peggy_denom = factory/inj1mldpx3uh7jx25cr7wd4c7g6gwda7wa7mfnq469/injscoin -decimals = 6 - -[$ROFL] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/rofl -decimals = 6 - -[$TOK] -peggy_denom = factory/inj1w4v783ckdxa4sg3xr7thtqy92u8pjt09cq84ns/token -decimals = 6 - -[$TT] -peggy_denom = factory/inj1ndmztajhvx96a297axzuh80ke8jh0yjlcvs0xh/zule -decimals = 6 - -[1INCH] -peggy_denom = peggy0x111111111117dC0aa78b770fA6A738034120C302 -decimals = 18 - -[A4] -peggy_denom = factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/aaaa -decimals = 6 - -[AA] -peggy_denom = peggy0xdfb34A71B682e578C1a05ab6c9eF68661F1cC291 -decimals = 18 - -[AAA] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/AAA -decimals = 6 - -[AAAAMEMETEST] -peggy_denom = factory/inj1u4uuueup7p30zfl9xvslddnen45dg7pylsq4td/aaameme -decimals = 6 - -[AAVE] -peggy_denom = peggy0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9 -decimals = 18 - -[ABC] -peggy_denom = factory/inj13njxly446jm3gd8y84qnk3sm6wu0pjjc47mwl6/ABC -decimals = 6 - -[ADN] -peggy_denom = factory/inj14dvet9j73cak22sf7nzgn52ae8z4fdxzsn683v/ADN -decimals = 6 - -[AK] -peggy_denom = factory/inj10jmp6sgh4cc6zt3e8gw05wavvejgr5pw6m8j75/ak -decimals = 6 - -[AKK] -peggy_denom = factory/inj1ygeap3ypldmjgl22al5rpqafemyw7dt6k45n8r/ak -decimals = 0 - -[ALEX] -peggy_denom = factory/inj1tka3m67unvw45xfp42v5u9rc6pxpysnh648vje/ALEX -decimals = 6 - -[ALLA] -peggy_denom = factory/inj1fukyda4ggze28p5eargxushyq7973kxgezn5hj/ALLA -decimals = 6 - -[ALLB] -peggy_denom = factory/inj1fukyda4ggze28p5eargxushyq7973kxgezn5hj/ALLB -decimals = 6 - -[ALPHA] -peggy_denom = inj1zwnsemwrpve3wrrg0njj89w6mt5rmj9ydkc46u -decimals = 8 - -[ALX] -peggy_denom = factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/alx -decimals = 6 - -[ANANA] -peggy_denom = factory/inj1kezz4smdtr3t0v49d5qyt3ksd2emc594p7ftsx/ANANA -decimals = 6 - -[ANDR] -peggy_denom = ibc/61FA42C3F0B0F8768ED2CE380EDD3BE0E4CB7E67688F81F70DE9ECF5F8684E1E -decimals = 6 - -[ANK] -peggy_denom = factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/ANK -decimals = 6 - -[APE] -peggy_denom = peggy0x44d63c7FC48385b212aB397aB91A2637ec964634 -decimals = 18 - -[APE-INJ LP] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1j3nnhcvesttumyc46pmjx2daxa92f62ku36udl -decimals = 18 - -[APEINJ] -peggy_denom = factory/inj1pn6cg7jt5nvmh2rpjxhg95nrcjz0rujv54wkdg/apeinj -decimals = 6 - -[APP] -peggy_denom = peggy0xC5d27F27F08D1FD1E3EbBAa50b3442e6c0D50439 -decimals = 18 - -[APT] -peggy_denom = apt -decimals = 8 - -[ARB] -peggy_denom = ibc/8CF0E4184CA3105798EDB18CAA3981ADB16A9951FE9B05C6D830C746202747E1 -decimals = 8 - -[ARBlegacy] -peggy_denom = inj1d5vz0uzwlpfvgwrwulxg6syy82axa58y4fuszd -decimals = 8 - -[ASG] -peggy_denom = ibc/2D40732D27E22D27A2AB79F077F487F27B6F13DB6293040097A71A52FB8AD021 -decimals = 8 - -[ASR] -peggy_denom = factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/AUM -decimals = 18 - -[ASTR] -peggy_denom = inj1mhmln627samtkuwe459ylq763r4n7n69gxxc9x -decimals = 18 - -[ASTRO] -peggy_denom = ibc/E8AC6B792CDE60AB208CA060CA010A3881F682A7307F624347AB71B6A0B0BF89 -decimals = 6 - -[ATJ] -peggy_denom = factory/inj1xv73rnm0jwnens2ywgvz35d4k59raw5eqf5quw/auctiontestj -decimals = 6 - -[ATOM] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/atom -decimals = 8 - -[ATT] -peggy_denom = factory/inj1xuxqgygmk79xfaf38ncgdp4jwmszh9rn3pmuex/ATT -decimals = 6 - -[AUTISM] -peggy_denom = factory/inj14lf8xm6fcvlggpa7guxzjqwjmtr24gnvf56hvz/autism -decimals = 6 - -[AVAX] -peggy_denom = inj18a2u6az6dzw528rptepfg6n49ak6hdzkny4um6 -decimals = 8 - -[AXL] -peggy_denom = ibc/B68C1D2682A8B69E20BB921E34C6A3A2B6D1E13E3E8C0092E373826F546DEE65 -decimals = 6 - -[AXS] -peggy_denom = peggy0xBB0E17EF65F82Ab018d8EDd776e8DD940327B28b -decimals = 18 - -[Abc] -peggy_denom = factory/inj1h76ya203uwsuh782nh0c0qfkqjtm8p2scuhfav/Abc -decimals = 9 - -[Alpha Coin] -peggy_denom = peggy0x138C2F1123cF3f82E4596d097c118eAc6684940B -decimals = 18 - -[AmanullahTest2] -peggy_denom = factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/AmanullahTest2 -decimals = 6 - -[Ann] -peggy_denom = factory/inj12mffdkj3kxzaqywd5tumds99x9neeu6072mjaf/Ann -decimals = 9 - -[Ape Coin] -peggy_denom = peggy0x4d224452801ACEd8B2F0aebE155379bb5D594381 -decimals = 18 - -[Arbitrum] -peggy_denom = peggy0x912CE59144191C1204E64559FE8253a0e49E6548 -decimals = 18 - -[Axelar] -peggy_denom = peggy0x3eacbDC6C382ea22b78aCc158581A55aaF4ef3Cc -decimals = 6 - -[B3213] -peggy_denom = factory/inj13x54dd8vsekq7694lky7m357sfmly7prf0w7lj/B3213 -decimals = 9 - -[B3X] -peggy_denom = factory/inj1lcxrtzdr38h75f0h8nttzpa7q5w6nljv5dzrq0/B3X -decimals = 9 - -[BAB] -peggy_denom = factory/inj1ljvxl24c3nz0vxc8ypf0pfppp3s3t0aap5snag/BAB -decimals = 6 - -[BAG] -peggy_denom = factory/inj106ul9gd8vf0rdhs7gvul4e5eqju8uyr62twp6v/BAG -decimals = 6 - -[BAMBOO] -peggy_denom = factory/inj144nw6ny28mlwuvhfnh7sv4fcmuxnpjx4pksr0j/bamboo -decimals = 6 - -[BANANA] -peggy_denom = factory/inj1cvte76l69n78avthhz7a73cgs8e29knkquyguh/BANANA -decimals = 6 - -[BAND] -peggy_denom = peggy0xBA11D00c5f74255f56a5E366F4F77f5A186d7f55 -decimals = 18 - -[BAT] -peggy_denom = peggy0x0D8775F648430679A709E98d2b0Cb6250d2887EF -decimals = 18 - -[BAYC] -peggy_denom = bayc -decimals = 18 - -[BB] -peggy_denom = factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/BAMB -decimals = 6 - -[BEAST] -peggy_denom = peggy0xA4426666addBE8c4985377d36683D17FB40c31Be -decimals = 6 - -[BEER] -peggy_denom = factory/inj13y957x4lg74e60s9a47v66kex7mf4ujcqhc6xs/BEER -decimals = 6 - -[BGTC] -peggy_denom = factory/inj1yhvst5tzkn37wnk6mwllvlullexf8jkc2szf7r/BGTC -decimals = 9 - -[BIL] -peggy_denom = factory/inj14cxwqv9rt0hvmvmfawts8v6dvq6p26q0lkuajv/BIL -decimals = 6 - -[BINJ] -peggy_denom = factory/inj10q36ygr0pkz7ezajcnjd2f0tat5n737yg6g6d5/binj -decimals = 18 - -[BITS] -peggy_denom = factory/inj10gcvfpnn4932kzk56h5kp77mrfdqas8z63qr7n/BITS -decimals = 6 - -[BK] -peggy_denom = factory/inj1pzwl6turgp49akhkxjynj77z9pd6x7zf2zmazz/bk -decimals = 6 - -[BLA] -peggy_denom = factory/inj1z6sccypszye9qke2w35m3ptmj7c4tjr2amedyf/blabla -decimals = 0 - -[BLACK] -peggy_denom = factory/inj16eckaf75gcu9uxdglyvmh63k9t0l7chd0qmu85/black -decimals = 6 - -[BLOCK] -peggy_denom = factory/inj1l32h3fua32wy7r7zwhddevan8lxwkseh4xz43w/BLOCKEATER -decimals = 18 - -[BMAN] -peggy_denom = factory/inj18zctja65nd5xlre0lzurwc63mgw7xn6p2fehxv/BMAN -decimals = 6 - -[BMOS] -peggy_denom = ibc/D9353C3B1407A7F7FE0A5CCB7D06249B57337888C95C6648AEAF2C83F4F3074E -decimals = 6 - -[BNB] -peggy_denom = peggy0xB8c77482e45F1F44dE1745F52C74426C631bDD52 -decimals = 18 - -[BOB] -peggy_denom = factory/inj1znqs22whsfqvd3503ehv2a40zhmcr3u7k5xu8d/BOB -decimals = 6 - -[BODEN] -peggy_denom = boden -decimals = 9 - -[BOME] -peggy_denom = factory/inj1zghufuvlx8wkt233k7r25um2c0y8zzqx2hpx7e/BOME -decimals = 6 - -[BONJO] -peggy_denom = factory/inj1r35twz3smeeycsn4ugnd3w0l5h2lxe44ptuu4w/bonjo -decimals = 6 - -[BONK] -peggy_denom = inj14rry9q6dym3dgcwzq79yay0e9azdz55jr465ch -decimals = 5 - -[BONK2] -peggy_denom = factory/inj1yxyprnlhyupl2lmpwsjhnux70uz8d5rgqussvc/bonk -decimals = 6 - -[BONUS] -peggy_denom = ibc/DCF43489B9438BB7E462F1A1AD38C7898DF7F49649F9CC8FEBFC533A1192F3EF -decimals = 8 - -[BOYS] -peggy_denom = factory/inj1q4z7jjxdk7whwmkt39x7krc49xaqapuswhjhkn/BOYS -decimals = 6 - -[BRETT] -peggy_denom = factory/inj13jjdsa953w03dvecsr43dj5r6a2vzt7n0spncv/brett -decimals = 6 - -[BRZ] -peggy_denom = inj14jesa4q248mfxztfc9zgpswkpa4wx249mya9kk -decimals = 4 - -[BS] -peggy_denom = factory/inj1kzaaapa8ux4z4lh8stm6vv9c5ykhtwl84zxrtl/ak -decimals = 6 - -[BSKT] -peggy_denom = inj193340xxv49hkug7r65xzc0l40tze44pee4fj94 -decimals = 5 - -[BTC] -peggy_denom = btc -decimals = 8 - -[BTYC] -peggy_denom = factory/inj194xa09lu46jw2cmje3v4zngfgdhxtp5tdlhh20/BTYC -decimals = 9 - -[BUIDL] -peggy_denom = buidl -decimals = 6 - -[BUKET] -peggy_denom = factory/inj1x8v44tuhlfk8f64j4vehftwggfzdjtthmeddwm/buket -decimals = 7 - -[BULLS] -peggy_denom = factory/inj1zq37mfquqgud2uqemqdkyv36gdstkxl27pj5e3/bulls -decimals = 6 - -[BUSD] -peggy_denom = peggy0x4Fabb145d64652a948d72533023f6E7A623C7C53 -decimals = 18 - -[Baa] -peggy_denom = factory/inj1qn2xqpatt3wagpe0gkjzaf3lwsm8eyjxfx8xwg/Baa -decimals = 9 - -[Babykira] -peggy_denom = factory/inj15jeczm4mqwtc9lk4c0cyynndud32mqd4m9xnmu/$babykira -decimals = 6 - -[BadKid] -peggy_denom = factory/inj12cpkhwet3sv7ykwfusryk9zk8cj6kscjh08570/BadKid -decimals = 6 - -[Basket] -peggy_denom = peggy0xbC0899E527007f1B8Ced694508FCb7a2b9a46F53 -decimals = 5 - -[Bird INJ] -peggy_denom = factory/inj125hcdvz9dnhdqal2u8ctr7l0hd8xy9wdgzt8ld/binj -decimals = 6 - -[BitSong] -peggy_denom = peggy0x05079687D35b93538cbd59fe5596380cae9054A9 -decimals = 18 - -[BnW] -peggy_denom = factory/inj188t9lmw8fh22x0np5wuf4zcz4ew748erz3s8ay/BnW -decimals = 6 - -[Bnana] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/banana -decimals = 18 - -[Bonjo] -peggy_denom = inj19w5lfwk6k9q2d8kxnwsu4962ljnay85f9sgwn6 -decimals = 18 - -[Brazilian Digital Token] -peggy_denom = peggy0x420412E765BFa6d85aaaC94b4f7b708C89be2e2B -decimals = 4 - -[CAD] -peggy_denom = cad -decimals = 6 - -[CANTO] -peggy_denom = ibc/D91A2C4EE7CD86BBAFCE0FA44A60DDD9AFBB7EEB5B2D46C0984DEBCC6FEDFAE8 -decimals = 18 - -[CAT] -peggy_denom = factory/inj1r5pxuhg6nz5puchgm8gx63whwn7jx0y0zsqp9w/CAT -decimals = 18 - -[CDT] -peggy_denom = factory/inj1z6sccypszye9qke2w35m3ptmj7c4tjr2amedyf/chinhsieudeptrai -decimals = 0 - -[CEL] -peggy_denom = peggy0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d -decimals = 4 - -[CELL] -peggy_denom = peggy0x26c8AFBBFE1EBaca03C2bB082E69D0476Bffe099 -decimals = 18 - -[CHELE] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/CHELE -decimals = 6 - -[CHINH] -peggy_denom = factory/inj1z6sccypszye9qke2w35m3ptmj7c4tjr2amedyf/123 -decimals = 0 - -[CHUT] -peggy_denom = factory/inj1gnflymetxrlfng7wc7yh9ejghrwzwhe542mr5l/CHUT -decimals = 6 - -[CHZ] -peggy_denom = peggy0x3506424F91fD33084466F402d5D97f05F8e3b4AF -decimals = 18 - -[CHZlegacy] -peggy_denom = inj1q6kpxy6ar5lkxqudjvryarrrttmakwsvzkvcyh -decimals = 8 - -[CLON] -peggy_denom = ibc/695B1D16DE4D0FD293E6B79451640974080B59AA60942974C1CC906568DED795 -decimals = 6 - -[CNR] -peggy_denom = factory/inj1qn3xnr49n0sw8h3v4h7udq5htl8lsfj2e0e8hw/CNR -decimals = 6 - -[COCK] -peggy_denom = factory/inj1eucxlpy6c387g5wrn4ee7ppshdzg3rh4t50ahf/cock -decimals = 6 - -[COCKOC] -peggy_denom = factory/inj1f595c8ml3sfvey4cd85j9f4ur02mymz87huu78/COCKOC -decimals = 6 - -[COKE] -peggy_denom = factory/inj158g7dfclyg9rr6u4ddxg9d2afwevq5d79g2tm6/coke -decimals = 6 - -[COMP] -peggy_denom = peggy0xc00e94Cb662C3520282E6f5717214004A7f26888 -decimals = 18 - -[COOK] -peggy_denom = factory/inj19zee9dacv8pw6jyax0jyytt06nln6ued0c6xxr/cook -decimals = 6 - -[CPS] -peggy_denom = factory/inj1wn45x52wm3sghe7qjp9hwhge9cuk632u2a4xl0/CPS -decimals = 6 - -[CRE] -peggy_denom = ibc/3A6DD3358D9F7ADD18CDE79BA10B400511A5DE4AE2C037D7C9639B52ADAF35C6 -decimals = 6 - -[CRSP] -peggy_denom = factory/inj18jvnp6shjm30l2kw30u5w7tsh6y7v4yuux8ydv/CRSP -decimals = 6 - -[CRSRL] -peggy_denom = factory/inj1mcwzdmtfvccrec9nd9qfsq0p6u25d7rcupcmf8/cruiser-legend -decimals = 6 - -[CRV] -peggy_denom = crv -decimals = 18 - -[CRY] -peggy_denom = factory/inj170545298c6cletkgqxlsanyh36uvxuceudt3e2/crystal -decimals = 6 - -[CSDT] -peggy_denom = factory/inj1z6sccypszye9qke2w35m3ptmj7c4tjr2amedyf/chinhdeptrai -decimals = 0 - -[CSM] -peggy_denom = factory/inj1ckddr5lfwjvm2lvtzra0ftx7066seqr3navva0/CSM -decimals = 6 - -[CSSSS] -peggy_denom = factory/inj1rwpsgl0y7q9t2t6vkphz3ajxe3m249rydkzuyx/CSSSS -decimals = 6 - -[CUONGPRO] -peggy_denom = factory/inj1z6sccypszye9qke2w35m3ptmj7c4tjr2amedyf/cuongpro1234 -decimals = 0 - -[CVR] -peggy_denom = peggy0x3c03b4ec9477809072ff9cc9292c9b25d4a8e6c6 -decimals = 18 - -[CW20:TERRA167DSQKH2ALURX997WMYCW9YDKYU54GYSWE3YGMRS4LWUME3VMWKS8RUQNV] -peggy_denom = ibc/53F48DC0479065C7BFFDC8D612A45EE90B28E4876405164C4CC7300661D8463D -decimals = 0 - -[CW20:TERRA1MCCMZMCXT6CTQF94QHHCWT79SPL0XZ27ULUVYEH232WCPDN6SJYQMDFXD4] -peggy_denom = ibc/599367B1633AB9A8F8BC5A5BA6A9B533EDE655B85D46F9A00A53E5FF68E25E57 -decimals = 0 - -[CXLD] -peggy_denom = factory/inj1gsvgj44zjlj6w890a7huedymh7v96sv839pwsv/CXLD -decimals = 6 - -[Cosmos] -peggy_denom = ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9 -decimals = 6 - -[D3RD] -peggy_denom = factory/inj1kw7xh603l8gghvr955a5752ywph5uhnmuyv7gy/D3RD -decimals = 6 - -[D5R] -peggy_denom = factory/inj14enjlt4059hmyswmrhch74n2pgsp5p6gvca9q9/D5R -decimals = 9 - -[DAI] -peggy_denom = peggy0x6B175474E89094C44Da98b954EedeAC495271d0F -decimals = 18 - -[DAO] -peggy_denom = factory/inj13vkxa9aku6vy8gy6thtvv9xv7l3ut8x3hnnevf/DAOC -decimals = 6 - -[DD] -peggy_denom = factory/inj1gyxrvcdvjr22l5fu43ng4c607nxpc8yuxslcv3/dingdong -decimals = 6 - -[DDL] -peggy_denom = factory/inj1put8lfpkwm47tqcl9fgh8grz987mezvrx4arls/DDL -decimals = 6 - -[DDLTEST] -peggy_denom = factory/inj1dskr075p0ktts987r8h3jxcjce6h73flvmm8a4/DDLTest -decimals = 6 - -[DDLTESTTWO] -peggy_denom = factory/inj1dskr075p0ktts987r8h3jxcjce6h73flvmm8a4/DDLTESTTWO -decimals = 6 - -[DEFI5] -peggy_denom = peggy0xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41 -decimals = 18 - -[DEGEN] -peggy_denom = factory/inj1zn8qlkjautjt3mvr7xwuvpe6eddqt5w3mak5s7/DEGEN -decimals = 6 - -[DEL] -peggy_denom = factory/inj1p2gs94exz0u2rwyg2sccxlpyfdyymp8k2ej7qa/DEL -decimals = 6 - -[DEMO] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/demo -decimals = 18 - -[DGNZ] -peggy_denom = factory/inj1l2kcs4yxsxe0c87qy4ejmvkgegvjf0hkyhqk59/dgnz -decimals = 6 - -[DGNZZ] -peggy_denom = factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/dgnzz -decimals = 0 - -[DGNZZZZ] -peggy_denom = factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/DGNZZZZ -decimals = 6 - -[DGZN] -peggy_denom = factory/inj1rjfu66szrqkw6mua8mxrruyjym0fj65j7y8ukz/DGZN -decimals = 6 - -[DICES] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/dices -decimals = 6 - -[DICK] -peggy_denom = factory/inj1r35twz3smeeycsn4ugnd3w0l5h2lxe44ptuu4w/DICK -decimals = 6 - -[DISC] -peggy_denom = factory/inj1prp8jk9fvxjzdgv8n2qlgrdfgxpq7t6k6rkmc7/DISC -decimals = 6 - -[DJN] -peggy_denom = factory/inj19hvtll63gdk7226lcgdthd8w6vkwvy2lygd54s/djn -decimals = 6 - -[DOGE] -peggy_denom = doge -decimals = 8 - -[DOGGO] -peggy_denom = factory/inj1a4qjk3ytal0alrq566zy6z7vjv6tgrgg0h7wu9/DOGGO -decimals = 0 - -[DOGGOS] -peggy_denom = factory/inj1a4qjk3ytal0alrq566zy6z7vjv6tgrgg0h7wu9/DOGGOS -decimals = 6 - -[DOJ] -peggy_denom = factory/inj172ccd0gddgz203e4pf86ype7zjx573tn8g0df9/doj -decimals = 6 - -[DOJE] -peggy_denom = factory/inj12e00ptda26wr4257jk8xktasjf5qrz97e76st2/doje -decimals = 6 - -[DOJO] -peggy_denom = factory/inj1any4rpwq7r850u6feajg5payvhwpunu9cxqevc/dojo -decimals = 6 - -[DOT] -peggy_denom = ibc/624BA9DD171915A2B9EA70F69638B2CEA179959850C1A586F6C485498F29EDD4 -decimals = 10 - -[DREAM] -peggy_denom = factory/inj1l2kcs4yxsxe0c87qy4ejmvkgegvjf0hkyhqk59/dream -decimals = 6 - -[DROGO] -peggy_denom = ibc/565FE65B82C091F8BAD1379FA1B4560C036C07913355ED4BD8D156DA63F43712 -decimals = 6 - -[DUCK] -peggy_denom = factory/inj12vqaz34lk6s7jrtgnhcd53ffya8vrx67m7cev2/DUCK -decimals = 6 - -[DUDE] -peggy_denom = factory/inj1sn34edy635nv4yhts3khgpy5qxw8uey6wvzq53/dude -decimals = 6 - -[DUNE] -peggy_denom = factory/inj1zg54atp2u4f69fqjyxxx2v8pkzkrw47e3f6akr/DUNE -decimals = 6 - -[DV] -peggy_denom = factory/inj1sf4jk2ku0syp7x6lns8dau73sc2grtqpf3try5/dv -decimals = 6 - -[DZZY] -peggy_denom = factory/inj1nmdqvm2vcxtzal44f62hcv9sthsaunupdpuxlg/DZZY -decimals = 6 - -[Denz] -peggy_denom = factory/inj1geky3rlgv7ycg8hnf8dzj475c0zmdkqstk9k37/Denz -decimals = 6 - -[Dojo Token] -peggy_denom = inj1zdj9kqnknztl2xclm5ssv25yre09f8908d4923 -decimals = 18 - -[ELON] -peggy_denom = inj10pqutl0av9ltrw9jq8d3wjwjayvz76jhfcfza0 -decimals = 6 - -[ENA] -peggy_denom = peggy0x57e114b691db790c35207b2e685d4a43181e6061 -decimals = 18 - -[ENJ] -peggy_denom = peggy0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c -decimals = 18 - -[ERIC] -peggy_denom = factory/inj1w7cw5tltax6dx7znehul98gel6yutwuvh44j77/eric -decimals = 6 - -[ERJ] -peggy_denom = factory/inj17v462f55kkuhjhvw7vdcjzd2wdk85yh8js3ug9/ERJ -decimals = 6 - -[ETH] -peggy_denom = eth -decimals = 18 - -[ETHBTCTrend] -peggy_denom = peggy0x6b7f87279982d919Bbf85182DDeAB179B366D8f2 -decimals = 18 - -[EUR] -peggy_denom = eur -decimals = 6 - -[EVAI] -peggy_denom = peggy0x50f09629d0afDF40398a3F317cc676cA9132055c -decimals = 8 - -[EVIINDEX] -peggy_denom = eviindex -decimals = 18 - -[EVMOS] -peggy_denom = ibc/16618B7F7AC551F48C057A13F4CA5503693FBFF507719A85BC6876B8BD75F821 -decimals = 18 - -[EVOI] -peggy_denom = factory/inj14n8f39qdg6t68s5z00t4vczvkcvzlgm6ea5vk5/evoi -decimals = 6 - -[FACTORY/PRYZM15K9S9P0AR0CX27NAYRGK6VMHYEC3LJ7VKRY7RX/UUSDSIM] -peggy_denom = ibc/6653E89983FE4CAE0DF67DF2257451B396D413431F583306E26DC6D7949CE648 -decimals = 0 - -[FAMILY] -peggy_denom = factory/inj175n4kj6va8yejh7w35t5v5f5gfm6ecyasgjnn9/FAMILY -decimals = 6 - -[FET] -peggy_denom = ibc/C1D3666F27EA64209584F18BC79648E0C1783BB6EEC04A8060E4A8E9881C841B -decimals = 18 - -[FGDE] -peggy_denom = factory/inj1fukyda4ggze28p5eargxushyq7973kxgezn5hj/fgdekghk -decimals = 6 - -[FGFGGW] -peggy_denom = factory/inj1p83xm4qnhww3twkcff3wdu6hgjn534j9jdry9d/FGFGGW -decimals = 6 - -[FIO] -peggy_denom = factory/inj133xeq92ak7p87hntvamgq3047kj8jfqhry92a8/FIO -decimals = 6 - -[FLG] -peggy_denom = factory/inj183k33z778ymd6lcjwa4nrjagnksxztzu37tsfe/FLG -decimals = 9 - -[FLG1] -peggy_denom = factory/inj10rtql872pq2lzhmv9sgpvjkdxxlj9zseeep8rh/FLG1 -decimals = 9 - -[FNLS] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/TheFinals -decimals = 6 - -[FTM] -peggy_denom = peggy0x4E15361FD6b4BB609Fa63C81A2be19d873717870 -decimals = 18 - -[FTTOKEN] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/FTTOKEN -decimals = 6 - -[FUN] -peggy_denom = factory/inj1k6vxjqq7xxdn96ftx9u099su4lxquhuexphfeu/FUN -decimals = 6 - -[FZZY] -peggy_denom = factory/inj1nmdqvm2vcxtzal44f62hcv9sthsaunupdpuxlg/FZZY -decimals = 6 - -[Fetch.ai] -peggy_denom = peggy0xaea46a60368a7bd060eec7df8cba43b7ef41ad85 -decimals = 18 - -[Flm] -peggy_denom = factory/inj17ef2m8f9l8zypef5wxyrrxpdqyq4wd2rfl23d4/Flm -decimals = 6 - -[Fund7] -peggy_denom = factory/inj12vvs4rlxd54r0akenphq9pw286w39teejjanrj/Fund7 -decimals = 9 - -[GALA] -peggy_denom = factory/inj1xtwk60ey0g03s69gfsure0kx8hwwuk24zl0g6l/GALA -decimals = 6 - -[GALAXY] -peggy_denom = factory/inj10zdjt8ylfln5xr3a2ruf9nwn6d5q2d2r3v6mh8/galaxy -decimals = 6 - -[GBP] -peggy_denom = gbp -decimals = 6 - -[GF] -peggy_denom = peggy0xaaef88cea01475125522e117bfe45cf32044e238 -decimals = 18 - -[GFT] -peggy_denom = factory/inj1rw9z8q7l9xgffuu66e6w0eje3y7yvur452rst6/GFT -decimals = 6 - -[GGM] -peggy_denom = factory/inj1yq4dwvnujpr9m8w4m5uq3e8hu0xxnw0eypzr0k/GGM -decimals = 6 - -[GIGA] -peggy_denom = ibc/36C811A2253AA64B58A9B66C537B89348FE5792A8808AAA343082CBFCAA72278 -decimals = 5 - -[GINGER] -peggy_denom = factory/inj172ccd0gddgz203e4pf86ype7zjx573tn8g0df9/ginger -decimals = 6 - -[GLD] -peggy_denom = factory/inj1kgtamley85yj7eeuntz7ctty5wgfla5n6z2t42/gld -decimals = 6 - -[GLTO] -peggy_denom = peggy0xd73175f9eb15eee81745d367ae59309Ca2ceb5e2 -decimals = 6 - -[GME] -peggy_denom = ibc/CAA5AB050F6C3DFE878212A37A4A6D3BEA6670F5B9786FFF7EF2D34213025272 -decimals = 8 - -[GOLD] -peggy_denom = gold -decimals = 18 - -[GOLDIE] -peggy_denom = factory/inj130ayayz6ls8qpmu699axhlg7ygy8u6thjjk9nc/goldie -decimals = 6 - -[GRANJ] -peggy_denom = factory/inj1kprvcvuwkhpt33500guafzf09fr7p9yfklxlls/GRANJ -decimals = 6 - -[GRAY] -peggy_denom = factory/inj1g65a0tv2xl4vpu732k8u6yamq438t0lze8ksdx/GRAY -decimals = 6 - -[GROK] -peggy_denom = factory/inj1vgrf5mcvvg9p5c6jajqefn840nq74wjzgkt30z/grok -decimals = 6 - -[GRT] -peggy_denom = peggy0xc944E90C64B2c07662A292be6244BDf05Cda44a7 -decimals = 18 - -[GTHLI] -peggy_denom = factory/inj1uhxex6xjm6dfzud44ectgpkgfhhyxthmux8vd4/GTHLI -decimals = 6 - -[GYEN] -peggy_denom = peggy0xC08512927D12348F6620a698105e1BAac6EcD911 -decimals = 6 - -[God] -peggy_denom = factory/inj1x45ltvqzanx82wutwdxaayzzu0a7a8q5j3pz2f/God -decimals = 6 - -[HAPPY] -peggy_denom = factory/inj16ydu70t4s6z3lhcjh4aqkdpl9aag8pxve0kdyx/HAPPY -decimals = 6 - -[HDRO] -peggy_denom = factory/inj1etz0laas6h7vemg3qtd67jpr6lh8v7xz7gfzqw/hdro -decimals = 6 - -[HDRO-INJ LP] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1afn8932y6f5v44eguf4tazn5f80uaxz4q603c9 -decimals = 18 - -[HERB] -peggy_denom = factory/inj1mh7efynqjvw3rt2ntty2unmxr6kwaec5g5050y/HERB -decimals = 6 - -[HHH] -peggy_denom = factory/inj15fdtwvzmn0gavesvx5xswdczksf2jh4ct7as2y/HHH -decimals = 9 - -[HILARI1] -peggy_denom = factory/inj1l92lr339wuqnwlvj8w405nu8t297k8ah8f24m3/HILARI1 -decimals = 18 - -[HNY2] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/HNY2 -decimals = 0 - -[HNY3] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/HNY3 -decimals = 0 - -[HS] -peggy_denom = factory/inj1ce9d2lma4tvady03fnsd5nck54xhfeazks0y8d/hs -decimals = 6 - -[HS1] -peggy_denom = factory/inj1qqpse7e9gqd3eersazra7z86gusm74tks6x787/HS1 -decimals = 9 - -[HS2] -peggy_denom = factory/inj1eprg7k96d67q3nk69kjfrk3kf6u0exxv4qya28/HS2 -decimals = 9 - -[HS3] -peggy_denom = factory/inj1nlud6jqvmkppqn2jk2cshqn5gcfhnqrcy9df9k/HS3 -decimals = 9 - -[HSC2UPDATETEST] -peggy_denom = factory/inj1ce9d2lma4tvady03fnsd5nck54xhfeazks0y8d/hs2 -decimals = 6 - -[HSen] -peggy_denom = factory/inj1u700lxt7wfzpjxtdprjrfq0q0yz2cr9jaaptcv/HSen -decimals = 9 - -[HSen2] -peggy_denom = factory/inj1mh9304vtvv0pfe4uznv0c7adx2d4q4samngffh/HSen2 -decimals = 9 - -[HT] -peggy_denom = peggy0x6f259637dcD74C767781E37Bc6133cd6A68aa161 -decimals = 18 - -[HUAHUA] -peggy_denom = ibc/E7807A46C0B7B44B350DA58F51F278881B863EC4DCA94635DAB39E52C30766CB -decimals = 6 - -[Hakmer] -peggy_denom = factory/inj1579jgr5gkv2h6z6wfwsmff2xvpuf4seyzx0xtn/Hakmer -decimals = 6 - -[Hallo123] -peggy_denom = factory/inj17ljxhz0c7tdcjfzhnk3xgk3mfudtcjs2g3676l/hallo123 -decimals = 6 - -[Han] -peggy_denom = factory/inj1plrds0grtjapckk9etk2wn2en475q4gs0hux5s/Han -decimals = 9 - -[HarryPotterEricNinjaKiraInj10Inu] -peggy_denom = factory/inj1a4zfxyanjr2u4w0063rmm9fcuyj9ts64ztkxex/HarryPotterEricNinjaKiraInj10Inu -decimals = 6 - -[HarryPotterEricNinjaKiraInj20Inu] -peggy_denom = factory/inj1a4zfxyanjr2u4w0063rmm9fcuyj9ts64ztkxex/HarryPotterEricNinjaKiraInj20Inu -decimals = 6 - -[HarryPotterEricNinjaKiraInj30Inu] -peggy_denom = factory/inj1a4zfxyanjr2u4w0063rmm9fcuyj9ts64ztkxex/HarryPotterEricNinjaKiraInj30Inu -decimals = 6 - -[Hue] -peggy_denom = factory/inj176w059tfx4agt8xny9sdw2z5mwqa7gquccjsx8/Hue -decimals = 9 - -[Hydro] -peggy_denom = factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/hdro -decimals = 6 - -[Hydro Wrapped INJ] -peggy_denom = inj18luqttqyckgpddndh8hvaq25d5nfwjc78m56lc -decimals = 18 - -[IBJ] -peggy_denom = factory/inj1czcqn0a8s0zud72p9zpfrkduljp0hhjjt927fe/IBJ -decimals = 6 - -[IDOGE] -peggy_denom = factory/inj1kezz4smdtr3t0v49d5qyt3ksd2emc594p7ftsx/IDOGE -decimals = 6 - -[IIN] -peggy_denom = factory/inj1aeruvw7e4e90uqlegv52ttjtjdr60ndh2p5krq/IIN -decimals = 6 - -[IJTBOBI] -peggy_denom = factory/inj1s04p0wztwl823lwcnkdstd3xp3n30a8hhel2jf/ijtbobi -decimals = 6 - -[IK] -peggy_denom = factory/inj1axtwu6xh6hzpayy7mm9qwyggp5adtjnnj6tmkj/injscribedtoken -decimals = 6 - -[IKINGS] -peggy_denom = factory/inj1mt876zny9j6xae25h7hl7zuqf7gkx8q63k0426/ikings -decimals = 6 - -[ILEND] -peggy_denom = factory/inj19ae4ukagwrlprva55q9skskunv5ve7sr6myx7z/ilend-test-subdenom -decimals = 6 - -[ILL] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/ill -decimals = 0 - -[INC] -peggy_denom = factory/inj1nu7ftngqhuz6vazjj4wravdlweutam82rkt7j2/INC -decimals = 6 - -[INCEL] -peggy_denom = factory/inj17g4j3geupy762u0wrewqwprvtzar7k5et2zqsh/incel -decimals = 6 - -[IND] -peggy_denom = factory/inj1j0t7zeafazz33xx22a62esvghcyxwzzxeshv2z/IND -decimals = 6 - -[ING] -peggy_denom = factory/inj18x8g8gkc3kch72wtkh46a926634m784m3wnj50/ING -decimals = 6 - -[INJ] -peggy_denom = inj -decimals = 18 - -[INJ-USDT LP] -peggy_denom = factory//lpinj147dmmltelpvkjcfneg5r4q66glhe2rmr2hmm59 -decimals = 18 - -[INJ-USDT-PERP LP] -peggy_denom = factory//lpinj1v4s3v3nmsx6szyxqgcnqdfseucu4ccm65sh0xr -decimals = 18 - -[INJAmanullahTest1] -peggy_denom = factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/INJAmanullahTest1 -decimals = 6 - -[INJBR] -peggy_denom = factory/inj1sn6u0472ds6v8x2x482gqqc36g0lz28uhq660v/INJBR -decimals = 6 - -[INJECT] -peggy_denom = factory/inj1j7zt6g03vpmg9p7g7qngvylfxqeuds73utsjnk/inject -decimals = 6 - -[INJER] -peggy_denom = factory/inj1sjmplasxl9zgj6yh45j3ndskgdhcfcss9djkdn/injer -decimals = 6 - -[INJF] -peggy_denom = factory/inj190nefqygs79s3cpvgjzhf7w9d7pzkag4u7cdce/INJF -decimals = 18 - -[INJINU] -peggy_denom = factory/inj1vjppa6h9lf75pt0v6qnxtej4xcl0qevnxzcrvm/injinu -decimals = 6 - -[INJKT] -peggy_denom = factory/inj19q4vqa9hxrnys04hc2se8axp5qkxf2u9qthewk/INJKT -decimals = 6 - -[INJOKI] -peggy_denom = factory/inj1rmjd5fdldnyfm62zx2v3q27eemqvq6x5ktae4f/INJOKI -decimals = 6 - -[INJPEPE] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/injpepe -decimals = 6 - -[INJS] -peggy_denom = factory/inj15jy9vzmyy63ql9y6dvned2kdat2994x5f4ldu4/injs -decimals = 6 - -[INJSTKN] -peggy_denom = factory/inj1xx25yhe9ma0zy4ewyd0js8f4pm869gdek4g27j/injstkn -decimals = 6 - -[INJTEST] -peggy_denom = factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test -decimals = 6 - -[INJTEST2] -peggy_denom = factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test2 -decimals = 0 - -[INJTESTE] -peggy_denom = factory/inj1dskr075p0ktts987r8h3jxcjce6h73flvmm8a4/Injteste -decimals = 6 - -[INJX] -peggy_denom = factory/inj104h3hchl7ws8lp78zpvrunvsjdwfjc02r5d0fp/injx -decimals = 6 - -[INJbsc] -peggy_denom = inj1xcgprh58szttp0vqtztvcfy34tkpupr563ua40 -decimals = 18 - -[INJet] -peggy_denom = inj1v8gg4wzfauwf9l7895t0eyrrkwe65vh5n7dqmw -decimals = 18 - -[INO] -peggy_denom = factory/inj1fyanjlzhkcenneulrdjmuumc9njvzr08wxr4f6/INO -decimals = 6 - -[IOTX] -peggy_denom = peggy0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69 -decimals = 18 - -[IPDAI] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/ipdai -decimals = 6 - -[IPEPE] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/ipepe -decimals = 6 - -[IPandaAI] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/ipandaai -decimals = 6 - -[IPanther] -peggy_denom = factory/inj1rmjd5fdldnyfm62zx2v3q27eemqvq6x5ktae4f/InjectivePanther -decimals = 6 - -[IPantherN] -peggy_denom = factory/inj1rmjd5fdldnyfm62zx2v3q27eemqvq6x5ktae4f/injectivepanthernew -decimals = 6 - -[IPrint] -peggy_denom = factory/inj1rmjd5fdldnyfm62zx2v3q27eemqvq6x5ktae4f/InjectivePrinter -decimals = 6 - -[ITT] -peggy_denom = factory/inj1dskr075p0ktts987r8h3jxcjce6h73flvmm8a4/injtesttwo -decimals = 6 - -[ITTT] -peggy_denom = factory/inj1lypqwz349za88um0m4ltjhgf8q6q8p4y93pv6p/injectively-test-token -decimals = 6 - -[IUSD] -peggy_denom = factory/inj16020qlmmat0uwgjrj2nrcn3kglk6scj3e99uye/iusd -decimals = 6 - -[Inj] -peggy_denom = factory/inj1jcwlfkq76gvljfth56jjl360nxkzx8dlv6fjzr/Inj -decimals = 6 - -[InjDoge] -peggy_denom = factory/inj1rmjd5fdldnyfm62zx2v3q27eemqvq6x5ktae4f/InjDoge -decimals = 6 - -[Injective] -peggy_denom = peggy0x5512c04B6FF813f3571bDF64A1d74c98B5257332 -decimals = 18 - -[Injective Panda] -peggy_denom = factory/inj183lz632dna57ayuf6unqph5d0v2u655h2jzzyy/bamboo -decimals = 6 - -[Internet Explorer] -peggy_denom = factory/inj1zhevrrwywg3az9ulxd9u233eyy4m2mmr6vegsg/ninjb -decimals = 6 - -[J7J5] -peggy_denom = factory/inj1pvt70tt7epjudnurkqlxu62flfgy46j2ytj7j5/J7J5 -decimals = 6 - -[JCLUB] -peggy_denom = factory/inj12lhhu0hpszdq5wmt630wcspdxyewz3x2m04khh/JCLUB -decimals = 6 - -[JJJJ] -peggy_denom = factory/inj1eg83yq85cld5ngh2vynqlzmnzdplsallqrmlyd/JJJJ -decimals = 6 - -[JNI] -peggy_denom = factory/inj1q9mjtmhydvepcszp552lwyez52y7npjcvntprg/jni -decimals = 18 - -[JNI2] -peggy_denom = factory/inj19yes8qp3x2cz8y2kuyp70nvhe4nugdxaj4k5g3/jni2 -decimals = 0 - -[JNI3] -peggy_denom = factory/inj19yes8qp3x2cz8y2kuyp70nvhe4nugdxaj4k5g3/jni3 -decimals = 18 - -[JNI4] -peggy_denom = factory/inj19yes8qp3x2cz8y2kuyp70nvhe4nugdxaj4k5g3/jni4 -decimals = 18 - -[JNI5] -peggy_denom = factory/inj19yes8qp3x2cz8y2kuyp70nvhe4nugdxaj4k5g3/jni5 -decimals = 18 - -[JPY] -peggy_denom = jpy -decimals = 6 - -[JUL] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/JUL -decimals = 6 - -[JUNO] -peggy_denom = ibc/D50E26996253EBAA8C684B9CD653FE2F7665D7BDDCA3D48D5E1378CF6334F211 -decimals = 6 - -[JUP] -peggy_denom = jup -decimals = 6 - -[JUSSY] -peggy_denom = factory/inj125a0l6yk05z3jwvjfjh78tlkjm4kn6ndduxjnk/INJUSSY -decimals = 6 - -[Jet] -peggy_denom = factory/inj18r765lvc3pf975cx0k3derdxl302trjjnpwjgf/Jet -decimals = 6 - -[KAGE] -peggy_denom = inj1l49685vnk88zfw2egf6v65se7trw2497wsqk65 -decimals = 18 - -[KARATE] -peggy_denom = factory/inj1898t0vtmul3tcn3t0v8qe3pat47ca937jkpezv/karate -decimals = 6 - -[KARMA] -peggy_denom = factory/inj1d4ld9w7mf8wjyv5y7fnhpate07fguv3s3tmngm/karma -decimals = 6 - -[KATANA] -peggy_denom = factory/inj1vwn4x08hlactxj3y3kuqddafs2hhqzapruwt87/katana -decimals = 6 - -[KAVA] -peggy_denom = ibc/57AA1A70A4BC9769C525EBF6386F7A21536E04A79D62E1981EFCEF9428EBB205 -decimals = 6 - -[KELON] -peggy_denom = factory/inj1fdd59gyrtfkn7cflupyqqcj0t5c4whj0dzhead/KELON -decimals = 6 - -[KEN] -peggy_denom = factory/inj1ht6d6axu5u4g24zephnc48ee585e2vge8czkzn/ken -decimals = 6 - -[KFF] -peggy_denom = factory/inj10uen9k593sll79n9egwh80t09enk7gsaqqehuh/KFN -decimals = 6 - -[KGM1] -peggy_denom = factory/inj12yazr8lq5ptlz2qj9y36v8zwmz90gy9gh35026/inj-test1 -decimals = 6 - -[KIA] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/KIA -decimals = 18 - -[KIKI] -peggy_denom = factory/inj1yc9tdwkff6fdhseshk2qe4737hysf3dv0jkq35/kiki -decimals = 6 - -[KING] -peggy_denom = factory/inj156zqdswjfcttc8hrvwd5z3nv5n53l5xg9mqvht/KING -decimals = 6 - -[KINJA] -peggy_denom = factory/inj1h33jkaqqalcy3wf8um6ewk4hxmfwf8uern470k/kinja -decimals = 6 - -[KIRA] -peggy_denom = factory/inj14ejqjyq8um4p3xfqj74yld5waqljf88f9eneuk/kira -decimals = 6 - -[KISH6] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/KISH6 -decimals = 6 - -[KISHN1] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/KISHN1 -decimals = 18 - -[KIWI] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/KIWI -decimals = 18 - -[KIWI-INJ LP] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1x9k567g0tmpamjkemvm703ff6kczjvz2nany2u -decimals = 18 - -[KNG] -peggy_denom = factory/inj1ht6d6axu5u4g24zephnc48ee585e2vge8czkzn/kennethii -decimals = 6 - -[KPEPE] -peggy_denom = kpepe -decimals = 18 - -[KRA] -peggy_denom = factory/inj1leuc4h7w5seyw4mc58xk6qtn2dm23hj79sdca9/korra -decimals = 6 - -[KRI] -peggy_denom = factory/inj17z0plmzyrz4zrrfaps99egwqk4xk6kpq4728xg/kril-test -decimals = 6 - -[KUJI] -peggy_denom = ibc/9A115B56E769B92621FFF90567E2D60EFD146E86E867491DB69EEDA9ADC36204 -decimals = 6 - -[KUSD] -peggy_denom = factory/inj1xmc078w8gv42v99a5mctsm2e4pldvu7jtd08ym/kusd -decimals = 6 - -[Koncga] -peggy_denom = factory/inj1hr4rj6k72emjh9u7l6zg58c0n0daezz68060aq/Koncga -decimals = 6 - -[LABS] -peggy_denom = factory/inj1eutzkvh4gf5vvmxusdwl2t6gprux67d4acwc0p/labs -decimals = 6 - -[LADY] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/LADY -decimals = 18 - -[LAHN] -peggy_denom = factory/inj133xeq92ak7p87hntvamgq3047kj8jfqhry92a8/LAHN -decimals = 6 - -[LAMA] -peggy_denom = factory/inj18lh8zx4hx0pyksyu74srktv4vgxskkkafknggl/LAMA -decimals = 6 - -[LAMA2] -peggy_denom = factory/inj13s8gyvm86p7tfcv6zcx5sjqgx4ruwfz8vy3hnm/LAMA2 -decimals = 6 - -[LAMBO] -peggy_denom = peggy0x3d2b66BC4f9D6388BD2d97B95b565BE1686aEfB3 -decimals = 18 - -[LCK] -peggy_denom = factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/lck -decimals = 18 - -[LDO] -peggy_denom = inj1me6t602jlndzxgv2d7ekcnkjuqdp7vfh4txpyy -decimals = 8 - -[LEO] -peggy_denom = factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/LEO -decimals = 6 - -[LILI] -peggy_denom = factory/inj14l2vccns668jq3gp0hgwl5lcpatx9nqq3m7wyy/LILI -decimals = 8 - -[LINK] -peggy_denom = peggy0x514910771AF9Ca656af840dff83E8264EcF986CA -decimals = 18 - -[LIOR] -peggy_denom = factory/inj1cjus5ragdkvpmt627fw7wkj2ydsra9s0vap4zx/lior -decimals = 6 - -[LOKI] -peggy_denom = ibc/49FFD5EA91774117260257E30924738A5A1ECBD00ABDBF0AF3FD51A63AE752CD -decimals = 0 - -[LOL] -peggy_denom = factory/inj19zqaa78d67xmzxp3e693n3zxwpc5fq587s2lyh/LOL -decimals = 6 - -[LUNA] -peggy_denom = ibc/B8AF5D92165F35AB31F3FC7C7B444B9D240760FA5D406C49D24862BD0284E395 -decimals = 6 - -[LVN] -peggy_denom = ibc/4971C5E4786D5995EC7EF894FCFA9CF2E127E95D5D53A982F6A062F3F410EDB8 -decimals = 6 - -[LYM] -peggy_denom = peggy0xc690f7c7fcffa6a82b79fab7508c466fefdfc8c5 -decimals = 18 - -[Lenz] -peggy_denom = factory/inj19xadglv3eaaavaeur5553hjj99c3vtkajhj4r6/Lenz -decimals = 6 - -[LenzTest] -peggy_denom = factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/LenzTest -decimals = 6 - -[LenzTestingTestnetFinal] -peggy_denom = factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/LenzTestingTestnetFinal -decimals = 6 - -[LenzToken] -peggy_denom = factory/inj1qkfk75uastafdvnphj95drkkuqsf0ct42k3grf/LenzToken -decimals = 6 - -[LenzTokenFinalTest] -peggy_denom = factory/inj1qkfk75uastafdvnphj95drkkuqsf0ct42k3grf/LenzTokenFinalTest -decimals = 6 - -[Lido DAO Token] -peggy_denom = peggy0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32 -decimals = 18 - -[MADRA] -peggy_denom = factory/inj1n85jfpxee430qavn9edlkup9kny7aszarag8ed/MADAFAKA -decimals = 18 - -[MAGA] -peggy_denom = peggy0x576e2BeD8F7b46D34016198911Cdf9886f78bea7 -decimals = 9 - -[MAN] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/MAN -decimals = 6 - -[MATIC] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/matic -decimals = 18 - -[MBIST] -peggy_denom = factory/inj1gsvgj44zjlj6w890a7huedymh7v96sv839pwsv/MBIST -decimals = 6 - -[MBS] -peggy_denom = factory/inj1wazq0k74kqmll9kzzhy300tc7slxn4t2py2pz9/mysubdenom -decimals = 6 - -[MCN] -peggy_denom = factory/inj1cg3ufnnh7cdj9mnxc5dpvzufcrtckqqec0y5dp/mcn -decimals = 6 - -[MCN1] -peggy_denom = factory/inj1cg3ufnnh7cdj9mnxc5dpvzufcrtckqqec0y5dp/mcn1 -decimals = 6 - -[MEME] -peggy_denom = factory/inj1y2q2m0j65utqr3sr4fd0lh0httm2dv8z0h6qrk/MEME -decimals = 6 - -[MEMEME] -peggy_denom = peggy0x1A963Df363D01EEBB2816b366d61C917F20e1EbE -decimals = 18 - -[MFT] -peggy_denom = factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/mft -decimals = 6 - -[MFZ] -peggy_denom = factory/inj175n4kj6va8yejh7w35t5v5f5gfm6ecyasgjnn9/MFZ -decimals = 6 - -[MHC] -peggy_denom = factory/inj1wqxweeera42jdgxaj44t9apth40t6q52uhadqv/MHC -decimals = 18 - -[MILA] -peggy_denom = factory/inj1z08usf75ecfp3cqtwey6gx7nr79s3agal3k8xf/mila -decimals = 6 - -[MILK] -peggy_denom = factory/inj1fpl63h7at2epr55yn5svmqkq4fkye32vmxq8ry/milk -decimals = 6 - -[MIRO] -peggy_denom = factory/inj14vn4n9czlvgpjueznux0a9g2xlqzmrzm4xyl4s/MIRO -decimals = 6 - -[MITHU] -peggy_denom = factory/inj1n50p90fllw0pae3663v6hqagwst063u3m2eczf/MITHU -decimals = 6 - -[MITO-APE-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1druk8gz469vyfgapvnxput8k5wf5vyu30fqryy -decimals = 18 - -[MITO-DEMO-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1t2zqcm98epsmpy99mjzdczzx79cfy74kh2w35l -decimals = 18 - -[MITO-EUR-USDT-PERP] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1qamlsmj22p3zkchgva2ydhegfwz3ls7m5sm7rs -decimals = 18 - -[MITO-FIO-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1qdk7vpgmu3e5lj0cru7yyay38vff34tll789lr -decimals = 18 - -[MITO-GBP-USDT-PERP] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1fgdlfyru0e0fk4tsxtdz6an7vfwz3g82w40qy6 -decimals = 18 - -[MITO-HDRO-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1f77zn4hytk8w6qjtr7ks98m4yq6hwduzk8yvp4 -decimals = 18 - -[MITO-INJ-USDT] -peggy_denom = factory//lpinj13ylj40uqx338u5xtccujxystzy39q08q2gz3dx -decimals = 18 - -[MITO-INJ-USDT-PERP] -peggy_denom = factory//lpinj1pwztvdkju9lcmw68t04n7vt7832s3w9clv59ws -decimals = 18 - -[MITO-KIWI-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1hwgrpwgs70cj7s5uc605jk832d6hlyq2pupw82 -decimals = 18 - -[MITO-LAHN-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1prqzp6q2nlw2984pyvut6fr5jg47kwkzduw8j2 -decimals = 18 - -[MITO-MITOTEST1-INJ] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj15zhsj42y2p990m8j5uh2rym2fmqnalupmwuj9p -decimals = 18 - -[MITO-MT-INJ] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1jdthft9pq8s87n5x65g49z3rv9nqnvpwrjgfz4 -decimals = 18 - -[MITO-NLT-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1a2whf4gfe8c533m7zahs36c7zxpap2khtwvnjj -decimals = 18 - -[MITO-NLT2-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj160wzl4mnzqfxm9ux3mvs46uhqex0d5ewt9p8el -decimals = 18 - -[MITO-NLT3-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1f2zrn6qw5wm27jkdje99538lahmsjy35pzx0zq -decimals = 18 - -[MITO-PROJ-INJ] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj13zf66kwwvmvr20sm5dh39p3x3pkw0ry3jrfus2 -decimals = 18 - -[MITO-PROJX-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1uqehwkl6m9gxjqlsf3yvwu528wtcjs00hyx08z -decimals = 18 - -[MITO-REKT-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj143qfst3qa3u5mqk9rk6f4zjv5syj5eja3mng0g -decimals = 18 - -[MITO-TALIS-INJ] -peggy_denom = factory/inj1k3pnnh5fyjuc6tmmupyp2042cryk59l7nx2pu3/lpinj17dw5ek2829evlwcepftlvv9r53rqmc72akrsdz -decimals = 18 - -[MITO-TALKS1N-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1lw0u2rtl36y9tht0uts90fv5vy3vgpmuel27hc -decimals = 18 - -[MITO-TEST-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1u8j7h7n8tdt66mgp6c0a7f3wq088d3jttwz7sj -decimals = 18 - -[MITO-TEST1-INJ] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1ghzfg2v3jzqe3vrhw4wngs43mscpxx98fpjwga -decimals = 18 - -[MITO-TEST2-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1jtgygvq0ulstx55hwenk4a6uh5tn8vqhkah8gc -decimals = 18 - -[MITO-TEST3-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1xallacw6vz8p88qyrezmcyvkmrakacupkvvfvk -decimals = 18 - -[MITO-TEST4-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1zngkg023f0fqlvpc026rr0pvd4rufw8d4ywke4 -decimals = 18 - -[MITO-TEST5-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1alv0wvzkul2zndjylt9gssqc0qnzztvf5mv52r -decimals = 18 - -[MITO-TRIP-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1t3y9mu0zk5zuu4y34lfxkq8zx08latdxa5cff5 -decimals = 18 - -[MITO-TRIPP-INJ] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj18ax4p09y7k8quhslelkw6ktsj0c4n7dt4r67kf -decimals = 18 - -[MITO-USDC-USDT] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1dlywe8v0t9gv2ceasj6se387ke95env8lyf3j8 -decimals = 18 - -[MITO-USDT-USDC] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj182tjs70u33r7vssc8tfuwwed3x4ggfeutvk0sl -decimals = 18 - -[MITO-WBTC-USDT] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj17lt3vtgtpprn877gyd694hvtgn5p3c3mt6z39l -decimals = 18 - -[MITO-XAU-USDT-PERP] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1xqsp96842fsht7m6p4slvrfhl53wfqft866sc7 -decimals = 18 - -[MITO-ZEN-INJ] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1w9hnzhlq26wdgw3d2gh9fvf3nwnvxe6ff5crdj -decimals = 18 - -[MITO-stINJ-INJ] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj196f5hz8x7laqyfykr6sf6f6qjkna2gd2eqvdcy -decimals = 18 - -[MITOKEN] -peggy_denom = factory/inj100z6tw8f2vs8ntrkd8fj4wj3cd6y9usg8dhpmc/subtoken -decimals = 0 - -[MITOTEST1-INJ LP] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1sngs2wlfynj4y3vtw7pdfn4cm9xr83wc92vys7 -decimals = 18 - -[MJB] -peggy_denom = factory/inj17z0plmzyrz4zrrfaps99egwqk4xk6kpq4728xg/majin-buu-test -decimals = 6 - -[MKR] -peggy_denom = mkr -decimals = 18 - -[MM93] -peggy_denom = factory/inj1gpwhwhmeuk4pu7atg9t30e7jc5ywvc58jpe9kc/MM93 -decimals = 6 - -[MONI] -peggy_denom = factory/inj12ecryjw7km6a9w8lvlrlpqg7csl8ax3lgnav9d/MONI -decimals = 6 - -[MOONIFY] -peggy_denom = factory/inj1ktq0gf7altpsf0l2qzql4sfs0vc0ru75cnj3a6/moonify -decimals = 6 - -[MOONLY] -peggy_denom = factory/inj1lypqwz349za88um0m4ltjhgf8q6q8p4y93pv6p/moonly -decimals = 6 - -[MOR] -peggy_denom = factory/inj1g055dn0qmm9qyrnuaryffqe3hu8qja0qnslx87/MOR_test -decimals = 6 - -[MOTHER] -peggy_denom = ibc/984E90A8E0265B9804B7345C7542BF9B3046978AE5557B4AABADDFE605CACABE -decimals = 6 - -[MPEPE] -peggy_denom = mpepe -decimals = 18 - -[MSTR] -peggy_denom = factory/inj176tn6dtrvak9vrqkj2ejysuy5kctc6nphw7sfz/MSTR -decimals = 6 - -[MT] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/mt -decimals = 6 - -[MT-INJ LP] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1nlhwnpeph9gwlng972j9zjwm8n523hx0n2kaj9 -decimals = 18 - -[MT2] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/mitotest2 -decimals = 6 - -[MTS] -peggy_denom = factory/inj1fvgk4zvph04nwjp4z96etek2uvejq3ehdleqz9/MagicTest -decimals = 6 - -[MYTOKEN] -peggy_denom = factory/inj1ef5ddgx4q83a8mmap2gxsc7w5q5pj6rmfhjaex/Mytoken2 -decimals = 6 - -[MitoTest] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/mitotest1 -decimals = 18 - -[MyINJ] -peggy_denom = factory/inj1ddu9unqz0tfazh3js36q0lr0dnhcql8slm3hkg/inj-test -decimals = 6 - -[MytokenTest1] -peggy_denom = factory/inj1ef5ddgx4q83a8mmap2gxsc7w5q5pj6rmfhjaex/MytokenTest1 -decimals = 6 - -[NAFU] -peggy_denom = factory/inj14e53h3c6fmvxlwrzfaewd5p2x7em787s4kgc8g/NAFU -decimals = 6 - -[NANAS] -peggy_denom = factory/inj1zn8qlkjautjt3mvr7xwuvpe6eddqt5w3mak5s7/NANAS -decimals = 6 - -[NANTA] -peggy_denom = factory/inj12ecryjw7km6a9w8lvlrlpqg7csl8ax3lgnav9d/NANTA -decimals = 6 - -[NBLA] -peggy_denom = factory/inj1d0zfq42409a5mhdagjutl8u6u9rgcm4h8zfmfq/nbla -decimals = 6 - -[NBTC] -peggy_denom = factory/inj1fuvjhkhwn3352gggkfxkyaslh2xkp7zsjvc0r0/NBTC -decimals = 9 - -[NBZ] -peggy_denom = ibc/1011E4D6D4800DA9B8F21D7C207C0B0C18E54E614A8576037F066B775210709D -decimals = 6 - -[NBZAIRDROP] -peggy_denom = factory/inj1llr45x92t7jrqtxvc02gpkcqhqr82dvyzkr4mz/nbzairdrop -decimals = 0 - -[NEOK] -peggy_denom = ibc/F6CC233E5C0EA36B1F74AB1AF98471A2D6A80E2542856639703E908B4D93E7C4 -decimals = 18 - -[NEPT] -peggy_denom = factory/inj166su00ldetxc3mrf6xrkpzg5fdwfz5jpcqufa0/nept -decimals = 6 - -[NEX] -peggy_denom = factory/inj1v5ae8r4ax90k75qk7yavfmsv96grynqwyl0xg6/NEX -decimals = 0 - -[NEXO] -peggy_denom = peggy0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206 -decimals = 18 - -[NINJA] -peggy_denom = factory/inj1xtel2knkt8hmc9dnzpjz6kdmacgcfmlv5f308w/ninja -decimals = 6 - -[NINJB] -peggy_denom = factory/inj1ezzzfm2exjz57hxuc65sl8s3d5y6ee0kxvu67n/ninjb -decimals = 6 - -[NINJI] -peggy_denom = factory/inj1eksclftnrmglhxw7pvjq8wnuhdwn4ykw2nffc2/ninjainu -decimals = 18 - -[NIS] -peggy_denom = factory/inj1qrnmf8dufs4xfln8nmgdqpfn7nvdnz27ntret0/NIS -decimals = 6 - -[NInj] -peggy_denom = factory/inj1kchqyuuk6mnjf4ndqasrswsfngd7jkrpduuyjr/NInj -decimals = 6 - -[NLC] -peggy_denom = inj1r9h59ke0a77zkaarr4tuq25r3lt9za4r2mgyf4 -decimals = 6 - -[NLT] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/NLT -decimals = 6 - -[NLT2] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/NLT2 -decimals = 6 - -[NLT3] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/NLT3 -decimals = 6 - -[NOBI] -peggy_denom = factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/nobi -decimals = 6 - -[NOBITCHES] -peggy_denom = factory/inj14n8f39qdg6t68s5z00t4vczvkcvzlgm6ea5vk5/nobitches -decimals = 6 - -[NOIA] -peggy_denom = peggy0xa8c8CfB141A3bB59FEA1E2ea6B79b5ECBCD7b6ca -decimals = 18 - -[NOIS] -peggy_denom = ibc/DD9182E8E2B13C89D6B4707C7B43E8DB6193F9FF486AFA0E6CF86B427B0D231A -decimals = 6 - -[NONE] -peggy_denom = peggy0x903ff0ba636E32De1767A4B5eEb55c155763D8B7 -decimals = 18 - -[NONJA] -peggy_denom = inj1fu5u29slsg2xtsj7v5la22vl4mr4ywl7wlqeck -decimals = 18 - -[NPEPE] -peggy_denom = factory/inj1ga982yy0wumrlt4nnj79wcgmw7mzvw6jcyecl0/npepe -decimals = 6 - -[NPP] -peggy_denom = factory/inj1wfu4622uhs5kmfws8vse76sxac7qxu3pckhkph/npepe -decimals = 6 - -[NRL] -peggy_denom = factory/inj13s8gyvm86p7tfcv6zcx5sjqgx4ruwfz8vy3hnm/NRL -decimals = 6 - -[NT] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/NewToken -decimals = 6 - -[NTR] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/NTR -decimals = 6 - -[Name1] -peggy_denom = factory/inj16jtracfdxwavy62nj77u8vrvraallgfup7c2vh/Name1 -decimals = 9 - -[Name2] -peggy_denom = factory/inj1savlwnm9pz704g67m27ptex7cn4253j3hmzxhg/Name2 -decimals = 9 - -[Neptune Receipt INJ] -peggy_denom = inj1rmzufd7h09sqfrre5dtvu5d09ta7c0t4jzkr2f -decimals = 18 - -[OCEAN] -peggy_denom = peggy0x967da4048cD07aB37855c090aAF366e4ce1b9F48 -decimals = 18 - -[OLI] -peggy_denom = factory/inj1xhz824048f03pq9zr3dx72zck7fv0r4kg4nr6j/OLI -decimals = 6 - -[OMI] -peggy_denom = peggy0xed35af169af46a02ee13b9d79eb57d6d68c1749e -decimals = 18 - -[OMNI] -peggy_denom = peggy0x36e66fbbce51e4cd5bd3c62b637eb411b18949d4 -decimals = 18 - -[ONE] -peggy_denom = factory/inj127fnqclnf2s2d3trhxc8yzuae6lq4zkfasehr0/ONE -decimals = 1 - -[OP] -peggy_denom = op -decimals = 18 - -[ORAI] -peggy_denom = ibc/C20C0A822BD22B2CEF0D067400FCCFB6FAEEE9E91D360B4E0725BD522302D565 -decimals = 6 - -[ORNE] -peggy_denom = ibc/3D99439444ACDEE71DBC4A774E49DB74B58846CCE31B9A868A7A61E4C14D321E -decimals = 6 - -[OSMO] -peggy_denom = ibc/92E0120F15D037353CFB73C14651FC8930ADC05B93100FD7754D3A689E53B333 -decimals = 6 - -[OX] -peggy_denom = peggy0x78a0A62Fba6Fb21A83FE8a3433d44C73a4017A6f -decimals = 18 - -[Oraichain] -peggy_denom = peggy0x4c11249814f11b9346808179Cf06e71ac328c1b5 -decimals = 18 - -[PAIN] -peggy_denom = factory/inj1u6j86hy6a2z0ksuhuh54x6kh532e7esdfjd2k7/pain -decimals = 6 - -[PANZ] -peggy_denom = factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/PANZ -decimals = 6 - -[PAXG] -peggy_denom = peggy0x45804880De22913dAFE09f4980848ECE6EcbAf78 -decimals = 18 - -[PB] -peggy_denom = factory/inj124edzakrq96vwfxp996d0nkr3dzlcsy84c375w/PB -decimals = 0 - -[PED] -peggy_denom = factory/inj14x449v06kj4fw6s9wnx8ku23zzuazfpkz6a73v/PED -decimals = 6 - -[PENJY] -peggy_denom = factory/inj1gyxrvcdvjr22l5fu43ng4c607nxpc8yuxslcv3/penjy -decimals = 6 - -[PEPE] -peggy_denom = peggy0x6982508145454ce325ddbe47a25d4ec3d2311933 -decimals = 18 - -[PHUC] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/phuc -decimals = 6 - -[PHX] -peggy_denom = factory/inj1d9pn8qvfh75fpxw5lkcrmuwh94qlgctzuzp7hv/phoenix -decimals = 6 - -[PIKA] -peggy_denom = factory/inj1h4usvhhva6dgmun9rk4haeh8lynln7yhk6ym00/pika -decimals = 6 - -[PINJA] -peggy_denom = factory/inj1gyxrvcdvjr22l5fu43ng4c607nxpc8yuxslcv3/pinja -decimals = 6 - -[PINKIE] -peggy_denom = factory/inj1d5fe04g9xa577e2zn82n4m0ksq8wp8vxgvfupw/PINKIE -decimals = 6 - -[PKT] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/PKT -decimals = 6 - -[PLY] -peggy_denom = factory/inj1vumd9aald3efd8jjegwvppedyzmf7k4x3rv3zn/PLY -decimals = 6 - -[PMN] -peggy_denom = factory/inj1xwdmsf2pd3eg6axkdgkjpaq689f9mjun0qvrgt/PMN -decimals = 6 - -[POG] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/pog -decimals = 6 - -[POIL] -peggy_denom = factory/inj1h0ypsdtjfcjynqu3m75z2zwwz5mmrj8rtk2g52/upoil -decimals = 6 - -[POINT] -peggy_denom = factory/inj1zaem9jqplp08hkkd5vcl6vmvala9qury79vfj4/point -decimals = 0 - -[POL] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/POL -decimals = 6 - -[POOL] -peggy_denom = peggy0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e -decimals = 18 - -[POOR] -peggy_denom = peggy0x9D433Fa992C5933D6843f8669019Da6D512fd5e9 -decimals = 8 - -[POPCAT] -peggy_denom = popcat -decimals = 9 - -[PP] -peggy_denom = factory/inj1p5g2l4gknhnflr5qf0jdrp9snvx747nqttrh6k/pop -decimals = 6 - -[PPenguin] -peggy_denom = factory/inj1sq839juq97296mumt84hzfjpc2nf7h2u774g59/PPenguin -decimals = 6 - -[PRI] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/PRI -decimals = 6 - -[PROF] -peggy_denom = factory/inj1tnj7z7ufm5uwtf5n4nzlvxyy93p8shjanj9s8r/Prof -decimals = 6 - -[PROJ] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/proj -decimals = 18 - -[PROJ-INJ LP] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1f03c5r2nlsh390y97p776clvgm9pqmkecj92q3 -decimals = 18 - -[PROJX] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/projx -decimals = 18 - -[PROJX-INJ LP] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1xvlnfmq5672rmvn6576rvj389ezu9nxc9dpk8l -decimals = 18 - -[PTXE] -peggy_denom = factory/inj1g055dn0qmm9qyrnuaryffqe3hu8qja0qnslx87/PTXE -decimals = 6 - -[PUG] -peggy_denom = peggy0xf9a06dE3F6639E6ee4F079095D5093644Ad85E8b -decimals = 18 - -[PUNK] -peggy_denom = factory/inj1esz96ru3guug4ctmn5chjmkymt979sfvufq0hs/punk -decimals = 6 - -[PVP] -peggy_denom = peggy0x9B44793a0177C84DD01AD81137db696531902871 -decimals = 8 - -[PWH] -peggy_denom = factory/inj1smk28fqgy0jztu066ngfcwqc3lv65xgq79wly8/PWH -decimals = 6 - -[PYTH] -peggy_denom = ibc/F3330C1B8BD1886FE9509B94C7B5398B892EA41420D2BC0B7C6A53CB8ED761D6 -decimals = 6 - -[PYTHlegacy] -peggy_denom = inj1tjcf9497fwmrnk22jfu5hsdq82qshga54ajvzy -decimals = 6 - -[PYUSD] -peggy_denom = ibc/4367FD29E33CDF0487219CD3E88D8C432BD4C2776C0C1034FF05A3E6451B8B11 -decimals = 6 - -[PZZ] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/pzz -decimals = 6 - -[Pep] -peggy_denom = factory/inj1zvy8xrlhe7ex9scer868clfstdv7j6vz790kwa/pepper -decimals = 6 - -[Pepe] -peggy_denom = pepe -decimals = 18 - -[Phuc] -peggy_denom = factory/inj1995xnrrtnmtdgjmx0g937vf28dwefhkhy6gy5e/phuc -decimals = 6 - -[Pikachu] -peggy_denom = factory/inj1h9zu2u6yqf3t5uym75z94zsqfhazzkyg39957u/pika -decimals = 6 - -[Polkadot] -peggy_denom = inj1spzwwtr2luljr300ng2gu52zg7wn7j44m92mdf -decimals = 10 - -[Polygon] -peggy_denom = peggy0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0 -decimals = 18 - -[Punk Token] -peggy_denom = inj1wmrzttj7ms7glplek348vedx4v2ls467n539xt -decimals = 18 - -[QAQA] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/QAQA -decimals = 0 - -[QAT] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1m4g54lg2mhhm7a4h3ms5xlyecafhe4macgsuen -decimals = 8 - -[QATEST] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/QATEST -decimals = 6 - -[QATEST2] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/QATEST2 -decimals = 6 - -[QATEST3] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/QATEST3 -decimals = 6 - -[QATEST4] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/QATEST4 -decimals = 6 - -[QATS] -peggy_denom = factory/inj1navfuxj73mzrc8a28uwnwz4x4udzdsv9r5e279/qa-test -decimals = 0 - -[QN] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/QN -decimals = 0 - -[QNA] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/QNA -decimals = 6 - -[QNT] -peggy_denom = peggy0x4a220e6096b25eadb88358cb44068a3248254675 -decimals = 18 - -[QTUM] -peggy_denom = factory/inj1jgc9ptfwgyapfrr0kgdjjnwpdqck24pp59uma3/QTUM -decimals = 6 - -[QUK] -peggy_denom = factory/inj1y39rszzrs9hpfmt5uwkp6gxyvawrkt4krateru/QUK -decimals = 6 - -[QUNT] -peggy_denom = factory/inj127l5a2wmkyvucxdlupqyac3y0v6wqfhq03ka64/qunt -decimals = 6 - -[RAI] -peggy_denom = peggy0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919 -decimals = 18 - -[RAMEN] -peggy_denom = factory/inj1z5utcc5u90n8a5m8gv30char6j4hdzxz6t3pke/ramen -decimals = 6 - -[RAMENV2] -peggy_denom = factory/inj15d5v02thnac8mc79hx0nzuz4rjxuccy7rc63x3/RAMENV2 -decimals = 6 - -[RAY] -peggy_denom = factory/inj1ckddr5lfwjvm2lvtzra0ftx7066seqr3navva0/RAY -decimals = 6 - -[RBT] -peggy_denom = factory/inj130g9fldgdee4dcqazhuaqxhkr6rx75p8ufrl3m/robo-test -decimals = 6 - -[RD] -peggy_denom = factory/inj1d5p93zzsgr5dwvxfus4hsp3nxz29y99r80905q/ak -decimals = 6 - -[RED] -peggy_denom = factory/inj1xyufatym0y7dlv2qzm7p5rkythh9n6wa588yl6/ReactDev -decimals = 6 - -[REKT] -peggy_denom = factory/inj1cs9k0q8pv0446nxg66tu0u2w26qd52rc5pxvpy/REKT -decimals = 6 - -[RIBBINJ] -peggy_denom = factory/inj1kdcu73qfsaq37x6vfq05a8gqcxftepxyhcvyg5/RIBBINJ -decimals = 9 - -[RIBBIT] -peggy_denom = peggy0xb794Ad95317f75c44090f64955954C3849315fFe -decimals = 18 - -[RICE] -peggy_denom = factory/inj1mt876zny9j6xae25h7hl7zuqf7gkx8q63k0426/RICE -decimals = 12 - -[RKO] -peggy_denom = factory/inj1muuaghrdm2rfss9cdpxzhk3v7xqj8ltngrm0xd/RKO -decimals = 6 - -[RON] -peggy_denom = factory/inj1fe2cl7p79g469604u6x5elrphm7k5nruylms52/RON -decimals = 6 - -[ROOT] -peggy_denom = peggy0xa3d4BEe77B05d4a0C943877558Ce21A763C4fa29 -decimals = 6 - -[ROUTE] -peggy_denom = ibc/90FE7A5C905DA053907AEEABAE0C57E64C76D5346EE46F0E3C994C5470D311C0 -decimals = 0 - -[RUNE] -peggy_denom = peggy0x3155BA85D5F96b2d030a4966AF206230e46849cb -decimals = 18 - -[RUNES] -peggy_denom = factory/inj1ewgk2lynac2aa45yldl8cnnyped3ed8y0t76wx/RUNES -decimals = 6 - -[RYN] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/RYN -decimals = 6 - -[SAE] -peggy_denom = factory/inj152mdu38fkkk4fl7ycrpdqxpm63w3ztadgtktyr/sae -decimals = 6 - -[SAGA] -peggy_denom = ibc/AF921F0874131B56897A11AA3F33D5B29CD9C147A1D7C37FE8D918CB420956B2 -decimals = 6 - -[SAMOLEANS] -peggy_denom = ibc/6FFBDD9EACD2AC8C3CB7D3BEE5258813BC41AEEEA65C150ECB63E2DDAC8FB454 -decimals = 0 - -[SANTA] -peggy_denom = factory/inj1zvy8xrlhe7ex9scer868clfstdv7j6vz790kwa/santa -decimals = 6 - -[SCRT] -peggy_denom = ibc/0954E1C28EB7AF5B72D24F3BC2B47BBB2FDF91BDDFD57B74B99E133AED40972A -decimals = 6 - -[SDEX] -peggy_denom = peggy0x5DE8ab7E27f6E7A1fFf3E5B337584Aa43961BEeF -decimals = 18 - -[SEI] -peggy_denom = sei -decimals = 6 - -[SEX] -peggy_denom = factory/inj1hqlt3hl54m2qf86r3xzqa4fjsxrylr3sk9gdzq/SEX -decimals = 6 - -[SGINU] -peggy_denom = factory/inj17ejzl5zkkxqt73w7xq90vfta5typu2yk7uj3gw/SGINU -decimals = 6 - -[SHA] -peggy_denom = factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/Sharissa -decimals = 6 - -[SHIB] -peggy_denom = peggy0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE -decimals = 18 - -[SHIBAINU] -peggy_denom = factory/inj1sq839juq97296mumt84hzfjpc2nf7h2u774g59/SHIBAINU -decimals = 6 - -[SHITBIT] -peggy_denom = factory/inj169w99uj9psyvhu7zunc5tnp8jjflc53np7vw06/SHITBIT -decimals = 6 - -[SHROOM] -peggy_denom = inj1300xcg9naqy00fujsr9r8alwk7dh65uqu87xm8 -decimals = 18 - -[SHSA] -peggy_denom = factory/inj1t9em6lv5x94w0d66nng6tqkrtrlhcpj9penatm/SHSA -decimals = 6 - -[SHURIKEN] -peggy_denom = factory/inj1gflhshg8yrk8rrr3sgswhmsnygw9ghzdsn05a0/shuriken -decimals = 6 - -[SKIPBIDIDOBDOBDOBYESYESYESYES] -peggy_denom = peggy0x5085202d0A4D8E4724Aa98C42856441c3b97Bc6d -decimals = 9 - -[SKk] -peggy_denom = factory/inj10jzww6ws9djfuhpnq8exhzf6um039fcww99myr/SKk -decimals = 6 - -[SLZ] -peggy_denom = factory/inj176tn6dtrvak9vrqkj2ejysuy5kctc6nphw7sfz/SLZ -decimals = 6 - -[SMELLY] -peggy_denom = factory/inj10pz3xq7zf8xudqxaqealgyrnfk66u3c99ud5m2/smelly -decimals = 6 - -[SMR] -peggy_denom = factory/inj105rtd2gweld3ecde79tg4k8f53pe3ekl8n5t3v/SMR -decimals = 6 - -[SNOWY] -peggy_denom = factory/inj1ml33x7lkxk6x2x95d3alw4h84evlcdz2gnehmk/snowy -decimals = 6 - -[SNS] -peggy_denom = ibc/4BFB3FB1903142C5A7570EE7697636436E52FDB99AB8ABE0257E178A926E2568 -decimals = 8 - -[SNX] -peggy_denom = peggy0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F -decimals = 18 - -[SOL] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj12ngevx045zpvacus9s6anr258gkwpmthnz80e9 -decimals = 8 - -[SOLlegacy] -peggy_denom = inj1sthrn5ep8ls5vzz8f9gp89khhmedahhdkqa8z3 -decimals = 8 - -[SOMM] -peggy_denom = ibc/34346A60A95EB030D62D6F5BDD4B745BE18E8A693372A8A347D5D53DBBB1328B -decimals = 6 - -[SPDR] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/spdr -decimals = 6 - -[SPDR2] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/spdr2 -decimals = 6 - -[SPNG] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/spng -decimals = 6 - -[SPUUN] -peggy_denom = factory/inj1flkktfvf8nxvk300f2z3vxglpllpw59c563pk7/spuun -decimals = 6 - -[SS] -peggy_denom = factory/inj1ujd7rlhp8980lwg74tek7gv4yv4qj4xcvxrx45/SuperSonic -decimals = 6 - -[SS-INJ-test] -peggy_denom = factory/inj1ejm3575vmekrr240xzlklvrzq23sg8r3enup29/SS-INJ-test -decimals = 6 - -[SS2] -peggy_denom = factory/inj1ganr36p0r0ptfe95kq29647n93xpl6dz5wqdcr/SS2 -decimals = 9 - -[SSS] -peggy_denom = factory/inj1pzd88r8te7x4pxza2ujcm8ysu4x276ya2le2mh/SSS -decimals = 9 - -[ST] -peggy_denom = factory/inj15gxryjn2m9yze97lem488qgq2q84vge8eksqfq/supertoken123 -decimals = 6 - -[STARS] -peggy_denom = peggy0xc55c2175E90A46602fD42e931f62B3Acc1A013Ca -decimals = 18 - -[STINJ] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/stinj -decimals = 18 - -[STRD] -peggy_denom = ibc/3FDD002A3A4019B05A33D324B2F29748E77AF501BEA5C96D1F28B2D6755F9F25 -decimals = 6 - -[STT] -peggy_denom = peggy0xaC9Bb427953aC7FDDC562ADcA86CF42D988047Fd -decimals = 18 - -[STX] -peggy_denom = stx -decimals = 6 - -[SUDD] -peggy_denom = factory/inj1vk5fgqjffp7e34elj8dxzwfvfqdtp5yn09gwmz/SUDD -decimals = 6 - -[SUDD2] -peggy_denom = factory/inj1vk5fgqjffp7e34elj8dxzwfvfqdtp5yn09gwmz/SUDD2 -decimals = 6 - -[SUDD3] -peggy_denom = factory/inj1vk5fgqjffp7e34elj8dxzwfvfqdtp5yn09gwmz/SUDD3 -decimals = 6 - -[SUI] -peggy_denom = sui -decimals = 9 - -[SUN] -peggy_denom = factory/inj1req36v30g4syj363zzgnvzsnfhhxqyfphut30x/SUN -decimals = 6 - -[SUR] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/SUR -decimals = 6 - -[SUSDT] -peggy_denom = factory/inj14dvet9j73cak22sf7nzgn52ae8z4fdxzsn683v/susdt -decimals = 6 - -[SUSHI] -peggy_denom = inj1n73yuus64z0yrda9hvn77twkspc4uste9j9ydd -decimals = 18 - -[SWAP] -peggy_denom = peggy0xcc4304a31d09258b0029ea7fe63d032f52e44efe -decimals = 18 - -[SYN] -peggy_denom = factory/inj1a6xdezq7a94qwamec6n6cnup02nvewvjtz6h6e/syn -decimals = 6 - -[Sea] -peggy_denom = factory/inj1xh6c9px2aqg09cnd8ls2wxykm70d7ygxce2czh/Sea -decimals = 6 - -[Sep13] -peggy_denom = factory/inj1yyudepk0dzwhqareamtcmvzslrm6txxt9n2m36/Sep13 -decimals = 9 - -[Shiba INJ] -peggy_denom = factory/inj1v0yk4msqsff7e9zf8ktxykfhz2hen6t2u4ue4r/shiba inj -decimals = 6 - -[Shinobi] -peggy_denom = factory/inj1t02au5gsk40ev9jaq0ggcyry9deuvvza6s4wav/nobi -decimals = 6 - -[Shrute] -peggy_denom = factory/inj1dng0drt6hncescgh0vwz22wjlhysn804pxnlar/Shrute -decimals = 6 - -[Shuriken Token] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shuriken -decimals = 6 - -[Solana] -peggy_denom = ibc/A8B0B746B5AB736C2D8577259B510D56B8AF598008F68041E3D634BCDE72BE97 -decimals = 8 - -[Sommelier] -peggy_denom = peggy0xa670d7237398238DE01267472C6f13e5B8010FD1 -decimals = 6 - -[SteadyBTC] -peggy_denom = peggy0x4986fD36b6b16f49b43282Ee2e24C5cF90ed166d -decimals = 18 - -[SteadyETH] -peggy_denom = peggy0x3F07A84eCdf494310D397d24c1C78B041D2fa622 -decimals = 18 - -[Stride Staked Injective] -peggy_denom = ibc/AC87717EA002B0123B10A05063E69BCA274BA2C44D842AEEB41558D2856DCE93 -decimals = 18 - -[Summoners Arena Essence] -peggy_denom = ibc/0AFCFFE18230E0E703A527F7522223D808EBB0E02FDBC84AAF8A045CD8FE0BBB -decimals = 8 - -[SushiSwap] -peggy_denom = peggy0x6B3595068778DD592e39A122f4f5a5cF09C90fE2 -decimals = 18 - -[TAB] -peggy_denom = peggy0x36B3D7ACe7201E28040eFf30e815290D7b37ffaD -decimals = 18 - -[TALIS] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Talis -decimals = 6 - -[TALKS1N] -peggy_denom = factory/inj1cs9k0q8pv0446nxg66tu0u2w26qd52rc5pxvpy/TALKS1N -decimals = 6 - -[TALKS1N-INJ LP] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1qvk5p306aqfvus6e0lktqwfsp0u478ckfddmv9 -decimals = 18 - -[TALKSIN] -peggy_denom = factory/inj1cs9k0q8pv0446nxg66tu0u2w26qd52rc5pxvpy/TALKSIN -decimals = 6 - -[TAO] -peggy_denom = tao -decimals = 18 - -[TBT] -peggy_denom = factory/inj1xyfrl7wrsczv7ah5tvvpcwnp3vlc3n9terc9d6/TBT -decimals = 18 - -[TCK] -peggy_denom = factory/inj1fcj6mmsj44wm04ff77kuncqx6vg4cl9qsgugkg/TCHUCA -decimals = 6 - -[TEST] -peggy_denom = factory/inj153aamk0zm4hfmv66pzgf629a9mjs2fyjr46y6q/TEST -decimals = 6 - -[TEST-INJ LP] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1z0rfjmyvhxmek2z6z702dypxtarphruww40fxr -decimals = 18 - -[TEST1] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/test1 -decimals = 6 - -[TEST1-INJ LP] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1lz5wufvx8qnvpwnw936dsgacdfqcrvrzn7z99f -decimals = 18 - -[TEST10] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/test10 -decimals = 6 - -[TEST11] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/test11 -decimals = 6 - -[TEST12] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/test12 -decimals = 6 - -[TEST1234] -peggy_denom = factory/inj1kgx9rqg7dtl27lqqxyw6q0vvuljulj8gn99tme/test1234 -decimals = 6 - -[TEST13] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/test13 -decimals = 6 - -[TEST14] -peggy_denom = factory/inj1mux0he68umjpcy8ltefeuxm9ha2ww3689rv2g4/TEST14 -decimals = 6 - -[TEST2] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/test2 -decimals = 6 - -[TEST2-INJ LP] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1nv62axs4mmxfcuwg6v9aayyevxr4z7p9u0vn4y -decimals = 18 - -[TEST3] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/test3 -decimals = 6 - -[TEST3-INJ LP] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1gf9dpyjtc5gfnc69nj6e67a2wrsjpruk3caywc -decimals = 18 - -[TEST4] -peggy_denom = factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/test4 -decimals = 6 - -[TEST5] -peggy_denom = factory/inj1gvhyp8un5l9jpxpd90rdtj3ejd6qser2s2jxtz/TEST5 -decimals = 9 - -[TEST6] -peggy_denom = factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST6 -decimals = 6 - -[TEST9] -peggy_denom = factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/test9 -decimals = 6 - -[TESTES] -peggy_denom = factory/inj19hvtll63gdk7226lcgdthd8w6vkwvy2lygd54s/Testess -decimals = 6 - -[TESTING] -peggy_denom = factory/inj17ljxhz0c7tdcjfzhnk3xgk3mfudtcjs2g3676l/TESTING -decimals = 6 - -[TESTINTERNAL1] -peggy_denom = factory/inj1hj4nr0jt0mzpawxt5tyajqgwf3pct5552rvkvp/TESTINTERNAL1 -decimals = 6 - -[TESTIT] -peggy_denom = factory/inj18skkzztnku04f9cmscg2hwsj6xrau73lvjtklk/TESTIT -decimals = 6 - -[TESTNETMEMECOIN69] -peggy_denom = factory/inj1u4uuueup7p30zfl9xvslddnen45dg7pylsq4td/TESTNETMEMECOIN69 -decimals = 6 - -[TESTTOKEN] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/TestToken1 -decimals = 0 - -[TESTTT] -peggy_denom = factory/inj13njxly446jm3gd8y84qnk3sm6wu0pjjc47mwl6/TESTTT -decimals = 6 - -[TEZ] -peggy_denom = factory/inj10nzx9ke6em2lhsvzakut8tah53m6j3972g4yhm/TEZ -decimals = 6 - -[TEvmos] -peggy_denom = ibc/300B5A980CA53175DBAC918907B47A2885CADD17042AD58209E777217D64AF20 -decimals = 18 - -[TFC] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TFC -decimals = 1 - -[TFT] -peggy_denom = peggy0x05599Ff7e3FC3bbA01e3F378dC9C20CB5Bea2b75 -decimals = 18 - -[THS] -peggy_denom = factory/inj1fkdanwufd5xedtgxjkhkftxm2xr55jn9saggs5/THS -decimals = 9 - -[TIA] -peggy_denom = ibc/F51BB221BAA275F2EBF654F70B005627D7E713AFFD6D86AFD1E43CAA886149F4 -decimals = 6 - -[TINJ] -peggy_denom = peggy0x85AbEac4F09762e28a49D7dA91260A46766F4F79 -decimals = 18 - -[TINJT] -peggy_denom = factory/inj1gdxcak50wsvltn3pmcan437kt5hdnm0y480pj0/TINJT -decimals = 6 - -[TITOU] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TITOU -decimals = 6 - -[TITS] -peggy_denom = factory/inj1uacfgkzyjqcwll6l4n5l23y9k0k80alsc2yt0k/TITS -decimals = 6 - -[TIX] -peggy_denom = factory/inj1rw3qvamxgmvyexuz2uhyfa4hukvtvteznxjvke/tix -decimals = 6 - -[TKN] -peggy_denom = peggy0xA4eE602c16C448Dc0D1fc38E6FC12f0d6C672Cbe -decimals = 18 - -[TLKSN] -peggy_denom = factory/inj1cs9k0q8pv0446nxg66tu0u2w26qd52rc5pxvpy/TLKSN -decimals = 6 - -[TMERC] -peggy_denom = factory/inj13xl0ffk4hugh48cpvtxxulvyelv758anhdruw0/TMERC -decimals = 6 - -[TMTT] -peggy_denom = factory/inj135fg9urn32jrddswnlqjuryvsz2l3z7w0xlc3g/TMTT -decimals = 6 - -[TNAM1QXVG64PSVHWUMV3MWRRJFCZ0H3T3274HWGGYZCEE] -peggy_denom = ibc/F5EAC29F246C99F56219AAF6F70A521B9AB0082D8FFC63648744C4BADD28976C -decimals = 0 - -[TOM] -peggy_denom = factory/inj10pdtl2nvatk5we2z8q7jx70mqgz244vwdeljnr/TOM -decimals = 6 - -[TON] -peggy_denom = peggy0x582d872a1b094fc48f5de31d3b73f2d9be47def1 -decimals = 9 - -[TOPE] -peggy_denom = factory/inj18jnrfl0w8j3r9mg0xhs53wqjfn26l4qrx3rw7u/TOPE -decimals = 6 - -[TOR] -peggy_denom = factory/inj18g3fzlzcvm869nfqx6vx3w569l2ehc2x7yd9zn/TOR -decimals = 6 - -[TPINKIE] -peggy_denom = factory/inj1d5fe04g9xa577e2zn82n4m0ksq8wp8vxgvfupw/TPINKIE -decimals = 6 - -[TREN] -peggy_denom = factory/inj1ckddr5lfwjvm2lvtzra0ftx7066seqr3navva0/TREN -decimals = 6 - -[TRIP] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/TRIP -decimals = 18 - -[TRIPP] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/TRIPP -decimals = 6 - -[TRIPPY] -peggy_denom = factory/inj1q2m26a7jdzjyfdn545vqsude3zwwtfrdap5jgz/TRIPPY -decimals = 18 - -[TRUCPI] -peggy_denom = trucpi -decimals = 18 - -[TS] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-demo12 -decimals = 6 - -[TSK] -peggy_denom = factory/inj1uqtnkdsteaxhsjy4xug2t3cklxdaz52nrjmgru/TSK -decimals = 6 - -[TST] -peggy_denom = factory/inj14sllqhu93hvvygte05ucu5am7ugny2gna7sffd/inj-test -decimals = 10 - -[TST2] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST2 -decimals = 6 - -[TST3] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST3 -decimals = 6 - -[TST4] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/TST4 -decimals = 0 - -[TST5] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/TST5 -decimals = 0 - -[TST6] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST6 -decimals = 6 - -[TSTESTTOKEN] -peggy_denom = factory/inj12ufkkhdg0u5lzxkljdanwn4955ev4ty3nk7l08/TSTESTTOKEN -decimals = 6 - -[TT] -peggy_denom = factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-go -decimals = 18 - -[TTE] -peggy_denom = factory/inj1ks3hnkur9udnjuhf5ra806alm4tz3dmy03qkly/inj-go12 -decimals = 18 - -[TTN] -peggy_denom = factory/inj1d5fe04g9xa577e2zn82n4m0ksq8wp8vxgvfupw/TESTTOKEN -decimals = 6 - -[TTNY] -peggy_denom = factory/inj1uc2lndfg7qlvhnwkknlnqr37ekwf40xulf4cur/TTNY -decimals = 6 - -[TTT] -peggy_denom = factory/inj12zmnpx2hupr35xmuyzyg28xxmqlf3svl8zyaxh/TTT -decimals = 9 - -[TTTA] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/TTTA -decimals = 6 - -[TTX] -peggy_denom = factory/inj1ayjd8psv86kmfsg7k54rmr2hnrsnczqwc3ecrt/thanhtx -decimals = 6 - -[TUS] -peggy_denom = factory/inj1q3lwaq6wwfv69wdyga0f67vpk824g3a0uzqhqy/TUS -decimals = 6 - -[Terra] -peggy_denom = peggy0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9 -decimals = 6 - -[TerraUSD] -peggy_denom = peggy0xa47c8bf37f92aBed4A126BDA807A7b7498661acD -decimals = 18 - -[Test] -peggy_denom = factory/inj172z2fxya77cfeknz93vv4hxegfdave6g7uz9y9/Test -decimals = 6 - -[Test QAT] -peggy_denom = inj1m4g54lg2mhhm7a4h3ms5xlyecafhe4macgsuen -decimals = 8 - -[Test1] -peggy_denom = factory/inj1v2py2tvjpkntltgv79jj3mwe3hnqm2pvavu0ed/Test1 -decimals = 6 - -[Test2] -peggy_denom = factory/inj1v2py2tvjpkntltgv79jj3mwe3hnqm2pvavu0ed/Test2 -decimals = 6 - -[TestINJ91] -peggy_denom = factory/inj1yu5nmgrz0tzhlffmlmrff7zx3rfdwlju587vlc/TestINJ91 -decimals = 6 - -[TestInj] -peggy_denom = factory/inj172z2fxya77cfeknz93vv4hxegfdave6g7uz9y9/TestInj -decimals = 6 - -[TestOne] -peggy_denom = factory/inj1tu3en98ngtwlyszd55j50t0y6lpuf6dqf0rz4l/TestOne -decimals = 6 - -[Testeb] -peggy_denom = factory/inj1sn6u0472ds6v8x2x482gqqc36g0lz28uhq660v/Testeb -decimals = 6 - -[Tether] -peggy_denom = peggy0xdAC17F958D2ee523a2206206994597C13D831ec7 -decimals = 6 - -[Token with fee on transfer] -peggy_denom = peggy0x290FB1D3CFA67A0305608E457B31e368d82F3153 -decimals = 18 - -[Torres] -peggy_denom = factory/inj18wy4ns607slpn728rm88zl6jlrkd5dx48ew6ke/Torres -decimals = 6 - -[UANDR] -peggy_denom = ibc/4EF7835F49907C402631998B8F54FAA007B01999708C54A0F8DAABFAA793DA56 -decimals = 0 - -[UATOM] -peggy_denom = ibc/1738C5DCDE442A5614652C57AEAD4C37BB2E167402A0661754A868F3AE70C1A0 -decimals = 0 - -[UCBC] -peggy_denom = factory/inj13vmnwk6hvhvzpptm0m80skphlq3pmq3gelcdjf/UCBC -decimals = 6 - -[ULUNA] -peggy_denom = ibc/3848612C1ADD343CF42B2B4D2D1B68BBE419BCF97E0B6DD29B6C412E2CD23DC5 -decimals = 0 - -[UMA] -peggy_denom = peggy0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828 -decimals = 18 - -[UNI] -peggy_denom = peggy0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 -decimals = 18 - -[UNICORN] -peggy_denom = factory/inj1mrdkgz462sq0tvly8vzv0s320g8yyf67crxwdt/corn -decimals = 0 - -[UNOIS] -peggy_denom = ibc/A190CF3FC762D25A46A49E7CB0E998F4A494C7F64A356DA17C25A2D8B0069D3B -decimals = 0 - -[UOSMO] -peggy_denom = ibc/289D9B2071AD91C3E5529F68AF63497E723B506CE2480E0A39A2828D81A75739 -decimals = 0 - -[UPE] -peggy_denom = factory/inj1lahxt4xg8xu2dwjjsagjaj6lsg4q96uhnt2x6n/UPE -decimals = 6 - -[UPHOTON] -peggy_denom = ibc/48BC9C6ACBDFC1EBA034F1859245D53EA4BF74147189D66F27C23BF966335DFB -decimals = 6 - -[UPRYZM] -peggy_denom = ibc/89B44726816D9DB5C77B6D2E2A007A520C002355DA577001C56072EE5A903B05 -decimals = 0 - -[USD Coin] -peggy_denom = ibc/2CBC2EA121AE42563B08028466F37B600F2D7D4282342DE938283CC3FB2BC00E -decimals = 6 - -[USD Coin (legacy)] -peggy_denom = inj1q6zlut7gtkzknkk773jecujwsdkgq882akqksk -decimals = 6 - -[USDC] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/usdc -decimals = 6 - -[USDC-MPL] -peggy_denom = peggy0xf875aef00C4E21E9Ab4A335eB36A1175Ab00424A -decimals = 6 - -[USDC-USDT LP] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1vd0mf8a39xwr9hav2g7e8lmur07utjrjv025kd -decimals = 18 - -[USDCarb] -peggy_denom = inj1lmcfftadjkt4gt3lcvmz6qn4dhx59dv2m7yv8r -decimals = 6 - -[USDCbsc] -peggy_denom = inj1dngqzz6wphf07fkdam7dn55t8t3r6qenewy9zu -decimals = 6 - -[USDCet] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj12sqy9uzzl3h3vqxam7sz9f0yvmhampcgesh3qw -decimals = 6 - -[USDCgateway] -peggy_denom = ibc/7BE71BB68C781453F6BB10114F8E2DF8DC37BA791C502F5389EA10E7BEA68323 -decimals = 6 - -[USDClegacy] -peggy_denom = peggy0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 -decimals = 6 - -[USDCpoly] -peggy_denom = inj19s2r64ghfqq3py7f5dr0ynk8yj0nmngca3yvy3 -decimals = 6 - -[USDCso] -peggy_denom = inj12pwnhtv7yat2s30xuf4gdk9qm85v4j3e60dgvu -decimals = 6 - -[USDT] -peggy_denom = peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5 -decimals = 6 - -[USDT-USDC LP] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1a9chuqkye3dytgzg4060nj4kglxt8tx3kr6mwv -decimals = 18 - -[USDT_31DEC23] -peggy_denom = factory/inj1m8vmsa84ha7up6cx3v7y7jj9egzl3u3vyzqml0/test_denom -decimals = 6 - -[USDTap] -peggy_denom = inj13yrhllhe40sd3nj0lde9azlwfkyrf2t9r78dx5 -decimals = 6 - -[USDTbsc] -peggy_denom = inj1l9eyrnv3ret8da3qh8j5aytp6q4f73crd505lj -decimals = 6 - -[USDTet] -peggy_denom = inj18zykysxw9pcvtyr9ylhe0p5s7yzf6pzdagune8 -decimals = 6 - -[USDTkv] -peggy_denom = ibc/4ABBEF4C8926DDDB320AE5188CFD63267ABBCEFC0583E4AE05D6E5AA2401DDAB -decimals = 6 - -[USDTso] -peggy_denom = inj1qjn06jt7zjhdqxgud07nylkpgnaurq6xc5c4fd -decimals = 6 - -[USDY] -peggy_denom = ibc/93EAE5F9D6C14BFAC8DD1AFDBE95501055A7B22C5D8FA8C986C31D6EFADCA8A9 -decimals = 18 - -[USDYet] -peggy_denom = peggy0x96F6eF951840721AdBF46Ac996b59E0235CB985C -decimals = 18 - -[USDe] -peggy_denom = peggy0x4c9EDD5852cd905f086C759E8383e09bff1E68B3 -decimals = 18 - -[UST] -peggy_denom = ibc/B448C0CA358B958301D328CCDC5D5AD642FC30A6D3AE106FF721DB315F3DDE5C -decimals = 18 - -[UTK] -peggy_denom = peggy0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c -decimals = 18 - -[UUSDC] -peggy_denom = ibc/9EBCC3CA961DED955B08D249B01DCB03E4C6D0D31BE98A477716C54CC5DDB51B -decimals = 0 - -[UXION] -peggy_denom = ibc/6AB81EFD48DC233A206FAD0FB6F2691A456246C4A7F98D0CD37E2853DD0493EA -decimals = 0 - -[Unknown] -peggy_denom = ibc/078184C66B073F0464BA0BBD736DD601A0C637F9C42B592DDA5D6A95289D99A4 -decimals = 6 - -[V122] -peggy_denom = factory/inj14j92m8pyncutgk53ujpxcm2pewetez3yhmrdjw/V122 -decimals = 9 - -[VATRENI] -peggy_denom = inj1tn457ed2gg5vj2cur5khjjw63w73y3xhyhtaay -decimals = 8 - -[VDRR] -peggy_denom = factory/inj1sq839juq97296mumt84hzfjpc2nf7h2u774g59/Vaderr -decimals = 6 - -[VIC] -peggy_denom = factory/inj17l29rphqjy0fwud3xq4sf2zxhnhj4ue87df9u9/VIC -decimals = 6 - -[VICx] -peggy_denom = factory/inj1yq4dwvnujpr9m8w4m5uq3e8hu0xxnw0eypzr0k/VICx -decimals = 6 - -[VRD] -peggy_denom = peggy0xf25304e75026E6a35FEDcA3B0889aE5c4D3C55D8 -decimals = 18 - -[VVV] -peggy_denom = factory/inj1kezz4smdtr3t0v49d5qyt3ksd2emc594p7ftsx/VVV -decimals = 6 - -[W] -peggy_denom = ibc/F16F0F685BEF7BC6A145F16CBE78C6EC8C7C3A5F3066A98A9E57DCEA0903E537 -decimals = 6 - -[W3B] -peggy_denom = factory/inj1m7l6lmuf889k6vexvx74wrzuht2u8veclvy9hs/W3B -decimals = 6 - -[WAGMI] -peggy_denom = factory/inj188veuqed0dygkcmq5d24u3807n6csv4wdv28gh/wagmi -decimals = 9 - -[WAIFU] -peggy_denom = factory/inj12dvzf9tx2ndc9498aqpkrxgugr3suysqwlmn49/waifu -decimals = 6 - -[WASSIE] -peggy_denom = peggy0x2c95d751da37a5c1d9c5a7fd465c1d50f3d96160 -decimals = 18 - -[WBTC-USDT LP] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1t9c9yggeyxfd0x8jfu869xvyksg5ytjlhmv4fz -decimals = 18 - -[WFD] -peggy_denom = factory/inj1zj8dd6lu96lep97hguuch3lzwkcgr7edj0sjg2/WFD -decimals = 6 - -[WGMI] -peggy_denom = factory/inj1rmjzj9fn47kdmfk4f3z39qr6czexxe0yjyc546/wgmi -decimals = 6 - -[WHALE] -peggy_denom = ibc/D6E6A20ABDD600742D22464340A7701558027759CE14D12590F8EA869CCCF445 -decimals = 6 - -[WHAT] -peggy_denom = peggy0x69aa609A08ad451d45009834874C8c6D459d7731 -decimals = 9 - -[WIF] -peggy_denom = wif -decimals = 6 - -[WIZZ] -peggy_denom = factory/inj1uvfpvnmuqhx8jwg4786y59tkagmph827h38mst/wizz -decimals = 6 - -[WKLAY] -peggy_denom = inj14cl67lprqkt3pncjav070gavaxslc0tzpc56f4 -decimals = 8 - -[WMATIC] -peggy_denom = ibc/4DEFEB42BAAB2788723759D95B7550BCE460855563ED977036248F5B94C842FC -decimals = 8 - -[WMATIClegacy] -peggy_denom = inj1dxv423h8ygzgxmxnvrf33ws3k94aedfdevxd8h -decimals = 8 - -[WNINJ] -peggy_denom = factory/inj1gzg7vp5yds59hqw7swncz43zuktpx9jdmdlmmf/wnINJ -decimals = 18 - -[WONKA] -peggy_denom = factory/inj189hl8wqhf89r2l6x9arhtj2n8zx73cmsmts6pc/wonka -decimals = 6 - -[WOSMO] -peggy_denom = ibc/DD648F5D3CDA56D0D8D8820CF703D246B9FC4007725D8B38D23A21FF1A1477E3 -decimals = 6 - -[WSB] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-WSB -decimals = 6 - -[WSTETH] -peggy_denom = peggy0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0 -decimals = 18 - -[War] -peggy_denom = factory/inj10ehr7vet33h9ezphsk6uufm4wqg50sp93pqqe8/War -decimals = 6 - -[Wrapped Bitcoin] -peggy_denom = inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku -decimals = 18 - -[Wrapped Ethereum] -peggy_denom = inj1k9r62py07wydch6sj5sfvun93e4qe0lg7jyatc -decimals = 8 - -[XAC] -peggy_denom = peggy0xDe4C5a791913838027a2185709E98c5C6027EA63 -decimals = 8 - -[XAG] -peggy_denom = xag -decimals = 6 - -[XAU] -peggy_denom = xau -decimals = 6 - -[XBX] -peggy_denom = peggy0x080B12E80C9b45e97C23b6ad10a16B3e2a123949 -decimals = 18 - -[XIII] -peggy_denom = factory/inj18flmwwaxxqj8m8l5zl8xhjrnah98fcjp3gcy3e/XIII -decimals = 6 - -[XIII-COMBINED] -peggy_denom = factory/inj18flmwwaxxqj8m8l5zl8xhjrnah98fcjp3gcy3e/XIII-COMBINED -decimals = 6 - -[XIII-FINAL] -peggy_denom = factory/inj18flmwwaxxqj8m8l5zl8xhjrnah98fcjp3gcy3e/XIII-FINAL -decimals = 6 - -[XIIItest] -peggy_denom = factory/inj18flmwwaxxqj8m8l5zl8xhjrnah98fcjp3gcy3e/XIIItest -decimals = 6 - -[XION] -peggy_denom = ibc/DAB0823884DB5785F08EE136EE9EB362E166F4C7455716641B03E93CE7F14193 -decimals = 6 - -[XIV] -peggy_denom = factory/inj18flmwwaxxqj8m8l5zl8xhjrnah98fcjp3gcy3e/XIV -decimals = 6 - -[XIV-TEST1] -peggy_denom = factory/inj18flmwwaxxqj8m8l5zl8xhjrnah98fcjp3gcy3e/XIV-TEST1 -decimals = 6 - -[XNJ] -peggy_denom = inj17pgmlk6fpfmqyffs205l98pmnmp688mt0948ar -decimals = 18 - -[XPLA] -peggy_denom = inj1j08452mqwadp8xu25kn9rleyl2gufgfjqjvewe -decimals = 8 - -[XPRT] -peggy_denom = ibc/B786E7CBBF026F6F15A8DA248E0F18C62A0F7A70CB2DABD9239398C8B5150ABB -decimals = 6 - -[XRP] -peggy_denom = peggy0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe -decimals = 18 - -[XTALIS] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis -decimals = 6 - -[XTBV4] -peggy_denom = peggy0x33132640fF610A2E362856530a2D1E5d60FAe191 -decimals = 18 - -[YFI] -peggy_denom = peggy0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e -decimals = 18 - -[YOHOHO] -peggy_denom = factory/inj1gyxrvcdvjr22l5fu43ng4c607nxpc8yuxslcv3/yoyo -decimals = 18 - -[YOLO] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/YOLO -decimals = 6 - -[YOMI] -peggy_denom = factory/inj1tlqtznd9gh0a53krerduzdsfadafamag0svccu/YoshiMitsu -decimals = 6 - -[YUE] -peggy_denom = factory/inj1la29j54twr2mucn2z6dewmhcpy3m20sud79fut/YUE -decimals = 15 - -[YUKI] -peggy_denom = factory/inj1spdy83ds5ezq9rvtg0ndy8480ad5rlczcpvtu2/yuki -decimals = 6 - -[ZEN] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/zen -decimals = 18 - -[ZIG] -peggy_denom = peggy0xb2617246d0c6c0087f18703d576831899ca94f01 -decimals = 18 - -[ZIN] -peggy_denom = factory/inj1xqtgc8v3w5yzcr5w5f40k8exp5j4k0uhumn5fh/ZIN -decimals = 6 - -[ZIP] -peggy_denom = factory/inj169w99uj9psyvhu7zunc5tnp8jjflc53np7vw06/ZIP -decimals = 6 - -[ZK] -peggy_denom = zk -decimals = 18 - -[ZNA] -peggy_denom = factory/inj1muuaghrdm2rfss9cdpxzhk3v7xqj8ltngrm0xd/ZNA -decimals = 18 - -[ZOZY] -peggy_denom = factory/inj1nmdqvm2vcxtzal44f62hcv9sthsaunupdpuxlg/ZOZY -decimals = 6 - -[ZRO] -peggy_denom = zro -decimals = 6 - -[ZRX] -peggy_denom = peggy0xE41d2489571d322189246DaFA5ebDe1F4699F498 -decimals = 18 - -[Zorro] -peggy_denom = factory/inj1v58n67dssmd5g3eva6dxmenm7g4qp2t7zkht94/Zorro -decimals = 0 - -[abc] -peggy_denom = factory/inj1lsg0lsz6rydfhu3x240nra037rk9w6uydlempj/abc -decimals = 9 - -[abcefz] -peggy_denom = factory/inj1wd3xjvya2tdvh3zscdu8sewdys4zv0ruqld06f/abcefz -decimals = 0 - -[abv] -peggy_denom = factory/inj1wrg096y69grgf8yg6tqxnh0tdwx4x47rsj8rs3/abv -decimals = 18 - -[adfadf] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/fadsf -decimals = 6 - -[adfasf] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/adfasf -decimals = 6 - -[afdf] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/afda -decimals = 6 - -[ahwtf] -peggy_denom = factory/inj1tvwa4ug70d26k84y2zkvzykyu3vuce5lp2f60d/ahwtf -decimals = 6 - -[ankara] -peggy_denom = factory/inj1hslxdwcszyjesl0e7q339qvqme8jtpkgvfw667/ankara -decimals = 6 - -[arkSYN] -peggy_denom = factory/inj17ghwrdm2u2xsv8emlltqz3h3s6wvqcsdptr38z/arkSYN -decimals = 18 - -[as] -peggy_denom = factory/inj122qtfcjfx9suvgr5s7rtqgfy8xvtjhm8uc4x9f/aaa2 -decimals = 0 - -[axlUSDC] -peggy_denom = ibc/7E1AF94AD246BE522892751046F0C959B768642E5671CC3742264068D49553C0 -decimals = 6 - -[b123123] -peggy_denom = factory/inj18qxpzpkqpzuxqe37zr8jgc3f52mpv4nem9qhhe/b123123 -decimals = 9 - -[bINJ] -peggy_denom = factory/inj1dxp690rd86xltejgfq2fa7f2nxtgmm5cer3hvu/binj -decimals = 18 - -[bab] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/bab -decimals = 6 - -[band] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Vote-0 -decimals = 6 - -[bbk] -peggy_denom = factory/inj19lpvmsjush9l03csrkky9xynejfv229h5mttut/bbk -decimals = 6 - -[bdlsj] -peggy_denom = factory/inj18skkzztnku04f9cmscg2hwsj6xrau73lvjtklk/bdlsj -decimals = 6 - -[bior] -peggy_denom = factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/nnn -decimals = 6 - -[bnUSD] -peggy_denom = inj1qspaxnztkkzahvp6scq6xfpgafejmj2td83r9j -decimals = 18 - -[btc] -peggy_denom = factory/inj1lklvs2hgkvdjzzltd4nqw9vtcqwdkjv74xgz4n/btc -decimals = 9 - -[bzb] -peggy_denom = factory/inj19lpvmsjush9l03csrkky9xynejfv229h5mttut/bzb -decimals = 6 - -[como] -peggy_denom = factory/inj1pp0vx4nd96fdqw2kyj44ytx6xx7yu0368m5lpv/como -decimals = 6 - -[cook] -peggy_denom = factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/cook -decimals = 6 - -[cookie] -peggy_denom = factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/cookie -decimals = 6 - -[cxld] -peggy_denom = factory/inj1gsvgj44zjlj6w890a7huedymh7v96sv839pwsv/cxld -decimals = 6 - -[cxlddd] -peggy_denom = factory/inj1gsvgj44zjlj6w890a7huedymh7v96sv839pwsv/cxlddd -decimals = 6 - -[dINJ] -peggy_denom = inj134wfjutywny9qnyux2xgdmm0hfj7mwpl39r3r9 -decimals = 18 - -[dWIF] -peggy_denom = factory/inj1gdvjnrz6xx9ag293syafjjfk4t9pn73kmufxn3/dWIF -decimals = 6 - -[dYdX] -peggy_denom = peggy0x92d6c1e31e14520e676a687f0a93788b716beff5 -decimals = 18 - -[ddd] -peggy_denom = factory/inj1e3m5wx60p2q0tjyg976c805tnt60xdx4cqmskj/ddd -decimals = 6 - -[dfdf] -peggy_denom = factory/inj1js6xyr58llrsme8zwydk2u6jty95q0d3aqhrq6/dfdf -decimals = 6 - -[dffd] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/dffd -decimals = 6 - -[diesel] -peggy_denom = factory/inj14830p49gtge4tdxs2t8jujzlc3c08evgx0h9uv/diesel -decimals = 6 - -[duynt-1] -peggy_denom = factory/inj137tf29euf7spx5jdaax5eamsmuvg08sgauf9ad/duynt-1 -decimals = 9 - -[ezETH] -peggy_denom = peggy0xbf5495Efe5DB9ce00f80364C8B423567e58d2110 -decimals = 18 - -[fINJ] -peggy_denom = factory/inj1znf9vj0gjl0uhewdqa7eqyvrjgmyqvmc7tvwrm/test -decimals = 0 - -[fUSDT] -peggy_denom = peggy0x81994b9607e06ab3d5cF3AffF9a67374f05F27d7 -decimals = 8 - -[factory//lpinj19dehwd2m6hgqprp32xmeulql4dyylytyxun5rc] -peggy_denom = factory//lpinj19dehwd2m6hgqprp32xmeulql4dyylytyxun5rc -decimals = 18 - -[factory//lpinj19y8jas528ulf4s7edg6muyegthsm9z2mtaqkvz] -peggy_denom = factory//lpinj19y8jas528ulf4s7edg6muyegthsm9z2mtaqkvz -decimals = 18 - -[factory//lpinj1ckmdhdz7r8glfurckgtg0rt7x9uvner4ygqhlv] -peggy_denom = factory//lpinj1ckmdhdz7r8glfurckgtg0rt7x9uvner4ygqhlv -decimals = 18 - -[factory//lpinj1cscsemd4rppu3rkxg98dr68npzygxshuylnuux] -peggy_denom = factory//lpinj1cscsemd4rppu3rkxg98dr68npzygxshuylnuux -decimals = 18 - -[factory//lpinj1gunkve73s0h7jr9jgujjqwdxpur0rzt2dz30w9] -peggy_denom = factory//lpinj1gunkve73s0h7jr9jgujjqwdxpur0rzt2dz30w9 -decimals = 18 - -[factory//lpinj1l3urpgrzr6eh2alcfvyyxpazjzfdltz4h97u3m] -peggy_denom = factory//lpinj1l3urpgrzr6eh2alcfvyyxpazjzfdltz4h97u3m -decimals = 18 - -[factory//lpinj1pl9pe5yatc45hzngpt2s7l5avkl5znun5p40wl] -peggy_denom = factory//lpinj1pl9pe5yatc45hzngpt2s7l5avkl5znun5p40wl -decimals = 18 - -[factory//lpinj1xl7n4zw38878cret04u6vk3m2r6z8upepweccn] -peggy_denom = factory//lpinj1xl7n4zw38878cret04u6vk3m2r6z8upepweccn -decimals = 18 - -[factory/inj104lf4g3qelkz5w0vjhdesd4gp2nhsj9zy9zz0p/hoa6] -peggy_denom = factory/inj104lf4g3qelkz5w0vjhdesd4gp2nhsj9zy9zz0p/hoa6 -decimals = 0 - -[factory/inj104y00apw6uu26gthl7cafztdy67hhmwksekdem/position] -peggy_denom = factory/inj104y00apw6uu26gthl7cafztdy67hhmwksekdem/position -decimals = 0 - -[factory/inj106d64c09qyg6hrzdqx67spdqnp2pgrsd3sd7f8/position] -peggy_denom = factory/inj106d64c09qyg6hrzdqx67spdqnp2pgrsd3sd7f8/position -decimals = 0 - -[factory/inj106rseec0xmv5k06aaf8jsnr57ajw76rxa3gpwm/position] -peggy_denom = factory/inj106rseec0xmv5k06aaf8jsnr57ajw76rxa3gpwm/position -decimals = 0 - -[factory/inj107aqkjc3t5r3l9j4n9lgrma5tm3jav8qgppz6m/position] -peggy_denom = factory/inj107aqkjc3t5r3l9j4n9lgrma5tm3jav8qgppz6m/position -decimals = 0 - -[factory/inj107skcseta3egagj822d3qdgusx7a7ua7sepmcf/position] -peggy_denom = factory/inj107skcseta3egagj822d3qdgusx7a7ua7sepmcf/position -decimals = 0 - -[factory/inj107srzqksjtdevlpw888vuyrnqmlpjuv64ytm85/position] -peggy_denom = factory/inj107srzqksjtdevlpw888vuyrnqmlpjuv64ytm85/position -decimals = 0 - -[factory/inj108kv68d4x747v4ap0l66ckyn963gedc4qvwml7/position] -peggy_denom = factory/inj108kv68d4x747v4ap0l66ckyn963gedc4qvwml7/position -decimals = 0 - -[factory/inj108t3mlej0dph8er6ca2lq5cs9pdgzva5mqsn5p/position] -peggy_denom = factory/inj108t3mlej0dph8er6ca2lq5cs9pdgzva5mqsn5p/position -decimals = 0 - -[factory/inj109rcepnmg7ewjcc4my3448jm3h0yjdwcl6kmnl/position] -peggy_denom = factory/inj109rcepnmg7ewjcc4my3448jm3h0yjdwcl6kmnl/position -decimals = 0 - -[factory/inj10ajd3f46mp755wmhgke8w4vcegfjndwfzymf82/position] -peggy_denom = factory/inj10ajd3f46mp755wmhgke8w4vcegfjndwfzymf82/position -decimals = 0 - -[factory/inj10fz2cj00ee80y76pdzg06dxfamat8nfpr9vl5s/position] -peggy_denom = factory/inj10fz2cj00ee80y76pdzg06dxfamat8nfpr9vl5s/position -decimals = 0 - -[factory/inj10g45te2l6s77jzxszjp9q6tsnn23l5suhnqmdz/position] -peggy_denom = factory/inj10g45te2l6s77jzxszjp9q6tsnn23l5suhnqmdz/position -decimals = 0 - -[factory/inj10hmmvlqq6rrlf2c2v982d6xqsns4m3sy086r27/position] -peggy_denom = factory/inj10hmmvlqq6rrlf2c2v982d6xqsns4m3sy086r27/position -decimals = 0 - -[factory/inj10ngu4y3t2zvn4xjfsmm73gvf03mcscrtrgjp0t/ak] -peggy_denom = factory/inj10ngu4y3t2zvn4xjfsmm73gvf03mcscrtrgjp0t/ak -decimals = 6 - -[factory/inj10nv20xe4x325sq557ddcmsyla7zaj6pnssrfw9/position] -peggy_denom = factory/inj10nv20xe4x325sq557ddcmsyla7zaj6pnssrfw9/position -decimals = 0 - -[factory/inj10p8ma8z6nrwm4u7kjn8gcc3dcm490sgp0d24az/position] -peggy_denom = factory/inj10p8ma8z6nrwm4u7kjn8gcc3dcm490sgp0d24az/position -decimals = 0 - -[factory/inj10r5lmqqu7qznvpffxkpwgxk0d3yrj82nj8gukz/position] -peggy_denom = factory/inj10r5lmqqu7qznvpffxkpwgxk0d3yrj82nj8gukz/position -decimals = 0 - -[factory/inj10u2e7h04fxlklnk34kjwuwfexmq8g8fke8zye8/position] -peggy_denom = factory/inj10u2e7h04fxlklnk34kjwuwfexmq8g8fke8zye8/position -decimals = 0 - -[factory/inj10u9gdgvqm90uh2ry27phtp3enhcxkwrvw0upq4/position] -peggy_denom = factory/inj10u9gdgvqm90uh2ry27phtp3enhcxkwrvw0upq4/position -decimals = 0 - -[factory/inj10uycavvkc4uqr8tns3599r0t2xux4rz3y8apym/1684002313InjUsdt1d110C] -peggy_denom = factory/inj10uycavvkc4uqr8tns3599r0t2xux4rz3y8apym/1684002313InjUsdt1d110C -decimals = 0 - -[factory/inj10v8zx4v6sgv86v9gvrm8xuv82yut469jhgahch/position] -peggy_denom = factory/inj10v8zx4v6sgv86v9gvrm8xuv82yut469jhgahch/position -decimals = 0 - -[factory/inj10vkkttgxdeqcgeppu20x9qtyvuaxxev8qh0awq/usdt] -peggy_denom = factory/inj10vkkttgxdeqcgeppu20x9qtyvuaxxev8qh0awq/usdt -decimals = 6 - -[factory/inj10xw27amgy7lc55r4g3z2uyxqm0p0l5xyeajvq6/position] -peggy_denom = factory/inj10xw27amgy7lc55r4g3z2uyxqm0p0l5xyeajvq6/position -decimals = 0 - -[factory/inj120xfj9muh5x5kxujgz2xwqh70zc034jt4cpjl0/position] -peggy_denom = factory/inj120xfj9muh5x5kxujgz2xwqh70zc034jt4cpjl0/position -decimals = 0 - -[factory/inj12264e59fxnly8dlfyq8eyhx4nuqcfejukwkr0d/ak] -peggy_denom = factory/inj12264e59fxnly8dlfyq8eyhx4nuqcfejukwkr0d/ak -decimals = 0 - -[factory/inj122qtfcjfx9suvgr5s7rtqgfy8xvtjhm8uc4x9f/am] -peggy_denom = factory/inj122qtfcjfx9suvgr5s7rtqgfy8xvtjhm8uc4x9f/am -decimals = 0 - -[factory/inj122qtfcjfx9suvgr5s7rtqgfy8xvtjhm8uc4x9f/ma] -peggy_denom = factory/inj122qtfcjfx9suvgr5s7rtqgfy8xvtjhm8uc4x9f/ma -decimals = 0 - -[factory/inj123mw4nhxxm69rl9pvzdhrasjjqs6suyj2qjpyj/position] -peggy_denom = factory/inj123mw4nhxxm69rl9pvzdhrasjjqs6suyj2qjpyj/position -decimals = 0 - -[factory/inj125a0l6yk05z3jwvjfjh78tlkjm4kn6ndduxjnk/DGNZ] -peggy_denom = factory/inj125a0l6yk05z3jwvjfjh78tlkjm4kn6ndduxjnk/DGNZ -decimals = 6 - -[factory/inj1275nlajjvqllkeupd65raqq3jcnm68qtzr8x8w/position] -peggy_denom = factory/inj1275nlajjvqllkeupd65raqq3jcnm68qtzr8x8w/position -decimals = 0 - -[factory/inj12azw92dc7u7a2fy0ndvr4w57hlsl48xdsm49ym/123] -peggy_denom = factory/inj12azw92dc7u7a2fy0ndvr4w57hlsl48xdsm49ym/123 -decimals = 0 - -[factory/inj12chntfdjyk9juvy5rlhe8tg2240mu5ulysu0ap/123] -peggy_denom = factory/inj12chntfdjyk9juvy5rlhe8tg2240mu5ulysu0ap/123 -decimals = 0 - -[factory/inj12cpfpmnc6at9a67qvg6t7uqjaz9glexcl85xf5/test] -peggy_denom = factory/inj12cpfpmnc6at9a67qvg6t7uqjaz9glexcl85xf5/test -decimals = 0 - -[factory/inj12e7m2n4fspavdxm5c35wakwq54se9vadufytv3/position] -peggy_denom = factory/inj12e7m2n4fspavdxm5c35wakwq54se9vadufytv3/position -decimals = 0 - -[factory/inj12ey59nafu36zpn5n428qqqw0jcr2aukphk5up3/USDC] -peggy_denom = factory/inj12ey59nafu36zpn5n428qqqw0jcr2aukphk5up3/USDC -decimals = 0 - -[factory/inj12f9v6rpd937gl8rggjprtd8egnt82yjwc9nu67/position] -peggy_denom = factory/inj12f9v6rpd937gl8rggjprtd8egnt82yjwc9nu67/position -decimals = 0 - -[factory/inj12h28c3a97savf42w0tarnjh9wza2wyx8v00r0n/position] -peggy_denom = factory/inj12h28c3a97savf42w0tarnjh9wza2wyx8v00r0n/position -decimals = 0 - -[factory/inj12hlpupnx80wj2ummwrjuw99mvr8a2z7us28n0g/position] -peggy_denom = factory/inj12hlpupnx80wj2ummwrjuw99mvr8a2z7us28n0g/position -decimals = 0 - -[factory/inj12lhpaueukkvq6v77mk0weawffa2nq9fv7h39ls/123] -peggy_denom = factory/inj12lhpaueukkvq6v77mk0weawffa2nq9fv7h39ls/123 -decimals = 0 - -[factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/rew1] -peggy_denom = factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/rew1 -decimals = 0 - -[factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/rew3] -peggy_denom = factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/rew3 -decimals = 0 - -[factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/reward1] -peggy_denom = factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/reward1 -decimals = 0 - -[factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/reward2] -peggy_denom = factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/reward2 -decimals = 0 - -[factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/reward3] -peggy_denom = factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/reward3 -decimals = 0 - -[factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/reward4] -peggy_denom = factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/reward4 -decimals = 0 - -[factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/test1] -peggy_denom = factory/inj12nn88vtuf893cpfkke23dszpr5uccqj2zqukt6/test1 -decimals = 0 - -[factory/inj12q3yjpr4rapsry7ccrmmrlgktn5dczca0c2upn/position] -peggy_denom = factory/inj12q3yjpr4rapsry7ccrmmrlgktn5dczca0c2upn/position -decimals = 0 - -[factory/inj12rh3d4xdhlvpqenrd04qhefcmxjsqpnewz3r6c/position] -peggy_denom = factory/inj12rh3d4xdhlvpqenrd04qhefcmxjsqpnewz3r6c/position -decimals = 0 - -[factory/inj12v9093vclva8930h4ptagh5pz7zg5wx5ch6d4g/position] -peggy_denom = factory/inj12v9093vclva8930h4ptagh5pz7zg5wx5ch6d4g/position -decimals = 0 - -[factory/inj12vdzxz9cngv3r250y0snwmc5w7u6dfpfvdw75s/SORA] -peggy_denom = factory/inj12vdzxz9cngv3r250y0snwmc5w7u6dfpfvdw75s/SORA -decimals = 0 - -[factory/inj12ve3saad36nr0jnj4whslpvct8adecydx8cxvh/position] -peggy_denom = factory/inj12ve3saad36nr0jnj4whslpvct8adecydx8cxvh/position -decimals = 0 - -[factory/inj12z248hyzzmpx57z7qfa075gv6mh6efqhfh9xda/position] -peggy_denom = factory/inj12z248hyzzmpx57z7qfa075gv6mh6efqhfh9xda/position -decimals = 0 - -[factory/inj12z5ym8nuu4g6xw48rjd25unkx3fa596qhvq7j3/position] -peggy_denom = factory/inj12z5ym8nuu4g6xw48rjd25unkx3fa596qhvq7j3/position -decimals = 0 - -[factory/inj130y99nqtke8hs2y7lksq8hq83rlvuf2ls8dxrw/ak] -peggy_denom = factory/inj130y99nqtke8hs2y7lksq8hq83rlvuf2ls8dxrw/ak -decimals = 6 - -[factory/inj1337ec3yzclg34usjeecs379jnngwsludf3ktc8/Fund3] -peggy_denom = factory/inj1337ec3yzclg34usjeecs379jnngwsludf3ktc8/Fund3 -decimals = 0 - -[factory/inj133psax2mn2sx3gwl2jz46mjye4ykf60tqktwsj/position] -peggy_denom = factory/inj133psax2mn2sx3gwl2jz46mjye4ykf60tqktwsj/position -decimals = 0 - -[factory/inj134g8gmtnp9d30k8kas06p2lu74pv73hwnj9acp/position] -peggy_denom = factory/inj134g8gmtnp9d30k8kas06p2lu74pv73hwnj9acp/position -decimals = 0 - -[factory/inj1372sy27ey4y7smdmxvqjqxd9zfvj0m92pndq37/position] -peggy_denom = factory/inj1372sy27ey4y7smdmxvqjqxd9zfvj0m92pndq37/position -decimals = 0 - -[factory/inj1379wdcffrl3k9peggxz90z2exra3xzyt4khpdq/position] -peggy_denom = factory/inj1379wdcffrl3k9peggxz90z2exra3xzyt4khpdq/position -decimals = 0 - -[factory/inj137ag64fnuy3t0eezuep6uzh5e54nmg6lh97vdn/position] -peggy_denom = factory/inj137ag64fnuy3t0eezuep6uzh5e54nmg6lh97vdn/position -decimals = 0 - -[factory/inj137kh22j9tevesy9qj2v783ysk23lc5pgl70u5f/BTC] -peggy_denom = factory/inj137kh22j9tevesy9qj2v783ysk23lc5pgl70u5f/BTC -decimals = 0 - -[factory/inj137ymec4et82mk456v287s90ktl3zneajhda02j/position] -peggy_denom = factory/inj137ymec4et82mk456v287s90ktl3zneajhda02j/position -decimals = 0 - -[factory/inj1389hh5y5vy9sycdpja6l8lddhxft80srafdvs5/bINJ] -peggy_denom = factory/inj1389hh5y5vy9sycdpja6l8lddhxft80srafdvs5/bINJ -decimals = 0 - -[factory/inj139f38e6tkdjva22gjvjs35h5d068pddssthp8k/duynt-1] -peggy_denom = factory/inj139f38e6tkdjva22gjvjs35h5d068pddssthp8k/duynt-1 -decimals = 9 - -[factory/inj13a3f3s2ts0vv6f07anaxrv8275hea5nydfy7mn/position] -peggy_denom = factory/inj13a3f3s2ts0vv6f07anaxrv8275hea5nydfy7mn/position -decimals = 0 - -[factory/inj13arjxgukmeadxuphhzfe3nc3m0e4prcjhyhq0v/position] -peggy_denom = factory/inj13arjxgukmeadxuphhzfe3nc3m0e4prcjhyhq0v/position -decimals = 0 - -[factory/inj13gcmxkhstgc932m5dw7t5nvsgq0xs4jjth02ru/position] -peggy_denom = factory/inj13gcmxkhstgc932m5dw7t5nvsgq0xs4jjth02ru/position -decimals = 0 - -[factory/inj13gpnyear408r74gz67tkufqxerzmleze4jpzk4/position] -peggy_denom = factory/inj13gpnyear408r74gz67tkufqxerzmleze4jpzk4/position -decimals = 0 - -[factory/inj13grw8z57336maklzmcrtqdavl3f0l2krdje7la/position] -peggy_denom = factory/inj13grw8z57336maklzmcrtqdavl3f0l2krdje7la/position -decimals = 0 - -[factory/inj13hvnqrr68qghfqqrnuupqapjf3jdcn8s3ydnd4/position] -peggy_denom = factory/inj13hvnqrr68qghfqqrnuupqapjf3jdcn8s3ydnd4/position -decimals = 0 - -[factory/inj13hzl5jn3snav6caduvs7nnu9aq29djqvvahmfl/position] -peggy_denom = factory/inj13hzl5jn3snav6caduvs7nnu9aq29djqvvahmfl/position -decimals = 0 - -[factory/inj13jktgp099d9nn05tapg2sk3p6lry5un3gt2khm/position] -peggy_denom = factory/inj13jktgp099d9nn05tapg2sk3p6lry5un3gt2khm/position -decimals = 0 - -[factory/inj13kg0eejq4cea4xrn6hgwxh9qejxpu3m66vgjg7/1716285818InjUsdt2d0.95P] -peggy_denom = factory/inj13kg0eejq4cea4xrn6hgwxh9qejxpu3m66vgjg7/1716285818InjUsdt2d0.95P -decimals = 0 - -[factory/inj13ll3ymyvcpx3psw0lw6eft7rvl8j59e5cgtrl6/position] -peggy_denom = factory/inj13ll3ymyvcpx3psw0lw6eft7rvl8j59e5cgtrl6/position -decimals = 0 - -[factory/inj13lpntvupm345s50ry2pqp0wanqgxqdt5d6p8lx/position] -peggy_denom = factory/inj13lpntvupm345s50ry2pqp0wanqgxqdt5d6p8lx/position -decimals = 0 - -[factory/inj13m8k8z8yprd8ml8nehgdgaszgpkdfj600hhnp9/test] -peggy_denom = factory/inj13m8k8z8yprd8ml8nehgdgaszgpkdfj600hhnp9/test -decimals = 0 - -[factory/inj13mk0qhujr7jrmfa6ythmu9am6kjnlh6c56v65x/position] -peggy_denom = factory/inj13mk0qhujr7jrmfa6ythmu9am6kjnlh6c56v65x/position -decimals = 0 - -[factory/inj13n6u7985zal9jdncfyqpk9mvk06gwnuscxdv9m/position] -peggy_denom = factory/inj13n6u7985zal9jdncfyqpk9mvk06gwnuscxdv9m/position -decimals = 0 - -[factory/inj13q53lemdwyzk075g0plmrxauk8xzl90rcnzvy3/position] -peggy_denom = factory/inj13q53lemdwyzk075g0plmrxauk8xzl90rcnzvy3/position -decimals = 0 - -[factory/inj13qw7vw4zwaup4l66d4x3nv237rp5lz76lry5rt/position] -peggy_denom = factory/inj13qw7vw4zwaup4l66d4x3nv237rp5lz76lry5rt/position -decimals = 0 - -[factory/inj13qyx2l223zuc6zuthzhqctqpj6pd2uehugueyu/BTC] -peggy_denom = factory/inj13qyx2l223zuc6zuthzhqctqpj6pd2uehugueyu/BTC -decimals = 9 - -[factory/inj13rrx4978c09yauvszy2k6velzpxj5u9wqmvzfa/position] -peggy_denom = factory/inj13rrx4978c09yauvszy2k6velzpxj5u9wqmvzfa/position -decimals = 0 - -[factory/inj13s80vf90lu5x0wh4p0uccshwaajhd0v9y58kxh/position] -peggy_denom = factory/inj13s80vf90lu5x0wh4p0uccshwaajhd0v9y58kxh/position -decimals = 0 - -[factory/inj13s8gyvm86p7tfcv6zcx5sjqgx4ruwfz8vy3hnm/LAMA] -peggy_denom = factory/inj13s8gyvm86p7tfcv6zcx5sjqgx4ruwfz8vy3hnm/LAMA -decimals = 6 - -[factory/inj13s8gyvm86p7tfcv6zcx5sjqgx4ruwfz8vy3hnm/TEST] -peggy_denom = factory/inj13s8gyvm86p7tfcv6zcx5sjqgx4ruwfz8vy3hnm/TEST -decimals = 6 - -[factory/inj13uegzntzhvesqgutkste6y483dznrlsc70ymvk/position] -peggy_denom = factory/inj13uegzntzhvesqgutkste6y483dznrlsc70ymvk/position -decimals = 0 - -[factory/inj13urjtxzgfy6g6x85ewpuq97jd9r7q92plp9s37/position] -peggy_denom = factory/inj13urjtxzgfy6g6x85ewpuq97jd9r7q92plp9s37/position -decimals = 0 - -[factory/inj13wp96prwk7dvh5ekrlld896xnawd38gn8jnydh/position] -peggy_denom = factory/inj13wp96prwk7dvh5ekrlld896xnawd38gn8jnydh/position -decimals = 0 - -[factory/inj13ylj40uqx338u5xtccujxystzy39q08q2gz3dx/lp] -peggy_denom = factory/inj13ylj40uqx338u5xtccujxystzy39q08q2gz3dx/lp -decimals = 0 - -[factory/inj13yzzxz90naqer4utnp03zlj5rguhu7v0hd2jzl/ak] -peggy_denom = factory/inj13yzzxz90naqer4utnp03zlj5rguhu7v0hd2jzl/ak -decimals = 0 - -[factory/inj140360nr9ttkv0ekts5vnmsdv55kfhacqpqsahe/test] -peggy_denom = factory/inj140360nr9ttkv0ekts5vnmsdv55kfhacqpqsahe/test -decimals = 0 - -[factory/inj144hz9eva0vg5e69lfe5c8j6jusm4z2mvjjc9vy/position] -peggy_denom = factory/inj144hz9eva0vg5e69lfe5c8j6jusm4z2mvjjc9vy/position -decimals = 0 - -[factory/inj14558npfqefc5e3qye4arcs49falh0vusyknz7m/position] -peggy_denom = factory/inj14558npfqefc5e3qye4arcs49falh0vusyknz7m/position -decimals = 0 - -[factory/inj1468yhun3ta93aqyasmwp3rmgjp5z4le4vfcmrh/test] -peggy_denom = factory/inj1468yhun3ta93aqyasmwp3rmgjp5z4le4vfcmrh/test -decimals = 0 - -[factory/inj146w955lesh75vampgn23eccy9yzaf46yaa60nh/position] -peggy_denom = factory/inj146w955lesh75vampgn23eccy9yzaf46yaa60nh/position -decimals = 0 - -[factory/inj147dmmltelpvkjcfneg5r4q66glhe2rmr2hmm59/lp] -peggy_denom = factory/inj147dmmltelpvkjcfneg5r4q66glhe2rmr2hmm59/lp -decimals = 0 - -[factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-demo13] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-demo13 -decimals = 6 - -[factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-erc] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-erc -decimals = 0 - -[factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-fct] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-fct -decimals = 0 - -[factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-test] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-test -decimals = 0 - -[factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-test2] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-test2 -decimals = 0 - -[factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-test3] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-test3 -decimals = 6 - -[factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-test4] -peggy_denom = factory/inj147s5vh6ck67zjtpgd674c7efd47jqck55chw4l/inj-test4 -decimals = 6 - -[factory/inj147z3gktuc897hg9hp9razjqyj9uxfhhlck8y45/usdt] -peggy_denom = factory/inj147z3gktuc897hg9hp9razjqyj9uxfhhlck8y45/usdt -decimals = 0 - -[factory/inj14arqtqs4g4k6l6xhm37ga7dnks4l5ctd8n7hvv/position] -peggy_denom = factory/inj14arqtqs4g4k6l6xhm37ga7dnks4l5ctd8n7hvv/position -decimals = 0 - -[factory/inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku/phuc] -peggy_denom = factory/inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku/phuc -decimals = 6 - -[factory/inj14dvet9j73cak22sf7nzgn52ae8z4fdxzsn683v/asg] -peggy_denom = factory/inj14dvet9j73cak22sf7nzgn52ae8z4fdxzsn683v/asg -decimals = 8 - -[factory/inj14g9kg0smwfhmrg86sun8pegs5jemd0ngpnl0jr/position] -peggy_denom = factory/inj14g9kg0smwfhmrg86sun8pegs5jemd0ngpnl0jr/position -decimals = 0 - -[factory/inj14gtwrd65zehu99cka0j65597jglgvmdxcwmvps/position] -peggy_denom = factory/inj14gtwrd65zehu99cka0j65597jglgvmdxcwmvps/position -decimals = 0 - -[factory/inj14gzpam4a5cvy49g3kht9sj4rq4lxqcn50zh3zt/position] -peggy_denom = factory/inj14gzpam4a5cvy49g3kht9sj4rq4lxqcn50zh3zt/position -decimals = 0 - -[factory/inj14l850zpucene39qnkfqvtdlh6wz4cxphfn6uvx/duynt-1] -peggy_denom = factory/inj14l850zpucene39qnkfqvtdlh6wz4cxphfn6uvx/duynt-1 -decimals = 9 - -[factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/TestToken] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/TestToken -decimals = 0 - -[factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/TestToken2] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/TestToken2 -decimals = 6 - -[factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/test1] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/test1 -decimals = 0 - -[factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/tst2] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/tst2 -decimals = 0 - -[factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/tst3] -peggy_denom = factory/inj14lvrxu8jlrdytval7k29nxhxr9a39u6am86tr3/tst3 -decimals = 0 - -[factory/inj14mm2x4azr024pte5pn74dpasxlvpf29s6k8gvj/uLP] -peggy_denom = factory/inj14mm2x4azr024pte5pn74dpasxlvpf29s6k8gvj/uLP -decimals = 0 - -[factory/inj14plz8hqaj4p7pghdg7c6xlglpyhg2s00j76kn8/Ann] -peggy_denom = factory/inj14plz8hqaj4p7pghdg7c6xlglpyhg2s00j76kn8/Ann -decimals = 9 - -[factory/inj14pr5qwg66mayechldze8dsm0garek6z4jng6et/position] -peggy_denom = factory/inj14pr5qwg66mayechldze8dsm0garek6z4jng6et/position -decimals = 0 - -[factory/inj14qzjk7c9a0wyl6kjhs74zg2hcv7vzc9025dwtu/position] -peggy_denom = factory/inj14qzjk7c9a0wyl6kjhs74zg2hcv7vzc9025dwtu/position -decimals = 0 - -[factory/inj14rzuvnd8al6f7jjfz3k54vkdtrrgvea8q8u0al/position] -peggy_denom = factory/inj14rzuvnd8al6f7jjfz3k54vkdtrrgvea8q8u0al/position -decimals = 0 - -[factory/inj14scx0fjp8m6ssn34ql8353yzpq3l4gmk9eycx3/position] -peggy_denom = factory/inj14scx0fjp8m6ssn34ql8353yzpq3l4gmk9eycx3/position -decimals = 0 - -[factory/inj14sllqhu93hvvygte05ucu5am7ugny2gna7sffd/inj-test2] -peggy_denom = factory/inj14sllqhu93hvvygte05ucu5am7ugny2gna7sffd/inj-test2 -decimals = 10 - -[factory/inj14sllqhu93hvvygte05ucu5am7ugny2gna7sffd/inj-test3] -peggy_denom = factory/inj14sllqhu93hvvygte05ucu5am7ugny2gna7sffd/inj-test3 -decimals = 10 - -[factory/inj14sxssk5tzx8ttq3msj2jl29kv60znk4c40nq59/position] -peggy_denom = factory/inj14sxssk5tzx8ttq3msj2jl29kv60znk4c40nq59/position -decimals = 0 - -[factory/inj14t478a7rap97aukq2da92qch7u7g2l5pfqjshc/position] -peggy_denom = factory/inj14t478a7rap97aukq2da92qch7u7g2l5pfqjshc/position -decimals = 0 - -[factory/inj14tccfnp5rfzhm6y6c97juheal6uancftmtpdvd/position] -peggy_denom = factory/inj14tccfnp5rfzhm6y6c97juheal6uancftmtpdvd/position -decimals = 0 - -[factory/inj14u5f88vmk2zl7xjjg8y57yek0sr9ardm0uac06/position] -peggy_denom = factory/inj14u5f88vmk2zl7xjjg8y57yek0sr9ardm0uac06/position -decimals = 0 - -[factory/inj14wqlxeezx4t5jm6vq6226a3exlaqc8r25kglns/inj1mf2mvsgd7rrcl5hlksnqx8uwkvzqlal7djyzkf] -peggy_denom = factory/inj14wqlxeezx4t5jm6vq6226a3exlaqc8r25kglns/inj1mf2mvsgd7rrcl5hlksnqx8uwkvzqlal7djyzkf -decimals = 18 - -[factory/inj14xya2gezzxnfy0mqtgl9uh3sk27tzfkt89ldhc/position] -peggy_denom = factory/inj14xya2gezzxnfy0mqtgl9uh3sk27tzfkt89ldhc/position -decimals = 0 - -[factory/inj14y95s7mdpke2jc7m4sqfykzwm3sujugz0dh5m7/position] -peggy_denom = factory/inj14y95s7mdpke2jc7m4sqfykzwm3sujugz0dh5m7/position -decimals = 0 - -[factory/inj14ywl5l5wsyaqx9g39sejvx7zqyecvvgktg5pxz/position] -peggy_denom = factory/inj14ywl5l5wsyaqx9g39sejvx7zqyecvvgktg5pxz/position -decimals = 0 - -[factory/inj14zw0njuejh9us94wdhg3msptzxpcjpq0anampd/ak] -peggy_denom = factory/inj14zw0njuejh9us94wdhg3msptzxpcjpq0anampd/ak -decimals = 6 - -[factory/inj150lje070zsehmdl4sesxxxjcc57200r9aqxk9c/test] -peggy_denom = factory/inj150lje070zsehmdl4sesxxxjcc57200r9aqxk9c/test -decimals = 0 - -[factory/inj152y0xa2s9w3txcaqsxu0zlzjak5gnvmxj7m09s/position] -peggy_denom = factory/inj152y0xa2s9w3txcaqsxu0zlzjak5gnvmxj7m09s/position -decimals = 0 - -[factory/inj1530p68vvxpn2jxj7v45wwf2acy99fu7pzlq66v/position] -peggy_denom = factory/inj1530p68vvxpn2jxj7v45wwf2acy99fu7pzlq66v/position -decimals = 0 - -[factory/inj153cngflyafkxxxycj23maguuh4nx2ny2k4phlt/position] -peggy_denom = factory/inj153cngflyafkxxxycj23maguuh4nx2ny2k4phlt/position -decimals = 0 - -[factory/inj154690wmz247j75at9ttvmf54h6drtwzq4lefa5/bINJ] -peggy_denom = factory/inj154690wmz247j75at9ttvmf54h6drtwzq4lefa5/bINJ -decimals = 0 - -[factory/inj157s8m4mf5tsjp5ttvhkta56lmu2wzfs6mxxrpk/position] -peggy_denom = factory/inj157s8m4mf5tsjp5ttvhkta56lmu2wzfs6mxxrpk/position -decimals = 0 - -[factory/inj1586dahe90a0xh4j56c8308pywxs0lmenhl4y2z/position] -peggy_denom = factory/inj1586dahe90a0xh4j56c8308pywxs0lmenhl4y2z/position -decimals = 0 - -[factory/inj159y4fgpwdu26mcc35dmqwr5dfxjvlhfzqccpss/test] -peggy_denom = factory/inj159y4fgpwdu26mcc35dmqwr5dfxjvlhfzqccpss/test -decimals = 9 - -[factory/inj15adq44kjk2xcc6tn27aqqwmawr4le6vshkcyut/position] -peggy_denom = factory/inj15adq44kjk2xcc6tn27aqqwmawr4le6vshkcyut/position -decimals = 0 - -[factory/inj15c2suzwxzh8h240e58ueu5w3egpvul28c7jdt8/BTC] -peggy_denom = factory/inj15c2suzwxzh8h240e58ueu5w3egpvul28c7jdt8/BTC -decimals = 9 - -[factory/inj15csnumyd59pv7sp4lmt8ycg0zaqwed8k474q79/position] -peggy_denom = factory/inj15csnumyd59pv7sp4lmt8ycg0zaqwed8k474q79/position -decimals = 0 - -[factory/inj15fywtwfmu7qx36x5sj84zcpgttmswa2g87jtz6/position] -peggy_denom = factory/inj15fywtwfmu7qx36x5sj84zcpgttmswa2g87jtz6/position -decimals = 0 - -[factory/inj15g0h6wgwm23cdunkttepuzqwmr8fy09p54lf4j/duynt-1] -peggy_denom = factory/inj15g0h6wgwm23cdunkttepuzqwmr8fy09p54lf4j/duynt-1 -decimals = 9 - -[factory/inj15gm26dm98zl9nkcgapfk88zfukzk5j2xxmmdxr/position] -peggy_denom = factory/inj15gm26dm98zl9nkcgapfk88zfukzk5j2xxmmdxr/position -decimals = 0 - -[factory/inj15j4dcc7s0f3mcnk06armj46rfljee9re46l6kw/test] -peggy_denom = factory/inj15j4dcc7s0f3mcnk06armj46rfljee9re46l6kw/test -decimals = 9 - -[factory/inj15jt57jdw43qyz27z4rsnng6y3zdkafutm6yf56/position] -peggy_denom = factory/inj15jt57jdw43qyz27z4rsnng6y3zdkafutm6yf56/position -decimals = 0 - -[factory/inj15jy9vzmyy63ql9y6dvned2kdat2994x5f4ldu4/INJS] -peggy_denom = factory/inj15jy9vzmyy63ql9y6dvned2kdat2994x5f4ldu4/INJS -decimals = 0 - -[factory/inj15k2fpq4s2ndtreg428qtl8ddhfpmrtsxcs43l3/position] -peggy_denom = factory/inj15k2fpq4s2ndtreg428qtl8ddhfpmrtsxcs43l3/position -decimals = 0 - -[factory/inj15km5dcny0x3meyl65w6ks6mlfqnjurk7yrl0k3/position] -peggy_denom = factory/inj15km5dcny0x3meyl65w6ks6mlfqnjurk7yrl0k3/position -decimals = 0 - -[factory/inj15ltws5j4any8ld6j589c9p0yet3cj305kfndeh/position] -peggy_denom = factory/inj15ltws5j4any8ld6j589c9p0yet3cj305kfndeh/position -decimals = 0 - -[factory/inj15ne7du4sve9cycegurcnxuk2v4mh8c6hwytxxs/position] -peggy_denom = factory/inj15ne7du4sve9cycegurcnxuk2v4mh8c6hwytxxs/position -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1ctstn2s984k5lppnuwjg5asvw00tnpym3du23f] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1ctstn2s984k5lppnuwjg5asvw00tnpym3du23f -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1d40cf938v7hjzva4rx8qj5drgw8ujmrll2rn5g] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1d40cf938v7hjzva4rx8qj5drgw8ujmrll2rn5g -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1glq4yyrg80x573ldx9k5889lndkgkzv40slncl] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1glq4yyrg80x573ldx9k5889lndkgkzv40slncl -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1k9r6nhxax73zhj9ll5wzylel8w0p7gm9e686r9] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1k9r6nhxax73zhj9ll5wzylel8w0p7gm9e686r9 -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1ka8ftk2849330y6r86tcgmv8a3rhpxfrxtn7g5] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1ka8ftk2849330y6r86tcgmv8a3rhpxfrxtn7g5 -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1kl57u9529z2ts3tlhv38mrtnfps0sy3vulevcr] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1kl57u9529z2ts3tlhv38mrtnfps0sy3vulevcr -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1ljgxpde6zkh48lqfjsusaq5p32wqjycsrjdlk9] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1ljgxpde6zkh48lqfjsusaq5p32wqjycsrjdlk9 -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1lxkn2vwetsdmw6v7s64m5r2kw6fgnew8suealn] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1lxkn2vwetsdmw6v7s64m5r2kw6fgnew8suealn -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1mknpkud4re5vasfcnx9k278f8lyr5ndaaka86p] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1mknpkud4re5vasfcnx9k278f8lyr5ndaaka86p -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1u6vdnft0qfzncpq6hvq42ck9pk6dz4qv74a0w9] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1u6vdnft0qfzncpq6hvq42ck9pk6dz4qv74a0w9 -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1xvqkdyqpmd2q74dfa95spjw2krg9nn6m865juk] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1xvqkdyqpmd2q74dfa95spjw2krg9nn6m865juk -decimals = 0 - -[factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1yghk22j3l0nfaasmcs43x3t059ht8tsrm2rh6q] -peggy_denom = factory/inj15qdna0qtws4s56p00sszegzwng08w2ygnu5gjt/inj1yghk22j3l0nfaasmcs43x3t059ht8tsrm2rh6q -decimals = 0 - -[factory/inj15slc2dwxku5553gaauxnz89zcsmq5uzjcevue4/test] -peggy_denom = factory/inj15slc2dwxku5553gaauxnz89zcsmq5uzjcevue4/test -decimals = 6 - -[factory/inj15ukq6ja8l99dk0j82efvh2znjqesdpfxstlppn/position] -peggy_denom = factory/inj15ukq6ja8l99dk0j82efvh2znjqesdpfxstlppn/position -decimals = 0 - -[factory/inj15yf0qdyn5ej4hqw809nmv5n9e33mnqvddp84e4/bINJ] -peggy_denom = factory/inj15yf0qdyn5ej4hqw809nmv5n9e33mnqvddp84e4/bINJ -decimals = 0 - -[factory/inj15z6d8f386awtd7qxjmknqfla6ty0ajkyuvu00p/symbol2] -peggy_denom = factory/inj15z6d8f386awtd7qxjmknqfla6ty0ajkyuvu00p/symbol2 -decimals = 0 - -[factory/inj162a76ehzty0rlqd2rthr3sf44vnjcgkrctakpv/position] -peggy_denom = factory/inj162a76ehzty0rlqd2rthr3sf44vnjcgkrctakpv/position -decimals = 0 - -[factory/inj162r4dwle5gaknz3ulsyk7r9mhgs3u2gy5vw7cw/position] -peggy_denom = factory/inj162r4dwle5gaknz3ulsyk7r9mhgs3u2gy5vw7cw/position -decimals = 0 - -[factory/inj1647wcz036pchv8fzz30r9wuw2uktaxfjcjll90/position] -peggy_denom = factory/inj1647wcz036pchv8fzz30r9wuw2uktaxfjcjll90/position -decimals = 0 - -[factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/Lenz] -peggy_denom = factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/Lenz -decimals = 0 - -[factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/LenzTest1] -peggy_denom = factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/LenzTest1 -decimals = 0 - -[factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/inj-test1] -peggy_denom = factory/inj164dlu0as6r5a3kah6sdqv0tyx73upz8ggrcs77/inj-test1 -decimals = 0 - -[factory/inj164x6vellymtw8vyuq0pju6efspw3zfpjfkrtkh/symbol3] -peggy_denom = factory/inj164x6vellymtw8vyuq0pju6efspw3zfpjfkrtkh/symbol3 -decimals = 0 - -[factory/inj164zhe75ldeez54pd0m5wt598upws5pcxgsytsp/RC] -peggy_denom = factory/inj164zhe75ldeez54pd0m5wt598upws5pcxgsytsp/RC -decimals = 0 - -[factory/inj1686rnw0wpnf39umq9z92my2t3ge960nu0vgphc/nept] -peggy_denom = factory/inj1686rnw0wpnf39umq9z92my2t3ge960nu0vgphc/nept -decimals = 6 - -[factory/inj16ckgjaln883kpwkm0ddgqtdhg8u0ycpl2gucl3/TEST] -peggy_denom = factory/inj16ckgjaln883kpwkm0ddgqtdhg8u0ycpl2gucl3/TEST -decimals = 0 - -[factory/inj16dv5y968dnz8x4tjpmkt3jqxgs9u6kh79hfk5f/position] -peggy_denom = factory/inj16dv5y968dnz8x4tjpmkt3jqxgs9u6kh79hfk5f/position -decimals = 0 - -[factory/inj16e7sphvq7r0urvmkkgurqzgv78g09xx7987y2s/position] -peggy_denom = factory/inj16e7sphvq7r0urvmkkgurqzgv78g09xx7987y2s/position -decimals = 0 - -[factory/inj16g0sft9q7du9s982rjy2e8z4j5ywc494eu9j6p/test] -peggy_denom = factory/inj16g0sft9q7du9s982rjy2e8z4j5ywc494eu9j6p/test -decimals = 9 - -[factory/inj16jpcu46u9apqydpgx95dtcldgcgacv670epwgq/position] -peggy_denom = factory/inj16jpcu46u9apqydpgx95dtcldgcgacv670epwgq/position -decimals = 0 - -[factory/inj16l9vv0v4uxqw7l4z2yq3pz002ku06fhqlwmed0/inj13772jvadyx4j0hrlfh4jzk0v39k8uyfxrfs540] -peggy_denom = factory/inj16l9vv0v4uxqw7l4z2yq3pz002ku06fhqlwmed0/inj13772jvadyx4j0hrlfh4jzk0v39k8uyfxrfs540 -decimals = 0 - -[factory/inj16l9vv0v4uxqw7l4z2yq3pz002ku06fhqlwmed0/inj1z0whhrxkg38lcrj7lv2eetsfhwztpfntfkc636] -peggy_denom = factory/inj16l9vv0v4uxqw7l4z2yq3pz002ku06fhqlwmed0/inj1z0whhrxkg38lcrj7lv2eetsfhwztpfntfkc636 -decimals = 0 - -[factory/inj16mgv9d7n7pntsfdwvx6564qsyeuydf3366jcgc/test] -peggy_denom = factory/inj16mgv9d7n7pntsfdwvx6564qsyeuydf3366jcgc/test -decimals = 0 - -[factory/inj16mrltj2lymz6y70apv9e50crmd59fqglfx8cut/base_token] -peggy_denom = factory/inj16mrltj2lymz6y70apv9e50crmd59fqglfx8cut/base_token -decimals = 0 - -[factory/inj16mrltj2lymz6y70apv9e50crmd59fqglfx8cut/staking_token] -peggy_denom = factory/inj16mrltj2lymz6y70apv9e50crmd59fqglfx8cut/staking_token -decimals = 0 - -[factory/inj16n20mwtmvunl9tdkxajxzezn87z4jv5hgkjn5l/inj1k7ekkswq203cutjxn9h6qlhxx35v5jjqqydt95] -peggy_denom = factory/inj16n20mwtmvunl9tdkxajxzezn87z4jv5hgkjn5l/inj1k7ekkswq203cutjxn9h6qlhxx35v5jjqqydt95 -decimals = 0 - -[factory/inj16n20mwtmvunl9tdkxajxzezn87z4jv5hgkjn5l/inj1mp73mhsv4c8q4a27eu3nezas7m6zm7kag74lxt] -peggy_denom = factory/inj16n20mwtmvunl9tdkxajxzezn87z4jv5hgkjn5l/inj1mp73mhsv4c8q4a27eu3nezas7m6zm7kag74lxt -decimals = 0 - -[factory/inj16n20mwtmvunl9tdkxajxzezn87z4jv5hgkjn5l/inj1n7xdv06zmaramkr0nlm7n9rnr8grh8s5p5g6ah] -peggy_denom = factory/inj16n20mwtmvunl9tdkxajxzezn87z4jv5hgkjn5l/inj1n7xdv06zmaramkr0nlm7n9rnr8grh8s5p5g6ah -decimals = 0 - -[factory/inj16n20mwtmvunl9tdkxajxzezn87z4jv5hgkjn5l/inj1w6ghr4pkladye5x9zj4cmx7lpg7a8tg4x2t63f] -peggy_denom = factory/inj16n20mwtmvunl9tdkxajxzezn87z4jv5hgkjn5l/inj1w6ghr4pkladye5x9zj4cmx7lpg7a8tg4x2t63f -decimals = 0 - -[factory/inj16ptqr4z9wxafkx902uhk6vggwlhxf5nsxsda2q/position] -peggy_denom = factory/inj16ptqr4z9wxafkx902uhk6vggwlhxf5nsxsda2q/position -decimals = 0 - -[factory/inj16q5wdfrw0lgkvfezk5c99jdytahggp00ywn4ap/position] -peggy_denom = factory/inj16q5wdfrw0lgkvfezk5c99jdytahggp00ywn4ap/position -decimals = 0 - -[factory/inj16rcm5lgxahvt4rf8a0ngqdn3errswhvmt5yspl/position] -peggy_denom = factory/inj16rcm5lgxahvt4rf8a0ngqdn3errswhvmt5yspl/position -decimals = 0 - -[factory/inj16wyujswd2z99et0jl7fu4q4rrpgdtpp2msnw9v/position] -peggy_denom = factory/inj16wyujswd2z99et0jl7fu4q4rrpgdtpp2msnw9v/position -decimals = 0 - -[factory/inj170545298c6cletkgqxlsanyh36uvxuceudt3e2/ak] -peggy_denom = factory/inj170545298c6cletkgqxlsanyh36uvxuceudt3e2/ak -decimals = 6 - -[factory/inj173k7ym5yf7s27g5qkqjxnndzjqrv6pkvm0sxws/position] -peggy_denom = factory/inj173k7ym5yf7s27g5qkqjxnndzjqrv6pkvm0sxws/position -decimals = 0 - -[factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1lfl3y6z9vw3ceprnmxlxerrvgdkz42pm5vqsqy] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1lfl3y6z9vw3ceprnmxlxerrvgdkz42pm5vqsqy -decimals = 18 - -[factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1v3wvk6upf755pmpxlt8923ktfzrlcpc9fqlaq8] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1v3wvk6upf755pmpxlt8923ktfzrlcpc9fqlaq8 -decimals = 18 - -[factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1zn7unxezftv5ltfm5jpfv4s09aueg97dty0zrm] -peggy_denom = factory/inj174efvalr8d9muguudh9uyd7ah7zdukqs9w4adq/lpinj1zn7unxezftv5ltfm5jpfv4s09aueg97dty0zrm -decimals = 18 - -[factory/inj175jqkyrsl84x0u4smqy7cg9nrj5wsd6edkefpz/usdcet] -peggy_denom = factory/inj175jqkyrsl84x0u4smqy7cg9nrj5wsd6edkefpz/usdcet -decimals = 0 - -[factory/inj1766dfyjxn36cwj9jlzjj8lk22vtm7he7ym43et/position] -peggy_denom = factory/inj1766dfyjxn36cwj9jlzjj8lk22vtm7he7ym43et/position -decimals = 0 - -[factory/inj177p29pl5wfjpvvfv0l99340u49g4pwmqhqsy8f/duynt-1] -peggy_denom = factory/inj177p29pl5wfjpvvfv0l99340u49g4pwmqhqsy8f/duynt-1 -decimals = 0 - -[factory/inj179qpc0ra0ymyrgya9zdt3tp4a0vpawzlfgze48/ak] -peggy_denom = factory/inj179qpc0ra0ymyrgya9zdt3tp4a0vpawzlfgze48/ak -decimals = 6 - -[factory/inj179qpc0ra0ymyrgya9zdt3tp4a0vpawzlfgze48/poop] -peggy_denom = factory/inj179qpc0ra0ymyrgya9zdt3tp4a0vpawzlfgze48/poop -decimals = 0 - -[factory/inj17cx2lxl67mhxc966wl8syz4jyx9v764xgasyje/position] -peggy_denom = factory/inj17cx2lxl67mhxc966wl8syz4jyx9v764xgasyje/position -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj134fxd4hh6l568wdwsma937lalyadgtpaajnytd] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj134fxd4hh6l568wdwsma937lalyadgtpaajnytd -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj139yst2xf5yvesyzfmz6g6e57rczthyuwt7v4qk] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj139yst2xf5yvesyzfmz6g6e57rczthyuwt7v4qk -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj13ude3tmmg6q7042su3wz8eruflayw76xy2axad] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj13ude3tmmg6q7042su3wz8eruflayw76xy2axad -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj14r7u95c072s2sfkad6jugk9r8dnpg4ppc2jwr9] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj14r7u95c072s2sfkad6jugk9r8dnpg4ppc2jwr9 -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj159g4a8rjwdjsdgc6ea253v9rarcn5fuvf0dex8] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj159g4a8rjwdjsdgc6ea253v9rarcn5fuvf0dex8 -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj15j9cez59pdvf9kgv7jnfc6twzjdu9kwzf58ale] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj15j9cez59pdvf9kgv7jnfc6twzjdu9kwzf58ale -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj163qqvz2aygp42acacnpg6zvatn49x2xv8dksdx] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj163qqvz2aygp42acacnpg6zvatn49x2xv8dksdx -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj179acfjvr8sy7ewrdgmy2jm6a6dkgvx5xt4xfmh] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj179acfjvr8sy7ewrdgmy2jm6a6dkgvx5xt4xfmh -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj195rvg27lmdpejxncv9n9py8q60l3fwvwx8tcww] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj195rvg27lmdpejxncv9n9py8q60l3fwvwx8tcww -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1fwv0jgwhtq2peaxxrvp0ch4r6j22gftnqaxldx] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1fwv0jgwhtq2peaxxrvp0ch4r6j22gftnqaxldx -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1h4203fqnpm2dgze6e3h2muxpg3lyaaauwnk8tq] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1h4203fqnpm2dgze6e3h2muxpg3lyaaauwnk8tq -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1jvmgjhp9h9gynlxdgalcp42kz3e4zelqdc50mp] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1jvmgjhp9h9gynlxdgalcp42kz3e4zelqdc50mp -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1nhzvghauypl56kyem8msqkntkqrsulg23574dk] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1nhzvghauypl56kyem8msqkntkqrsulg23574dk -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1nxcvm92a9htme7k6zt57u0tsy9ey2707a8apq7] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1nxcvm92a9htme7k6zt57u0tsy9ey2707a8apq7 -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1r20szses3jy99gjz2qdw4gc9dvdavhwzdeches] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1r20szses3jy99gjz2qdw4gc9dvdavhwzdeches -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1tw5ed50hqnrul8zgdhz9rnjkwjmh25rh366csj] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1tw5ed50hqnrul8zgdhz9rnjkwjmh25rh366csj -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1xrg3lqha00tkllrma80jtvvxn77ce6ykhqur2q] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1xrg3lqha00tkllrma80jtvvxn77ce6ykhqur2q -decimals = 0 - -[factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1zd8zg8xeerlsrsfzxhpe3xgncrp0txetqye9cl] -peggy_denom = factory/inj17d34nrgnq5sj24qd6rk4jrnak628wfqxjx9uhz/lpinj1zd8zg8xeerlsrsfzxhpe3xgncrp0txetqye9cl -decimals = 0 - -[factory/inj17d8znfm9xnrrjmfdhs3y2m3etsc27s6jhe2ggd/ak] -peggy_denom = factory/inj17d8znfm9xnrrjmfdhs3y2m3etsc27s6jhe2ggd/ak -decimals = 6 - -[factory/inj17da0fne9wqaq5yyshf4fx3223zlh9ckj5pjn2j/YOLO] -peggy_denom = factory/inj17da0fne9wqaq5yyshf4fx3223zlh9ckj5pjn2j/YOLO -decimals = 6 - -[factory/inj17dckyf9z5ns40adz6vytca7wpq9nxgftl9lzql/position] -peggy_denom = factory/inj17dckyf9z5ns40adz6vytca7wpq9nxgftl9lzql/position -decimals = 0 - -[factory/inj17dy06jvaz5gwhedqaje38kgp93p75pjy3res4k/position] -peggy_denom = factory/inj17dy06jvaz5gwhedqaje38kgp93p75pjy3res4k/position -decimals = 0 - -[factory/inj17exh9s5gv2ywtsthh2w95asv9n8z08jxgzgshz/position] -peggy_denom = factory/inj17exh9s5gv2ywtsthh2w95asv9n8z08jxgzgshz/position -decimals = 0 - -[factory/inj17g5ad3xy25rz9je6wu85qye09xklppswh6p0eu/TEST] -peggy_denom = factory/inj17g5ad3xy25rz9je6wu85qye09xklppswh6p0eu/TEST -decimals = 6 - -[factory/inj17g5ad3xy25rz9je6wu85qye09xklppswh6p0eu/ak] -peggy_denom = factory/inj17g5ad3xy25rz9je6wu85qye09xklppswh6p0eu/ak -decimals = 6 - -[factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/uzen] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/uzen -decimals = 0 - -[factory/inj17je4snps2rfvsxtqd2rfe4fgknswhexggx55ns/holding] -peggy_denom = factory/inj17je4snps2rfvsxtqd2rfe4fgknswhexggx55ns/holding -decimals = 0 - -[factory/inj17ljxhz0c7tdcjfzhnk3xgk3mfudtcjs2g3676l/LIOR] -peggy_denom = factory/inj17ljxhz0c7tdcjfzhnk3xgk3mfudtcjs2g3676l/LIOR -decimals = 6 - -[factory/inj17ljxhz0c7tdcjfzhnk3xgk3mfudtcjs2g3676l/TEST] -peggy_denom = factory/inj17ljxhz0c7tdcjfzhnk3xgk3mfudtcjs2g3676l/TEST -decimals = 6 - -[factory/inj17mzwp7vpxglwyjp43zhq6h756q5gkkvg4jsd6l/position] -peggy_denom = factory/inj17mzwp7vpxglwyjp43zhq6h756q5gkkvg4jsd6l/position -decimals = 0 - -[factory/inj17nqu6hrdye8u2sa2u8l7smw5hu8ey76qee8ayt/position] -peggy_denom = factory/inj17nqu6hrdye8u2sa2u8l7smw5hu8ey76qee8ayt/position -decimals = 0 - -[factory/inj17nw48wdkx3lxl2zqjzjel3ayhy7lxffhfqr3ve/position] -peggy_denom = factory/inj17nw48wdkx3lxl2zqjzjel3ayhy7lxffhfqr3ve/position -decimals = 0 - -[factory/inj17q6g7a3a9zsx59m2n7nqg7pe3avjl6flfrvfzx/position] -peggy_denom = factory/inj17q6g7a3a9zsx59m2n7nqg7pe3avjl6flfrvfzx/position -decimals = 0 - -[factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1ajfruhkchstjzxwf0mnsc5c6gqw6s8jmptqgkg] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1ajfruhkchstjzxwf0mnsc5c6gqw6s8jmptqgkg -decimals = 18 - -[factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1g4exsdxg9gmme7a45lxgwv40ghrtl20vty0ynk] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1g4exsdxg9gmme7a45lxgwv40ghrtl20vty0ynk -decimals = 0 - -[factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1hc6d3ytp2axqkl5td3387wkg0n23he6rlrek82] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1hc6d3ytp2axqkl5td3387wkg0n23he6rlrek82 -decimals = 18 - -[factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1htdk4v3xd3tnvehecsuyqhc29gjtgxgg3ryej4] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1htdk4v3xd3tnvehecsuyqhc29gjtgxgg3ryej4 -decimals = 0 - -[factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1l9z45vvdpeggnctjr5dt0setaf8pfg965whl0d] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1l9z45vvdpeggnctjr5dt0setaf8pfg965whl0d -decimals = 18 - -[factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1lm5kx8suv5kzmlfya2kscqyzaxflekmh8cwuqz] -peggy_denom = factory/inj17q7ds0yh7hhtusff7gz8a5kx2uwxruttlxur96/lpinj1lm5kx8suv5kzmlfya2kscqyzaxflekmh8cwuqz -decimals = 18 - -[factory/inj17r2ycwhwp8p9xydx90clwphm6p9z4dxrt3m4pm/nept] -peggy_denom = factory/inj17r2ycwhwp8p9xydx90clwphm6p9z4dxrt3m4pm/nept -decimals = 6 - -[factory/inj17sjuxy3nsh3ytrckknztzl6gg0mmuyphmxp3pg/position] -peggy_denom = factory/inj17sjuxy3nsh3ytrckknztzl6gg0mmuyphmxp3pg/position -decimals = 0 - -[factory/inj17tuwsezzee35e2yacte7rnfl529pneuxt6q4h9/auction.0] -peggy_denom = factory/inj17tuwsezzee35e2yacte7rnfl529pneuxt6q4h9/auction.0 -decimals = 0 - -[factory/inj17u7w6x9upf8j4f98x4ftptkkwj8lumah0zhvy7/position] -peggy_denom = factory/inj17u7w6x9upf8j4f98x4ftptkkwj8lumah0zhvy7/position -decimals = 0 - -[factory/inj17v9lheupewm0kqdppp9cwwdlymfgqsefalleld/position] -peggy_denom = factory/inj17v9lheupewm0kqdppp9cwwdlymfgqsefalleld/position -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ABC] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ABC -decimals = 6 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/FT] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/FT -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/GG] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/GG -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/aave] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/aave -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ak] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ak -decimals = 6 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/aptos] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/aptos -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/art] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/art -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/avax] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/avax -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/bnb] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/bnb -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/crv] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/crv -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/cvx] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/cvx -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/gala] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/gala -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/hnt] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/hnt -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ldo] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ldo -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/op] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/op -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/shib] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/shib -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/sol] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/sol -decimals = 0 - -[factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/tia] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/tia -decimals = 6 - -[factory/inj17wse3rmdlx7umwn7k3c6e3lagevfrps7yh0esz/BTC] -peggy_denom = factory/inj17wse3rmdlx7umwn7k3c6e3lagevfrps7yh0esz/BTC -decimals = 9 - -[factory/inj17wwa9nsg6k5adxck3uryud2qz380k3v06wne9k/position] -peggy_denom = factory/inj17wwa9nsg6k5adxck3uryud2qz380k3v06wne9k/position -decimals = 0 - -[factory/inj17yy8ajcqvhw4d0ssq8x7un8w4y3ql7nj3cgdy2/position] -peggy_denom = factory/inj17yy8ajcqvhw4d0ssq8x7un8w4y3ql7nj3cgdy2/position -decimals = 0 - -[factory/inj17z4scdds993lytxqj5s8kr8rjatkdcgchfqwfw/position] -peggy_denom = factory/inj17z4scdds993lytxqj5s8kr8rjatkdcgchfqwfw/position -decimals = 0 - -[factory/inj185r4jp5k8peg0kma3ln9j77hmqpn4dqjf5a05g/duynt-1] -peggy_denom = factory/inj185r4jp5k8peg0kma3ln9j77hmqpn4dqjf5a05g/duynt-1 -decimals = 9 - -[factory/inj186uvu7eal5fr9w7s3g3jlvas0sknkd0chkjejh/position] -peggy_denom = factory/inj186uvu7eal5fr9w7s3g3jlvas0sknkd0chkjejh/position -decimals = 0 - -[factory/inj1889vpk022tkzsm89pjukp8cfyjp6qz2rdl43fn/position] -peggy_denom = factory/inj1889vpk022tkzsm89pjukp8cfyjp6qz2rdl43fn/position -decimals = 0 - -[factory/inj1890mjxvw8g3qqu9wnkyr0hnan0mvtqaulcmp3p/position] -peggy_denom = factory/inj1890mjxvw8g3qqu9wnkyr0hnan0mvtqaulcmp3p/position -decimals = 0 - -[factory/inj1894t5lutrkf895ndxtkxcwux5nkh5ykq32lrvj/position] -peggy_denom = factory/inj1894t5lutrkf895ndxtkxcwux5nkh5ykq32lrvj/position -decimals = 0 - -[factory/inj18c087n0mulwrmedajt6jt0zaa9xed8n7qtjt9p/position] -peggy_denom = factory/inj18c087n0mulwrmedajt6jt0zaa9xed8n7qtjt9p/position -decimals = 0 - -[factory/inj18c0c2c5ght4ffanxggq3ce0g8va6q5xvt8znty/position] -peggy_denom = factory/inj18c0c2c5ght4ffanxggq3ce0g8va6q5xvt8znty/position -decimals = 0 - -[factory/inj18ep02wj2074ek0v0qh6lj0skh9v8rh92eea77g/INJ] -peggy_denom = factory/inj18ep02wj2074ek0v0qh6lj0skh9v8rh92eea77g/INJ -decimals = 6 - -[factory/inj18k45cjqerwgq8y98zre05yr65wx42kagcdax8y/position] -peggy_denom = factory/inj18k45cjqerwgq8y98zre05yr65wx42kagcdax8y/position -decimals = 0 - -[factory/inj18l5a7rtkc8yh4m37jrvl7hg7xkm44rsch9nsth/position] -peggy_denom = factory/inj18l5a7rtkc8yh4m37jrvl7hg7xkm44rsch9nsth/position -decimals = 0 - -[factory/inj18lh8zx4hx0pyksyu74srktv4vgxskkkafknggl/NRL] -peggy_denom = factory/inj18lh8zx4hx0pyksyu74srktv4vgxskkkafknggl/NRL -decimals = 6 - -[factory/inj18n8ufg2v35u69phfe4c3h22sa2c0xsjmqk4yc3/BTC] -peggy_denom = factory/inj18n8ufg2v35u69phfe4c3h22sa2c0xsjmqk4yc3/BTC -decimals = 9 - -[factory/inj18pnq5dapjrvk6sp90f7stewu63rktmmhxuqx3m/position] -peggy_denom = factory/inj18pnq5dapjrvk6sp90f7stewu63rktmmhxuqx3m/position -decimals = 0 - -[factory/inj18sw8ljhpwm3289pz06hk79dgj0kdp6q288uey0/position] -peggy_denom = factory/inj18sw8ljhpwm3289pz06hk79dgj0kdp6q288uey0/position -decimals = 0 - -[factory/inj18uaqjlx6hw5dkd4lw4na6mynzfwufdlrv3kz7c/position] -peggy_denom = factory/inj18uaqjlx6hw5dkd4lw4na6mynzfwufdlrv3kz7c/position -decimals = 0 - -[factory/inj18udwms4qgh4wqv3g7754ur07wvl665n8uvemzz/position] -peggy_denom = factory/inj18udwms4qgh4wqv3g7754ur07wvl665n8uvemzz/position -decimals = 0 - -[factory/inj18uuznkdfcpltzhg07zj58gwsxyvp8vmqav2fvz/BTC] -peggy_denom = factory/inj18uuznkdfcpltzhg07zj58gwsxyvp8vmqav2fvz/BTC -decimals = 9 - -[factory/inj18vyfs7evrmtdawy9h3xjjv6y6mc42c3yt63qf8/position] -peggy_denom = factory/inj18vyfs7evrmtdawy9h3xjjv6y6mc42c3yt63qf8/position -decimals = 0 - -[factory/inj190hdezl52v7f98f3qfuq3kys5wa6lqfn3s2pek/duynt-1] -peggy_denom = factory/inj190hdezl52v7f98f3qfuq3kys5wa6lqfn3s2pek/duynt-1 -decimals = 9 - -[factory/inj1925pr7emqd3w3xt8ywctpmtc5tqs3alya6t2ap/position] -peggy_denom = factory/inj1925pr7emqd3w3xt8ywctpmtc5tqs3alya6t2ap/position -decimals = 0 - -[factory/inj1954pmp3y7whagxek6u5rgc0y4xan3n5cpgvq4p/position] -peggy_denom = factory/inj1954pmp3y7whagxek6u5rgc0y4xan3n5cpgvq4p/position -decimals = 0 - -[factory/inj195z3zm3z5uspvxuelrsfp60shq9cfykjhnlqyg/position] -peggy_denom = factory/inj195z3zm3z5uspvxuelrsfp60shq9cfykjhnlqyg/position -decimals = 0 - -[factory/inj1967pm6xz3x0w8uucx8pgl0w96qqdnkrflhkgsa/nUSD] -peggy_denom = factory/inj1967pm6xz3x0w8uucx8pgl0w96qqdnkrflhkgsa/nUSD -decimals = 18 - -[factory/inj196dtfgyrp0ugmsdla8m7kufu6pku2nxsj23htn/position] -peggy_denom = factory/inj196dtfgyrp0ugmsdla8m7kufu6pku2nxsj23htn/position -decimals = 0 - -[factory/inj197k0fk258qfwx67nwhsr7dvng2hhm8l2qnrqpw/position] -peggy_denom = factory/inj197k0fk258qfwx67nwhsr7dvng2hhm8l2qnrqpw/position -decimals = 0 - -[factory/inj19846n86rsmxdc4jccxtqezmexxwytzwrjxxu5u/position] -peggy_denom = factory/inj19846n86rsmxdc4jccxtqezmexxwytzwrjxxu5u/position -decimals = 0 - -[factory/inj199sgh70upvs6lpyd85s0v08lpxy4tx9redtlup/position] -peggy_denom = factory/inj199sgh70upvs6lpyd85s0v08lpxy4tx9redtlup/position -decimals = 0 - -[factory/inj19dehwd2m6hgqprp32xmeulql4dyylytyxun5rc/lp] -peggy_denom = factory/inj19dehwd2m6hgqprp32xmeulql4dyylytyxun5rc/lp -decimals = 0 - -[factory/inj19eauq5pxlxcta8ngn4436s7jw4p0gy5nrn0yla/1] -peggy_denom = factory/inj19eauq5pxlxcta8ngn4436s7jw4p0gy5nrn0yla/1 -decimals = 0 - -[factory/inj19ec03mpecsww2je83ph6cpn5u586ncec5qemyh/position] -peggy_denom = factory/inj19ec03mpecsww2je83ph6cpn5u586ncec5qemyh/position -decimals = 0 - -[factory/inj19g5dym4epw5h6udv4r25jfc5e2hga8ga85la5e/KIRA] -peggy_denom = factory/inj19g5dym4epw5h6udv4r25jfc5e2hga8ga85la5e/KIRA -decimals = 0 - -[factory/inj19g5dym4epw5h6udv4r25jfc5e2hga8ga85la5e/ak] -peggy_denom = factory/inj19g5dym4epw5h6udv4r25jfc5e2hga8ga85la5e/ak -decimals = 6 - -[factory/inj19g8hqphpah2ueqfc6lp0whe8ycegcchjtavakr/position] -peggy_denom = factory/inj19g8hqphpah2ueqfc6lp0whe8ycegcchjtavakr/position -decimals = 0 - -[factory/inj19hvtll63gdk7226lcgdthd8w6vkwvy2lygd54s/TooTOO] -peggy_denom = factory/inj19hvtll63gdk7226lcgdthd8w6vkwvy2lygd54s/TooTOO -decimals = 6 - -[factory/inj19kfmq7r8mcfalfa8h3vwxw8xlq6vz9zj6y6xct/position] -peggy_denom = factory/inj19kfmq7r8mcfalfa8h3vwxw8xlq6vz9zj6y6xct/position -decimals = 0 - -[factory/inj19l2xm8w8henavhpcfw9jq22ucjesvnzdkv8pj3/inj19l2xm8w8henavhpcfw9jq22ucjesvnzdkv8pj2] -peggy_denom = factory/inj19l2xm8w8henavhpcfw9jq22ucjesvnzdkv8pj3/inj19l2xm8w8henavhpcfw9jq22ucjesvnzdkv8pj2 -decimals = 0 - -[factory/inj19l2xm8w8henavhpcfw9jq22ucjesvnzdkv8pj3/inj1z0whhrxkg38lcrj7lv2eetsfhwztpfntfkc636] -peggy_denom = factory/inj19l2xm8w8henavhpcfw9jq22ucjesvnzdkv8pj3/inj1z0whhrxkg38lcrj7lv2eetsfhwztpfntfkc636 -decimals = 0 - -[factory/inj19pyact4kpwn5jedpselllzdg9y9v9vj4hg35af/uLP] -peggy_denom = factory/inj19pyact4kpwn5jedpselllzdg9y9v9vj4hg35af/uLP -decimals = 0 - -[factory/inj19qxhsqgje6llmg7xkxkqk2q8xztxpue09p4pvz/position] -peggy_denom = factory/inj19qxhsqgje6llmg7xkxkqk2q8xztxpue09p4pvz/position -decimals = 0 - -[factory/inj19rhvya4gj8sur47y5wc9sgfjervum6wg8qe4gx/position] -peggy_denom = factory/inj19rhvya4gj8sur47y5wc9sgfjervum6wg8qe4gx/position -decimals = 0 - -[factory/inj19sg6yzf8dcz55e5y2wwtxg7zssa58jsgqk7gnv/position] -peggy_denom = factory/inj19sg6yzf8dcz55e5y2wwtxg7zssa58jsgqk7gnv/position -decimals = 0 - -[factory/inj19t2lrnwlztg8stpxd0tl4cvpkeaxrqv7a42jtz/position] -peggy_denom = factory/inj19t2lrnwlztg8stpxd0tl4cvpkeaxrqv7a42jtz/position -decimals = 0 - -[factory/inj19ucnm6n9eunuyxulv0hj0dkavn9ywut0dsnuml/utest] -peggy_denom = factory/inj19ucnm6n9eunuyxulv0hj0dkavn9ywut0dsnuml/utest -decimals = 6 - -[factory/inj19utmngz6ty3yjz7e7m8v37gqjlglgf3r9lkdx6/position] -peggy_denom = factory/inj19utmngz6ty3yjz7e7m8v37gqjlglgf3r9lkdx6/position -decimals = 0 - -[factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/first-token] -peggy_denom = factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/first-token -decimals = 0 - -[factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/lck-1] -peggy_denom = factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/lck-1 -decimals = 18 - -[factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/mft-1] -peggy_denom = factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/mft-1 -decimals = 18 - -[factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/mftt] -peggy_denom = factory/inj19vcgt0pcywuy3tld6yp96emctrafc5s2p5duym/mftt -decimals = 6 - -[factory/inj19wpl5yqj68jf0esy2ss64a9vrwzwludrglck6u/position] -peggy_denom = factory/inj19wpl5yqj68jf0esy2ss64a9vrwzwludrglck6u/position -decimals = 0 - -[factory/inj19x3tplaa70fm420u48dwe7k0p4lypnaea0gm64/position] -peggy_denom = factory/inj19x3tplaa70fm420u48dwe7k0p4lypnaea0gm64/position -decimals = 0 - -[factory/inj19y64q35zwhxwsdzawhls8rrry7tmf50esvut7t/position] -peggy_denom = factory/inj19y64q35zwhxwsdzawhls8rrry7tmf50esvut7t/position -decimals = 0 - -[factory/inj19y8jas528ulf4s7edg6muyegthsm9z2mtaqkvz/lp] -peggy_denom = factory/inj19y8jas528ulf4s7edg6muyegthsm9z2mtaqkvz/lp -decimals = 0 - -[factory/inj19yzwyu8yklx68w94vscx8c2g86jqzfa6ksykln/Ann] -peggy_denom = factory/inj19yzwyu8yklx68w94vscx8c2g86jqzfa6ksykln/Ann -decimals = 9 - -[factory/inj1a30r8ef7l4hgwjcq3kuqtayez349ct68c6ttds/position] -peggy_denom = factory/inj1a30r8ef7l4hgwjcq3kuqtayez349ct68c6ttds/position -decimals = 0 - -[factory/inj1a3adz2q6ddsmswwh66u2yzs70wyjcfkd5d824c/position] -peggy_denom = factory/inj1a3adz2q6ddsmswwh66u2yzs70wyjcfkd5d824c/position -decimals = 0 - -[factory/inj1a46azyrr2uwgejvcf0dry7s0gjt8f0fzgp8kmj/position] -peggy_denom = factory/inj1a46azyrr2uwgejvcf0dry7s0gjt8f0fzgp8kmj/position -decimals = 0 - -[factory/inj1a5h0krl05ygsh3xyx8plmzm9anc7avvptp60v3/position] -peggy_denom = factory/inj1a5h0krl05ygsh3xyx8plmzm9anc7avvptp60v3/position -decimals = 0 - -[factory/inj1a5z8ae6nzemk8cnyjh326gu6py4n7jq8pz2x8e/position] -peggy_denom = factory/inj1a5z8ae6nzemk8cnyjh326gu6py4n7jq8pz2x8e/position -decimals = 0 - -[factory/inj1a8vtk998rq0mnd294527d4ufczshja85mcha4p/position] -peggy_denom = factory/inj1a8vtk998rq0mnd294527d4ufczshja85mcha4p/position -decimals = 0 - -[factory/inj1ae9wagmq456wm0rhlt0mpx4ea2w6q494y7gdml/position] -peggy_denom = factory/inj1ae9wagmq456wm0rhlt0mpx4ea2w6q494y7gdml/position -decimals = 0 - -[factory/inj1aetmaq5pswvfg6nhvgd4lt94qmg23ka3ljgxlm/SHURIKEN] -peggy_denom = factory/inj1aetmaq5pswvfg6nhvgd4lt94qmg23ka3ljgxlm/SHURIKEN -decimals = 6 - -[factory/inj1aetmaq5pswvfg6nhvgd4lt94qmg23ka3ljgxlm/lootbox1] -peggy_denom = factory/inj1aetmaq5pswvfg6nhvgd4lt94qmg23ka3ljgxlm/lootbox1 -decimals = 0 - -[factory/inj1aftq7re8s4d8s55l5aw4dgtt4ex837f2l5x0py/position] -peggy_denom = factory/inj1aftq7re8s4d8s55l5aw4dgtt4ex837f2l5x0py/position -decimals = 0 - -[factory/inj1agcntfljkxyjlqnvs07lym6ugtlcd2krvy2k4v/position] -peggy_denom = factory/inj1agcntfljkxyjlqnvs07lym6ugtlcd2krvy2k4v/position -decimals = 0 - -[factory/inj1agte07lxz2twqvt6upesxp4tc2z65mdshclgkh/position] -peggy_denom = factory/inj1agte07lxz2twqvt6upesxp4tc2z65mdshclgkh/position -decimals = 0 - -[factory/inj1ajydsjysrj932kp5yrth4c9fxpn5us8hanpfch/hoa8] -peggy_denom = factory/inj1ajydsjysrj932kp5yrth4c9fxpn5us8hanpfch/hoa8 -decimals = 0 - -[factory/inj1akalafk23jw2rrgkpdfwsv05g5wkzu03lnynyp/position] -peggy_denom = factory/inj1akalafk23jw2rrgkpdfwsv05g5wkzu03lnynyp/position -decimals = 0 - -[factory/inj1al5pu3h64gl9e555t8cfekxy59pk30e6r38t9f/nusd] -peggy_denom = factory/inj1al5pu3h64gl9e555t8cfekxy59pk30e6r38t9f/nusd -decimals = 0 - -[factory/inj1al78qgdyw69uq50exzmmnfjllm3t3wa8rzyzn3/position] -peggy_denom = factory/inj1al78qgdyw69uq50exzmmnfjllm3t3wa8rzyzn3/position -decimals = 0 - -[factory/inj1aluh09npz2wc7rq8hveuwgzxnlflrzuagewuls/karate] -peggy_denom = factory/inj1aluh09npz2wc7rq8hveuwgzxnlflrzuagewuls/karate -decimals = 6 - -[factory/inj1aluh09npz2wc7rq8hveuwgzxnlflrzuagewuls/testcoin] -peggy_denom = factory/inj1aluh09npz2wc7rq8hveuwgzxnlflrzuagewuls/testcoin -decimals = 6 - -[factory/inj1ampqmsdk2687jdael7x89fu59zfw3xm52tchn8/position] -peggy_denom = factory/inj1ampqmsdk2687jdael7x89fu59zfw3xm52tchn8/position -decimals = 0 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj108uf9tsu4e8q3f45pt3ylc4wv5c8kvrt66azun] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj108uf9tsu4e8q3f45pt3ylc4wv5c8kvrt66azun -decimals = 0 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj145lkwt43eq7u8vuw8h2schvycvt2ue03wm6s6x] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj145lkwt43eq7u8vuw8h2schvycvt2ue03wm6s6x -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj15p3jd8svfp40ez9ckj4qzak209sdequhmpt5c2] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj15p3jd8svfp40ez9ckj4qzak209sdequhmpt5c2 -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj15pcxscn4s0g95trxd42jk6xnssnvs9sze472pu] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj15pcxscn4s0g95trxd42jk6xnssnvs9sze472pu -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj18w7c5cj6ygmk2hxzu8d86husg8wyhgtd9n4fkf] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj18w7c5cj6ygmk2hxzu8d86husg8wyhgtd9n4fkf -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj19glgtxlvlmwuwdqyknn666arnxt4y88zgz3pnj] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj19glgtxlvlmwuwdqyknn666arnxt4y88zgz3pnj -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1ecnn87skvhfm579ms6w46zpf2gk6neftujky4k] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1ecnn87skvhfm579ms6w46zpf2gk6neftujky4k -decimals = 0 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1favce2lmfgwzvzeavrt88cqn8vx7w9aexfsuld] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1favce2lmfgwzvzeavrt88cqn8vx7w9aexfsuld -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1fys254q0ktp4k9uys94f0l5ujljjjc86qf0gx3] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1fys254q0ktp4k9uys94f0l5ujljjjc86qf0gx3 -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1hzs0sdqrmt3vw9w0qaxhtqed3mlhpldurkv6ty] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1hzs0sdqrmt3vw9w0qaxhtqed3mlhpldurkv6ty -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1kc6aehzj3uhc90qjrgsemq5evyay3ys24se2wu] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1kc6aehzj3uhc90qjrgsemq5evyay3ys24se2wu -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1l070c6tav7a7xxyh3rmjpqdffkwgsw3jr5ypmj] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1l070c6tav7a7xxyh3rmjpqdffkwgsw3jr5ypmj -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1m6fus7a9mmrvz7ac7k0m8c94ywj2q64d7vnzzx] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1m6fus7a9mmrvz7ac7k0m8c94ywj2q64d7vnzzx -decimals = 0 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1mxe5r73ne92yg4a207vvpe0mjvylv86ghdu4cp] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1mxe5r73ne92yg4a207vvpe0mjvylv86ghdu4cp -decimals = 0 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1ny8n2dlqn7s38tx8ljn9kn65t74tn6z3pe0l5u] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1ny8n2dlqn7s38tx8ljn9kn65t74tn6z3pe0l5u -decimals = 0 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1r3nfgtptufxsatdd3kdr6e3qwjcmnma9myg8nq] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1r3nfgtptufxsatdd3kdr6e3qwjcmnma9myg8nq -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1rzheq4hfad8x9vh6zlwe7rhw59gps6vnhywtds] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1rzheq4hfad8x9vh6zlwe7rhw59gps6vnhywtds -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1s4227045efy2t5lmw5nm0a082y75a0t50zh5lc] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1s4227045efy2t5lmw5nm0a082y75a0t50zh5lc -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1sg25epqzk8g89wzlpx04mg5jphk0dk2eq2mkts] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1sg25epqzk8g89wzlpx04mg5jphk0dk2eq2mkts -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1tl6rljef25zxtju0842w6vr0a20a8s9rdd25kj] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1tl6rljef25zxtju0842w6vr0a20a8s9rdd25kj -decimals = 0 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1uu3llx95wl7u2pl44ltr45exdm5nja5r5c3hky] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1uu3llx95wl7u2pl44ltr45exdm5nja5r5c3hky -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1vczur6w8xaand2lzup2l8w7jjqy7e70md3xa7p] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1vczur6w8xaand2lzup2l8w7jjqy7e70md3xa7p -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1wdjs5alt50mqc9wq5zek5j0kv8gkxwasady0cp] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1wdjs5alt50mqc9wq5zek5j0kv8gkxwasady0cp -decimals = 0 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1wrwpwkrhc6tyrm5px8xcmuv0ufgcqjngquw20h] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1wrwpwkrhc6tyrm5px8xcmuv0ufgcqjngquw20h -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1x6ux4um7xlctx09fe60k258yr03d3npvpt07jv] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1x6ux4um7xlctx09fe60k258yr03d3npvpt07jv -decimals = 18 - -[factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1z098f8syf3g2pmt606kqmsmwfy2z5rcgmzte0h] -peggy_denom = factory/inj1an0gxz8w2sfavu5glt32hly5m2ltz67eyx2gra/lpinj1z098f8syf3g2pmt606kqmsmwfy2z5rcgmzte0h -decimals = 18 - -[factory/inj1aqk3tg4esz06cer9ajuswkpc9mftr0l6qm3zx0/BTC] -peggy_denom = factory/inj1aqk3tg4esz06cer9ajuswkpc9mftr0l6qm3zx0/BTC -decimals = 0 - -[factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/test] -peggy_denom = factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/test -decimals = 6 - -[factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/testa1] -peggy_denom = factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/testa1 -decimals = 6 - -[factory/inj1astu9n8434xpd0h90gfgksp85324cd5kp6gs5q/position] -peggy_denom = factory/inj1astu9n8434xpd0h90gfgksp85324cd5kp6gs5q/position -decimals = 0 - -[factory/inj1au376u55jzxj3rxhk7e4q0pk2xz0xf6a0ww8me/position] -peggy_denom = factory/inj1au376u55jzxj3rxhk7e4q0pk2xz0xf6a0ww8me/position -decimals = 0 - -[factory/inj1audhvz4wweflplqpws7348w4tjj4lwdq8gs0g5/position] -peggy_denom = factory/inj1audhvz4wweflplqpws7348w4tjj4lwdq8gs0g5/position -decimals = 0 - -[factory/inj1aueqg42j0xs3yyea9ppgs652l99g4wegc6kuks/lpinj1f42t9j379jm5sss0j9xarf0mmwzp69nugd6pzf] -peggy_denom = factory/inj1aueqg42j0xs3yyea9ppgs652l99g4wegc6kuks/lpinj1f42t9j379jm5sss0j9xarf0mmwzp69nugd6pzf -decimals = 0 - -[factory/inj1aueqg42j0xs3yyea9ppgs652l99g4wegc6kuks/lpinj1yvm6xz7ztv24ketpw8hsuns95z7nrtjm2ws6s7] -peggy_denom = factory/inj1aueqg42j0xs3yyea9ppgs652l99g4wegc6kuks/lpinj1yvm6xz7ztv24ketpw8hsuns95z7nrtjm2ws6s7 -decimals = 0 - -[factory/inj1aus3al2tm7kd2kammhuvu7tae0gyn3vz4tmln2/position] -peggy_denom = factory/inj1aus3al2tm7kd2kammhuvu7tae0gyn3vz4tmln2/position -decimals = 0 - -[factory/inj1aw8kmum8xcnwramz0ekdy0pl0k7xfdydmhxr07/position] -peggy_denom = factory/inj1aw8kmum8xcnwramz0ekdy0pl0k7xfdydmhxr07/position -decimals = 0 - -[factory/inj1awvzukx5tfp6dzlc7v87jrtwg0m2z97gwgk2l7/position] -peggy_denom = factory/inj1awvzukx5tfp6dzlc7v87jrtwg0m2z97gwgk2l7/position -decimals = 0 - -[factory/inj1ayhegfjmnsnv5wcuuxk56c27zf0zhvcm659haz/position] -peggy_denom = factory/inj1ayhegfjmnsnv5wcuuxk56c27zf0zhvcm659haz/position -decimals = 0 - -[factory/inj1azh3q0uq5xhj856jfe7cq8g42vf0vqwe6q380d/position] -peggy_denom = factory/inj1azh3q0uq5xhj856jfe7cq8g42vf0vqwe6q380d/position -decimals = 0 - -[factory/inj1c2lt6srt2m7jwexe5qdhqef9ue05vfl2n33xqu/hoa2] -peggy_denom = factory/inj1c2lt6srt2m7jwexe5qdhqef9ue05vfl2n33xqu/hoa2 -decimals = 9 - -[factory/inj1c2re0tzy7lryrvlgfuus23989z49ns4st684f8/b123123] -peggy_denom = factory/inj1c2re0tzy7lryrvlgfuus23989z49ns4st684f8/b123123 -decimals = 9 - -[factory/inj1c36j9k3vrvxm5hg0p44n9lfmldmfughcr0yn9y/bINJ] -peggy_denom = factory/inj1c36j9k3vrvxm5hg0p44n9lfmldmfughcr0yn9y/bINJ -decimals = 0 - -[factory/inj1c588j3kkay3hk4np5xlqttrnzhqp7k2wfhg9jr/position] -peggy_denom = factory/inj1c588j3kkay3hk4np5xlqttrnzhqp7k2wfhg9jr/position -decimals = 0 - -[factory/inj1c6cxqpmpywwsjgegxwnah9j4mu8d3ndaevtu8s/duynt-1] -peggy_denom = factory/inj1c6cxqpmpywwsjgegxwnah9j4mu8d3ndaevtu8s/duynt-1 -decimals = 9 - -[factory/inj1c8fxfgjnqssuqwsfn5lyyjff20tmwpjgr9zavx/position] -peggy_denom = factory/inj1c8fxfgjnqssuqwsfn5lyyjff20tmwpjgr9zavx/position -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688393090InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688393090InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688393190InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688393190InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688562440InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688562440InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688562475InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688562475InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688738289InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688738289InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688738335InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688738335InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688919059InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688919059InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688919103InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1688919103InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689267553InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689267553InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689267590InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689267590InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689599333InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689599333InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689599371InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689599371InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689947444InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689947444InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689947488InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1689947488InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690292884InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690292884InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690292943InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690292943InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690638281InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690638281InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690638318InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690638318InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690977270InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690977270InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690985975InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690985975InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690986069InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1690986069InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1691332939InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1691332939InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1691332966InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1691332966InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1691672834InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1691672834InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1691672874InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1691672874InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692088340InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692088340InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692088377InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692088377InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692366264InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692366264InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692366299InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692366299InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692713323InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692713323InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692713423InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1692713423InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693059790InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693059790InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693061285InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693061285InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693314015InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693314015InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693400975InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693400975InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693401025InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693401025InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693573212InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693573212InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693668292InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693668292InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693918802InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693918802InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693919162InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1693919162InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694264419InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694264419InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694264444InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694264444InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694610004InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694610004InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694610034InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694610034InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694955601InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694955601InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694955631InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1694955631InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695301201InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695301201InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695301775InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695301775InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695646812InjUsdt14d130C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695646812InjUsdt14d130C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695651424InjUsdt14d80P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695651424InjUsdt14d80P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695911036InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695911036InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695912528InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695912528InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695912582InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695912582InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695922942InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695922942InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695924094InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695924094InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695992413InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695992413InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695992443InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695992443InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695992458InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695992458InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695992533InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1695992533InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696165211InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696165211InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696165241InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696165241InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696165255InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696165255InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696165331InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696165331InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696182385InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696182385InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696338011InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696338011InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696338040InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696338040InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696338055InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696338055InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696339261InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696339261InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696339298InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696339298InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696510811InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696510811InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696510841InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696510841InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696510871InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696510871InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696515587InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696515587InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696515618InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696515618InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696683611InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696683611InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696683641InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696683641InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696693437InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696693437InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696693477InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696693477InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696693515InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696693515InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696856403InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696856403InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696856433InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696856433InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696856448InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696856448InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696857075InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696857075InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696857115InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1696857115InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029205InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029205InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029235InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029235InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029250InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029250InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029808InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029808InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029853InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697029853InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202011InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202011InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202035InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202035InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202050InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202050InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202096InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202096InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202125InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697202125InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697374809InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697374809InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697374839InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697374839InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697374854InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697374854InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697379492InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697379492InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697379504InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697379504InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697547614InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697547614InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697547643InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697547643InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697547658InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697547658InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697549059InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697549059InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697549075InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697549075InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697720411InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697720411InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697720438InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697720438InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697720453InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697720453InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722452InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722452InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722512InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722512InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722541InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722541InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722572InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722572InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722633InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722633InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722693InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722693InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722754InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722754InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722766InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722766InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722781InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722781InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722796InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697722796InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697724339InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697724339InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697724387InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697724387InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697724390InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697724390InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697724475InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697724475InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697893205InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697893205InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697893234InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697893234InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697893249InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697893249InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697893294InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697893294InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697895660InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1697895660InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698066012InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698066012InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698066056InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698066056InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698071468InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698071468InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698071537InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698071537InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698071660InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698071660InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698238813InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698238813InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698238853InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698238853InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698238868InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698238868InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698238913InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698238913InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698240068InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698240068InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411615InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411615InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411656InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411656InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411673InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411673InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411686InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411686InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411717InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698411717InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698584414InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698584414InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698584458InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698584458InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698584475InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698584475InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698592535InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698592535InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698592576InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698592576InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698757215InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698757215InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698757256InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698757256InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698757273InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698757273InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698758802InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698758802InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698758832InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698758832InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698843614InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698843614InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698843674InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698843674InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931135InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931135InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931139InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931139InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931146InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931146InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931150InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931150InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931183InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1698931183InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016403InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016403InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016433InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016433InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016448InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016448InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016463InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016463InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016583InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699016583InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699103898InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699103898InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699104579InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699104579InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699104609InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699104609InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699104624InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699104624InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699104639InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699104639InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189213InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189213InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189258InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189258InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189273InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189273InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189303InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189303InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189363InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699189363InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362005InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362005InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362047WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362047WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362062InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362062InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362092InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362092InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362107InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362107InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362137InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362137InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362152WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362152WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362182WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699362182WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699363478WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699363478WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534816InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534816InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534856InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534856InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534873InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534873InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534901WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534901WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534916InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534916InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534946WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699534946WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699537637InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699537637InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699537689WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699537689WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699537827WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699537827WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707612InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707612InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707642WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707642WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707672WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707672WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707702InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707702InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707717WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707717WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707747WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699707747WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880411InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880411InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880440WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880440WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880455AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880455AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880470WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880470WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880472AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880472AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880515WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880515WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880531WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880531WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880546InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880546InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880591InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699880591InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699883358InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699883358InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699883418AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699883418AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699883465InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699883465InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699883507AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1699883507AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053208WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053208WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053237InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053237InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053252AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053252AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053268AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053268AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053297WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053297WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053313InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053313InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053358InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053358InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053403InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700053403InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054233WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054233WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054322InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054322InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054425AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054425AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054460WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054460WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054540InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054540InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054603AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700054603AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700055200InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700055200InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226004AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226004AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226032InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226032InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226047WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226047WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226065AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226065AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226093WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226093WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226108InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226108InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226123WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226123WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226214AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700226214AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700237848InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700237848InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700237905InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700237905InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700238026InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700238026InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700238071AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700238071AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700238126WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700238126WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398810InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398810InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398838WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398838WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398853InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398853InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398871InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398871InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398929InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398929InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398944WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398944WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398974AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700398974AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700399004WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700399004WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408075WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408075WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408140AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408140AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408200InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408200InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408248AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408248AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408289AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700408289AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571609AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571609AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571632WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571632WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571647AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571647AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571666AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571666AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571677InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571677InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571692WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571692WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571707InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571707InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571723WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571723WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571768AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700571768AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700579392InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700579392InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700579439WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700579439WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700579479InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700579479InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700579489InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700579489InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744414WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744414WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744455InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744455InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744473AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744473AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744485WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744485WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744500AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744500AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744515InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744515InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744561InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744561InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744591WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700744591WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700748942WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700748942WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700749133InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700749133InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700749179InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700749179InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700749219AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700749219AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700749252AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700749252AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917204WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917204WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917232InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917232InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917247InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917247InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917262InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917262InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917292WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917292WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917308AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917308AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917323AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917323AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917338WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917338WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917353InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917353InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917488AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700917488AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700921448InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700921448InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700921481AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700921481AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700921520WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1700921520WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090009WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090009WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090052InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090052InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090066InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090066InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090081AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090081AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090096AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090096AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090111WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090111WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090141WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090141WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090171InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701090171InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095493WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095493WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095532InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095532InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095557AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095557AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095607InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095607InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095626AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701095626AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262817InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262817InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262857InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262857InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262872InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262872InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262875WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262875WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262902AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262902AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262933WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262933WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262963WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701262963WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701263083InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701263083InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701263221AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701263221AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701263221AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701263221AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701267248InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701267248InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701267412WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701267412WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701267494AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701267494AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435312AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435312AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435312AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435312AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435613InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435613InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435655WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435655WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435675InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435675InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435684WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435684WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435775InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435775InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435790WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435790WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435880WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701435880WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701437080InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701437080InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701437560InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701437560InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701437574AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701437574AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701437574AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701437574AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608110InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608413WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608413WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608438InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608438InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608471InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608471InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608513WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608513WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608574WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608574WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608589InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701608589InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701614619WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701614619WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701780916WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781204InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781204InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781258WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781258WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781262InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781262InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781303WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781303WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781409WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701781409WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701782379InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701782379InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953703AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953703AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953703InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953703InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953703WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953703WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953703WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953703WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953704WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953705AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953705AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953705InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953705InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953705InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953705InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953705WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1701953705WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126501AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126501AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126501InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126501InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126501WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126501WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126501WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126501WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126502AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126502AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126502AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126502AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126502InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126502InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126502WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126502WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126503AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126503AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126503InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126503InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126503InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126503InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126504InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126504InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126504WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702126504WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299314WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299315InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299315InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299315InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299315InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299315WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702299315WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472108WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472110InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472110InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472110InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472110InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472110WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702472110WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644910InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644910InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644911WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644912AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644912AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644913InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644913InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644913InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644913InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644913WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702644913WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817700InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817700InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817700WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817700WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817700WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817700WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817701AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817701AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817701AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817701AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817701InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817701InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817701WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817701WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702817702WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990515WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1702990516WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163309InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163309InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163309WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163309WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163309WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163309WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163310AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163310AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163310AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163310AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163310InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163310InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163310WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163310WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703163311WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703336400WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703509200WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703682000WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854510WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854511InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854511InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854511WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854511WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854512InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1703854512InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027313InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027313InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027313WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027313WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027313WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027313WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027314WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027315AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027315AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027315InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027315InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027315InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027315InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027315WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704027315WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113708InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113708InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113708WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113708WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113708WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113708WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113709WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113710AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113710AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113710InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113710InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113710InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113710InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113710WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704113710WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504AtomUsdt10d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504AtomUsdt10d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504AtomUsdt10d85P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504AtomUsdt10d85P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504InjUsdt10d84P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504InjUsdt10d84P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504WEthUsdt10d111C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504WEthUsdt10d111C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504WEthUsdt10d86P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504WEthUsdt10d86P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286504WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505AtomUsdt10d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505AtomUsdt10d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505AtomUsdt10d124C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505AtomUsdt10d124C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505InjUsdt10d128C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505InjUsdt10d128C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286505WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286506InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704286506InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305WEthUsdt6d113C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305WEthUsdt6d113C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305WEthUsdt6d91P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704459305WEthUsdt6d91P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704632108InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704632108InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704632108InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704632108InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704632108InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704632108InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704804916InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704804916InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704804916InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704804916InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704804916InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704804916InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704977701InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704977701InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704977701InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704977701InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704977701InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1704977701InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705150513InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705150513InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705150513InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705150513InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705150514InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705150514InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705323312InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705323312InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705323312InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705323312InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705323312InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705323312InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705496114InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705496114InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705496114InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705496114InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705496114InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705496114InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705668906InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705668906InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705668907InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705668907InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705668907InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705668907InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705841709InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705841709InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705841709InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705841709InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705841709InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1705841709InjUsdt6d82P -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1706014513InjUsdt6d114C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1706014513InjUsdt6d114C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1706014513InjUsdt6d117C] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1706014513InjUsdt6d117C -decimals = 0 - -[factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1706014513InjUsdt6d82P] -peggy_denom = factory/inj1ccntcwshzgf40ac8zcpt8tfa6fd3w6r567mp3z/1706014513InjUsdt6d82P -decimals = 0 - -[factory/inj1cdtyk74jm0qg5r0snkddqwl4d0r4vu54zakvkd/position] -peggy_denom = factory/inj1cdtyk74jm0qg5r0snkddqwl4d0r4vu54zakvkd/position -decimals = 0 - -[factory/inj1ce5nts6qntka3te9zqcgf6pgyczxjd8aul9dvp/PTG] -peggy_denom = factory/inj1ce5nts6qntka3te9zqcgf6pgyczxjd8aul9dvp/PTG -decimals = 0 - -[factory/inj1cepq3ezj4plltmnu3zkkzmnta56ur39pu9wssy/position] -peggy_denom = factory/inj1cepq3ezj4plltmnu3zkkzmnta56ur39pu9wssy/position -decimals = 0 - -[factory/inj1cg3ufnnh7cdj9mnxc5dpvzufcrtckqqec0y5dp/dev] -peggy_denom = factory/inj1cg3ufnnh7cdj9mnxc5dpvzufcrtckqqec0y5dp/dev -decimals = 0 - -[factory/inj1cjcpjhrg2ame8u2358ufw4dk22uua0d75pf0rd/bpINJ] -peggy_denom = factory/inj1cjcpjhrg2ame8u2358ufw4dk22uua0d75pf0rd/bpINJ -decimals = 0 - -[factory/inj1cjju83m8tmzf48htuex6qgks3q6s3xzrdml4a2/position] -peggy_denom = factory/inj1cjju83m8tmzf48htuex6qgks3q6s3xzrdml4a2/position -decimals = 0 - -[factory/inj1ckmdhdz7r8glfurckgtg0rt7x9uvner4ygqhlv/lp] -peggy_denom = factory/inj1ckmdhdz7r8glfurckgtg0rt7x9uvner4ygqhlv/lp -decimals = 0 - -[factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/AAA] -peggy_denom = factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/AAA -decimals = 0 - -[factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/APE] -peggy_denom = factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/APE -decimals = 6 - -[factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/test] -peggy_denom = factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/test -decimals = 6 - -[factory/inj1cq2uqxukggfktp5pqgchkxnjg4u5ct346wvyvr/position] -peggy_denom = factory/inj1cq2uqxukggfktp5pqgchkxnjg4u5ct346wvyvr/position -decimals = 0 - -[factory/inj1cscsemd4rppu3rkxg98dr68npzygxshuylnuux/lp] -peggy_denom = factory/inj1cscsemd4rppu3rkxg98dr68npzygxshuylnuux/lp -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj14gtevsjys2unq288w2trytk0e9cj7g45yq79fw] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj14gtevsjys2unq288w2trytk0e9cj7g45yq79fw -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj15tcjh9c7je9auea2xdj0zm2d6285mg23f97vnt] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj15tcjh9c7je9auea2xdj0zm2d6285mg23f97vnt -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj15ydvx7ynwj3ztsuhmge5dluq7xt942mwpktg7m] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj15ydvx7ynwj3ztsuhmge5dluq7xt942mwpktg7m -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj18kpc00ft4lmzk73wtw4a6lpny8plz6kmpzfmsa] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj18kpc00ft4lmzk73wtw4a6lpny8plz6kmpzfmsa -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj19hpqtcajc82cquytuxgmw6lg3k0qwuru3t00n7] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj19hpqtcajc82cquytuxgmw6lg3k0qwuru3t00n7 -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj19kaqlc2xxku64esn5fuml8qpmd43qu7puyawnc] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj19kaqlc2xxku64esn5fuml8qpmd43qu7puyawnc -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj19ydmpse0244sue79yzvszkpkk32y53urtcjtm6] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj19ydmpse0244sue79yzvszkpkk32y53urtcjtm6 -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1apapy3g66m52mmt2wkyjm6hpyd563t90u0dgmx] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1apapy3g66m52mmt2wkyjm6hpyd563t90u0dgmx -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1c4ax6zup2w2v6nfh8f8gv4ks83lhv9hv53xf7a] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1c4ax6zup2w2v6nfh8f8gv4ks83lhv9hv53xf7a -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1c6ql7ladykug4f0ue3ht8qrrwqen3jmz2sxaf2] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1c6ql7ladykug4f0ue3ht8qrrwqen3jmz2sxaf2 -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1dswjduvp7fq52ulcuqmv6caqs5ssxkspavhs4d] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1dswjduvp7fq52ulcuqmv6caqs5ssxkspavhs4d -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1g4cpf9jhqgfel02g94uguw332nvrtlp6dxjnkz] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1g4cpf9jhqgfel02g94uguw332nvrtlp6dxjnkz -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1hkuk3yf6apqqj93ay7e8cxx7tc88zdydm38c9u] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1hkuk3yf6apqqj93ay7e8cxx7tc88zdydm38c9u -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1jy6s387mwu2l96qqw3vxpzfgcyfleqy9r74uqp] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1jy6s387mwu2l96qqw3vxpzfgcyfleqy9r74uqp -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1kj5ynn7w4f8uymk4qdjythss8fkfrljh0wqlsz] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1kj5ynn7w4f8uymk4qdjythss8fkfrljh0wqlsz -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1nt9x2szk5dkgr7m8q60kxeg2we546ud0uqe276] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1nt9x2szk5dkgr7m8q60kxeg2we546ud0uqe276 -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1up4rl2q7n3fh785t9ej78xhvfah9mxt8u24n32] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1up4rl2q7n3fh785t9ej78xhvfah9mxt8u24n32 -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1ve5rqgz5l2fytd22egw5tgs79pa7l5zzzdt0ys] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1ve5rqgz5l2fytd22egw5tgs79pa7l5zzzdt0ys -decimals = 0 - -[factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1y3cmnn0plm4vt6j2nyf5plg48rlywn7cuygv62] -peggy_denom = factory/inj1ctl84udl4flydzdgf8er4z35dd974sufuw4dfk/lpinj1y3cmnn0plm4vt6j2nyf5plg48rlywn7cuygv62 -decimals = 0 - -[factory/inj1ctm2sly0qdgftlw92meej3dr4l30t248takx9g/test] -peggy_denom = factory/inj1ctm2sly0qdgftlw92meej3dr4l30t248takx9g/test -decimals = 0 - -[factory/inj1cuwygvhqcxgjhudslflfxwxhge8d265tc0uqq5/position] -peggy_denom = factory/inj1cuwygvhqcxgjhudslflfxwxhge8d265tc0uqq5/position -decimals = 0 - -[factory/inj1cvdpxpwlggytumd9ydkvq7z3y0pp75wawnznqp/position] -peggy_denom = factory/inj1cvdpxpwlggytumd9ydkvq7z3y0pp75wawnznqp/position -decimals = 0 - -[factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1fzm58vwmtsn4vxuajvhsdqrjqrdhhdlqfd9lfd] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1fzm58vwmtsn4vxuajvhsdqrjqrdhhdlqfd9lfd -decimals = 18 - -[factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1nrlveguv98ag7hf3xepd3aycrm8mp7rnhek9av] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1nrlveguv98ag7hf3xepd3aycrm8mp7rnhek9av -decimals = 18 - -[factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1v26u44zh87fvvdpayzvw8t9vrydz25mp6kdkru] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1v26u44zh87fvvdpayzvw8t9vrydz25mp6kdkru -decimals = 18 - -[factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1yj6rs33p42t6qx6j43z8d4zqx5egr76wdpz44t] -peggy_denom = factory/inj1cwx93480s73en2qxqlacte42dpusxdkgs83j0f/lpinj1yj6rs33p42t6qx6j43z8d4zqx5egr76wdpz44t -decimals = 18 - -[factory/inj1cxjmxnuul7fcwt5jfgn87gf3u9yq74trgn2h64/position] -peggy_denom = factory/inj1cxjmxnuul7fcwt5jfgn87gf3u9yq74trgn2h64/position -decimals = 0 - -[factory/inj1cxx7gcy35zce6x869mvq7af4e3gnka5m8yr9xm/bpINJ] -peggy_denom = factory/inj1cxx7gcy35zce6x869mvq7af4e3gnka5m8yr9xm/bpINJ -decimals = 0 - -[factory/inj1cyp93g4eq3l4xknl803x3je4k5xr9fdr5qp78h/position] -peggy_denom = factory/inj1cyp93g4eq3l4xknl803x3je4k5xr9fdr5qp78h/position -decimals = 0 - -[factory/inj1d0646us3wrcw6a77qmth6sc539vplaqdya55zh/nUSD] -peggy_denom = factory/inj1d0646us3wrcw6a77qmth6sc539vplaqdya55zh/nUSD -decimals = 18 - -[factory/inj1d0szmqhnk3t59xdultphrrtlgwe68fjuexjvw7/hoa5] -peggy_denom = factory/inj1d0szmqhnk3t59xdultphrrtlgwe68fjuexjvw7/hoa5 -decimals = 0 - -[factory/inj1d2fz729s6egfvaf0ucg9pwecatkyp3s4zns0qq/position] -peggy_denom = factory/inj1d2fz729s6egfvaf0ucg9pwecatkyp3s4zns0qq/position -decimals = 0 - -[factory/inj1d37eu9nq4l3za205cswnt9qwcp256cp4g6f2wl/position] -peggy_denom = factory/inj1d37eu9nq4l3za205cswnt9qwcp256cp4g6f2wl/position -decimals = 0 - -[factory/inj1d3jc5pr6nsf9twyzjh9w5nj7nn235ysllwtpq7/frcoin] -peggy_denom = factory/inj1d3jc5pr6nsf9twyzjh9w5nj7nn235ysllwtpq7/frcoin -decimals = 0 - -[factory/inj1d3zazwsqnsg29srlc52vp70gnxzr0njun8z79r/position] -peggy_denom = factory/inj1d3zazwsqnsg29srlc52vp70gnxzr0njun8z79r/position -decimals = 0 - -[factory/inj1d42m7tzg46rm986d4khfr4khvtlp5nuynqa258/position] -peggy_denom = factory/inj1d42m7tzg46rm986d4khfr4khvtlp5nuynqa258/position -decimals = 0 - -[factory/inj1d47wsg95r9nwr564y3c8q6f3du4fvvucuhkcy7/position] -peggy_denom = factory/inj1d47wsg95r9nwr564y3c8q6f3du4fvvucuhkcy7/position -decimals = 0 - -[factory/inj1d4ajy0e7ykpem7zq3ur7e56uff9zspk8rfuvl8/position] -peggy_denom = factory/inj1d4ajy0e7ykpem7zq3ur7e56uff9zspk8rfuvl8/position -decimals = 0 - -[factory/inj1d4gfk3ychy9qcklj7azay6djhfytmalj7e0yax/bpINJ] -peggy_denom = factory/inj1d4gfk3ychy9qcklj7azay6djhfytmalj7e0yax/bpINJ -decimals = 0 - -[factory/inj1d4q5kja5dy95ss0yxkk5zlfj6zc49f40yh3wd5/position] -peggy_denom = factory/inj1d4q5kja5dy95ss0yxkk5zlfj6zc49f40yh3wd5/position -decimals = 0 - -[factory/inj1d5a4g5h3ew2e5sta9fjk42t2pp2azaw96hu8r5/position] -peggy_denom = factory/inj1d5a4g5h3ew2e5sta9fjk42t2pp2azaw96hu8r5/position -decimals = 0 - -[factory/inj1d5p93zzsgr5dwvxfus4hsp3nxz29y99r80905q/injx] -peggy_denom = factory/inj1d5p93zzsgr5dwvxfus4hsp3nxz29y99r80905q/injx -decimals = 6 - -[factory/inj1d7lk876s6gcklt3vazfprd3pgnq6pl6j087jwd/USDT] -peggy_denom = factory/inj1d7lk876s6gcklt3vazfprd3pgnq6pl6j087jwd/USDT -decimals = 0 - -[factory/inj1d8je3vv9k4639et8asyypgyjrffxvj4me5zzdp/position] -peggy_denom = factory/inj1d8je3vv9k4639et8asyypgyjrffxvj4me5zzdp/position -decimals = 0 - -[factory/inj1d989u8frnyh7p07n3vrkml6ny65h0jd7508zvt/test] -peggy_denom = factory/inj1d989u8frnyh7p07n3vrkml6ny65h0jd7508zvt/test -decimals = 9 - -[factory/inj1dam3n6v90ky7l6emgv4v2zgzcxrmchssryzs7c/position] -peggy_denom = factory/inj1dam3n6v90ky7l6emgv4v2zgzcxrmchssryzs7c/position -decimals = 0 - -[factory/inj1dc6rrxhfjaxexzdcrec5w3ryl4jn6x5t7t9j3z/foobar] -peggy_denom = factory/inj1dc6rrxhfjaxexzdcrec5w3ryl4jn6x5t7t9j3z/foobar -decimals = 0 - -[factory/inj1dcnefm2zyx5gcuz4fduwyujluhzlrqskng9qhe/Ann] -peggy_denom = factory/inj1dcnefm2zyx5gcuz4fduwyujluhzlrqskng9qhe/Ann -decimals = 9 - -[factory/inj1ddp0ltux6sx2j2hh7q6uvqfhesyk0lwymzas6x/WIZZ] -peggy_denom = factory/inj1ddp0ltux6sx2j2hh7q6uvqfhesyk0lwymzas6x/WIZZ -decimals = 6 - -[factory/inj1dfvy2pcrk5cc3ypljed5f39xj75fpku38c09nr/position] -peggy_denom = factory/inj1dfvy2pcrk5cc3ypljed5f39xj75fpku38c09nr/position -decimals = 0 - -[factory/inj1dlfft5qkmmyhgvsrhalg5ncrxtsek4uggtsqcm/position] -peggy_denom = factory/inj1dlfft5qkmmyhgvsrhalg5ncrxtsek4uggtsqcm/position -decimals = 0 - -[factory/inj1dlyumvy7rfmq534hnh8et2ft58zpm0d84vjkfd/auction.0] -peggy_denom = factory/inj1dlyumvy7rfmq534hnh8et2ft58zpm0d84vjkfd/auction.0 -decimals = 0 - -[factory/inj1dlyumvy7rfmq534hnh8et2ft58zpm0d84vjkfd/auction.1] -peggy_denom = factory/inj1dlyumvy7rfmq534hnh8et2ft58zpm0d84vjkfd/auction.1 -decimals = 0 - -[factory/inj1dmfq9frxl7p3ym4w6lu8jj73ev7l35r5fwp2mu/position] -peggy_denom = factory/inj1dmfq9frxl7p3ym4w6lu8jj73ev7l35r5fwp2mu/position -decimals = 0 - -[factory/inj1dphl5v4j93lndzpeag8274aew870c425fdren7/position] -peggy_denom = factory/inj1dphl5v4j93lndzpeag8274aew870c425fdren7/position -decimals = 0 - -[factory/inj1dskr075p0ktts987r8h3jxcjce6h73flvmm8a4/DDL] -peggy_denom = factory/inj1dskr075p0ktts987r8h3jxcjce6h73flvmm8a4/DDL -decimals = 6 - -[factory/inj1dtv4sfv6kp72tsk8y4dz6s8w3lkjga9clx99jg/position] -peggy_denom = factory/inj1dtv4sfv6kp72tsk8y4dz6s8w3lkjga9clx99jg/position -decimals = 0 - -[factory/inj1du8933kzqm6zqq7kz93c5kv28e7ffqy9lmdgr9/position] -peggy_denom = factory/inj1du8933kzqm6zqq7kz93c5kv28e7ffqy9lmdgr9/position -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683106600InjUsdt7d120C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683106600InjUsdt7d120C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683107230InjUsdt7d85P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683107230InjUsdt7d85P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683107439InjUsdt7d85P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683107439InjUsdt7d85P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683108418InjUsdt7d120C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683108418InjUsdt7d120C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683108796InjUsdt7d85P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683108796InjUsdt7d85P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683109853AtomUsdt7d110C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683109853AtomUsdt7d110C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683136047InjUsdt7d85P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683136047InjUsdt7d85P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683136243InjUsdt14d80P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683136243InjUsdt14d80P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683136518AtomUsdt7d90P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683136518AtomUsdt7d90P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683136988InjUsdt14d130C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683136988InjUsdt14d130C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683138126InjUsdt7d120C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683138126InjUsdt7d120C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683138306AtomUsdt21d90P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683138306AtomUsdt21d90P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683138463AtomUsdt21d115C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683138463AtomUsdt21d115C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683139006InjUsdt21d110C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683139006InjUsdt21d110C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683139147InjUsdt21d88P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683139147InjUsdt21d88P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683302884InjUsdt21d88P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683302884InjUsdt21d88P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683302928InjUsdt14d80P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683302928InjUsdt14d80P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303047InjUsdt7d85P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303047InjUsdt7d85P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303087AtomUsdt21d90P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303087AtomUsdt21d90P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303122AtomUsdt21d115C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303122AtomUsdt21d115C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303156InjUsdt7d120C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303156InjUsdt7d120C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303211InjUsdt14d130C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303211InjUsdt14d130C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303495InjUsdt21d110C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683303495InjUsdt21d110C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476746InjUsdt21d110C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476746InjUsdt21d110C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476780InjUsdt14d130C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476780InjUsdt14d130C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476814InjUsdt7d120C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476814InjUsdt7d120C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476835AtomUsdt21d115C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476835AtomUsdt21d115C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476858AtomUsdt21d90P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476858AtomUsdt21d90P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476891InjUsdt7d85P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476891InjUsdt7d85P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476927InjUsdt14d80P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476927InjUsdt14d80P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476949InjUsdt21d88P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683476949InjUsdt21d88P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650472InjUsdt21d88P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650472InjUsdt21d88P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650539InjUsdt14d80P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650539InjUsdt14d80P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650574InjUsdt7d85P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650574InjUsdt7d85P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650640AtomUsdt21d90P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650640AtomUsdt21d90P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650659AtomUsdt21d115C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650659AtomUsdt21d115C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650692InjUsdt7d120C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650692InjUsdt7d120C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650715InjUsdt14d130C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650715InjUsdt14d130C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650740InjUsdt21d110C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683650740InjUsdt21d110C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683820836InjUsdt3d112C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683820836InjUsdt3d112C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683820868InjUsdt21d110C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683820868InjUsdt21d110C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683820948InjUsdt14d130C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683820948InjUsdt14d130C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821009InjUsdt7d120C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821009InjUsdt7d120C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821053AtomUsdt21d115C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821053AtomUsdt21d115C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821079AtomUsdt21d90P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821079AtomUsdt21d90P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821101InjUsdt7d85P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821101InjUsdt7d85P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821126InjUsdt14d80P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821126InjUsdt14d80P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821144InjUsdt21d88P] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683821144InjUsdt21d88P -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683822139InjUsdt3d112C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683822139InjUsdt3d112C -decimals = 0 - -[factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683883060InjUsdt1d110C] -peggy_denom = factory/inj1duhn2r05wkgym5a8whumjqee9ngcls2ckcd5y0/1683883060InjUsdt1d110C -decimals = 0 - -[factory/inj1dur2nnfx0mezw0yt80pzcvzacrs5dea3xmjmk0/position] -peggy_denom = factory/inj1dur2nnfx0mezw0yt80pzcvzacrs5dea3xmjmk0/position -decimals = 0 - -[factory/inj1dygmwx7n7ume7qldcsdhplzty5v5hlqkef9jwr/position] -peggy_denom = factory/inj1dygmwx7n7ume7qldcsdhplzty5v5hlqkef9jwr/position -decimals = 0 - -[factory/inj1dyzjct7twr54hnmvlgejaxz7uppzygp7hehrnu/iUSD] -peggy_denom = factory/inj1dyzjct7twr54hnmvlgejaxz7uppzygp7hehrnu/iUSD -decimals = 18 - -[factory/inj1e2muv4qz6fcj294hl8lmca62ujwavlvz4qm3hq/position] -peggy_denom = factory/inj1e2muv4qz6fcj294hl8lmca62ujwavlvz4qm3hq/position -decimals = 0 - -[factory/inj1e3h2tku2sj0chapk0dcmawqqkpp6u5tttxquk8/position] -peggy_denom = factory/inj1e3h2tku2sj0chapk0dcmawqqkpp6u5tttxquk8/position -decimals = 0 - -[factory/inj1e53379hwfxcsaa6lmf2m08d66wm9ddc4u5sh25/position] -peggy_denom = factory/inj1e53379hwfxcsaa6lmf2m08d66wm9ddc4u5sh25/position -decimals = 0 - -[factory/inj1e7m63dmrcz6t3x73n6dtpt6swwamyk04g97qlg/injpepe] -peggy_denom = factory/inj1e7m63dmrcz6t3x73n6dtpt6swwamyk04g97qlg/injpepe -decimals = 6 - -[factory/inj1ecx85kv6yhj7x4s5yt5qaqlt5xtpvpgmmvf92u/position] -peggy_denom = factory/inj1ecx85kv6yhj7x4s5yt5qaqlt5xtpvpgmmvf92u/position -decimals = 0 - -[factory/inj1efnh0jp95r6kwsved6y0k6pj8080gxuek2jrnk/ampINJ] -peggy_denom = factory/inj1efnh0jp95r6kwsved6y0k6pj8080gxuek2jrnk/ampINJ -decimals = 0 - -[factory/inj1eg6m8y4x74f9eq4e4754g2wva3pkr6vv3dmax5/position] -peggy_denom = factory/inj1eg6m8y4x74f9eq4e4754g2wva3pkr6vv3dmax5/position -decimals = 0 - -[factory/inj1ehjperv4y4tsmuzn76zg7asxxsgy9n3h97m4nw/position] -peggy_denom = factory/inj1ehjperv4y4tsmuzn76zg7asxxsgy9n3h97m4nw/position -decimals = 0 - -[factory/inj1ejm3575vmekrr240xzlklvrzq23sg8r3enup29/test] -peggy_denom = factory/inj1ejm3575vmekrr240xzlklvrzq23sg8r3enup29/test -decimals = 0 - -[factory/inj1ejm3575vmekrr240xzlklvrzq23sg8r3enup29/test12] -peggy_denom = factory/inj1ejm3575vmekrr240xzlklvrzq23sg8r3enup29/test12 -decimals = 0 - -[factory/inj1ejm3575vmekrr240xzlklvrzq23sg8r3enup29/test1234] -peggy_denom = factory/inj1ejm3575vmekrr240xzlklvrzq23sg8r3enup29/test1234 -decimals = 0 - -[factory/inj1ejueaduc9qmlhvq8nzg4eltuhv9eg022t9pkqz/Fund1] -peggy_denom = factory/inj1ejueaduc9qmlhvq8nzg4eltuhv9eg022t9pkqz/Fund1 -decimals = 0 - -[factory/inj1eksclftnrmglhxw7pvjq8wnuhdwn4ykw2nffc2/UNI] -peggy_denom = factory/inj1eksclftnrmglhxw7pvjq8wnuhdwn4ykw2nffc2/UNI -decimals = 18 - -[factory/inj1eksclftnrmglhxw7pvjq8wnuhdwn4ykw2nffc2/ninji] -peggy_denom = factory/inj1eksclftnrmglhxw7pvjq8wnuhdwn4ykw2nffc2/ninji -decimals = 0 - -[factory/inj1em24m6ujruu8pan9fkcsvf25rw46gyzks55mtl/position] -peggy_denom = factory/inj1em24m6ujruu8pan9fkcsvf25rw46gyzks55mtl/position -decimals = 0 - -[factory/inj1ers87xhm27jtgg3tru3zlfqzz882jlql38ky36/position] -peggy_denom = factory/inj1ers87xhm27jtgg3tru3zlfqzz882jlql38ky36/position -decimals = 0 - -[factory/inj1es8t7hpuuhamym96camsumq8f2p7s67ex6ekuk/position] -peggy_denom = factory/inj1es8t7hpuuhamym96camsumq8f2p7s67ex6ekuk/position -decimals = 0 - -[factory/inj1ettpy46cd5rgvghntdzkgtzfxtylx8apuqn993/position] -peggy_denom = factory/inj1ettpy46cd5rgvghntdzkgtzfxtylx8apuqn993/position -decimals = 0 - -[factory/inj1eumzsffrxg4n86n08z4udltdvjw2audeq3ml4r/position] -peggy_denom = factory/inj1eumzsffrxg4n86n08z4udltdvjw2audeq3ml4r/position -decimals = 0 - -[factory/inj1euqtqjkuer85sajsd9jssxfqh6xk0hl79x3kr9/1] -peggy_denom = factory/inj1euqtqjkuer85sajsd9jssxfqh6xk0hl79x3kr9/1 -decimals = 0 - -[factory/inj1eutzkvh4gf5vvmxusdwl2t6gprux67d4acwc0p/inj-test] -peggy_denom = factory/inj1eutzkvh4gf5vvmxusdwl2t6gprux67d4acwc0p/inj-test -decimals = 6 - -[factory/inj1euzdefun9xrhm5985wyqycz337cy72jqepsvpz/position] -peggy_denom = factory/inj1euzdefun9xrhm5985wyqycz337cy72jqepsvpz/position -decimals = 0 - -[factory/inj1ev0r4jdrp32595r4dsep5glfz8r29ltn9f6fn8/position] -peggy_denom = factory/inj1ev0r4jdrp32595r4dsep5glfz8r29ltn9f6fn8/position -decimals = 0 - -[factory/inj1ew0nxyp0wvw34qzdc7catsvd2sc5kv400g5jp6/FLG] -peggy_denom = factory/inj1ew0nxyp0wvw34qzdc7catsvd2sc5kv400g5jp6/FLG -decimals = 9 - -[factory/inj1expnflv5vkdjglnstsmywdaeenlr7kmw3am9cd/bINJ] -peggy_denom = factory/inj1expnflv5vkdjglnstsmywdaeenlr7kmw3am9cd/bINJ -decimals = 0 - -[factory/inj1ezgwxucda3qv6ss9sgmn5tke55n7razrka4nxf/position] -peggy_denom = factory/inj1ezgwxucda3qv6ss9sgmn5tke55n7razrka4nxf/position -decimals = 0 - -[factory/inj1eznzrkxw0ajqerwg780nae52tnv6mf6vc53c8m/position] -peggy_denom = factory/inj1eznzrkxw0ajqerwg780nae52tnv6mf6vc53c8m/position -decimals = 0 - -[factory/inj1f34r70r5mn3ecgqh6z0r425ujfjf0z0ssh97wz/position] -peggy_denom = factory/inj1f34r70r5mn3ecgqh6z0r425ujfjf0z0ssh97wz/position -decimals = 0 - -[factory/inj1f3ydxnfr3gzzaj9tdwza80p83n9ahaslcx383s/BTC] -peggy_denom = factory/inj1f3ydxnfr3gzzaj9tdwza80p83n9ahaslcx383s/BTC -decimals = 9 - -[factory/inj1f5nlcumww7lzunw9l8jkm0hu6ml77fr9rxlqyt/position] -peggy_denom = factory/inj1f5nlcumww7lzunw9l8jkm0hu6ml77fr9rxlqyt/position -decimals = 0 - -[factory/inj1f5p279aznnd8wst2rasw46gf9wmdnspx3ymml8/DUCK] -peggy_denom = factory/inj1f5p279aznnd8wst2rasw46gf9wmdnspx3ymml8/DUCK -decimals = 6 - -[factory/inj1f76ard420a76f9kjyy3pte0z0jgmz3m7fmm25l/kd] -peggy_denom = factory/inj1f76ard420a76f9kjyy3pte0z0jgmz3m7fmm25l/kd -decimals = 0 - -[factory/inj1f8qce3t94xjattfldlrt8txkdajj4wp5e77wd5/position] -peggy_denom = factory/inj1f8qce3t94xjattfldlrt8txkdajj4wp5e77wd5/position -decimals = 0 - -[factory/inj1faj8wsfpwyyn5758j2ycjhy2v0kt6n8jl65yy5/test] -peggy_denom = factory/inj1faj8wsfpwyyn5758j2ycjhy2v0kt6n8jl65yy5/test -decimals = 0 - -[factory/inj1fcjg8rsr3uzusq9uk80accx45cajqh7tfu0z09/position] -peggy_denom = factory/inj1fcjg8rsr3uzusq9uk80accx45cajqh7tfu0z09/position -decimals = 0 - -[factory/inj1fcmgj8zhutjyq3rs649nmhl7nl64vshvedq5ac/position] -peggy_denom = factory/inj1fcmgj8zhutjyq3rs649nmhl7nl64vshvedq5ac/position -decimals = 0 - -[factory/inj1fcv9exmq8kqkqlch5cxgqnrmqnsmp99m5k42q7/position] -peggy_denom = factory/inj1fcv9exmq8kqkqlch5cxgqnrmqnsmp99m5k42q7/position -decimals = 0 - -[factory/inj1ff69sl4sgupxnxj6qslnwkjv7060y6cc6slp6m/ak] -peggy_denom = factory/inj1ff69sl4sgupxnxj6qslnwkjv7060y6cc6slp6m/ak -decimals = 6 - -[factory/inj1ff69sl4sgupxnxj6qslnwkjv7060y6cc6slp6m/test] -peggy_denom = factory/inj1ff69sl4sgupxnxj6qslnwkjv7060y6cc6slp6m/test -decimals = 6 - -[factory/inj1ff8anga339wvstvskeu2t9wngl99e2ddyu37en/position] -peggy_denom = factory/inj1ff8anga339wvstvskeu2t9wngl99e2ddyu37en/position -decimals = 0 - -[factory/inj1ff9ux5kc9tx534zjzlfttwqhe0y2v97acgpj6p/duynt-1] -peggy_denom = factory/inj1ff9ux5kc9tx534zjzlfttwqhe0y2v97acgpj6p/duynt-1 -decimals = 9 - -[factory/inj1fhtkg9tga7wdvll35cprd9wyzztp2cdl0qmv69/position] -peggy_denom = factory/inj1fhtkg9tga7wdvll35cprd9wyzztp2cdl0qmv69/position -decimals = 0 - -[factory/inj1fl8vrwlcd9m8hfwdctwcwvmztut8wuclxrsc28/position] -peggy_denom = factory/inj1fl8vrwlcd9m8hfwdctwcwvmztut8wuclxrsc28/position -decimals = 0 - -[factory/inj1flelautgvu5x2yfzprke0m9damel9pvh4uegth/holding] -peggy_denom = factory/inj1flelautgvu5x2yfzprke0m9damel9pvh4uegth/holding -decimals = 0 - -[factory/inj1flelautgvu5x2yfzprke0m9damel9pvh4uegth/holding2] -peggy_denom = factory/inj1flelautgvu5x2yfzprke0m9damel9pvh4uegth/holding2 -decimals = 0 - -[factory/inj1fnlg4mqsz7swspeakkkkzedscx3wl74psgg42a/position] -peggy_denom = factory/inj1fnlg4mqsz7swspeakkkkzedscx3wl74psgg42a/position -decimals = 0 - -[factory/inj1fpmd6x8yk9trh9xl2n65emmcp53m82tenla0gs/position] -peggy_denom = factory/inj1fpmd6x8yk9trh9xl2n65emmcp53m82tenla0gs/position -decimals = 0 - -[factory/inj1fuhdsfutrh647ls7agk9hj37qqxdkr63xc54n9/position] -peggy_denom = factory/inj1fuhdsfutrh647ls7agk9hj37qqxdkr63xc54n9/position -decimals = 0 - -[factory/inj1fvgk4zvph04nwjp4z96etek2uvejq3ehdleqz9/Magic-Test] -peggy_denom = factory/inj1fvgk4zvph04nwjp4z96etek2uvejq3ehdleqz9/Magic-Test -decimals = 6 - -[factory/inj1fvqjyqul2jlnj7xkpz4a7u0jsn8erf2fh3lzzn/position] -peggy_denom = factory/inj1fvqjyqul2jlnj7xkpz4a7u0jsn8erf2fh3lzzn/position -decimals = 0 - -[factory/inj1fvrauqfuqluvhazephwtcgjqvwxsp5x8jhxsnx/ak] -peggy_denom = factory/inj1fvrauqfuqluvhazephwtcgjqvwxsp5x8jhxsnx/ak -decimals = 0 - -[factory/inj1fw7tkwmwma9eawavzh5kthhkhu9uuhstdczgky/position] -peggy_denom = factory/inj1fw7tkwmwma9eawavzh5kthhkhu9uuhstdczgky/position -decimals = 0 - -[factory/inj1fwa63dj2c9lpjnewdsgulwxllvka96h6z93yaz/position] -peggy_denom = factory/inj1fwa63dj2c9lpjnewdsgulwxllvka96h6z93yaz/position -decimals = 0 - -[factory/inj1fzpdfqd67grg38r3yy5983uke0mzf5mzhhckux/1] -peggy_denom = factory/inj1fzpdfqd67grg38r3yy5983uke0mzf5mzhhckux/1 -decimals = 0 - -[factory/inj1g2pyrpdutgp8gynad0meweplj0hu08nnj6mwps/position] -peggy_denom = factory/inj1g2pyrpdutgp8gynad0meweplj0hu08nnj6mwps/position -decimals = 0 - -[factory/inj1g3jpwhw2xxwn9qjwjtp80r839pfm8vyc9lpvfm/position] -peggy_denom = factory/inj1g3jpwhw2xxwn9qjwjtp80r839pfm8vyc9lpvfm/position -decimals = 0 - -[factory/inj1g3tflajrul49kh2l4lr6mqzu2tvrz6agmxqt0c/position] -peggy_denom = factory/inj1g3tflajrul49kh2l4lr6mqzu2tvrz6agmxqt0c/position -decimals = 0 - -[factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/AKK] -peggy_denom = factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/AKK -decimals = 6 - -[factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/BC] -peggy_denom = factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/BC -decimals = 0 - -[factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/BCT] -peggy_denom = factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/BCT -decimals = 0 - -[factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/Sharissa1] -peggy_denom = factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/Sharissa1 -decimals = 6 - -[factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/TBT] -peggy_denom = factory/inj1g3xlmzw6z6wrhxqmxsdwj60fmscenaxlzfnwm7/TBT -decimals = 0 - -[factory/inj1g5793ypr3w8pp4qd75cuupwr6l27uwh4kwxtyp/position] -peggy_denom = factory/inj1g5793ypr3w8pp4qd75cuupwr6l27uwh4kwxtyp/position -decimals = 0 - -[factory/inj1g5lyftjq6zvj2vd4vhna4850ecjdw332sp7ah9/position] -peggy_denom = factory/inj1g5lyftjq6zvj2vd4vhna4850ecjdw332sp7ah9/position -decimals = 0 - -[factory/inj1g96xktmqzm89kz0cd3xr2mzhtzgyeyamhn4uy5/position] -peggy_denom = factory/inj1g96xktmqzm89kz0cd3xr2mzhtzgyeyamhn4uy5/position -decimals = 0 - -[factory/inj1gae0ejy3nhsc7zhujagrp9r86u5wwsq00te6sa/lpinj1v5dwwcnxdglerm3r8dgjy8a3scd7lwu7ffg5kc] -peggy_denom = factory/inj1gae0ejy3nhsc7zhujagrp9r86u5wwsq00te6sa/lpinj1v5dwwcnxdglerm3r8dgjy8a3scd7lwu7ffg5kc -decimals = 0 - -[factory/inj1gaq65qpckkamqqjjk92we2atekcu7z64jgms03/position] -peggy_denom = factory/inj1gaq65qpckkamqqjjk92we2atekcu7z64jgms03/position -decimals = 0 - -[factory/inj1gaz0m54z8excyw7lrnll865rmzm9tpzq7qltdy/ak] -peggy_denom = factory/inj1gaz0m54z8excyw7lrnll865rmzm9tpzq7qltdy/ak -decimals = 6 - -[factory/inj1gcvxhqqzfhc67283pv9zlwajfszn4zjmnvrt6f/position] -peggy_denom = factory/inj1gcvxhqqzfhc67283pv9zlwajfszn4zjmnvrt6f/position -decimals = 0 - -[factory/inj1ge7am845evnwukyfpkn90dysaxhp9wkfuayqwe/position] -peggy_denom = factory/inj1ge7am845evnwukyfpkn90dysaxhp9wkfuayqwe/position -decimals = 0 - -[factory/inj1gel3l0a7j4g9ph8lrfl97gwjrfu40hp8gt8laf/position] -peggy_denom = factory/inj1gel3l0a7j4g9ph8lrfl97gwjrfu40hp8gt8laf/position -decimals = 0 - -[factory/inj1gevmkpqjxgc8s0y8e6lvcdehfqc0e68ppq32df/position] -peggy_denom = factory/inj1gevmkpqjxgc8s0y8e6lvcdehfqc0e68ppq32df/position -decimals = 0 - -[factory/inj1gg3uw8u22f3223m7yryu8k9tgvgkwfr6pj630h/position] -peggy_denom = factory/inj1gg3uw8u22f3223m7yryu8k9tgvgkwfr6pj630h/position -decimals = 0 - -[factory/inj1ghtvh6juxudspvrh9tdlz0p4d4u6k8xxd6jkgx/auction.0] -peggy_denom = factory/inj1ghtvh6juxudspvrh9tdlz0p4d4u6k8xxd6jkgx/auction.0 -decimals = 0 - -[factory/inj1ghuveva04c5ev9q20w4swt362n4sh49wya0fxl/position] -peggy_denom = factory/inj1ghuveva04c5ev9q20w4swt362n4sh49wya0fxl/position -decimals = 0 - -[factory/inj1gjjpzwvlak7kmqucl92g2car56r3zxjzysxuz8/foobar] -peggy_denom = factory/inj1gjjpzwvlak7kmqucl92g2car56r3zxjzysxuz8/foobar -decimals = 0 - -[factory/inj1gl0uf9nky7l6z280sle7x086pvgfd9e5tx932x/galaxy] -peggy_denom = factory/inj1gl0uf9nky7l6z280sle7x086pvgfd9e5tx932x/galaxy -decimals = 6 - -[factory/inj1gn6xfmxf6n9lu82892lyfwh4drxmwc2hmqef7u/position] -peggy_denom = factory/inj1gn6xfmxf6n9lu82892lyfwh4drxmwc2hmqef7u/position -decimals = 0 - -[factory/inj1gnqdy89s5q360f0j7rxsukxy0x343l6x4ferlt/position] -peggy_denom = factory/inj1gnqdy89s5q360f0j7rxsukxy0x343l6x4ferlt/position -decimals = 0 - -[factory/inj1gpux5gt63wn46yyfqh8cthugl9yqfrcnefmemm/position] -peggy_denom = factory/inj1gpux5gt63wn46yyfqh8cthugl9yqfrcnefmemm/position -decimals = 0 - -[factory/inj1gpvuqskf8jet67r4vah3f9p4dzt67d9rr8u2y2/123] -peggy_denom = factory/inj1gpvuqskf8jet67r4vah3f9p4dzt67d9rr8u2y2/123 -decimals = 0 - -[factory/inj1gpxaq5mgd4ydhyxfdgcjwn5sm9qed7skpnrlj2/bINJ] -peggy_denom = factory/inj1gpxaq5mgd4ydhyxfdgcjwn5sm9qed7skpnrlj2/bINJ -decimals = 0 - -[factory/inj1grz7n07nu48jv8m5gpxsjlac3lqq5x3yspz9ck/position] -peggy_denom = factory/inj1grz7n07nu48jv8m5gpxsjlac3lqq5x3yspz9ck/position -decimals = 0 - -[factory/inj1gsfzd0l2xxkkvsrhedt7lnhrgydkp3argcwad3/position] -peggy_denom = factory/inj1gsfzd0l2xxkkvsrhedt7lnhrgydkp3argcwad3/position -decimals = 0 - -[factory/inj1gunkve73s0h7jr9jgujjqwdxpur0rzt2dz30w9/lp] -peggy_denom = factory/inj1gunkve73s0h7jr9jgujjqwdxpur0rzt2dz30w9/lp -decimals = 0 - -[factory/inj1gvftjh39gp6akdxm6l5yrwx426hu7l0fkd3yry/ak] -peggy_denom = factory/inj1gvftjh39gp6akdxm6l5yrwx426hu7l0fkd3yry/ak -decimals = 6 - -[factory/inj1gvhyp8un5l9jpxpd90rdtj3ejd6qser2s2jxtz/test] -peggy_denom = factory/inj1gvhyp8un5l9jpxpd90rdtj3ejd6qser2s2jxtz/test -decimals = 18 - -[factory/inj1gvhyp8un5l9jpxpd90rdtj3ejd6qser2s2jxtz/test2] -peggy_denom = factory/inj1gvhyp8un5l9jpxpd90rdtj3ejd6qser2s2jxtz/test2 -decimals = 6 - -[factory/inj1gvskqyvy4y2630mn7lswylsyrvzq8xnp06mrn6/position] -peggy_denom = factory/inj1gvskqyvy4y2630mn7lswylsyrvzq8xnp06mrn6/position -decimals = 0 - -[factory/inj1gvsx78tja0wfqq9e2tddhlky4ydc2w3wx2zkrd/position] -peggy_denom = factory/inj1gvsx78tja0wfqq9e2tddhlky4ydc2w3wx2zkrd/position -decimals = 0 - -[factory/inj1gy6kakuaatzkd4hw6urjx05t73pr6mc9zngqn5/position] -peggy_denom = factory/inj1gy6kakuaatzkd4hw6urjx05t73pr6mc9zngqn5/position -decimals = 0 - -[factory/inj1h0z5hthmecgz47954j6ykcapeq4rfv52thdjw0/test] -peggy_denom = factory/inj1h0z5hthmecgz47954j6ykcapeq4rfv52thdjw0/test -decimals = 0 - -[factory/inj1h7nwgw6fzhnjlxen0cgrpaceewlrf5ppfsjzkp/FLG] -peggy_denom = factory/inj1h7nwgw6fzhnjlxen0cgrpaceewlrf5ppfsjzkp/FLG -decimals = 9 - -[factory/inj1h8ahs9d035fxp0gmyyq84rqjy4kgjydk3wvhdn/position] -peggy_denom = factory/inj1h8ahs9d035fxp0gmyyq84rqjy4kgjydk3wvhdn/position -decimals = 0 - -[factory/inj1h8qes5tdp86c0r8kg76xxs9yt8d47kemz8huwr/symbol2] -peggy_denom = factory/inj1h8qes5tdp86c0r8kg76xxs9yt8d47kemz8huwr/symbol2 -decimals = 0 - -[factory/inj1hadwz2rpsccxdpyv04nmqevtrss35lenmz8dzw/position] -peggy_denom = factory/inj1hadwz2rpsccxdpyv04nmqevtrss35lenmz8dzw/position -decimals = 0 - -[factory/inj1hajw3kjyrn2xr42eu7t7ywtydlm0p6nma4m6qh/test] -peggy_denom = factory/inj1hajw3kjyrn2xr42eu7t7ywtydlm0p6nma4m6qh/test -decimals = 0 - -[factory/inj1hd6vlkzzxvwr8n5x6pd2ctsl34l063ednu0uxl/test] -peggy_denom = factory/inj1hd6vlkzzxvwr8n5x6pd2ctsl34l063ednu0uxl/test -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj10f4x5azxg58tfykzntcj4edazh3g3fnslut9vc] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj10f4x5azxg58tfykzntcj4edazh3g3fnslut9vc -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj15466xjsqhh0l60kwx44h5hnzm5dy069mhpgcvk] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj15466xjsqhh0l60kwx44h5hnzm5dy069mhpgcvk -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj15dph6ndevrvvzec8wzdv9ahegndfcqs6922kkf] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj15dph6ndevrvvzec8wzdv9ahegndfcqs6922kkf -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj16e0ahu2q8u3teqk3z8ngr2nufslvsl5ru5ydt0] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj16e0ahu2q8u3teqk3z8ngr2nufslvsl5ru5ydt0 -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj18lh2du7f0mayz7cmyjm487eudc48m3d24jltpc] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj18lh2du7f0mayz7cmyjm487eudc48m3d24jltpc -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj192ta9slx6l7ftreft5mds90pmpavmsu9n6vhr6] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj192ta9slx6l7ftreft5mds90pmpavmsu9n6vhr6 -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1avns4wyef63l4scsxj2e6cf56fnt3m2lv9tgnk] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1avns4wyef63l4scsxj2e6cf56fnt3m2lv9tgnk -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1f5sksszg9uphrapwthjrrcpdmyr5r4guk5fq5x] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1f5sksszg9uphrapwthjrrcpdmyr5r4guk5fq5x -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1hhpqhlpch0h5xhufhlvl6xs95ccx2l8l4nk4un] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1hhpqhlpch0h5xhufhlvl6xs95ccx2l8l4nk4un -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1j58xf5f09u98jxvqyqsjhacdepepwxy67sg5dh] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1j58xf5f09u98jxvqyqsjhacdepepwxy67sg5dh -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1jrpf2rzsr9hfn7uaqgqjae6lx8vhfk00tjvvzw] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1jrpf2rzsr9hfn7uaqgqjae6lx8vhfk00tjvvzw -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1kfxppjerh6u36le9378zpu6da688v59y8qdjk2] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1kfxppjerh6u36le9378zpu6da688v59y8qdjk2 -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1lhfrehpyfgf5sx80z2qx7y4f6xqdwrf4y09znz] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1lhfrehpyfgf5sx80z2qx7y4f6xqdwrf4y09znz -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1lu4uvsxf2dar0xsuvxargvtr9370jzwek43vn7] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1lu4uvsxf2dar0xsuvxargvtr9370jzwek43vn7 -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1m70qfh8wte92l55lrddn2gzsscc97ve79ccdtc] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1m70qfh8wte92l55lrddn2gzsscc97ve79ccdtc -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1me0ydc5m8ggwuaerwt67tg4zh8yc6zgn39kz6k] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1me0ydc5m8ggwuaerwt67tg4zh8yc6zgn39kz6k -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1mvlsa3azvj05xe68szp3jrzeg8p5lakeh40rkj] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1mvlsa3azvj05xe68szp3jrzeg8p5lakeh40rkj -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1n9hcmejg2mfkkyyzze82nk9fdls5g32ykga47l] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1n9hcmejg2mfkkyyzze82nk9fdls5g32ykga47l -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1nkdq6elhmu0cv3ucy5zql7uakr05g94jx3nv0p] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1nkdq6elhmu0cv3ucy5zql7uakr05g94jx3nv0p -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1npj6nv6kxcyqjtjn8sguqsyc60ghr3j48pjj7x] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1npj6nv6kxcyqjtjn8sguqsyc60ghr3j48pjj7x -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1p9qrra4k3pt6ts3larlguucpw0urlc8jyq2ddg] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1p9qrra4k3pt6ts3larlguucpw0urlc8jyq2ddg -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1pmv03tjwu798ry6dyss4a2qn5dnmh7m7t9ljqe] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1pmv03tjwu798ry6dyss4a2qn5dnmh7m7t9ljqe -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1qdnxd73mfvj6uu6h08yk8h7zwvzpqx35ycnupf] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1qdnxd73mfvj6uu6h08yk8h7zwvzpqx35ycnupf -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1s5y4wz7yyzkp4pthylm84uyswnsfmqyayx22w3] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1s5y4wz7yyzkp4pthylm84uyswnsfmqyayx22w3 -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1tzvk3zjxd7jjcnugz6jhufaqsn8c5llhjj3x67] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1tzvk3zjxd7jjcnugz6jhufaqsn8c5llhjj3x67 -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1u5zugw73cvcj43efq5j3ns4y7tqvq52u4nvqu9] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1u5zugw73cvcj43efq5j3ns4y7tqvq52u4nvqu9 -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1ufmjm7stkuhlzma23ypzgvlvtgqjweatkztq0c] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1ufmjm7stkuhlzma23ypzgvlvtgqjweatkztq0c -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1uqnsq33sjwhyhsc7wjh2d2tc40lu0tfrktes5v] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1uqnsq33sjwhyhsc7wjh2d2tc40lu0tfrktes5v -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1wrtwcee23p0k9z5tveerx8tyesvjs4k8vlf4en] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1wrtwcee23p0k9z5tveerx8tyesvjs4k8vlf4en -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1yhz4e7df95908jhs9erl87vdzjkdsc24q7afjf] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1yhz4e7df95908jhs9erl87vdzjkdsc24q7afjf -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1z0whhrxkg38lcrj7lv2eetsfhwztpfntfkc636] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1z0whhrxkg38lcrj7lv2eetsfhwztpfntfkc636 -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1zav98x9dlswwttdjmz7qg9fqhdvauc8smfqhvs] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1zav98x9dlswwttdjmz7qg9fqhdvauc8smfqhvs -decimals = 0 - -[factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1zflmjmg0qt02s0l0vlcg8zlyplsapefzy6ej3t] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1zflmjmg0qt02s0l0vlcg8zlyplsapefzy6ej3t -decimals = 0 - -[factory/inj1he7245j7my7f6470a94g0drsw86xajwzhr4ah9/position] -peggy_denom = factory/inj1he7245j7my7f6470a94g0drsw86xajwzhr4ah9/position -decimals = 0 - -[factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj12ngevx045zpvacus9s6anr258gkwpmthnz80e9] -peggy_denom = factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj12ngevx045zpvacus9s6anr258gkwpmthnz80e9 -decimals = 0 - -[factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj17wnnyqxj57y3crf5nn72krhx7w35zect2srfe2] -peggy_denom = factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj17wnnyqxj57y3crf5nn72krhx7w35zect2srfe2 -decimals = 0 - -[factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj19axs93f4hk8cansmhj372m96v2zhdmdqdd5fnm] -peggy_denom = factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj19axs93f4hk8cansmhj372m96v2zhdmdqdd5fnm -decimals = 0 - -[factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj1wme3afmfl94l83jzekcm3j0h544ussu0x68wnl] -peggy_denom = factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj1wme3afmfl94l83jzekcm3j0h544ussu0x68wnl -decimals = 0 - -[factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj1z0whhrxkg38lcrj7lv2eetsfhwztpfntfkc636] -peggy_denom = factory/inj1heah64yarps3u85jyml4ter53h4lyrag4shfzp/inj1z0whhrxkg38lcrj7lv2eetsfhwztpfntfkc636 -decimals = 0 - -[factory/inj1hg36aw2pm9988jxd0pu8lnfwg533vcs5weakx6/position] -peggy_denom = factory/inj1hg36aw2pm9988jxd0pu8lnfwg533vcs5weakx6/position -decimals = 0 - -[factory/inj1hh4ngvv0l7tlt5gcpwwauzuthrmzwyutxkxq0x/position] -peggy_denom = factory/inj1hh4ngvv0l7tlt5gcpwwauzuthrmzwyutxkxq0x/position -decimals = 0 - -[factory/inj1hhezfw883am7xk86jkxauf92kg8wm9xsv5hymd/position] -peggy_denom = factory/inj1hhezfw883am7xk86jkxauf92kg8wm9xsv5hymd/position -decimals = 0 - -[factory/inj1hj4nr0jt0mzpawxt5tyajqgwf3pct5552rvkvp/TEST2] -peggy_denom = factory/inj1hj4nr0jt0mzpawxt5tyajqgwf3pct5552rvkvp/TEST2 -decimals = 6 - -[factory/inj1hj4nr0jt0mzpawxt5tyajqgwf3pct5552rvkvp/test1] -peggy_denom = factory/inj1hj4nr0jt0mzpawxt5tyajqgwf3pct5552rvkvp/test1 -decimals = 0 - -[factory/inj1hjujvtzpwqfm76tkmg6qr2vlsp2drzph6n3n4n/position] -peggy_denom = factory/inj1hjujvtzpwqfm76tkmg6qr2vlsp2drzph6n3n4n/position -decimals = 0 - -[factory/inj1hk8w93z3rw6aznyvnc537qn9aht6gxlxn80j0h/position] -peggy_denom = factory/inj1hk8w93z3rw6aznyvnc537qn9aht6gxlxn80j0h/position -decimals = 0 - -[factory/inj1hkng9xr75yqg6yf6ela40k58n7cw0a2vgsty64/HOA9] -peggy_denom = factory/inj1hkng9xr75yqg6yf6ela40k58n7cw0a2vgsty64/HOA9 -decimals = 0 - -[factory/inj1hlgmzgxzxzyjxu6394328vf0fmwd74pcc6cztc/position] -peggy_denom = factory/inj1hlgmzgxzxzyjxu6394328vf0fmwd74pcc6cztc/position -decimals = 0 - -[factory/inj1hljrl5cx0gcd8gdxmqm4tsuqkxchysdakyfhan/position] -peggy_denom = factory/inj1hljrl5cx0gcd8gdxmqm4tsuqkxchysdakyfhan/position -decimals = 0 - -[factory/inj1hm9qgpe4ksgat77xjstkhhcns0xex770t4crr3/bpINJ] -peggy_denom = factory/inj1hm9qgpe4ksgat77xjstkhhcns0xex770t4crr3/bpINJ -decimals = 0 - -[factory/inj1hms4dradmmdjlgrnh4dywg897g3hpcc5n7hxgk/position] -peggy_denom = factory/inj1hms4dradmmdjlgrnh4dywg897g3hpcc5n7hxgk/position -decimals = 0 - -[factory/inj1hnnwzsudnmtshgky0xfts8zm637skect2prc2l/position] -peggy_denom = factory/inj1hnnwzsudnmtshgky0xfts8zm637skect2prc2l/position -decimals = 0 - -[factory/inj1hr0hpnh95jdf2w8rax063mrqxcgesq4jeazg34/position] -peggy_denom = factory/inj1hr0hpnh95jdf2w8rax063mrqxcgesq4jeazg34/position -decimals = 0 - -[factory/inj1hr2aj9frer4n50j64ew6j4n434du4etv65t25h/position] -peggy_denom = factory/inj1hr2aj9frer4n50j64ew6j4n434du4etv65t25h/position -decimals = 0 - -[factory/inj1hs6te9qe40mzr4qayc9hhngv4tzn07a3cujshr/position] -peggy_denom = factory/inj1hs6te9qe40mzr4qayc9hhngv4tzn07a3cujshr/position -decimals = 0 - -[factory/inj1ht67n9wwrf8pkd2dupwsjqfe2wzaelaz2dsqj7/position] -peggy_denom = factory/inj1ht67n9wwrf8pkd2dupwsjqfe2wzaelaz2dsqj7/position -decimals = 0 - -[factory/inj1ht6d6axu5u4g24zephnc48ee585e2vge8czkzn/ak] -peggy_denom = factory/inj1ht6d6axu5u4g24zephnc48ee585e2vge8czkzn/ak -decimals = 6 - -[factory/inj1ht6d6axu5u4g24zephnc48ee585e2vge8czkzn/inj-test] -peggy_denom = factory/inj1ht6d6axu5u4g24zephnc48ee585e2vge8czkzn/inj-test -decimals = 0 - -[factory/inj1hu80gaauahnfnd0pwfa97xzge7td6e4atu29jw/position] -peggy_denom = factory/inj1hu80gaauahnfnd0pwfa97xzge7td6e4atu29jw/position -decimals = 0 - -[factory/inj1hwaycepzld9rvsqzkeyjtflumzlu37n4xj8f3a/position] -peggy_denom = factory/inj1hwaycepzld9rvsqzkeyjtflumzlu37n4xj8f3a/position -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706193599InjUsdt2d110C] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706193599InjUsdt2d110C -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706193683AtomUsdt2d90P] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706193683AtomUsdt2d90P -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706273714AtomUsdt2d90P] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706273714AtomUsdt2d90P -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706273714InjUsdt2d110C] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706273714InjUsdt2d110C -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706360115AtomUsdt2d90P] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706360115AtomUsdt2d90P -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706360115InjUsdt2d110C] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706360115InjUsdt2d110C -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706446512AtomUsdt2d90P] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706446512AtomUsdt2d90P -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706446512InjUsdt2d110C] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706446512InjUsdt2d110C -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706532910AtomUsdt2d90P] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706532910AtomUsdt2d90P -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706532910InjUsdt2d110C] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706532910InjUsdt2d110C -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706619311AtomUsdt2d90P] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706619311AtomUsdt2d90P -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706619311InjUsdt2d110C] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706619311InjUsdt2d110C -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706705707AtomUsdt2d90P] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706705707AtomUsdt2d90P -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706705707InjUsdt2d110C] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706705707InjUsdt2d110C -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706792103AtomUsdt2d90P] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706792103AtomUsdt2d90P -decimals = 0 - -[factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706792103InjUsdt2d110C] -peggy_denom = factory/inj1hyf3u76xpr5fna80yutgklxhyrl70f76gdzfqv/1706792103InjUsdt2d110C -decimals = 0 - -[factory/inj1hz74vt433t870r4ywnk7l9j483u6w6a6yl8uqt/BTC] -peggy_denom = factory/inj1hz74vt433t870r4ywnk7l9j483u6w6a6yl8uqt/BTC -decimals = 9 - -[factory/inj1hzuhzk3ng8x09ev6at6z4smdg00slcff6g77k7/1] -peggy_denom = factory/inj1hzuhzk3ng8x09ev6at6z4smdg00slcff6g77k7/1 -decimals = 0 - -[factory/inj1hzuhzk3ng8x09ev6at6z4smdg00slcff6g77k7/2] -peggy_denom = factory/inj1hzuhzk3ng8x09ev6at6z4smdg00slcff6g77k7/2 -decimals = 0 - -[factory/inj1j07z60sprgkzqtqtq2lxtnpdxly25xj44h22nr/test] -peggy_denom = factory/inj1j07z60sprgkzqtqtq2lxtnpdxly25xj44h22nr/test -decimals = 0 - -[factory/inj1j3593zd3nx9gygnfxkqw5e7gr6wgl403yh3ydl/position] -peggy_denom = factory/inj1j3593zd3nx9gygnfxkqw5e7gr6wgl403yh3ydl/position -decimals = 0 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TEST] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TEST -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TST] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TST -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TSTTT] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/TSTTT -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testigg] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testigg -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testiggg] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testiggg -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testingggg] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testingggg -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testingggggg] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testingggggg -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testinggggggg] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/testinggggggg -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/tstigg] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/tstigg -decimals = 6 - -[factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/tstttttttt] -peggy_denom = factory/inj1j55d6mj5j3hdzfk5v8m3a9zthq7m7hpkfswvq0/tstttttttt -decimals = 6 - -[factory/inj1j5uwfmqj9wcm8tu4ltva673wv03f884cpvurq8/position] -peggy_denom = factory/inj1j5uwfmqj9wcm8tu4ltva673wv03f884cpvurq8/position -decimals = 0 - -[factory/inj1j5z0r7sqkznj44u3u7hkq6k0nl8kpq493zt9ar/BTC] -peggy_denom = factory/inj1j5z0r7sqkznj44u3u7hkq6k0nl8kpq493zt9ar/BTC -decimals = 9 - -[factory/inj1j64299hq4a8yfd5qmpxkwu24t3as2xs9q78md0/position] -peggy_denom = factory/inj1j64299hq4a8yfd5qmpxkwu24t3as2xs9q78md0/position -decimals = 0 - -[factory/inj1j77avxp50lt766ezvad59nyk0qzddfh69dsegt/position] -peggy_denom = factory/inj1j77avxp50lt766ezvad59nyk0qzddfh69dsegt/position -decimals = 0 - -[factory/inj1j7ehe6pdmp92zs2gqz67tp4ukv9p323yk7qacy/RAMENV2] -peggy_denom = factory/inj1j7ehe6pdmp92zs2gqz67tp4ukv9p323yk7qacy/RAMENV2 -decimals = 6 - -[factory/inj1j9k4l9fep89pgaqecc5h9hpghjsa4ffwg8mjcr/position] -peggy_denom = factory/inj1j9k4l9fep89pgaqecc5h9hpghjsa4ffwg8mjcr/position -decimals = 0 - -[factory/inj1j9nc88lw725mapgvu27edd6qxwnaf9qdcdhjnj/NTH] -peggy_denom = factory/inj1j9nc88lw725mapgvu27edd6qxwnaf9qdcdhjnj/NTH -decimals = 0 - -[factory/inj1jc7jj2wx6mlgy2umkw03duflgvf5h77cc0cqjr/ak] -peggy_denom = factory/inj1jc7jj2wx6mlgy2umkw03duflgvf5h77cc0cqjr/ak -decimals = 6 - -[factory/inj1jcgs0vmqg5jyuz2y53w06prtwdhq0q3gyecfrl/position] -peggy_denom = factory/inj1jcgs0vmqg5jyuz2y53w06prtwdhq0q3gyecfrl/position -decimals = 0 - -[factory/inj1jd6tjedh3a8fcervaec5ftn463504k0d6d0ftg/position] -peggy_denom = factory/inj1jd6tjedh3a8fcervaec5ftn463504k0d6d0ftg/position -decimals = 0 - -[factory/inj1jfuyujpvvkxq4566r3z3tv3jdy29pqra5ln0yk/ak] -peggy_denom = factory/inj1jfuyujpvvkxq4566r3z3tv3jdy29pqra5ln0yk/ak -decimals = 6 - -[factory/inj1jfuyujpvvkxq4566r3z3tv3jdy29pqra5ln0yk/kira] -peggy_denom = factory/inj1jfuyujpvvkxq4566r3z3tv3jdy29pqra5ln0yk/kira -decimals = 6 - -[factory/inj1jfuyujpvvkxq4566r3z3tv3jdy29pqra5ln0yk/kirat] -peggy_denom = factory/inj1jfuyujpvvkxq4566r3z3tv3jdy29pqra5ln0yk/kirat -decimals = 0 - -[factory/inj1jfzpfkqlnesfwmg4ewyaurkddavawwtgc20ksx/test] -peggy_denom = factory/inj1jfzpfkqlnesfwmg4ewyaurkddavawwtgc20ksx/test -decimals = 0 - -[factory/inj1jjlw9gfgn4kq2cpw2dlcz77z9dxuypg7dpfl2g/position] -peggy_denom = factory/inj1jjlw9gfgn4kq2cpw2dlcz77z9dxuypg7dpfl2g/position -decimals = 0 - -[factory/inj1jnu67egy9gex77d2fafz36nse6sg4sml7r3vv7/position] -peggy_denom = factory/inj1jnu67egy9gex77d2fafz36nse6sg4sml7r3vv7/position -decimals = 0 - -[factory/inj1jp8c8sup584tdw9jl0jfrx78crp5ufcwuax78g/symbol3] -peggy_denom = factory/inj1jp8c8sup584tdw9jl0jfrx78crp5ufcwuax78g/symbol3 -decimals = 0 - -[factory/inj1jq267957yt6h7987szcrf5e8asfrzu86ayr568/1684001277InjUsdt1d110C] -peggy_denom = factory/inj1jq267957yt6h7987szcrf5e8asfrzu86ayr568/1684001277InjUsdt1d110C -decimals = 0 - -[factory/inj1jqccfrzpfhx9pvtxtrz0ufh6vl72uft7v5r360/position] -peggy_denom = factory/inj1jqccfrzpfhx9pvtxtrz0ufh6vl72uft7v5r360/position -decimals = 0 - -[factory/inj1jrjsn947qrmlujlpjahmg67qv9dcxkvyx6rl97/position] -peggy_denom = factory/inj1jrjsn947qrmlujlpjahmg67qv9dcxkvyx6rl97/position -decimals = 0 - -[factory/inj1js6xyr58llrsme8zwydk2u6jty95q0d3aqhrq6/test] -peggy_denom = factory/inj1js6xyr58llrsme8zwydk2u6jty95q0d3aqhrq6/test -decimals = 0 - -[factory/inj1jtkk33paqrupr39tchhdavw2vmk5m09ymfq8xx/position] -peggy_denom = factory/inj1jtkk33paqrupr39tchhdavw2vmk5m09ymfq8xx/position -decimals = 0 - -[factory/inj1jwt093rt0puraancqzahm02eh5ffpqd8wyxqel/duynt-1] -peggy_denom = factory/inj1jwt093rt0puraancqzahm02eh5ffpqd8wyxqel/duynt-1 -decimals = 9 - -[factory/inj1jx8akujhkqe88fm7juf9qr3r5m74z5lcyffzlf/position] -peggy_denom = factory/inj1jx8akujhkqe88fm7juf9qr3r5m74z5lcyffzlf/position -decimals = 0 - -[factory/inj1jxcx0qljtdzps58an4r66zn8hg5hv4z2694y2v/position] -peggy_denom = factory/inj1jxcx0qljtdzps58an4r66zn8hg5hv4z2694y2v/position -decimals = 0 - -[factory/inj1jy0zw3cpctqrhcg7qc0yglnljcsk89sr046rnj/position] -peggy_denom = factory/inj1jy0zw3cpctqrhcg7qc0yglnljcsk89sr046rnj/position -decimals = 0 - -[factory/inj1jykz2vaea5382hd7r76wvjv56v69h4agr52v2e/position] -peggy_denom = factory/inj1jykz2vaea5382hd7r76wvjv56v69h4agr52v2e/position -decimals = 0 - -[factory/inj1jzdvaf5n54mgepq04c5lqvfxmm5xckw04hz2fy/test] -peggy_denom = factory/inj1jzdvaf5n54mgepq04c5lqvfxmm5xckw04hz2fy/test -decimals = 9 - -[factory/inj1k2z5rumpc53854hzq5chxyayrqcrqm9uwad308/position] -peggy_denom = factory/inj1k2z5rumpc53854hzq5chxyayrqcrqm9uwad308/position -decimals = 0 - -[factory/inj1k4ytv0a9xhrxedsjsn9e92v4333a5n33u8zpwj/position] -peggy_denom = factory/inj1k4ytv0a9xhrxedsjsn9e92v4333a5n33u8zpwj/position -decimals = 0 - -[factory/inj1k6dvrkjvgwlzgc0vk54hkyjvp2llrp0mvdrpt3/duynt-1] -peggy_denom = factory/inj1k6dvrkjvgwlzgc0vk54hkyjvp2llrp0mvdrpt3/duynt-1 -decimals = 9 - -[factory/inj1k7mc760g739rmxv8yhvya5mtpvymrs3vf98s4m/position] -peggy_denom = factory/inj1k7mc760g739rmxv8yhvya5mtpvymrs3vf98s4m/position -decimals = 0 - -[factory/inj1k8jzdcvvjv6tt5zeprtwt4aewv5c264mhj228u/hoa1] -peggy_denom = factory/inj1k8jzdcvvjv6tt5zeprtwt4aewv5c264mhj228u/hoa1 -decimals = 9 - -[factory/inj1kagzsefacxy5p765q8upkjj9fwkjczlhe580ar/position] -peggy_denom = factory/inj1kagzsefacxy5p765q8upkjj9fwkjczlhe580ar/position -decimals = 0 - -[factory/inj1kar690fes35rm0dx5zcjwt5pjhtvcf572w3ffe/auction.0] -peggy_denom = factory/inj1kar690fes35rm0dx5zcjwt5pjhtvcf572w3ffe/auction.0 -decimals = 0 - -[factory/inj1kchw3uh70ujhmvrkx7phjayaswnpf7sde67uzw/position] -peggy_denom = factory/inj1kchw3uh70ujhmvrkx7phjayaswnpf7sde67uzw/position -decimals = 0 - -[factory/inj1kd6l4mq8kt23n05mzagdcyegzfstddygwglkyv/hoa3] -peggy_denom = factory/inj1kd6l4mq8kt23n05mzagdcyegzfstddygwglkyv/hoa3 -decimals = 9 - -[factory/inj1kdksyv2jv3nnmenqfvxxe38q4drwn8e7wj5pcx/position] -peggy_denom = factory/inj1kdksyv2jv3nnmenqfvxxe38q4drwn8e7wj5pcx/position -decimals = 0 - -[factory/inj1kezz4smdtr3t0v49d5qyt3ksd2emc594p7ftsx/inj-test] -peggy_denom = factory/inj1kezz4smdtr3t0v49d5qyt3ksd2emc594p7ftsx/inj-test -decimals = 0 - -[factory/inj1kfjpk47586cdkagusn58y2jqd4vu5kckkyq9rh/FLG] -peggy_denom = factory/inj1kfjpk47586cdkagusn58y2jqd4vu5kckkyq9rh/FLG -decimals = 9 - -[factory/inj1kg5qz6vfxxz7l6d8qh5spgjdjuwusarcmf447y/position] -peggy_denom = factory/inj1kg5qz6vfxxz7l6d8qh5spgjdjuwusarcmf447y/position -decimals = 0 - -[factory/inj1kgx9rqg7dtl27lqqxyw6q0vvuljulj8gn99tme/cook] -peggy_denom = factory/inj1kgx9rqg7dtl27lqqxyw6q0vvuljulj8gn99tme/cook -decimals = 6 - -[factory/inj1kgx9rqg7dtl27lqqxyw6q0vvuljulj8gn99tme/cookie] -peggy_denom = factory/inj1kgx9rqg7dtl27lqqxyw6q0vvuljulj8gn99tme/cookie -decimals = 6 - -[factory/inj1kgzm28dyl9sh9atz5ms9wmv0tmp72dg3s4eezz/position] -peggy_denom = factory/inj1kgzm28dyl9sh9atz5ms9wmv0tmp72dg3s4eezz/position -decimals = 0 - -[factory/inj1kjcc00fu0ven6khmdrx8kmzsa3w03mxrzlvp66/position] -peggy_denom = factory/inj1kjcc00fu0ven6khmdrx8kmzsa3w03mxrzlvp66/position -decimals = 0 - -[factory/inj1kjy08x977nekv2fv20skhqhde7t396la4yy3m3/nept] -peggy_denom = factory/inj1kjy08x977nekv2fv20skhqhde7t396la4yy3m3/nept -decimals = 6 - -[factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-go1] -peggy_denom = factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-go1 -decimals = 18 - -[factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-main] -peggy_denom = factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-main -decimals = 18 - -[factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-test] -peggy_denom = factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-test -decimals = 0 - -[factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-usdc] -peggy_denom = factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-usdc -decimals = 6 - -[factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-usdt] -peggy_denom = factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-usdt -decimals = 6 - -[factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-usdt-demo] -peggy_denom = factory/inj1kp5yr4xragvff8el0unhgr4d5cx6322g7s04lt/inj-usdt-demo -decimals = 6 - -[factory/inj1kp5z0kxyrnwzt3mgwl0klanx8yty6lnne25stk/position] -peggy_denom = factory/inj1kp5z0kxyrnwzt3mgwl0klanx8yty6lnne25stk/position -decimals = 0 - -[factory/inj1kpamjvx4cuty7vnlnkf3ycurlhzhqjjygwcmzu/BTYC] -peggy_denom = factory/inj1kpamjvx4cuty7vnlnkf3ycurlhzhqjjygwcmzu/BTYC -decimals = 9 - -[factory/inj1kq8ya3knwcwscs9quunwz5hnrc4ya2utf3uzw3/symbol] -peggy_denom = factory/inj1kq8ya3knwcwscs9quunwz5hnrc4ya2utf3uzw3/symbol -decimals = 9 - -[factory/inj1kql9xt6essgccf594ypqdu690wnjkdksp75d7r/position] -peggy_denom = factory/inj1kql9xt6essgccf594ypqdu690wnjkdksp75d7r/position -decimals = 0 - -[factory/inj1ks3hnkur9udnjuhf5ra806alm4tz3dmy03qkly/inj-go1] -peggy_denom = factory/inj1ks3hnkur9udnjuhf5ra806alm4tz3dmy03qkly/inj-go1 -decimals = 18 - -[factory/inj1ks3hnkur9udnjuhf5ra806alm4tz3dmy03qkly/inj-main] -peggy_denom = factory/inj1ks3hnkur9udnjuhf5ra806alm4tz3dmy03qkly/inj-main -decimals = 0 - -[factory/inj1kscpq7lqluusxhmzv0z2eluaj9yf2njayudlcs/TAB] -peggy_denom = factory/inj1kscpq7lqluusxhmzv0z2eluaj9yf2njayudlcs/TAB -decimals = 6 - -[factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/inj-test] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/inj-test -decimals = 0 - -[factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shurikena] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shurikena -decimals = 6 - -[factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shurikeng] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shurikeng -decimals = 6 - -[factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shurikenk] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shurikenk -decimals = 6 - -[factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shurikenl] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/shurikenl -decimals = 0 - -[factory/inj1ku42wlmwuznlzeywnsvjkr5mf00hg4u72qau7y/position] -peggy_denom = factory/inj1ku42wlmwuznlzeywnsvjkr5mf00hg4u72qau7y/position -decimals = 0 - -[factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/AKK] -peggy_denom = factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/AKK -decimals = 0 - -[factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/FAMILY] -peggy_denom = factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/FAMILY -decimals = 6 - -[factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/ak] -peggy_denom = factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/ak -decimals = 0 - -[factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/hdro] -peggy_denom = factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/hdro -decimals = 6 - -[factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/sl] -peggy_denom = factory/inj1ku7eqpwpgjgt9ch07gqhvxev5pn2p2upzf72rm/sl -decimals = 0 - -[factory/inj1kvd2huvd2tjrmh94pr0823uemrqm3wr56pk4e6/BTC] -peggy_denom = factory/inj1kvd2huvd2tjrmh94pr0823uemrqm3wr56pk4e6/BTC -decimals = 9 - -[factory/inj1kvsuv80cz74znps8jpm7td9gxnd6zyjhs379rd/position] -peggy_denom = factory/inj1kvsuv80cz74znps8jpm7td9gxnd6zyjhs379rd/position -decimals = 0 - -[factory/inj1kw7hdjnneatd2mgc9snqhehhm8wkvmym9c3a37/position] -peggy_denom = factory/inj1kw7hdjnneatd2mgc9snqhehhm8wkvmym9c3a37/position -decimals = 0 - -[factory/inj1kygt3qa7rjux7wjmp3r2p29aq8zerz8zjcml8l/position] -peggy_denom = factory/inj1kygt3qa7rjux7wjmp3r2p29aq8zerz8zjcml8l/position -decimals = 0 - -[factory/inj1kzfya35nclmpzj95m3yhc0zht93k0xvdn2zgtj/position] -peggy_denom = factory/inj1kzfya35nclmpzj95m3yhc0zht93k0xvdn2zgtj/position -decimals = 0 - -[factory/inj1l08w00ngs4twqa7mhaavnjgs8sdym7l0pv57mn/position] -peggy_denom = factory/inj1l08w00ngs4twqa7mhaavnjgs8sdym7l0pv57mn/position -decimals = 0 - -[factory/inj1l3urpgrzr6eh2alcfvyyxpazjzfdltz4h97u3m/lp] -peggy_denom = factory/inj1l3urpgrzr6eh2alcfvyyxpazjzfdltz4h97u3m/lp -decimals = 0 - -[factory/inj1l5u0qphqa02dl257e2h6te07szdlnsjfuggf7d/position] -peggy_denom = factory/inj1l5u0qphqa02dl257e2h6te07szdlnsjfuggf7d/position -decimals = 0 - -[factory/inj1l67cg8jf97gxsxrf8cfz5khmutwh392c7hdlyp/position] -peggy_denom = factory/inj1l67cg8jf97gxsxrf8cfz5khmutwh392c7hdlyp/position -decimals = 0 - -[factory/inj1l7frwkpwkpx5ulleqz9tuj754m9z02rfdsmsqp/uLP] -peggy_denom = factory/inj1l7frwkpwkpx5ulleqz9tuj754m9z02rfdsmsqp/uLP -decimals = 0 - -[factory/inj1l8r30dpqq98l97wwwdxkkwdnpzu02aj0r6mnrw/banana] -peggy_denom = factory/inj1l8r30dpqq98l97wwwdxkkwdnpzu02aj0r6mnrw/banana -decimals = 0 - -[factory/inj1l92lfj2wudxpawj7rkta6kqvxr7twg7kah9zq9/position] -peggy_denom = factory/inj1l92lfj2wudxpawj7rkta6kqvxr7twg7kah9zq9/position -decimals = 0 - -[factory/inj1l96mcs69en0u4y423m4k5z8k6u48e25wnd4zpu/position] -peggy_denom = factory/inj1l96mcs69en0u4y423m4k5z8k6u48e25wnd4zpu/position -decimals = 0 - -[factory/inj1la5tx5xccss5ku6j8rk7erwukzl40q29mk97am/position] -peggy_denom = factory/inj1la5tx5xccss5ku6j8rk7erwukzl40q29mk97am/position -decimals = 0 - -[factory/inj1lc0htcdf9xdj3jnfstkjlul3j6fzjftw9k2vqc/hoa1] -peggy_denom = factory/inj1lc0htcdf9xdj3jnfstkjlul3j6fzjftw9k2vqc/hoa1 -decimals = 9 - -[factory/inj1lcg53t8y8a9lq70fknwclqece2clglke42yrw2/BTC] -peggy_denom = factory/inj1lcg53t8y8a9lq70fknwclqece2clglke42yrw2/BTC -decimals = 9 - -[factory/inj1lg4ycnwe3xt9x9wsc2tfe0v9lm9kdxkyj760nw/position] -peggy_denom = factory/inj1lg4ycnwe3xt9x9wsc2tfe0v9lm9kdxkyj760nw/position -decimals = 0 - -[factory/inj1lg9sysgklc6tt85ax54k7fd28lx26prg5guunl/position] -peggy_denom = factory/inj1lg9sysgklc6tt85ax54k7fd28lx26prg5guunl/position -decimals = 0 - -[factory/inj1lgcxyyvmnhtp42apwgvhhvlqvezwlqly998eex/nUSD] -peggy_denom = factory/inj1lgcxyyvmnhtp42apwgvhhvlqvezwlqly998eex/nUSD -decimals = 18 - -[factory/inj1lhr06p7k3rdgk0knw5hfsde3fj87g2aq4e9a52/binj] -peggy_denom = factory/inj1lhr06p7k3rdgk0knw5hfsde3fj87g2aq4e9a52/binj -decimals = 6 - -[factory/inj1ljsmrpm3hlth5zk347lqr23rdzm2ktd4aathkl/position] -peggy_denom = factory/inj1ljsmrpm3hlth5zk347lqr23rdzm2ktd4aathkl/position -decimals = 0 - -[factory/inj1lm6prvcxdq5e32f0eeq3nuvq6g9zk0k6787sas/lp] -peggy_denom = factory/inj1lm6prvcxdq5e32f0eeq3nuvq6g9zk0k6787sas/lp -decimals = 0 - -[factory/inj1lpcrac7g7dketq89ttxn86whqz65zuhe37zwnt/BTC] -peggy_denom = factory/inj1lpcrac7g7dketq89ttxn86whqz65zuhe37zwnt/BTC -decimals = 9 - -[factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/TEST] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/TEST -decimals = 6 - -[factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/shroom] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/shroom -decimals = 0 - -[factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/t1] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/t1 -decimals = 0 - -[factory/inj1lqt0nl9xuvprp2l2x0x6htln8cu7zrc39q0td4/position] -peggy_denom = factory/inj1lqt0nl9xuvprp2l2x0x6htln8cu7zrc39q0td4/position -decimals = 0 - -[factory/inj1lr2vhedf3a285rx5ms84w576g3hkktn7d8dx70/position] -peggy_denom = factory/inj1lr2vhedf3a285rx5ms84w576g3hkktn7d8dx70/position -decimals = 0 - -[factory/inj1lskj3yp5gdzyq5w8vqh82d9lhcu5xaq85tuewa/position] -peggy_denom = factory/inj1lskj3yp5gdzyq5w8vqh82d9lhcu5xaq85tuewa/position -decimals = 0 - -[factory/inj1lssnhhl6npy0v2wd6jm5575u06nu8a68ged88m/position] -peggy_denom = factory/inj1lssnhhl6npy0v2wd6jm5575u06nu8a68ged88m/position -decimals = 0 - -[factory/inj1ludhv2cz6xs53sayfhf7ykypq99akrxha3esw6/position] -peggy_denom = factory/inj1ludhv2cz6xs53sayfhf7ykypq99akrxha3esw6/position -decimals = 0 - -[factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1703682000InjUsdt1d85P] -peggy_denom = factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1703682000InjUsdt1d85P -decimals = 0 - -[factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705510171InjUsdt1d105C] -peggy_denom = factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705510171InjUsdt1d105C -decimals = 0 - -[factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705555894InjUsdt1d105C] -peggy_denom = factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705555894InjUsdt1d105C -decimals = 0 - -[factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705569976InjUsdt1d85P] -peggy_denom = factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705569976InjUsdt1d85P -decimals = 0 - -[factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705588200000000001InjUsdt1d85P] -peggy_denom = factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705588200000000001InjUsdt1d85P -decimals = 0 - -[factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705932000InjUsdt1d85P] -peggy_denom = factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705932000InjUsdt1d85P -decimals = 0 - -[factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705932001InjUsdt1d85P] -peggy_denom = factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705932001InjUsdt1d85P -decimals = 0 - -[factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705932002InjUsdt1d85P] -peggy_denom = factory/inj1luxu6s0qywql92pnh3xnfdqzn6gkt7rrnetfc0/1705932002InjUsdt1d85P -decimals = 0 - -[factory/inj1lvj3thsvqlkps32mkrwptc4qyryrdt99k64f4m/position] -peggy_denom = factory/inj1lvj3thsvqlkps32mkrwptc4qyryrdt99k64f4m/position -decimals = 0 - -[factory/inj1lw7w3yfp8mrp4klef0y3y7fenap46kkrytav8v/position] -peggy_denom = factory/inj1lw7w3yfp8mrp4klef0y3y7fenap46kkrytav8v/position -decimals = 0 - -[factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding] -peggy_denom = factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding -decimals = 0 - -[factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding2] -peggy_denom = factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding2 -decimals = 0 - -[factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding3] -peggy_denom = factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding3 -decimals = 0 - -[factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding4] -peggy_denom = factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding4 -decimals = 0 - -[factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding5] -peggy_denom = factory/inj1lw9xs5y0mgcat5h4s8dylalyh93vlw3y7zavx5/holding5 -decimals = 0 - -[factory/inj1lwhr9t3aha4qc2p6rdvj6n5q9jwt4pf8czlhhn/ak] -peggy_denom = factory/inj1lwhr9t3aha4qc2p6rdvj6n5q9jwt4pf8czlhhn/ak -decimals = 6 - -[factory/inj1lxxt0kcw8fnc8y3svem9fpyhmelqccx5lk83fd/position] -peggy_denom = factory/inj1lxxt0kcw8fnc8y3svem9fpyhmelqccx5lk83fd/position -decimals = 0 - -[factory/inj1lypqwz349za88um0m4ltjhgf8q6q8p4y93pv6p/moonify] -peggy_denom = factory/inj1lypqwz349za88um0m4ltjhgf8q6q8p4y93pv6p/moonify -decimals = 6 - -[factory/inj1lz2zgagnwgpzepxk6ny3amludjzajg98uhehwq/position] -peggy_denom = factory/inj1lz2zgagnwgpzepxk6ny3amludjzajg98uhehwq/position -decimals = 0 - -[factory/inj1m0a3h8dvz88xgf5v36tqm6kydeuu79te7sar05/upinj] -peggy_denom = factory/inj1m0a3h8dvz88xgf5v36tqm6kydeuu79te7sar05/upinj -decimals = 0 - -[factory/inj1m2ql579ycmrxcceg9ytmt97vr3zth05hq3uypy/btc] -peggy_denom = factory/inj1m2ql579ycmrxcceg9ytmt97vr3zth05hq3uypy/btc -decimals = 0 - -[factory/inj1m2v8rhhrma5207d5s6vmtxd9hajk559wdtc9lh/position] -peggy_denom = factory/inj1m2v8rhhrma5207d5s6vmtxd9hajk559wdtc9lh/position -decimals = 0 - -[factory/inj1m3c4lxq6gstpgd5f0ll7jln8fyweec5xxd7phy/TEST] -peggy_denom = factory/inj1m3c4lxq6gstpgd5f0ll7jln8fyweec5xxd7phy/TEST -decimals = 9 - -[factory/inj1m65rqkqvzmzeplzy3wl2mfrurku9hyxrpla2eq/position] -peggy_denom = factory/inj1m65rqkqvzmzeplzy3wl2mfrurku9hyxrpla2eq/position -decimals = 0 - -[factory/inj1m8hxczuf4gq8z5nvjw4nmcmnyfa5ch8kgkjuqp/position] -peggy_denom = factory/inj1m8hxczuf4gq8z5nvjw4nmcmnyfa5ch8kgkjuqp/position -decimals = 0 - -[factory/inj1m9myf06pt3kq3caeksz0ghvzr0xthhxqenu622/NLC] -peggy_denom = factory/inj1m9myf06pt3kq3caeksz0ghvzr0xthhxqenu622/NLC -decimals = 6 - -[factory/inj1m9myf06pt3kq3caeksz0ghvzr0xthhxqenu622/nlc] -peggy_denom = factory/inj1m9myf06pt3kq3caeksz0ghvzr0xthhxqenu622/nlc -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Stake-007] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Stake-007 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Talis-2] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Talis-2 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Talis-3] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Talis-3 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Talis-4] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Talis-4 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Vote-007] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Vote-007 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token10] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token10 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token2] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token2 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token3] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token3 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token4] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token4 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token5] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token5 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token6] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token6 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token7] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token7 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token8] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token8 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token9] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/stake-token9 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis-5] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis-5 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis-6] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis-6 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis-7] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis-7 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis-8] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/talis-8 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token10] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token10 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token2] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token2 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token3] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token3 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token4] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token4 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token5] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token5 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token6] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token6 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token7] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token7 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token8] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token8 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token9] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/vote-token9 -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xTalis-4] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xTalis-4 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xbanana] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xbanana -decimals = 18 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis-5] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis-5 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis-6] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis-6 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis-7] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis-7 -decimals = 6 - -[factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis-8] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/xtalis-8 -decimals = 6 - -[factory/inj1mea0kyuezl2ky54qtagsv7xlp0dxgqfs0cum8z/position] -peggy_denom = factory/inj1mea0kyuezl2ky54qtagsv7xlp0dxgqfs0cum8z/position -decimals = 0 - -[factory/inj1mecfy6gg944yt5mkwp34petqdd9dd37yu5yd5t/position] -peggy_denom = factory/inj1mecfy6gg944yt5mkwp34petqdd9dd37yu5yd5t/position -decimals = 0 - -[factory/inj1mf3x77h5ynafa57ga92rkp3hhwru5l63awf59v/tix] -peggy_denom = factory/inj1mf3x77h5ynafa57ga92rkp3hhwru5l63awf59v/tix -decimals = 6 - -[factory/inj1mfthw7jt2hzqq24exq66sregqwp8varmsdtyae/position] -peggy_denom = factory/inj1mfthw7jt2hzqq24exq66sregqwp8varmsdtyae/position -decimals = 0 - -[factory/inj1mg7www3nqcyaxaa82hf8vfx2jx39hj5qfkw3h3/position] -peggy_denom = factory/inj1mg7www3nqcyaxaa82hf8vfx2jx39hj5qfkw3h3/position -decimals = 0 - -[factory/inj1mhvjhmxs5fwnp3ladqehrsa8k8dhjfnaup9uhf/position] -peggy_denom = factory/inj1mhvjhmxs5fwnp3ladqehrsa8k8dhjfnaup9uhf/position -decimals = 0 - -[factory/inj1mlcqn2e3v6w0tum7ef5lkhqjjtnv5rzrzrh7rj/position] -peggy_denom = factory/inj1mlcqn2e3v6w0tum7ef5lkhqjjtnv5rzrzrh7rj/position -decimals = 0 - -[factory/inj1mldpx3uh7jx25cr7wd4c7g6gwda7wa7mfnq469/boobs] -peggy_denom = factory/inj1mldpx3uh7jx25cr7wd4c7g6gwda7wa7mfnq469/boobs -decimals = 0 - -[factory/inj1mly2ykhf6f9tdj58pvndjf4q8dzdl4myjqm9t6/ALIEN] -peggy_denom = factory/inj1mly2ykhf6f9tdj58pvndjf4q8dzdl4myjqm9t6/ALIEN -decimals = 6 - -[factory/inj1mq9zzzhdaza60pytwxkzd05grq963cgkkvpuez/position] -peggy_denom = factory/inj1mq9zzzhdaza60pytwxkzd05grq963cgkkvpuez/position -decimals = 0 - -[factory/inj1mt4qz5ytxeja23fn5ugpgqafut6lycj2jw58j2/injx] -peggy_denom = factory/inj1mt4qz5ytxeja23fn5ugpgqafut6lycj2jw58j2/injx -decimals = 18 - -[factory/inj1mu99lzv5z9cfm03xg3fryacxkgcsq6vh3x7ar7/position] -peggy_denom = factory/inj1mu99lzv5z9cfm03xg3fryacxkgcsq6vh3x7ar7/position -decimals = 0 - -[factory/inj1mwvx58l903kjlnjd0lmm3da7yw5tyl3jy85rfu/bINJ] -peggy_denom = factory/inj1mwvx58l903kjlnjd0lmm3da7yw5tyl3jy85rfu/bINJ -decimals = 0 - -[factory/inj1mwwj8qh2u4epa6v9t0fz5cwtt7a2vcnhwtarvu/123] -peggy_denom = factory/inj1mwwj8qh2u4epa6v9t0fz5cwtt7a2vcnhwtarvu/123 -decimals = 0 - -[factory/inj1mxe7fkhprdmyv5tjlhwwcceyq5hcaqky82u0q9/position] -peggy_denom = factory/inj1mxe7fkhprdmyv5tjlhwwcceyq5hcaqky82u0q9/position -decimals = 0 - -[factory/inj1myspe4s4x800spny2c8v3z7ft5uvw5r0dxpjul/position] -peggy_denom = factory/inj1myspe4s4x800spny2c8v3z7ft5uvw5r0dxpjul/position -decimals = 0 - -[factory/inj1mznfy9hfq2ltcqfdaht4hk2dj7mvrfkucq6w8v/test] -peggy_denom = factory/inj1mznfy9hfq2ltcqfdaht4hk2dj7mvrfkucq6w8v/test -decimals = 6 - -[factory/inj1n0zpsl7shvw2ccyex45qs769rkmksuy90fpwpu/position] -peggy_denom = factory/inj1n0zpsl7shvw2ccyex45qs769rkmksuy90fpwpu/position -decimals = 0 - -[factory/inj1n4jprtth7dyd4y99g08pehyue7yy0nkhs8lugm/position] -peggy_denom = factory/inj1n4jprtth7dyd4y99g08pehyue7yy0nkhs8lugm/position -decimals = 0 - -[factory/inj1n5jpp6v84yj7cft7qnake9r7tflycx7tj6ksj7/KEKW] -peggy_denom = factory/inj1n5jpp6v84yj7cft7qnake9r7tflycx7tj6ksj7/KEKW -decimals = 0 - -[factory/inj1n5jpp6v84yj7cft7qnake9r7tflycx7tj6ksj7/ak] -peggy_denom = factory/inj1n5jpp6v84yj7cft7qnake9r7tflycx7tj6ksj7/ak -decimals = 0 - -[factory/inj1n5jpp6v84yj7cft7qnake9r7tflycx7tj6ksj7/xxxaaxxx] -peggy_denom = factory/inj1n5jpp6v84yj7cft7qnake9r7tflycx7tj6ksj7/xxxaaxxx -decimals = 6 - -[factory/inj1n5lp946tqfygmc0ywwz6afs3jfrph0a07grsek/ak] -peggy_denom = factory/inj1n5lp946tqfygmc0ywwz6afs3jfrph0a07grsek/ak -decimals = 0 - -[factory/inj1n5lp946tqfygmc0ywwz6afs3jfrph0a07grsek/btc] -peggy_denom = factory/inj1n5lp946tqfygmc0ywwz6afs3jfrph0a07grsek/btc -decimals = 6 - -[factory/inj1n75yp8epalhnzgwdp4esaakte8ymhjyqlqmujt/1683106055InjUsdt7d120C] -peggy_denom = factory/inj1n75yp8epalhnzgwdp4esaakte8ymhjyqlqmujt/1683106055InjUsdt7d120C -decimals = 0 - -[factory/inj1n85jfpxee430qavn9edlkup9kny7aszarag8ed/MADARA] -peggy_denom = factory/inj1n85jfpxee430qavn9edlkup9kny7aszarag8ed/MADARA -decimals = 0 - -[factory/inj1n85jfpxee430qavn9edlkup9kny7aszarag8ed/MADRA] -peggy_denom = factory/inj1n85jfpxee430qavn9edlkup9kny7aszarag8ed/MADRA -decimals = 0 - -[factory/inj1n85jfpxee430qavn9edlkup9kny7aszarag8ed/MADRAA] -peggy_denom = factory/inj1n85jfpxee430qavn9edlkup9kny7aszarag8ed/MADRAA -decimals = 0 - -[factory/inj1n9753c33nxml0er69zmvz4cc8s4xzx7jt4v2ga/position] -peggy_denom = factory/inj1n9753c33nxml0er69zmvz4cc8s4xzx7jt4v2ga/position -decimals = 0 - -[factory/inj1nahz98w2aqu9wlra68umlk7qmqmyqe0s00e7p7/position] -peggy_denom = factory/inj1nahz98w2aqu9wlra68umlk7qmqmyqe0s00e7p7/position -decimals = 0 - -[factory/inj1naplth79ncag2f5ts9q0rwprt6mqh7us0htlqp/BTYC] -peggy_denom = factory/inj1naplth79ncag2f5ts9q0rwprt6mqh7us0htlqp/BTYC -decimals = 9 - -[factory/inj1naq6rga6q9d94ale8elwt3kt55d5fxafe6trk5/position] -peggy_denom = factory/inj1naq6rga6q9d94ale8elwt3kt55d5fxafe6trk5/position -decimals = 0 - -[factory/inj1nd89fx0tn7twr6l5zfzdjex2ufgldxj7u3srd8/position] -peggy_denom = factory/inj1nd89fx0tn7twr6l5zfzdjex2ufgldxj7u3srd8/position -decimals = 0 - -[factory/inj1ndxqvkk6xv224z8uegusqr2jupa70ffg06n24r/position] -peggy_denom = factory/inj1ndxqvkk6xv224z8uegusqr2jupa70ffg06n24r/position -decimals = 0 - -[factory/inj1nevh00xgty6275ljqz6rlh66wmwhnqus9702td/BTC] -peggy_denom = factory/inj1nevh00xgty6275ljqz6rlh66wmwhnqus9702td/BTC -decimals = 9 - -[factory/inj1nfhnq3awj43m7fr76a39x2mrc96l95wm39hfcm/position] -peggy_denom = factory/inj1nfhnq3awj43m7fr76a39x2mrc96l95wm39hfcm/position -decimals = 0 - -[factory/inj1nfxhcjda4mn929gwtnk40mj9lce5m9rsun73qk/position] -peggy_denom = factory/inj1nfxhcjda4mn929gwtnk40mj9lce5m9rsun73qk/position -decimals = 0 - -[factory/inj1ng33rlfhcqrte7q70yvugkmsmhzslu247yxjlv/position] -peggy_denom = factory/inj1ng33rlfhcqrte7q70yvugkmsmhzslu247yxjlv/position -decimals = 0 - -[factory/inj1ng7cp4u2e3dsvd58uraw6vkz8qkxrw8trd9qd3/position] -peggy_denom = factory/inj1ng7cp4u2e3dsvd58uraw6vkz8qkxrw8trd9qd3/position -decimals = 0 - -[factory/inj1nm95w69a42qgnkw0hf8krvdt4eucqnyp0rwfwc/position] -peggy_denom = factory/inj1nm95w69a42qgnkw0hf8krvdt4eucqnyp0rwfwc/position -decimals = 0 - -[factory/inj1nmk2djc8hlv5eyxaqlys9w0klgh042r7g5n0nq/position] -peggy_denom = factory/inj1nmk2djc8hlv5eyxaqlys9w0klgh042r7g5n0nq/position -decimals = 0 - -[factory/inj1nnpa506h2ev0tn4csd5mk957hvggjfj5crt20c/position] -peggy_denom = factory/inj1nnpa506h2ev0tn4csd5mk957hvggjfj5crt20c/position -decimals = 0 - -[factory/inj1npas8uzgdhqul5wddw7fg2ym6yz6h9desduxlg/position] -peggy_denom = factory/inj1npas8uzgdhqul5wddw7fg2ym6yz6h9desduxlg/position -decimals = 0 - -[factory/inj1npmexmukus8uznafm4cnf7kp4lm7jzskfxc9px/position] -peggy_denom = factory/inj1npmexmukus8uznafm4cnf7kp4lm7jzskfxc9px/position -decimals = 0 - -[factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/DGNZ] -peggy_denom = factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/DGNZ -decimals = 6 - -[factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/dgnz] -peggy_denom = factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/dgnz -decimals = 0 - -[factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/dgnzzz] -peggy_denom = factory/inj1nppq4gg9ne5yvp9dw7fl9cdwjvn69u9mnyuynz/dgnzzz -decimals = 0 - -[factory/inj1nprnh57tgavs4dgdvqetkfn0xmjn99dvgnmwlq/ak] -peggy_denom = factory/inj1nprnh57tgavs4dgdvqetkfn0xmjn99dvgnmwlq/ak -decimals = 0 - -[factory/inj1npsfelk7ul73wp77q3gqvxm94eyfzy3320t0j0/injshit] -peggy_denom = factory/inj1npsfelk7ul73wp77q3gqvxm94eyfzy3320t0j0/injshit -decimals = 0 - -[factory/inj1nqhkjfzm0mgv278d2ahxhy9wy4xy5fagnz7khp/BTC] -peggy_denom = factory/inj1nqhkjfzm0mgv278d2ahxhy9wy4xy5fagnz7khp/BTC -decimals = 9 - -[factory/inj1nqnmkah2rcyesy7l0kafhppwqmjh4egmeamx2k/position] -peggy_denom = factory/inj1nqnmkah2rcyesy7l0kafhppwqmjh4egmeamx2k/position -decimals = 0 - -[factory/inj1nr2gsxj4mfzd6qlwsay3y6kf5kfdh5h5x5xn7p/position] -peggy_denom = factory/inj1nr2gsxj4mfzd6qlwsay3y6kf5kfdh5h5x5xn7p/position -decimals = 0 - -[factory/inj1nscw9jx4pzg3sa7ynmrn0xf7vf3zpqt3usd7n6/position] -peggy_denom = factory/inj1nscw9jx4pzg3sa7ynmrn0xf7vf3zpqt3usd7n6/position -decimals = 0 - -[factory/inj1nshc8fmkku4q8f47z7fagdh0fxyexva9vnc5yn/position] -peggy_denom = factory/inj1nshc8fmkku4q8f47z7fagdh0fxyexva9vnc5yn/position -decimals = 0 - -[factory/inj1nwk46lyvhmdj5hr8ynwdvz0jaa4men9ce2gt58/TEST] -peggy_denom = factory/inj1nwk46lyvhmdj5hr8ynwdvz0jaa4men9ce2gt58/TEST -decimals = 6 - -[factory/inj1nwqrpzzxd2w266u28vhq5cmhf9y6u6zvlg4e6c/position] -peggy_denom = factory/inj1nwqrpzzxd2w266u28vhq5cmhf9y6u6zvlg4e6c/position -decimals = 0 - -[factory/inj1nydlk930aypjgh8k6rsrdj5lulzvf295r4sxpu/nUSD] -peggy_denom = factory/inj1nydlk930aypjgh8k6rsrdj5lulzvf295r4sxpu/nUSD -decimals = 0 - -[factory/inj1nzvf3w7h345qzz3scf7et5ad8r0a4gn4u0jtf4/position] -peggy_denom = factory/inj1nzvf3w7h345qzz3scf7et5ad8r0a4gn4u0jtf4/position -decimals = 0 - -[factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/CRE] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/CRE -decimals = 6 - -[factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST -decimals = 6 - -[factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST4] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST4 -decimals = 6 - -[factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST5] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/TST5 -decimals = 6 - -[factory/inj1p3j46g9p9ha2h5696kcq4z9l6e04ywnrskmyqa/position] -peggy_denom = factory/inj1p3j46g9p9ha2h5696kcq4z9l6e04ywnrskmyqa/position -decimals = 0 - -[factory/inj1p52h0yc5c9qz8hrdklc9pqwutfh9hr9dh4th5a/position] -peggy_denom = factory/inj1p52h0yc5c9qz8hrdklc9pqwutfh9hr9dh4th5a/position -decimals = 0 - -[factory/inj1p5d0k52d5p4tk9dlz67fn9329n820g55p0w7a4/test] -peggy_denom = factory/inj1p5d0k52d5p4tk9dlz67fn9329n820g55p0w7a4/test -decimals = 0 - -[factory/inj1p5w72hfax0ums3rnagtl6zr0e33pnyv20qut8a/position] -peggy_denom = factory/inj1p5w72hfax0ums3rnagtl6zr0e33pnyv20qut8a/position -decimals = 0 - -[factory/inj1p6g5aa4h0r7pae69y5rzs9ce60fn7ddsf4fynl/position] -peggy_denom = factory/inj1p6g5aa4h0r7pae69y5rzs9ce60fn7ddsf4fynl/position -decimals = 0 - -[factory/inj1p6qq59lapujkvyyfem4qe4xwkfqncxpwkr65yv/position] -peggy_denom = factory/inj1p6qq59lapujkvyyfem4qe4xwkfqncxpwkr65yv/position -decimals = 0 - -[factory/inj1pdckalz3dknkr7vqrrd40tg56gapya99u8t90t/position] -peggy_denom = factory/inj1pdckalz3dknkr7vqrrd40tg56gapya99u8t90t/position -decimals = 0 - -[factory/inj1pdutmxa3f7q4mtu42ynndx0p9lxfxvdf60swc9/position] -peggy_denom = factory/inj1pdutmxa3f7q4mtu42ynndx0p9lxfxvdf60swc9/position -decimals = 0 - -[factory/inj1pe4uuptfqzydz89eh27an4hrnd8eslwc2c6efe/position] -peggy_denom = factory/inj1pe4uuptfqzydz89eh27an4hrnd8eslwc2c6efe/position -decimals = 0 - -[factory/inj1ped5vf305cwv50z9y296jh8klglxt7ayj7p6dk/position] -peggy_denom = factory/inj1ped5vf305cwv50z9y296jh8klglxt7ayj7p6dk/position -decimals = 0 - -[factory/inj1pexvmkvp84hmh8zl0qzmhy2thh2zvr6m6z5ekw/BTC] -peggy_denom = factory/inj1pexvmkvp84hmh8zl0qzmhy2thh2zvr6m6z5ekw/BTC -decimals = 9 - -[factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/inj-test] -peggy_denom = factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/inj-test -decimals = 6 - -[factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/utest] -peggy_denom = factory/inj1pjp9q2ycs7eaav8d5ny5956k5m6t0alpl33xd6/utest -decimals = 0 - -[factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/inj-test1] -peggy_denom = factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/inj-test1 -decimals = 6 - -[factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/inj-test2] -peggy_denom = factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/inj-test2 -decimals = 6 - -[factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/inj-test2323432] -peggy_denom = factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/inj-test2323432 -decimals = 0 - -[factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/inj-test3] -peggy_denom = factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/inj-test3 -decimals = 6 - -[factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/test1] -peggy_denom = factory/inj1pk7jhvjj2lufcghmvr7gl49dzwkk3xj0uqkwfk/test1 -decimals = 0 - -[factory/inj1pk9rw4sz4sgmceu3pxjtd7dwvylgxmceff63qn/position] -peggy_denom = factory/inj1pk9rw4sz4sgmceu3pxjtd7dwvylgxmceff63qn/position -decimals = 0 - -[factory/inj1pku63t54ms3dl8agka5q60qlqgtztcghm3rjkm/hoa2] -peggy_denom = factory/inj1pku63t54ms3dl8agka5q60qlqgtztcghm3rjkm/hoa2 -decimals = 9 - -[factory/inj1pl4tr94sghdmel5wqq2c82rm6dv2dnrg9vahsp/duynt-1] -peggy_denom = factory/inj1pl4tr94sghdmel5wqq2c82rm6dv2dnrg9vahsp/duynt-1 -decimals = 9 - -[factory/inj1pl9pe5yatc45hzngpt2s7l5avkl5znun5p40wl/lp] -peggy_denom = factory/inj1pl9pe5yatc45hzngpt2s7l5avkl5znun5p40wl/lp -decimals = 0 - -[factory/inj1pmr64rmtj9tlnz3ueeagcm9ja4ej3emkpdkr6x/position] -peggy_denom = factory/inj1pmr64rmtj9tlnz3ueeagcm9ja4ej3emkpdkr6x/position -decimals = 0 - -[factory/inj1pn6cg7jt5nvmh2rpjxhg95nrcjz0rujv54wkdg/pussy] -peggy_denom = factory/inj1pn6cg7jt5nvmh2rpjxhg95nrcjz0rujv54wkdg/pussy -decimals = 0 - -[factory/inj1pn6cg7jt5nvmh2rpjxhg95nrcjz0rujv54wkdg/testtoken] -peggy_denom = factory/inj1pn6cg7jt5nvmh2rpjxhg95nrcjz0rujv54wkdg/testtoken -decimals = 0 - -[factory/inj1pnmmnc975hlv8svm38swcvhdxrv4scych0js4m/nept] -peggy_denom = factory/inj1pnmmnc975hlv8svm38swcvhdxrv4scych0js4m/nept -decimals = 6 - -[factory/inj1pnqp8rzsdd3vjhgqp2jwmt93u4g9p607chv3m4/SHARE] -peggy_denom = factory/inj1pnqp8rzsdd3vjhgqp2jwmt93u4g9p607chv3m4/SHARE -decimals = 0 - -[factory/inj1ppqx8xqhc7kexgwkpkll57lns49qxr96rhupps/kUSD] -peggy_denom = factory/inj1ppqx8xqhc7kexgwkpkll57lns49qxr96rhupps/kUSD -decimals = 0 - -[factory/inj1pqclmwep3m2x0e4asajm0t57cs9xwqnl4u7u7g/SS2] -peggy_denom = factory/inj1pqclmwep3m2x0e4asajm0t57cs9xwqnl4u7u7g/SS2 -decimals = 9 - -[factory/inj1prp8jk9fvxjzdgv8n2qlgrdfgxpq7t6k6rkmc7/PIGS-1] -peggy_denom = factory/inj1prp8jk9fvxjzdgv8n2qlgrdfgxpq7t6k6rkmc7/PIGS-1 -decimals = 0 - -[factory/inj1prp8jk9fvxjzdgv8n2qlgrdfgxpq7t6k6rkmc7/PIGS1] -peggy_denom = factory/inj1prp8jk9fvxjzdgv8n2qlgrdfgxpq7t6k6rkmc7/PIGS1 -decimals = 0 - -[factory/inj1psjmkh8edtywpelhgh6knwy6fsqdrm9fet4ht7/position] -peggy_denom = factory/inj1psjmkh8edtywpelhgh6knwy6fsqdrm9fet4ht7/position -decimals = 0 - -[factory/inj1put8lfpkwm47tqcl9fgh8grz987mezvrx4arls/DDLTest] -peggy_denom = factory/inj1put8lfpkwm47tqcl9fgh8grz987mezvrx4arls/DDLTest -decimals = 6 - -[factory/inj1puwsgl5qfv5z8z6ljfztcfc82euz063j655xlg/position] -peggy_denom = factory/inj1puwsgl5qfv5z8z6ljfztcfc82euz063j655xlg/position -decimals = 0 - -[factory/inj1pv08lylmeyumalmy6kejgrk8uu49w8t8lckwu6/duynt-1] -peggy_denom = factory/inj1pv08lylmeyumalmy6kejgrk8uu49w8t8lckwu6/duynt-1 -decimals = 0 - -[factory/inj1pvs8adl72tdcwn5rty4pfmqpjfkxs6atkvzfy4/position] -peggy_denom = factory/inj1pvs8adl72tdcwn5rty4pfmqpjfkxs6atkvzfy4/position -decimals = 0 - -[factory/inj1pwjch4d8snnt3xkakdhn5xuzpp6n2v5ye8wnth/utest] -peggy_denom = factory/inj1pwjch4d8snnt3xkakdhn5xuzpp6n2v5ye8wnth/utest -decimals = 0 - -[factory/inj1pwztvdkju9lcmw68t04n7vt7832s3w9clv59ws/lp] -peggy_denom = factory/inj1pwztvdkju9lcmw68t04n7vt7832s3w9clv59ws/lp -decimals = 0 - -[factory/inj1pxnj6sh6njq66d2rffnth032ct07qatmr6fer3/position] -peggy_denom = factory/inj1pxnj6sh6njq66d2rffnth032ct07qatmr6fer3/position -decimals = 0 - -[factory/inj1pzwl6turgp49akhkxjynj77z9pd6x7zf2zmazz/ak] -peggy_denom = factory/inj1pzwl6turgp49akhkxjynj77z9pd6x7zf2zmazz/ak -decimals = 6 - -[factory/inj1q2m26a7jdzjyfdn545vqsude3zwwtfrdap5jgz/TEST] -peggy_denom = factory/inj1q2m26a7jdzjyfdn545vqsude3zwwtfrdap5jgz/TEST -decimals = 6 - -[factory/inj1q3c3sar5uq02xus9j6a7vxrpdqwya4xfkdj0wv/position] -peggy_denom = factory/inj1q3c3sar5uq02xus9j6a7vxrpdqwya4xfkdj0wv/position -decimals = 0 - -[factory/inj1q4z7jjxdk7whwmkt39x7krc49xaqapuswhjhkn/COCK] -peggy_denom = factory/inj1q4z7jjxdk7whwmkt39x7krc49xaqapuswhjhkn/COCK -decimals = 0 - -[factory/inj1q68d59g49swmem50c9p4dzywc9claeymts3sns/auction.0] -peggy_denom = factory/inj1q68d59g49swmem50c9p4dzywc9claeymts3sns/auction.0 -decimals = 0 - -[factory/inj1q93mmsamngewa35nhfmutrqpnv6ta9v9hqp8l2/BTC] -peggy_denom = factory/inj1q93mmsamngewa35nhfmutrqpnv6ta9v9hqp8l2/BTC -decimals = 9 - -[factory/inj1qau4ax7mlyxam8f4xrz02tqydus4h8n5pt0zue/position] -peggy_denom = factory/inj1qau4ax7mlyxam8f4xrz02tqydus4h8n5pt0zue/position -decimals = 0 - -[factory/inj1qc5kqy83ksr0xtd08vjv9eyv3d72kcc93e740s/position] -peggy_denom = factory/inj1qc5kqy83ksr0xtd08vjv9eyv3d72kcc93e740s/position -decimals = 0 - -[factory/inj1qemlmtltmk7rhzk0wzwrhnp0ystlvx3mx046xs/position] -peggy_denom = factory/inj1qemlmtltmk7rhzk0wzwrhnp0ystlvx3mx046xs/position -decimals = 0 - -[factory/inj1qgs3yrd6h4dq4funlk5a5u4xxp7njt05uegkqx/test] -peggy_denom = factory/inj1qgs3yrd6h4dq4funlk5a5u4xxp7njt05uegkqx/test -decimals = 9 - -[factory/inj1qh6h56lfum2fxpvweukyx83m8q96s7lj03hxtg/position] -peggy_denom = factory/inj1qh6h56lfum2fxpvweukyx83m8q96s7lj03hxtg/position -decimals = 0 - -[factory/inj1qhw695hnxrg8nk8krat53jva7jctlxp576pq4x/position] -peggy_denom = factory/inj1qhw695hnxrg8nk8krat53jva7jctlxp576pq4x/position -decimals = 0 - -[factory/inj1qhx3w0663ta9tmu330vljhfs6r2qcfnklyqfe0/position] -peggy_denom = factory/inj1qhx3w0663ta9tmu330vljhfs6r2qcfnklyqfe0/position -decimals = 0 - -[factory/inj1qkfk75uastafdvnphj95drkkuqsf0ct42k3grf/Lenz] -peggy_denom = factory/inj1qkfk75uastafdvnphj95drkkuqsf0ct42k3grf/Lenz -decimals = 6 - -[factory/inj1qkfk75uastafdvnphj95drkkuqsf0ct42k3grf/LenzTestingTestnetFinal] -peggy_denom = factory/inj1qkfk75uastafdvnphj95drkkuqsf0ct42k3grf/LenzTestingTestnetFinal -decimals = 6 - -[factory/inj1qn2t30yflmrkmtxyc348jhmvnypsd2xk4lk74s/position] -peggy_denom = factory/inj1qn2t30yflmrkmtxyc348jhmvnypsd2xk4lk74s/position -decimals = 0 - -[factory/inj1qnymwcy78ty0ldvfcxk6ksfct9ndgpj0p06zak/position] -peggy_denom = factory/inj1qnymwcy78ty0ldvfcxk6ksfct9ndgpj0p06zak/position -decimals = 0 - -[factory/inj1qplngxl3zt3j6n0r3ryx6d8k58wu38t8amfpv3/position] -peggy_denom = factory/inj1qplngxl3zt3j6n0r3ryx6d8k58wu38t8amfpv3/position -decimals = 0 - -[factory/inj1qpr7c23qy3usjy3hem2wr2e9vuz39sau9032lr/position] -peggy_denom = factory/inj1qpr7c23qy3usjy3hem2wr2e9vuz39sau9032lr/position -decimals = 0 - -[factory/inj1quptgzfh2z6258sh3yckklyg7gys569rmp5s3e/kUSD] -peggy_denom = factory/inj1quptgzfh2z6258sh3yckklyg7gys569rmp5s3e/kUSD -decimals = 6 - -[factory/inj1qusz42g00le4gvqu6cej3qsf4n383dr4f2c4gj/position] -peggy_denom = factory/inj1qusz42g00le4gvqu6cej3qsf4n383dr4f2c4gj/position -decimals = 0 - -[factory/inj1qvacvmwepwqqh4asfemypqfng3zew8jjeqm7ay/HS2] -peggy_denom = factory/inj1qvacvmwepwqqh4asfemypqfng3zew8jjeqm7ay/HS2 -decimals = 9 - -[factory/inj1qx7qnj9wwdrxc9e239ycshqnqgapdh7s44vez7/AA] -peggy_denom = factory/inj1qx7qnj9wwdrxc9e239ycshqnqgapdh7s44vez7/AA -decimals = 0 - -[factory/inj1qx7qnj9wwdrxc9e239ycshqnqgapdh7s44vez7/ape] -peggy_denom = factory/inj1qx7qnj9wwdrxc9e239ycshqnqgapdh7s44vez7/ape -decimals = 6 - -[factory/inj1qxwtvk3ctdrctnmyen9v2wvcr026rpauc0q25g/position] -peggy_denom = factory/inj1qxwtvk3ctdrctnmyen9v2wvcr026rpauc0q25g/position -decimals = 0 - -[factory/inj1qy5wmnjahh8aek5cjmgkupcu9dxkksfelkllae/position] -peggy_denom = factory/inj1qy5wmnjahh8aek5cjmgkupcu9dxkksfelkllae/position -decimals = 0 - -[factory/inj1qyz0463rsew039f2lny2vzx0c0mhc6ru6jfarz/position] -peggy_denom = factory/inj1qyz0463rsew039f2lny2vzx0c0mhc6ru6jfarz/position -decimals = 0 - -[factory/inj1r2964d6pf76jpylnyc447jv67ddc4dflqrqk4m/position] -peggy_denom = factory/inj1r2964d6pf76jpylnyc447jv67ddc4dflqrqk4m/position -decimals = 0 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Life-Token] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Life-Token -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Lifeless-Token] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Lifeless-Token -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Liquifier] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Liquifier -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Liquify] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Liquify -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Savior-Token] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Savior-Token -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Tested-Token] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/Tested-Token -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/lifedd] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/lifedd -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/lord-stone-token] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/lord-stone-token -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/saramon] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/saramon -decimals = 6 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/test-token] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/test-token -decimals = 0 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/test-token2] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/test-token2 -decimals = 0 - -[factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/test-tokens] -peggy_denom = factory/inj1r2nhkxpuk8kna036rud4kqz2357dptqs2gcjll/test-tokens -decimals = 0 - -[factory/inj1r3qaemv4lnht42z8mynzfcfjrlyhlupx76le90/position] -peggy_denom = factory/inj1r3qaemv4lnht42z8mynzfcfjrlyhlupx76le90/position -decimals = 0 - -[factory/inj1r3u5yl5u5twct896xm2nhk8e8f2d3vvz28uuen/position] -peggy_denom = factory/inj1r3u5yl5u5twct896xm2nhk8e8f2d3vvz28uuen/position -decimals = 0 - -[factory/inj1r4fje8a30glg7fmr3uqnk4fl0sm67s6dpvgrg3/testToken] -peggy_denom = factory/inj1r4fje8a30glg7fmr3uqnk4fl0sm67s6dpvgrg3/testToken -decimals = 6 - -[factory/inj1r6mje70a37k8c5ata5g42pp87ncdxfv23vzzu7/position] -peggy_denom = factory/inj1r6mje70a37k8c5ata5g42pp87ncdxfv23vzzu7/position -decimals = 0 - -[factory/inj1r6tj96lrtn6jtyjq8xa39ny2j2spqajm43awu4/position] -peggy_denom = factory/inj1r6tj96lrtn6jtyjq8xa39ny2j2spqajm43awu4/position -decimals = 0 - -[factory/inj1r8dwjecdv7z9dk6kl4mgqtvt2e3g002z8ptvvm/position] -peggy_denom = factory/inj1r8dwjecdv7z9dk6kl4mgqtvt2e3g002z8ptvvm/position -decimals = 0 - -[factory/inj1r9qmt3gh265wgfrenr8n4myag39ln3mpczw6uw/BTC] -peggy_denom = factory/inj1r9qmt3gh265wgfrenr8n4myag39ln3mpczw6uw/BTC -decimals = 9 - -[factory/inj1raephyfwd5mxp6ps4dmsw8d7mup8efmf0tdj0r/inj1477ukmxx47mgsfe09qwd6gyp98ftecjytrqdrc] -peggy_denom = factory/inj1raephyfwd5mxp6ps4dmsw8d7mup8efmf0tdj0r/inj1477ukmxx47mgsfe09qwd6gyp98ftecjytrqdrc -decimals = 0 - -[factory/inj1raephyfwd5mxp6ps4dmsw8d7mup8efmf0tdj0r/inj1u67283zzclfr4pvxc9svwn7jurxm4aku46tjtt] -peggy_denom = factory/inj1raephyfwd5mxp6ps4dmsw8d7mup8efmf0tdj0r/inj1u67283zzclfr4pvxc9svwn7jurxm4aku46tjtt -decimals = 0 - -[factory/inj1rc38yz7hvvdygad44lfz0xe8ymf0mt539p6u8l/position] -peggy_denom = factory/inj1rc38yz7hvvdygad44lfz0xe8ymf0mt539p6u8l/position -decimals = 0 - -[factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/LIOR] -peggy_denom = factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/LIOR -decimals = 6 - -[factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/ak] -peggy_denom = factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/ak -decimals = 6 - -[factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/factory/bior] -peggy_denom = factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/factory/bior -decimals = 0 - -[factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/libor] -peggy_denom = factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/libor -decimals = 0 - -[factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/lior] -peggy_denom = factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/lior -decimals = 6 - -[factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/nain] -peggy_denom = factory/inj1rfdg206x7stm8rfl5crudn8v776k9q9njkqnzr/nain -decimals = 0 - -[factory/inj1rl8xukts6h729y2l3s29k5v95fur7nj6d5kerm/DREAM] -peggy_denom = factory/inj1rl8xukts6h729y2l3s29k5v95fur7nj6d5kerm/DREAM -decimals = 6 - -[factory/inj1rlg44s9tmzsecj7fnxzd5p7tzptrfwqt8cgewf/shuriken] -peggy_denom = factory/inj1rlg44s9tmzsecj7fnxzd5p7tzptrfwqt8cgewf/shuriken -decimals = 0 - -[factory/inj1rmfvy5j4fhqlfzlutz26hynhhpt7xyf8r3vsxu/position] -peggy_denom = factory/inj1rmfvy5j4fhqlfzlutz26hynhhpt7xyf8r3vsxu/position -decimals = 0 - -[factory/inj1rn4cagrvcgl49d7n60vnxpftnaqw7xtuxerh23/position] -peggy_denom = factory/inj1rn4cagrvcgl49d7n60vnxpftnaqw7xtuxerh23/position -decimals = 0 - -[factory/inj1rpl2j4dk6ewjgvddade2s9rryr4t293dhzrh5m/test] -peggy_denom = factory/inj1rpl2j4dk6ewjgvddade2s9rryr4t293dhzrh5m/test -decimals = 0 - -[factory/inj1rq4l2efkesetql824keqewk7h95ltua6xxu6fw/TTKC] -peggy_denom = factory/inj1rq4l2efkesetql824keqewk7h95ltua6xxu6fw/TTKC -decimals = 6 - -[factory/inj1rq4l2efkesetql824keqewk7h95ltua6xxu6fw/ak] -peggy_denom = factory/inj1rq4l2efkesetql824keqewk7h95ltua6xxu6fw/ak -decimals = 6 - -[factory/inj1rq4l2efkesetql824keqewk7h95ltua6xxu6fw/bINJ] -peggy_denom = factory/inj1rq4l2efkesetql824keqewk7h95ltua6xxu6fw/bINJ -decimals = 6 - -[factory/inj1rq4l2efkesetql824keqewk7h95ltua6xxu6fw/ninja] -peggy_denom = factory/inj1rq4l2efkesetql824keqewk7h95ltua6xxu6fw/ninja -decimals = 6 - -[factory/inj1rqj66y7r9j8g3nu7t5fgn53eqe9ukl69jv8uuv/HS3] -peggy_denom = factory/inj1rqj66y7r9j8g3nu7t5fgn53eqe9ukl69jv8uuv/HS3 -decimals = 9 - -[factory/inj1rqn67w2cm3uxxvnjxvsm9889zyrtxxpjl56g7p/nUSD] -peggy_denom = factory/inj1rqn67w2cm3uxxvnjxvsm9889zyrtxxpjl56g7p/nUSD -decimals = 18 - -[factory/inj1rr08xq9plxjyyj5thykpct95uv3sjz75270f0r/test] -peggy_denom = factory/inj1rr08xq9plxjyyj5thykpct95uv3sjz75270f0r/test -decimals = 0 - -[factory/inj1rr23r9ysrtg0jat8ljm5lfc9g0nz8y0ts27fhg/position] -peggy_denom = factory/inj1rr23r9ysrtg0jat8ljm5lfc9g0nz8y0ts27fhg/position -decimals = 0 - -[factory/inj1rrw6l34tzj8nwxrg2u6ra78jlcykrz763ltp9d/position] -peggy_denom = factory/inj1rrw6l34tzj8nwxrg2u6ra78jlcykrz763ltp9d/position -decimals = 0 - -[factory/inj1rsvh5w3pzs9ta8v484agjzyfsq4c42nlaetmnv/position] -peggy_denom = factory/inj1rsvh5w3pzs9ta8v484agjzyfsq4c42nlaetmnv/position -decimals = 0 - -[factory/inj1ruljx4vla6qq08ejml5syehqf40xh3q7365dee/position] -peggy_denom = factory/inj1ruljx4vla6qq08ejml5syehqf40xh3q7365dee/position -decimals = 0 - -[factory/inj1rw057xldmte58t9jqljn3gyzck07lyy7stmqnu/position] -peggy_denom = factory/inj1rw057xldmte58t9jqljn3gyzck07lyy7stmqnu/position -decimals = 0 - -[factory/inj1rw3qvamxgmvyexuz2uhyfa4hukvtvteznxjvke/test] -peggy_denom = factory/inj1rw3qvamxgmvyexuz2uhyfa4hukvtvteznxjvke/test -decimals = 0 - -[factory/inj1rw702wrwl33enyccs2h84cwwpahhmwmwa5em7x/test] -peggy_denom = factory/inj1rw702wrwl33enyccs2h84cwwpahhmwmwa5em7x/test -decimals = 0 - -[factory/inj1s04p0wztwl823lwcnkdstd3xp3n30a8hhel2jf/INJDOGE] -peggy_denom = factory/inj1s04p0wztwl823lwcnkdstd3xp3n30a8hhel2jf/INJDOGE -decimals = 0 - -[factory/inj1s04p0wztwl823lwcnkdstd3xp3n30a8hhel2jf/ak] -peggy_denom = factory/inj1s04p0wztwl823lwcnkdstd3xp3n30a8hhel2jf/ak -decimals = 0 - -[factory/inj1s0sl8egfgc29scvlj2x3v5cj73xhkm90237u97/position] -peggy_denom = factory/inj1s0sl8egfgc29scvlj2x3v5cj73xhkm90237u97/position -decimals = 0 - -[factory/inj1s4s8tmcfc43y0mfxm8cwhf3wehsxw6za8k3x4c/position] -peggy_denom = factory/inj1s4s8tmcfc43y0mfxm8cwhf3wehsxw6za8k3x4c/position -decimals = 0 - -[factory/inj1s5ravma5zhdsfx8ppzys9nv4grnpk6lr83hqau/HAI] -peggy_denom = factory/inj1s5ravma5zhdsfx8ppzys9nv4grnpk6lr83hqau/HAI -decimals = 0 - -[factory/inj1s68jy58pdf4l6kjfj3748x8yazh9chmdvs8wj0/test] -peggy_denom = factory/inj1s68jy58pdf4l6kjfj3748x8yazh9chmdvs8wj0/test -decimals = 0 - -[factory/inj1s6yq89jvdq3ps4h8wx8jk60c2r0jwczes4sgl6/position] -peggy_denom = factory/inj1s6yq89jvdq3ps4h8wx8jk60c2r0jwczes4sgl6/position -decimals = 0 - -[factory/inj1s8cp9up483f30cxpd7saxp935evy70fd4jddzg/iUSD] -peggy_denom = factory/inj1s8cp9up483f30cxpd7saxp935evy70fd4jddzg/iUSD -decimals = 18 - -[factory/inj1s8knaspkz9s5cphxxx62j5saxr923mqy4vsycz/position] -peggy_denom = factory/inj1s8knaspkz9s5cphxxx62j5saxr923mqy4vsycz/position -decimals = 0 - -[factory/inj1s92j8qw73qhhuhlecj3ekux8ck60wj93ry5haw/position] -peggy_denom = factory/inj1s92j8qw73qhhuhlecj3ekux8ck60wj93ry5haw/position -decimals = 0 - -[factory/inj1s99jggs9nu3tkqcltfhs4j6rtg4ltgzdvgxaf3/Test] -peggy_denom = factory/inj1s99jggs9nu3tkqcltfhs4j6rtg4ltgzdvgxaf3/Test -decimals = 9 - -[factory/inj1s9dzsqrrq09z46ye7ffa9fldg3dt0e2cvx6yla/auction.0] -peggy_denom = factory/inj1s9dzsqrrq09z46ye7ffa9fldg3dt0e2cvx6yla/auction.0 -decimals = 0 - -[factory/inj1sa2wmd8zhf893ex6da8jgnp06pcj2tv59mq457/position] -peggy_denom = factory/inj1sa2wmd8zhf893ex6da8jgnp06pcj2tv59mq457/position -decimals = 0 - -[factory/inj1sa5g8q4egwzy09942675r0az9tftac9tnrz2kr/JCLUB] -peggy_denom = factory/inj1sa5g8q4egwzy09942675r0az9tftac9tnrz2kr/JCLUB -decimals = 6 - -[factory/inj1sclqgctp0hxenfgvh59y8reppg5gssjw8p078u/position] -peggy_denom = factory/inj1sclqgctp0hxenfgvh59y8reppg5gssjw8p078u/position -decimals = 0 - -[factory/inj1sdpk4n3zw4n70uxg83ep3sj5x2ynh608lqxcw0/ak] -peggy_denom = factory/inj1sdpk4n3zw4n70uxg83ep3sj5x2ynh608lqxcw0/ak -decimals = 6 - -[factory/inj1sf0dsdnsvtf06fdwsy800ysne2cemlkfwe3duq/position] -peggy_denom = factory/inj1sf0dsdnsvtf06fdwsy800ysne2cemlkfwe3duq/position -decimals = 0 - -[factory/inj1sf4jk2ku0syp7x6lns8dau73sc2grtqpf3try5/ak] -peggy_denom = factory/inj1sf4jk2ku0syp7x6lns8dau73sc2grtqpf3try5/ak -decimals = 0 - -[factory/inj1sf4jk2ku0syp7x6lns8dau73sc2grtqpf3try5/test123] -peggy_denom = factory/inj1sf4jk2ku0syp7x6lns8dau73sc2grtqpf3try5/test123 -decimals = 6 - -[factory/inj1sg3yjgjlwhtrepeuusj4jwv209rh6cmk882cw3/lior] -peggy_denom = factory/inj1sg3yjgjlwhtrepeuusj4jwv209rh6cmk882cw3/lior -decimals = 6 - -[factory/inj1sg9htcd8tqgxlnsl9qe2mm5y4l9zq0mq6qhph9/position] -peggy_denom = factory/inj1sg9htcd8tqgxlnsl9qe2mm5y4l9zq0mq6qhph9/position -decimals = 0 - -[factory/inj1sgh3equhfwqpscgcxksnz69r67qu4yfcvlreyj/position] -peggy_denom = factory/inj1sgh3equhfwqpscgcxksnz69r67qu4yfcvlreyj/position -decimals = 0 - -[factory/inj1sh5n5v86gmugkq8za8gh2flfsurymmha4fvw2x/at-token] -peggy_denom = factory/inj1sh5n5v86gmugkq8za8gh2flfsurymmha4fvw2x/at-token -decimals = 0 - -[factory/inj1sj9xzvxq2fmfwmaffueymlmrdmgcsfzexlnxzl/bINJ] -peggy_denom = factory/inj1sj9xzvxq2fmfwmaffueymlmrdmgcsfzexlnxzl/bINJ -decimals = 0 - -[factory/inj1sjgzywux3snnkz74r5sul04vk44zfrfdq6yx9g/iUSD] -peggy_denom = factory/inj1sjgzywux3snnkz74r5sul04vk44zfrfdq6yx9g/iUSD -decimals = 18 - -[factory/inj1skkzrk8x56lz2t0908tsgywyq9u63l7633z47d/position] -peggy_denom = factory/inj1skkzrk8x56lz2t0908tsgywyq9u63l7633z47d/position -decimals = 0 - -[factory/inj1skpv9emvexywcg42mne4lugd6xjwglzsqxu888/position] -peggy_denom = factory/inj1skpv9emvexywcg42mne4lugd6xjwglzsqxu888/position -decimals = 0 - -[factory/inj1sm0ccywqn6nmzjgrptlauzpzrjz42rt9uq2vlr/position] -peggy_denom = factory/inj1sm0ccywqn6nmzjgrptlauzpzrjz42rt9uq2vlr/position -decimals = 0 - -[factory/inj1sm8mpx3e4p2z4ryzhp6t2gdzwrzdwxnf447dnx/position] -peggy_denom = factory/inj1sm8mpx3e4p2z4ryzhp6t2gdzwrzdwxnf447dnx/position -decimals = 0 - -[factory/inj1sn34edy635nv4yhts3khgpy5qxw8uey6wvzq53/TEST] -peggy_denom = factory/inj1sn34edy635nv4yhts3khgpy5qxw8uey6wvzq53/TEST -decimals = 6 - -[factory/inj1sq839juq97296mumt84hzfjpc2nf7h2u774g59/CAT] -peggy_denom = factory/inj1sq839juq97296mumt84hzfjpc2nf7h2u774g59/CAT -decimals = 6 - -[factory/inj1sq839juq97296mumt84hzfjpc2nf7h2u774g59/Vader] -peggy_denom = factory/inj1sq839juq97296mumt84hzfjpc2nf7h2u774g59/Vader -decimals = 0 - -[factory/inj1sr2xzh29g9uf5qdsd4ksdr62z2dfhu2nz4a9gp/auction.0] -peggy_denom = factory/inj1sr2xzh29g9uf5qdsd4ksdr62z2dfhu2nz4a9gp/auction.0 -decimals = 0 - -[factory/inj1sr4jakhjmur7hc3j9n3tv72uu9dwv9756sgpwq/position] -peggy_denom = factory/inj1sr4jakhjmur7hc3j9n3tv72uu9dwv9756sgpwq/position -decimals = 0 - -[factory/inj1ss277vzv95cllcl5q4wy4jrmpxk093xgltmphw/position] -peggy_denom = factory/inj1ss277vzv95cllcl5q4wy4jrmpxk093xgltmphw/position -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706894751.711989485AtomUsdt2d0.93P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706894751.711989485AtomUsdt2d0.93P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706894751.711989485InjUsdt2d1.08C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706894751.711989485InjUsdt2d1.08C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706965216.786331230AtomUsdt2d0.93P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706965216.786331230AtomUsdt2d0.93P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706965216.786331230InjUsdt2d1.08C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706965216.786331230InjUsdt2d1.08C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706969190.664112751InjUsdt2d1.08C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706969190.664112751InjUsdt2d1.08C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706969205.325387195InjUsdt2d1.08C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706969205.325387195InjUsdt2d1.08C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706969261.401032761InjUsdt2d1.08C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706969261.401032761InjUsdt2d1.08C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706969341.520964599AtomUsdt2d0.93P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1706969341.520964599AtomUsdt2d0.93P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1707054927.433248405AtomUsdt2d0.93P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1707054927.433248405AtomUsdt2d0.93P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1707054927.433248405InjUsdt2d1.08C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1707054927.433248405InjUsdt2d1.08C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1708611446.026416584InjUsdt2d1.08C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1708611446.026416584InjUsdt2d1.08C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1709902288.058267150InjUsdt24d1.17C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1709902288.058267150InjUsdt24d1.17C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1711621611InjUsdt1d1.06C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1711621611InjUsdt1d1.06C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712154662InjUsdt1d1.06C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712154662InjUsdt1d1.06C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712738450InjUsdt28d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712738450InjUsdt28d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712738484InjUsdt28d0.85P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712738484InjUsdt28d0.85P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712738818InjUsdt28d0.85P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712738818InjUsdt28d0.85P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712739110InjUsdt28d0.86P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1712739110InjUsdt28d0.86P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1713965158InjUsdt28d0.86P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1713965158InjUsdt28d0.86P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1713966058InjUsdt28d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1713966058InjUsdt28d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1713966386InjUsdt28d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1713966386InjUsdt28d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715066545InjUsdt24d1.17C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715066545InjUsdt24d1.17C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715066761InjUsdt16d0.89P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715066761InjUsdt16d0.89P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715097040InjUsdt2d0.95P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715097040InjUsdt2d0.95P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715097040InjUsdt2d1.1C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715097040InjUsdt2d1.1C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715266529InjUsdt2d0.95P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715266529InjUsdt2d0.95P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715266529InjUsdt2d1.1C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1715266529InjUsdt2d1.1C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1717647176InjUsdt2d1.1C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1717647176InjUsdt2d1.1C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1717749427InjUsdt2d0.95P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1717749427InjUsdt2d0.95P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1717749631InjUsdt2d0.95P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1717749631InjUsdt2d0.95P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1718699872InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1718699872InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1718764795InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1718764795InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1718766318InjUsdt24d1.19C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1718766318InjUsdt24d1.19C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1718779878InjUsdt26d1.19C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1718779878InjUsdt26d1.19C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719297355InjUsdt26d1.19C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719297355InjUsdt26d1.19C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719306854InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719306854InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719393332InjUsdt2d0.95P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719393332InjUsdt2d0.95P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719918905InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719918905InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719921133InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1719921133InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1720000120InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1720000120InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1720513336InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1720513336InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1720513965InjUsdt2d0.95P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1720513965InjUsdt2d0.95P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1721199238InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1721199238InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1721736957InjUsdt26d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1721736957InjUsdt26d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1721737329InjUsdt28d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1721737329InjUsdt28d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1722499668InjUsdt28d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1722499668InjUsdt28d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1722499668InjUsdt2d0.95P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1722499668InjUsdt2d0.95P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1723726250InjUsdt28d0.86P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1723726250InjUsdt28d0.86P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1723726250InjUsdt28d1.2C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1723726250InjUsdt28d1.2C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725277445InjUsdt26d18C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725277445InjUsdt26d18C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725277891InjUsdt28d0.86P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725277891InjUsdt28d0.86P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725283106InjUsdt26d18C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725283106InjUsdt26d18C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725289898InjUsdt26d18C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725289898InjUsdt26d18C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725290652InjUsdt26d15P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725290652InjUsdt26d15P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725292353InjUsdt26d15P] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725292353InjUsdt26d15P -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725292353InjUsdt26d18C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725292353InjUsdt26d18C -decimals = 0 - -[factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725353054InjUsdt26d18C] -peggy_denom = factory/inj1ss7rm7yde55dyddg7532dmdjy3gzvrjthxmqtd/1725353054InjUsdt26d18C -decimals = 0 - -[factory/inj1ssgejyek2pzgsvy2u4y838qj3jnh7m4ujg8zsl/symbol2] -peggy_denom = factory/inj1ssgejyek2pzgsvy2u4y838qj3jnh7m4ujg8zsl/symbol2 -decimals = 0 - -[factory/inj1ssysf4uhqa4nndser07cvgfzlqtvsg3l0y8vvn/position] -peggy_denom = factory/inj1ssysf4uhqa4nndser07cvgfzlqtvsg3l0y8vvn/position -decimals = 0 - -[factory/inj1st6pj5nvz429dkmz3t0papc3273j5xnzjan8sm/position] -peggy_denom = factory/inj1st6pj5nvz429dkmz3t0papc3273j5xnzjan8sm/position -decimals = 0 - -[factory/inj1svtmsxdu47vc0kd0eppxnq9khky324wjfxa0yg/position] -peggy_denom = factory/inj1svtmsxdu47vc0kd0eppxnq9khky324wjfxa0yg/position -decimals = 0 - -[factory/inj1t3kcptjlvg8vjpedkr2y7pe0cwlkkjmtn8p5w7/position] -peggy_denom = factory/inj1t3kcptjlvg8vjpedkr2y7pe0cwlkkjmtn8p5w7/position -decimals = 0 - -[factory/inj1t3p0szvrgxax3zf7c02w673axrut9mu5vw342u/position] -peggy_denom = factory/inj1t3p0szvrgxax3zf7c02w673axrut9mu5vw342u/position -decimals = 0 - -[factory/inj1t6jgdm6ullrxazu2g6hl7493qcacefyver6ltq/position] -peggy_denom = factory/inj1t6jgdm6ullrxazu2g6hl7493qcacefyver6ltq/position -decimals = 0 - -[factory/inj1t6ur7kmu7vu2k6lja2ng9ayrqfdmsqzks7se0q/position] -peggy_denom = factory/inj1t6ur7kmu7vu2k6lja2ng9ayrqfdmsqzks7se0q/position -decimals = 0 - -[factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1c0rh80uc9v4frwh00zvmkr2qx0599z78lm7jxj] -peggy_denom = factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1c0rh80uc9v4frwh00zvmkr2qx0599z78lm7jxj -decimals = 0 - -[factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1hl2qkjhs5t8xqa7yetjghr4x3yxnlja7wemzy8] -peggy_denom = factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1hl2qkjhs5t8xqa7yetjghr4x3yxnlja7wemzy8 -decimals = 0 - -[factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1nzpletdxtcznj0xlu75y0dtly8acvm253kaj07] -peggy_denom = factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1nzpletdxtcznj0xlu75y0dtly8acvm253kaj07 -decimals = 0 - -[factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1r6zj9v8c4hyj64uzdhe844ncwd0vspy0lhrke4] -peggy_denom = factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1r6zj9v8c4hyj64uzdhe844ncwd0vspy0lhrke4 -decimals = 0 - -[factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1yne8ww7fahfjvadqkasld3vkj597gsysk06dym] -peggy_denom = factory/inj1t6z53mnu7wulpp3n886k3laqk4za9xyr4e8azx/lpinj1yne8ww7fahfjvadqkasld3vkj597gsysk06dym -decimals = 0 - -[factory/inj1t70s0zcf7twcm7qm0lv7f7u5j3yd7v4mttxnvn/position] -peggy_denom = factory/inj1t70s0zcf7twcm7qm0lv7f7u5j3yd7v4mttxnvn/position -decimals = 0 - -[factory/inj1t80nlw8w36am2575rfd5z2yn4m46v2gsch9aj5/position] -peggy_denom = factory/inj1t80nlw8w36am2575rfd5z2yn4m46v2gsch9aj5/position -decimals = 0 - -[factory/inj1t88furrvvv32qj82wwtz86s03rzxqlj0f59eev/TEST] -peggy_denom = factory/inj1t88furrvvv32qj82wwtz86s03rzxqlj0f59eev/TEST -decimals = 6 - -[factory/inj1t88furrvvv32qj82wwtz86s03rzxqlj0f59eev/TEST2] -peggy_denom = factory/inj1t88furrvvv32qj82wwtz86s03rzxqlj0f59eev/TEST2 -decimals = 6 - -[factory/inj1t9cx33dk3tywjct6f6lq8d3j5yg7cg5jtarmkz/position] -peggy_denom = factory/inj1t9cx33dk3tywjct6f6lq8d3j5yg7cg5jtarmkz/position -decimals = 0 - -[factory/inj1ta3276waes6jnnu3fk8gw4dt86ujtrptrl4902/HS1] -peggy_denom = factory/inj1ta3276waes6jnnu3fk8gw4dt86ujtrptrl4902/HS1 -decimals = 9 - -[factory/inj1ta3rgat7k3s9jehqfr3lv4dpwsytrqejdstv5m/position] -peggy_denom = factory/inj1ta3rgat7k3s9jehqfr3lv4dpwsytrqejdstv5m/position -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj12yhwzv3wvh0lgwft5n5x4q382d7q4fj2am62y6] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj12yhwzv3wvh0lgwft5n5x4q382d7q4fj2am62y6 -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj13g2ry3dwj49jd3hdyq2xvyd4eghtkr5dnejhff] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj13g2ry3dwj49jd3hdyq2xvyd4eghtkr5dnejhff -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj14dz74tz06lxz2pl4e5vcv3v62lst8d43rp6hy4] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj14dz74tz06lxz2pl4e5vcv3v62lst8d43rp6hy4 -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj176anlxqyz6289gf0dg0xvd3qja7ahs3cnsda63] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj176anlxqyz6289gf0dg0xvd3qja7ahs3cnsda63 -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj17kjkepym5j8xss5nmud6gq4c47xt0xf02wgsms] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj17kjkepym5j8xss5nmud6gq4c47xt0xf02wgsms -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1dycczj4m8gwdj4m2fv7xm396u8tq9lp9w363zj] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1dycczj4m8gwdj4m2fv7xm396u8tq9lp9w363zj -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1fde04yn4n8skenekdth633922qajlk8yk730re] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1fde04yn4n8skenekdth633922qajlk8yk730re -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1fujkefqpzz8crmm655q2x24y7gp7p9ppnph495] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1fujkefqpzz8crmm655q2x24y7gp7p9ppnph495 -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1gruytagt6wcqarncm5ske8y3zevgqv8u6mkgyx] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1gruytagt6wcqarncm5ske8y3zevgqv8u6mkgyx -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1jmqvf9eypak3hh85gfpcpm7d8jjzd7jnnhr0xw] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1jmqvf9eypak3hh85gfpcpm7d8jjzd7jnnhr0xw -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1kxdfjs4tnu88aaqhvl9caja9qq9fs4r5qmpwqj] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1kxdfjs4tnu88aaqhvl9caja9qq9fs4r5qmpwqj -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1l9cu77ay8wlyh7mxlgh0dpazw70w4f3y26g5v5] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1l9cu77ay8wlyh7mxlgh0dpazw70w4f3y26g5v5 -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1lz280526tw8r06jtpxkzxajqmfsjkt57963kfr] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1lz280526tw8r06jtpxkzxajqmfsjkt57963kfr -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1q37rs9cmgqz5vnvwmr5v2a4sdzez0xfs2lvl63] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1q37rs9cmgqz5vnvwmr5v2a4sdzez0xfs2lvl63 -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1qaq7mkvuc474k2nyjm2suwyes06fdm4kt26ks4] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1qaq7mkvuc474k2nyjm2suwyes06fdm4kt26ks4 -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1tzkdzjq28sjp2rn6053rg9526w8sc2tm8jh0u4] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1tzkdzjq28sjp2rn6053rg9526w8sc2tm8jh0u4 -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1uavssa4h4s73h5fdqlheytyl6c8mvl89yfuuq9] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1uavssa4h4s73h5fdqlheytyl6c8mvl89yfuuq9 -decimals = 0 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1urvjvfzgmrvj79tk97t22whkwdfg7qng32rjjz] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1urvjvfzgmrvj79tk97t22whkwdfg7qng32rjjz -decimals = 18 - -[factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1xwk6glum68vdqdnx5gs0mkp909vdhx6uwhfr4y] -peggy_denom = factory/inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy/lpinj1xwk6glum68vdqdnx5gs0mkp909vdhx6uwhfr4y -decimals = 18 - -[factory/inj1td2vzcjnhwmzfd9ky9mxtwmnfrv0a3keytv2y3/position] -peggy_denom = factory/inj1td2vzcjnhwmzfd9ky9mxtwmnfrv0a3keytv2y3/position -decimals = 0 - -[factory/inj1tf8twtqwfew5hu985tt9qgjhym0ejqahg46xdy/symbol1] -peggy_denom = factory/inj1tf8twtqwfew5hu985tt9qgjhym0ejqahg46xdy/symbol1 -decimals = 0 - -[factory/inj1tg5f2vykdt4sweqgsm3q8lva30wry955hwdvju/position] -peggy_denom = factory/inj1tg5f2vykdt4sweqgsm3q8lva30wry955hwdvju/position -decimals = 0 - -[factory/inj1tgjzqr4kcfnzx5anw5wqf8mucjl8ehlxe9657e/test] -peggy_denom = factory/inj1tgjzqr4kcfnzx5anw5wqf8mucjl8ehlxe9657e/test -decimals = 9 - -[factory/inj1tgn4tyjf0y20mxpydwv3454l3ze0uwdl3cgpaf/position] -peggy_denom = factory/inj1tgn4tyjf0y20mxpydwv3454l3ze0uwdl3cgpaf/position -decimals = 0 - -[factory/inj1tgphgjqsz8fupkfjx6cy275e3s0l8xfu6rd6jh/lior] -peggy_denom = factory/inj1tgphgjqsz8fupkfjx6cy275e3s0l8xfu6rd6jh/lior -decimals = 6 - -[factory/inj1tk4ml8fce5ghx7y2gtnqhw57e9m59ep27497xv/uLP] -peggy_denom = factory/inj1tk4ml8fce5ghx7y2gtnqhw57e9m59ep27497xv/uLP -decimals = 0 - -[factory/inj1tlfznhm0t6m456nlqzcdhcm54048dp00n4rznd/lpinj1kjpg9p0h6g5zuwdzhgn7atleqeuqnysxs9xvtv] -peggy_denom = factory/inj1tlfznhm0t6m456nlqzcdhcm54048dp00n4rznd/lpinj1kjpg9p0h6g5zuwdzhgn7atleqeuqnysxs9xvtv -decimals = 0 - -[factory/inj1tlfznhm0t6m456nlqzcdhcm54048dp00n4rznd/lpinj1qscnau8y47upvhc7rs5c2kkpkrpqc0a0crp6av] -peggy_denom = factory/inj1tlfznhm0t6m456nlqzcdhcm54048dp00n4rznd/lpinj1qscnau8y47upvhc7rs5c2kkpkrpqc0a0crp6av -decimals = 0 - -[factory/inj1tlrwn7cm5hgpttyjkrw94qvwapeck2f7u855hn/position] -peggy_denom = factory/inj1tlrwn7cm5hgpttyjkrw94qvwapeck2f7u855hn/position -decimals = 0 - -[factory/inj1tlxsr4ezttv242jh3tdt675s2kemvcqx9yn4m3/position] -peggy_denom = factory/inj1tlxsr4ezttv242jh3tdt675s2kemvcqx9yn4m3/position -decimals = 0 - -[factory/inj1tmag9j5qnresq97efzkxer9evvyhuzaqjlmxvj/duynt-1] -peggy_denom = factory/inj1tmag9j5qnresq97efzkxer9evvyhuzaqjlmxvj/duynt-1 -decimals = 0 - -[factory/inj1tnplj57r9he4z0v4596zvqxysj4hyr8l4vndhj/inj-test] -peggy_denom = factory/inj1tnplj57r9he4z0v4596zvqxysj4hyr8l4vndhj/inj-test -decimals = 0 - -[factory/inj1tnplj57r9he4z0v4596zvqxysj4hyr8l4vndhj/inj-test2] -peggy_denom = factory/inj1tnplj57r9he4z0v4596zvqxysj4hyr8l4vndhj/inj-test2 -decimals = 0 - -[factory/inj1tnplj57r9he4z0v4596zvqxysj4hyr8l4vndhj/inj-test3] -peggy_denom = factory/inj1tnplj57r9he4z0v4596zvqxysj4hyr8l4vndhj/inj-test3 -decimals = 0 - -[factory/inj1tnplj57r9he4z0v4596zvqxysj4hyr8l4vndhj/your-token-subdenom] -peggy_denom = factory/inj1tnplj57r9he4z0v4596zvqxysj4hyr8l4vndhj/your-token-subdenom -decimals = 0 - -[factory/inj1tnwe94x7n52vs70rsawvcs0fnktqp2h38vje26/BOND] -peggy_denom = factory/inj1tnwe94x7n52vs70rsawvcs0fnktqp2h38vje26/BOND -decimals = 0 - -[factory/inj1tp9vhnurjqj54lrrt5eqr8gdf8zq77llpkfp5e/Ann] -peggy_denom = factory/inj1tp9vhnurjqj54lrrt5eqr8gdf8zq77llpkfp5e/Ann -decimals = 9 - -[factory/inj1tq80yx8jmw48wjzpaajqpyd7pe849vsz20qwsk/position] -peggy_denom = factory/inj1tq80yx8jmw48wjzpaajqpyd7pe849vsz20qwsk/position -decimals = 0 - -[factory/inj1tqw2laydve0l92fvkel5l6cdjgzm8ek5k6w7yq/position] -peggy_denom = factory/inj1tqw2laydve0l92fvkel5l6cdjgzm8ek5k6w7yq/position -decimals = 0 - -[factory/inj1trs377m67pndeu0sxptzuptcrzua5k4jya9rc3/position] -peggy_denom = factory/inj1trs377m67pndeu0sxptzuptcrzua5k4jya9rc3/position -decimals = 0 - -[factory/inj1trsaswl5c0xuuc8gpukkmze5qfmspv5nc9cpzd/byc] -peggy_denom = factory/inj1trsaswl5c0xuuc8gpukkmze5qfmspv5nc9cpzd/byc -decimals = 0 - -[factory/inj1tsqkcae8d6azqn6587d0e28prw682954y22ejs/position] -peggy_denom = factory/inj1tsqkcae8d6azqn6587d0e28prw682954y22ejs/position -decimals = 0 - -[factory/inj1ttl0waagrdapm4pdlzmlww2kftad4vkknsze9w/position] -peggy_denom = factory/inj1ttl0waagrdapm4pdlzmlww2kftad4vkknsze9w/position -decimals = 0 - -[factory/inj1tvgmd4hmxt4synazauj02v044dwenmucljzm3h/kin] -peggy_denom = factory/inj1tvgmd4hmxt4synazauj02v044dwenmucljzm3h/kin -decimals = 0 - -[factory/inj1tvml37kkfymrwmx583ed9eyur3jjq72ftf67rc/inj-test] -peggy_denom = factory/inj1tvml37kkfymrwmx583ed9eyur3jjq72ftf67rc/inj-test -decimals = 0 - -[factory/inj1tvzvzmhp5wnryf6dph2w5alkweqy4jj4w9fxwc/position] -peggy_denom = factory/inj1tvzvzmhp5wnryf6dph2w5alkweqy4jj4w9fxwc/position -decimals = 0 - -[factory/inj1twteeyr3xuvckejmu9z4728qdasavaq0z32gkd/position] -peggy_denom = factory/inj1twteeyr3xuvckejmu9z4728qdasavaq0z32gkd/position -decimals = 0 - -[factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/TheJanitor] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/TheJanitor -decimals = 0 - -[factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/mtsc] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/mtsc -decimals = 0 - -[factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/rfl] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/rfl -decimals = 0 - -[factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/rflf] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/rflf -decimals = 0 - -[factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/tst] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/tst -decimals = 0 - -[factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/tstt] -peggy_denom = factory/inj1tx74j0uslp4pr5neyxxxgajh6gx5s9lnahpp5r/tstt -decimals = 0 - -[factory/inj1tx7alx5j6xl3zr03ywjqvuvjrf0kwwtlq8rqk0/btc] -peggy_denom = factory/inj1tx7alx5j6xl3zr03ywjqvuvjrf0kwwtlq8rqk0/btc -decimals = 0 - -[factory/inj1txpchnswwz7qnwgx4ew5enwalwkxl0wm7fwjfp/position] -peggy_denom = factory/inj1txpchnswwz7qnwgx4ew5enwalwkxl0wm7fwjfp/position -decimals = 0 - -[factory/inj1txza6wm8eykq7v6d97kywxz9r0xe9r8tleq9al/inj1ylxjl6qvr3efug3950rn9z2atdp02fyejlpsgx] -peggy_denom = factory/inj1txza6wm8eykq7v6d97kywxz9r0xe9r8tleq9al/inj1ylxjl6qvr3efug3950rn9z2atdp02fyejlpsgx -decimals = 0 - -[factory/inj1txza6wm8eykq7v6d97kywxz9r0xe9r8tleq9al/inj1yzv093zw480v5q3vmy275xyvp4x9q98k029ezd] -peggy_denom = factory/inj1txza6wm8eykq7v6d97kywxz9r0xe9r8tleq9al/inj1yzv093zw480v5q3vmy275xyvp4x9q98k029ezd -decimals = 0 - -[factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/KIWI] -peggy_denom = factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/KIWI -decimals = 6 - -[factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST] -peggy_denom = factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST -decimals = 6 - -[factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST2] -peggy_denom = factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST2 -decimals = 6 - -[factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST3] -peggy_denom = factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST3 -decimals = 6 - -[factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST4] -peggy_denom = factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST4 -decimals = 6 - -[factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST5] -peggy_denom = factory/inj1u0lamqk0qggn5cxqn53t79jsthcpen9w754ayc/TEST5 -decimals = 18 - -[factory/inj1u0yfajq9e5huyylh4tllxvswdsgp3d2eum7za5/position] -peggy_denom = factory/inj1u0yfajq9e5huyylh4tllxvswdsgp3d2eum7za5/position -decimals = 0 - -[factory/inj1u2gzmedq4suw64ulpu7uwehy2mqaysfrt0nq0q/position] -peggy_denom = factory/inj1u2gzmedq4suw64ulpu7uwehy2mqaysfrt0nq0q/position -decimals = 0 - -[factory/inj1u4d97wd4mya77h6mxk8q7grz6smc4esmjawhv9/position] -peggy_denom = factory/inj1u4d97wd4mya77h6mxk8q7grz6smc4esmjawhv9/position -decimals = 0 - -[factory/inj1u4h04v3kp8yk6kx3l0yc8ckea7t7533x55ltl0/b123123] -peggy_denom = factory/inj1u4h04v3kp8yk6kx3l0yc8ckea7t7533x55ltl0/b123123 -decimals = 9 - -[factory/inj1u4h6wt3rcctpcrmpcctmkhvxqt3aj5ugmm5hlj/position] -peggy_denom = factory/inj1u4h6wt3rcctpcrmpcctmkhvxqt3aj5ugmm5hlj/position -decimals = 0 - -[factory/inj1u64862u7plt539jm79eqnm4redcke8nszdy504/position] -peggy_denom = factory/inj1u64862u7plt539jm79eqnm4redcke8nszdy504/position -decimals = 0 - -[factory/inj1u6czgmqjcpku02z5hgnqd8c8z647lhzx07r8vd/position] -peggy_denom = factory/inj1u6czgmqjcpku02z5hgnqd8c8z647lhzx07r8vd/position -decimals = 0 - -[factory/inj1u6kx7cmvay8pv74d5xk07wtdergjcmhm5yfuxa/tp] -peggy_denom = factory/inj1u6kx7cmvay8pv74d5xk07wtdergjcmhm5yfuxa/tp -decimals = 0 - -[factory/inj1uc0hj8z6xu6nf3m4flwpklf98vu4wr87hud3mh/TEST] -peggy_denom = factory/inj1uc0hj8z6xu6nf3m4flwpklf98vu4wr87hud3mh/TEST -decimals = 6 - -[factory/inj1uc0hj8z6xu6nf3m4flwpklf98vu4wr87hud3mh/Test] -peggy_denom = factory/inj1uc0hj8z6xu6nf3m4flwpklf98vu4wr87hud3mh/Test -decimals = 6 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684004788InjUsdt1d110C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684004788InjUsdt1d110C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684160754InjUsdt1d110C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684160754InjUsdt1d110C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684161043InjUsdt7d85P] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684161043InjUsdt7d85P -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342128InjUsdt21d110C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342128InjUsdt21d110C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342228InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342228InjUsdt14d130C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342259InjUsdt7d120C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342259InjUsdt7d120C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342288AtomUsdt21d115C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342288AtomUsdt21d115C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342323AtomUsdt21d90P] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342323AtomUsdt21d90P -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342562InjUsdt14d80P] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342562InjUsdt14d80P -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342583InjUsdt21d88P] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342583InjUsdt21d88P -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342627InjUsdt7d85P] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684342627InjUsdt7d85P -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684519105InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684519105InjUsdt14d130C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684730927InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684730927InjUsdt14d130C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684902871InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1684902871InjUsdt14d130C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685029827InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685029827InjUsdt14d130C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685200859InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685200859InjUsdt14d130C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685201782InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685201782InjUsdt14d130C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685379415InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685379415InjUsdt14d130C -decimals = 0 - -[factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685547447InjUsdt14d130C] -peggy_denom = factory/inj1udrg8ug3g0qr54zw5yvcg3rxesuj06pvr4xtkz/1685547447InjUsdt14d130C -decimals = 0 - -[factory/inj1ue7fhf4gm9et2j8c74pf3j6mpq6zfr0ss9pymj/position] -peggy_denom = factory/inj1ue7fhf4gm9et2j8c74pf3j6mpq6zfr0ss9pymj/position -decimals = 0 - -[factory/inj1uegc6g6gvjeq3efkevha8a26lruku53j2tm6ez/nusd] -peggy_denom = factory/inj1uegc6g6gvjeq3efkevha8a26lruku53j2tm6ez/nusd -decimals = 0 - -[factory/inj1ueq4h3gh8v2wdq6nk97d4ucxutdkqz7uma7twy/position] -peggy_denom = factory/inj1ueq4h3gh8v2wdq6nk97d4ucxutdkqz7uma7twy/position -decimals = 0 - -[factory/inj1ujd7rlhp8980lwg74tek7gv4yv4qj4xcvxrx45/ak] -peggy_denom = factory/inj1ujd7rlhp8980lwg74tek7gv4yv4qj4xcvxrx45/ak -decimals = 6 - -[factory/inj1ul38prrls0g4g6xy7ljn8p5f7ag465nsjg7x3f/nept] -peggy_denom = factory/inj1ul38prrls0g4g6xy7ljn8p5f7ag465nsjg7x3f/nept -decimals = 6 - -[factory/inj1unjzfc767mt3ddln99h3u7gqccq4ktnkqxssgn/position] -peggy_denom = factory/inj1unjzfc767mt3ddln99h3u7gqccq4ktnkqxssgn/position -decimals = 0 - -[factory/inj1up4y7jqyz0vxqpzky20jve5837thglaccfu80m/position] -peggy_denom = factory/inj1up4y7jqyz0vxqpzky20jve5837thglaccfu80m/position -decimals = 0 - -[factory/inj1urpyedgvqtfutghgd9pygsa9n9df6nahjygjfc/position] -peggy_denom = factory/inj1urpyedgvqtfutghgd9pygsa9n9df6nahjygjfc/position -decimals = 0 - -[factory/inj1usgjy0d22uetxkrw7wk7ghdwcje5mldjlahf9u/position] -peggy_denom = factory/inj1usgjy0d22uetxkrw7wk7ghdwcje5mldjlahf9u/position -decimals = 0 - -[factory/inj1ut4dqsjmy359rtcm2c968kju22j3auejw227yk/position] -peggy_denom = factory/inj1ut4dqsjmy359rtcm2c968kju22j3auejw227yk/position -decimals = 0 - -[factory/inj1utgap8ev5g4f97t5qta6fz2vreea6kh49x7d57/position] -peggy_denom = factory/inj1utgap8ev5g4f97t5qta6fz2vreea6kh49x7d57/position -decimals = 0 - -[factory/inj1uumx6djsue8reph7zqxvct9qh5ymfkewrlrvkh/position] -peggy_denom = factory/inj1uumx6djsue8reph7zqxvct9qh5ymfkewrlrvkh/position -decimals = 0 - -[factory/inj1uv23c02y8kyst63gmd9s90xnusxm082cz75svm/position] -peggy_denom = factory/inj1uv23c02y8kyst63gmd9s90xnusxm082cz75svm/position -decimals = 0 - -[factory/inj1uv6psuupldve0c9n3uezqlecadszqexv5vxx04/position] -peggy_denom = factory/inj1uv6psuupldve0c9n3uezqlecadszqexv5vxx04/position -decimals = 0 - -[factory/inj1uvhnfynmzakn5w9hy0lx4ekjg2n43l6wn589yn/position] -peggy_denom = factory/inj1uvhnfynmzakn5w9hy0lx4ekjg2n43l6wn589yn/position -decimals = 0 - -[factory/inj1uxfds27smnfldzeqvw9sxe9ezmsn76vf36y8mu/position] -peggy_denom = factory/inj1uxfds27smnfldzeqvw9sxe9ezmsn76vf36y8mu/position -decimals = 0 - -[factory/inj1uyv6e9u30eckntsa5y968mvzh53482stcmhuqp/position] -peggy_denom = factory/inj1uyv6e9u30eckntsa5y968mvzh53482stcmhuqp/position -decimals = 0 - -[factory/inj1v0ryp6qedj40zgnypqj0et0m8r40n9wunus47z/nept] -peggy_denom = factory/inj1v0ryp6qedj40zgnypqj0et0m8r40n9wunus47z/nept -decimals = 6 - -[factory/inj1v382yx63cyv4ezs0auh4h3c4u7rv766wsqx8et/INJ] -peggy_denom = factory/inj1v382yx63cyv4ezs0auh4h3c4u7rv766wsqx8et/INJ -decimals = 18 - -[factory/inj1v382yx63cyv4ezs0auh4h3c4u7rv766wsqx8et/USDT] -peggy_denom = factory/inj1v382yx63cyv4ezs0auh4h3c4u7rv766wsqx8et/USDT -decimals = 6 - -[factory/inj1v3nvact8rvv23fc5ql8ghv46s8gxajwynddsgf/position] -peggy_denom = factory/inj1v3nvact8rvv23fc5ql8ghv46s8gxajwynddsgf/position -decimals = 0 - -[factory/inj1v3t83cl8jg2g9rxxzzyz663sx2md7mkap48qpw/position] -peggy_denom = factory/inj1v3t83cl8jg2g9rxxzzyz663sx2md7mkap48qpw/position -decimals = 0 - -[factory/inj1v4rt4k8c92m2e39xnrp0rur23ch24vlraeqrnj/position] -peggy_denom = factory/inj1v4rt4k8c92m2e39xnrp0rur23ch24vlraeqrnj/position -decimals = 0 - -[factory/inj1v4s3v3nmsx6szyxqgcnqdfseucu4ccm65sh0xr/lp] -peggy_denom = factory/inj1v4s3v3nmsx6szyxqgcnqdfseucu4ccm65sh0xr/lp -decimals = 0 - -[factory/inj1v50298l9a3p8zq3hm6sfa02sj3h4l40m2e85sg/position] -peggy_denom = factory/inj1v50298l9a3p8zq3hm6sfa02sj3h4l40m2e85sg/position -decimals = 0 - -[factory/inj1v6f2f8gqyk9u5pquxqvsxamjfmu0anlqty0tck/position] -peggy_denom = factory/inj1v6f2f8gqyk9u5pquxqvsxamjfmu0anlqty0tck/position -decimals = 0 - -[factory/inj1v6j600fchr65djzwg32pwn0wrmumayk7wz3045/position] -peggy_denom = factory/inj1v6j600fchr65djzwg32pwn0wrmumayk7wz3045/position -decimals = 0 - -[factory/inj1v9dh0z7vmn8aa6rjssertmh65q6zu43vu4lzqg/position] -peggy_denom = factory/inj1v9dh0z7vmn8aa6rjssertmh65q6zu43vu4lzqg/position -decimals = 0 - -[factory/inj1v9efws63c8luhqqcxxyjv5yn84tw4an528avmn/position] -peggy_denom = factory/inj1v9efws63c8luhqqcxxyjv5yn84tw4an528avmn/position -decimals = 0 - -[factory/inj1v9m8ra08jmvgf7r086wjs660gaz4qman79068v/position] -peggy_denom = factory/inj1v9m8ra08jmvgf7r086wjs660gaz4qman79068v/position -decimals = 0 - -[factory/inj1v9u88x6364g7mgyhywe6k5mgmwh9hrmzgfqkga/position] -peggy_denom = factory/inj1v9u88x6364g7mgyhywe6k5mgmwh9hrmzgfqkga/position -decimals = 0 - -[factory/inj1vam3mucqmr3jq8g8tlyvwpg2d6n5saepvjqm9j/position] -peggy_denom = factory/inj1vam3mucqmr3jq8g8tlyvwpg2d6n5saepvjqm9j/position -decimals = 0 - -[factory/inj1vcmkd8uq6acykfuu37d3s440nse74l66ah5ntt/hoa1] -peggy_denom = factory/inj1vcmkd8uq6acykfuu37d3s440nse74l66ah5ntt/hoa1 -decimals = 9 - -[factory/inj1vcsdfppak6fuawvpujdg4l89jelr8yqsx7c2zv/nept] -peggy_denom = factory/inj1vcsdfppak6fuawvpujdg4l89jelr8yqsx7c2zv/nept -decimals = 6 - -[factory/inj1vdjylk9h6x5l5rdeq69kzz8epkdj49jz3vnkck/lpinj167fk7vydv5sc3yvdlhrrnrh236qusaaunsrlaw] -peggy_denom = factory/inj1vdjylk9h6x5l5rdeq69kzz8epkdj49jz3vnkck/lpinj167fk7vydv5sc3yvdlhrrnrh236qusaaunsrlaw -decimals = 0 - -[factory/inj1vdjylk9h6x5l5rdeq69kzz8epkdj49jz3vnkck/lpinj1jl72nssaq64u6ze7ducpvne4k3knd7p4e38wmv] -peggy_denom = factory/inj1vdjylk9h6x5l5rdeq69kzz8epkdj49jz3vnkck/lpinj1jl72nssaq64u6ze7ducpvne4k3knd7p4e38wmv -decimals = 0 - -[factory/inj1vfnt60cm3h5aevax84a3pe9lh7qpdgfelms26u/minh1] -peggy_denom = factory/inj1vfnt60cm3h5aevax84a3pe9lh7qpdgfelms26u/minh1 -decimals = 9 - -[factory/inj1vfwt0zwcx60sk3rlszfwezygd35lq9kjh6g9df/ak] -peggy_denom = factory/inj1vfwt0zwcx60sk3rlszfwezygd35lq9kjh6g9df/ak -decimals = 6 - -[factory/inj1vgg9a0fgt03s6naw4y8kpeqrxaftvjx7n729x9/position] -peggy_denom = factory/inj1vgg9a0fgt03s6naw4y8kpeqrxaftvjx7n729x9/position -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/ABC] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/ABC -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/INJ] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/INJ -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/TOK] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/TOK -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/TST] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/TST -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/TYC] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/TYC -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/WWG] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/WWG -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/WWWG] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/WWWG -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/WWwGG] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/WWwGG -decimals = 0 - -[factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/your-token-subdenom] -peggy_denom = factory/inj1vh4qp2p4y0lxqxhu7w2wj3puam6x28atmkqcar/your-token-subdenom -decimals = 0 - -[factory/inj1vh87n639uwq0smzzxj82mqlyu5yxzn7l7fjcs0/position] -peggy_denom = factory/inj1vh87n639uwq0smzzxj82mqlyu5yxzn7l7fjcs0/position -decimals = 0 - -[factory/inj1vjjppnr2gws0e678uhegmcruhyx55nk6w2hg2k/position] -peggy_denom = factory/inj1vjjppnr2gws0e678uhegmcruhyx55nk6w2hg2k/position -decimals = 0 - -[factory/inj1vjjzzlev5u0hzzh4lju29mhv9efte87w5czs39/position] -peggy_denom = factory/inj1vjjzzlev5u0hzzh4lju29mhv9efte87w5czs39/position -decimals = 0 - -[factory/inj1vjyvqyhvd00zzpwrr6v3keydp43z8pnsl48cx3/Testone] -peggy_denom = factory/inj1vjyvqyhvd00zzpwrr6v3keydp43z8pnsl48cx3/Testone -decimals = 6 - -[factory/inj1vkrnanqvwve8ugvhkrk6mdzw45xevvrlskfnh8/hoa4hoa4hoa4hoa4hoa4hoa4] -peggy_denom = factory/inj1vkrnanqvwve8ugvhkrk6mdzw45xevvrlskfnh8/hoa4hoa4hoa4hoa4hoa4hoa4 -decimals = 0 - -[factory/inj1vkrp72xd67plcggcfjtjelqa4t5a093xljf2vj/inj1spw6nd0pj3kd3fgjljhuqpc8tv72a9v89myuja] -peggy_denom = factory/inj1vkrp72xd67plcggcfjtjelqa4t5a093xljf2vj/inj1spw6nd0pj3kd3fgjljhuqpc8tv72a9v89myuja -decimals = 0 - -[factory/inj1vlkpm04nu8dssskal6xkssfz6rl4zayg2pq7yu/position] -peggy_denom = factory/inj1vlkpm04nu8dssskal6xkssfz6rl4zayg2pq7yu/position -decimals = 0 - -[factory/inj1vmch9emlwa49ersxh7svqjckkjwuzrm76xuyqq/position] -peggy_denom = factory/inj1vmch9emlwa49ersxh7svqjckkjwuzrm76xuyqq/position -decimals = 0 - -[factory/inj1vmcrwdcymjkz8djsp04ya95xcux6utvp4dvwch/position] -peggy_denom = factory/inj1vmcrwdcymjkz8djsp04ya95xcux6utvp4dvwch/position -decimals = 0 - -[factory/inj1vnw2qhycavcehry6a9sex07nr76axev5s59x96/position] -peggy_denom = factory/inj1vnw2qhycavcehry6a9sex07nr76axev5s59x96/position -decimals = 0 - -[factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/cook] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/cook -decimals = 6 - -[factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/cookie] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/cookie -decimals = 6 - -[factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/test213] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/test213 -decimals = 6 - -[factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/test9] -peggy_denom = factory/inj1vpp394hzv5rwz9de9xx60rxjl9cx82t0nt0nrz/test9 -decimals = 6 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/BONK] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/BONK -decimals = 18 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/BOY] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/BOY -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MAD] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MAD -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MADARA] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MADARA -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MADRAA] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MADRAA -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MAY] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MAY -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MUD] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/MUD -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/TTS] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/TTS -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/bou] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/bou -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/lyl] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/lyl -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/ruk] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/ruk -decimals = 0 - -[factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/tis] -peggy_denom = factory/inj1vqt6a3y2t7efvdv7u3zl6ht7tg4a5733wljxy5/tis -decimals = 0 - -[factory/inj1vu3ywmx6jhknclgjetxftdf2fpgyxsndh9xy4t/ugop] -peggy_denom = factory/inj1vu3ywmx6jhknclgjetxftdf2fpgyxsndh9xy4t/ugop -decimals = 0 - -[factory/inj1vursge2u0xq88ff5dc9zl3wzxpaed6498pyurc/position] -peggy_denom = factory/inj1vursge2u0xq88ff5dc9zl3wzxpaed6498pyurc/position -decimals = 0 - -[factory/inj1vypjl0lxse2hpkpff9jpjcfpexnwhjhrl4jtxg/position] -peggy_denom = factory/inj1vypjl0lxse2hpkpff9jpjcfpexnwhjhrl4jtxg/position -decimals = 0 - -[factory/inj1vzup2kfsrsevjcesq3pyzc6dyz07ve8jc6m4kf/tv-t1] -peggy_denom = factory/inj1vzup2kfsrsevjcesq3pyzc6dyz07ve8jc6m4kf/tv-t1 -decimals = 0 - -[factory/inj1w0dj787d00t9t53vz9aszkcmdt0he6cmall5lz/position] -peggy_denom = factory/inj1w0dj787d00t9t53vz9aszkcmdt0he6cmall5lz/position -decimals = 0 - -[factory/inj1w2p89vprfp4rk9ql22fcat579jw6lcndaqenxk/position] -peggy_denom = factory/inj1w2p89vprfp4rk9ql22fcat579jw6lcndaqenxk/position -decimals = 0 - -[factory/inj1w4v783ckdxa4sg3xr7thtqy92u8pjt09cq84ns/inj-test] -peggy_denom = factory/inj1w4v783ckdxa4sg3xr7thtqy92u8pjt09cq84ns/inj-test -decimals = 0 - -[factory/inj1w64pxulxdnjnsgg88yg0wv4xtltuvdt60dxx52/usdcet] -peggy_denom = factory/inj1w64pxulxdnjnsgg88yg0wv4xtltuvdt60dxx52/usdcet -decimals = 0 - -[factory/inj1wcgxfkevadmdvrnfj6arpm0dulaap778gdfydy/position] -peggy_denom = factory/inj1wcgxfkevadmdvrnfj6arpm0dulaap778gdfydy/position -decimals = 0 - -[factory/inj1wdlaxz5j2kuvvw6j6zapkhst03w99uqu4qzjqr/position] -peggy_denom = factory/inj1wdlaxz5j2kuvvw6j6zapkhst03w99uqu4qzjqr/position -decimals = 0 - -[factory/inj1weg6gph4cwe7mnk06h7r640r9kjz3aah5vd8q2/position] -peggy_denom = factory/inj1weg6gph4cwe7mnk06h7r640r9kjz3aah5vd8q2/position -decimals = 0 - -[factory/inj1wfu4622uhs5kmfws8vse76sxac7qxu3pckhkph/ak] -peggy_denom = factory/inj1wfu4622uhs5kmfws8vse76sxac7qxu3pckhkph/ak -decimals = 0 - -[factory/inj1wg70ms44pv0zlr2j8fvupx65fpsw65hhv4hx00/Fund2] -peggy_denom = factory/inj1wg70ms44pv0zlr2j8fvupx65fpsw65hhv4hx00/Fund2 -decimals = 0 - -[factory/inj1wkjsuffr2caaf5000r70acd9hk9s4ur24hpdjq/auction.0] -peggy_denom = factory/inj1wkjsuffr2caaf5000r70acd9hk9s4ur24hpdjq/auction.0 -decimals = 0 - -[factory/inj1wljgztgggw6a96hgyypyl8fwmtgtedzkekhnxn/position] -peggy_denom = factory/inj1wljgztgggw6a96hgyypyl8fwmtgtedzkekhnxn/position -decimals = 0 - -[factory/inj1wlygmaypnsznpvnzjmlcfntua0k9smduh9ps3k/position] -peggy_denom = factory/inj1wlygmaypnsznpvnzjmlcfntua0k9smduh9ps3k/position -decimals = 0 - -[factory/inj1wn5jk6wn52c3lcz7tj2syt3tye7s7hzn49gnk7/position] -peggy_denom = factory/inj1wn5jk6wn52c3lcz7tj2syt3tye7s7hzn49gnk7/position -decimals = 0 - -[factory/inj1wpuctnwfks0c9wu8cysq8lj056a07h4lk8pffc/position] -peggy_denom = factory/inj1wpuctnwfks0c9wu8cysq8lj056a07h4lk8pffc/position -decimals = 0 - -[factory/inj1wqk89jknq4z4vk247r7qw83e3efq79pr0gcrac/TEST] -peggy_denom = factory/inj1wqk89jknq4z4vk247r7qw83e3efq79pr0gcrac/TEST -decimals = 18 - -[factory/inj1wr9djhlgvu6ssy9aw2f6xnzr6edl8p3fmdxvr5/position] -peggy_denom = factory/inj1wr9djhlgvu6ssy9aw2f6xnzr6edl8p3fmdxvr5/position -decimals = 0 - -[factory/inj1wtkwu7263hrj6qsyq59dvjtfq7eg3n97zmyew7/position] -peggy_denom = factory/inj1wtkwu7263hrj6qsyq59dvjtfq7eg3n97zmyew7/position -decimals = 0 - -[factory/inj1ww0njtv5man6as3evjy4aq3t08dnapf8wgvvpx/kusd] -peggy_denom = factory/inj1ww0njtv5man6as3evjy4aq3t08dnapf8wgvvpx/kusd -decimals = 0 - -[factory/inj1wyuxew5u8tdv2fcrjxqtewa75a0nhud26yx322/position] -peggy_denom = factory/inj1wyuxew5u8tdv2fcrjxqtewa75a0nhud26yx322/position -decimals = 0 - -[factory/inj1wz4c7eq2kqzchry9ppc5nv0llcr56v8s8xy3qy/ak] -peggy_denom = factory/inj1wz4c7eq2kqzchry9ppc5nv0llcr56v8s8xy3qy/ak -decimals = 0 - -[factory/inj1x098l8f3uxkfslk02n8ekct867qft2q9a43pez/position] -peggy_denom = factory/inj1x098l8f3uxkfslk02n8ekct867qft2q9a43pez/position -decimals = 0 - -[factory/inj1x0y2k45p8g4c5k09z6y4s62ann48td8dmmtr7p/position] -peggy_denom = factory/inj1x0y2k45p8g4c5k09z6y4s62ann48td8dmmtr7p/position -decimals = 0 - -[factory/inj1x33pdf4m2d89klwevndvdv408em5fskarss4j4/position] -peggy_denom = factory/inj1x33pdf4m2d89klwevndvdv408em5fskarss4j4/position -decimals = 0 - -[factory/inj1x36xltunr3hczrzzcjgsdz8a4rjrxvl3lwnyxx/position] -peggy_denom = factory/inj1x36xltunr3hczrzzcjgsdz8a4rjrxvl3lwnyxx/position -decimals = 0 - -[factory/inj1x52kjrdrfxlsgnfu67cstxfcf33ax97anne4qw/position] -peggy_denom = factory/inj1x52kjrdrfxlsgnfu67cstxfcf33ax97anne4qw/position -decimals = 0 - -[factory/inj1x59f3klrj20uenzynq5va3r9jjn0g4req7wpc0/Test] -peggy_denom = factory/inj1x59f3klrj20uenzynq5va3r9jjn0g4req7wpc0/Test -decimals = 0 - -[factory/inj1x59f3klrj20uenzynq5va3r9jjn0g4req7wpc0/test] -peggy_denom = factory/inj1x59f3klrj20uenzynq5va3r9jjn0g4req7wpc0/test -decimals = 6 - -[factory/inj1x5w6ggv3p67kpj9n6teprx3uqxfn4e5rpq82fv/position] -peggy_denom = factory/inj1x5w6ggv3p67kpj9n6teprx3uqxfn4e5rpq82fv/position -decimals = 0 - -[factory/inj1x63pwwsuwpmgnm3jjgm8v4cva05358082tqysd/position] -peggy_denom = factory/inj1x63pwwsuwpmgnm3jjgm8v4cva05358082tqysd/position -decimals = 0 - -[factory/inj1x66srsf7gnm0fz3p6ceazp7h9p60hyxmxqh0s3/position] -peggy_denom = factory/inj1x66srsf7gnm0fz3p6ceazp7h9p60hyxmxqh0s3/position -decimals = 0 - -[factory/inj1x7c4naavu5g6325xkxgaffll6q033prgpe86q3/nUSD] -peggy_denom = factory/inj1x7c4naavu5g6325xkxgaffll6q033prgpe86q3/nUSD -decimals = 18 - -[factory/inj1x8lczzuhxpp5nhf72nfv0e74vkjxvqag05clpn/position] -peggy_denom = factory/inj1x8lczzuhxpp5nhf72nfv0e74vkjxvqag05clpn/position -decimals = 0 - -[factory/inj1x8rucyh7paah9dlldcfcfuscl3scdtus26m822/position] -peggy_denom = factory/inj1x8rucyh7paah9dlldcfcfuscl3scdtus26m822/position -decimals = 0 - -[factory/inj1x8v44tuhlfk8f64j4vehftwggfzdjtthmeddwm/test] -peggy_denom = factory/inj1x8v44tuhlfk8f64j4vehftwggfzdjtthmeddwm/test -decimals = 18 - -[factory/inj1x8v44tuhlfk8f64j4vehftwggfzdjtthmeddwm/test1] -peggy_denom = factory/inj1x8v44tuhlfk8f64j4vehftwggfzdjtthmeddwm/test1 -decimals = 8 - -[factory/inj1xawhm3d8lf9n0rqdljpal033yackja3dt0kvp0/nobi] -peggy_denom = factory/inj1xawhm3d8lf9n0rqdljpal033yackja3dt0kvp0/nobi -decimals = 6 - -[factory/inj1xaxtu5t78dyd4hja2zsehezmlsrzj665td770x/test] -peggy_denom = factory/inj1xaxtu5t78dyd4hja2zsehezmlsrzj665td770x/test -decimals = 0 - -[factory/inj1xcj5al0gdrs7mwcn84jhsj5a2kgsqj4c9qk5en/injMiam] -peggy_denom = factory/inj1xcj5al0gdrs7mwcn84jhsj5a2kgsqj4c9qk5en/injMiam -decimals = 0 - -[factory/inj1xcmem6znjw0tevhewzaj9vgck3j5jggfc47ue0/position] -peggy_denom = factory/inj1xcmem6znjw0tevhewzaj9vgck3j5jggfc47ue0/position -decimals = 0 - -[factory/inj1xcn064p3w42wmuple0tqxv2zgkv2pyuzl3u5px/position] -peggy_denom = factory/inj1xcn064p3w42wmuple0tqxv2zgkv2pyuzl3u5px/position -decimals = 0 - -[factory/inj1xfjnl464vcmwzx82tcjmgkde68hra4rhetq2c5/position] -peggy_denom = factory/inj1xfjnl464vcmwzx82tcjmgkde68hra4rhetq2c5/position -decimals = 0 - -[factory/inj1xgeswrlancy8ma7e8reynzx4l22qwrrxwdvupg/hk1] -peggy_denom = factory/inj1xgeswrlancy8ma7e8reynzx4l22qwrrxwdvupg/hk1 -decimals = 9 - -[factory/inj1xgf4n9sa7rpedzngd66m49wd74aywptnujwqeq/position] -peggy_denom = factory/inj1xgf4n9sa7rpedzngd66m49wd74aywptnujwqeq/position -decimals = 0 - -[factory/inj1xh3ced9w5hkak0te7gcqejlg0uskv3xsqw6nqr/position] -peggy_denom = factory/inj1xh3ced9w5hkak0te7gcqejlg0uskv3xsqw6nqr/position -decimals = 0 - -[factory/inj1xh928v0zwy54nv3d9m9splk0nu9jfnugg8pmkk/asg] -peggy_denom = factory/inj1xh928v0zwy54nv3d9m9splk0nu9jfnugg8pmkk/asg -decimals = 0 - -[factory/inj1xl7n4zw38878cret04u6vk3m2r6z8upepweccn/lp] -peggy_denom = factory/inj1xl7n4zw38878cret04u6vk3m2r6z8upepweccn/lp -decimals = 0 - -[factory/inj1xlkkl7hvcvk2thxn6gf706eykx5j4j57mak7hp/position] -peggy_denom = factory/inj1xlkkl7hvcvk2thxn6gf706eykx5j4j57mak7hp/position -decimals = 0 - -[factory/inj1xmgw5eyauaftulpu0xaeafhre33q02vf6pc4ts/position] -peggy_denom = factory/inj1xmgw5eyauaftulpu0xaeafhre33q02vf6pc4ts/position -decimals = 0 - -[factory/inj1xpx6s84xjvlgz63y0nkw8nw66zu3ezzxwwx8wh/position] -peggy_denom = factory/inj1xpx6s84xjvlgz63y0nkw8nw66zu3ezzxwwx8wh/position -decimals = 0 - -[factory/inj1xrhrlnawe9g6ct95nurs8sfehcq8tsm35c4al2/PUGGO] -peggy_denom = factory/inj1xrhrlnawe9g6ct95nurs8sfehcq8tsm35c4al2/PUGGO -decimals = 0 - -[factory/inj1xrhrlnawe9g6ct95nurs8sfehcq8tsm35c4al2/Test1] -peggy_denom = factory/inj1xrhrlnawe9g6ct95nurs8sfehcq8tsm35c4al2/Test1 -decimals = 0 - -[factory/inj1xrhrlnawe9g6ct95nurs8sfehcq8tsm35c4al2/Test2] -peggy_denom = factory/inj1xrhrlnawe9g6ct95nurs8sfehcq8tsm35c4al2/Test2 -decimals = 0 - -[factory/inj1xsadv6kc7v6jhauunr8qy8angg9ttx752j4ama/position] -peggy_denom = factory/inj1xsadv6kc7v6jhauunr8qy8angg9ttx752j4ama/position -decimals = 0 - -[factory/inj1xu5vejfxv7pjq8afdt0pgnn2v90z839kw8murw/hoa7] -peggy_denom = factory/inj1xu5vejfxv7pjq8afdt0pgnn2v90z839kw8murw/hoa7 -decimals = 0 - -[factory/inj1xug34v8e887uzcc9mr2pql06h2ztvhxxm6asll/utest] -peggy_denom = factory/inj1xug34v8e887uzcc9mr2pql06h2ztvhxxm6asll/utest -decimals = 0 - -[factory/inj1xv7td74ss4q0rrvsuey9qrzqc8qj89zvlh0kmj/INJECT] -peggy_denom = factory/inj1xv7td74ss4q0rrvsuey9qrzqc8qj89zvlh0kmj/INJECT -decimals = 6 - -[factory/inj1xv7td74ss4q0rrvsuey9qrzqc8qj89zvlh0kmj/ak] -peggy_denom = factory/inj1xv7td74ss4q0rrvsuey9qrzqc8qj89zvlh0kmj/ak -decimals = 0 - -[factory/inj1xwdxxej579ns9gcs80jfxvl50yctvptxtpn2fa/DGNZ] -peggy_denom = factory/inj1xwdxxej579ns9gcs80jfxvl50yctvptxtpn2fa/DGNZ -decimals = 6 - -[factory/inj1xwdxxej579ns9gcs80jfxvl50yctvptxtpn2fa/DREAM] -peggy_denom = factory/inj1xwdxxej579ns9gcs80jfxvl50yctvptxtpn2fa/DREAM -decimals = 6 - -[factory/inj1xy3kvlr4q4wdd6lrelsrw2fk2ged0any44hhwq/kira] -peggy_denom = factory/inj1xy3kvlr4q4wdd6lrelsrw2fk2ged0any44hhwq/kira -decimals = 6 - -[factory/inj1xyr5tt9ltrdm9uvnerwtv4sz9hllqvgt3pkea2/position] -peggy_denom = factory/inj1xyr5tt9ltrdm9uvnerwtv4sz9hllqvgt3pkea2/position -decimals = 0 - -[factory/inj1xyufatym0y7dlv2qzm7p5rkythh9n6wa588yl6/testtoken] -peggy_denom = factory/inj1xyufatym0y7dlv2qzm7p5rkythh9n6wa588yl6/testtoken -decimals = 6 - -[factory/inj1xzfme2xzc2zcwdvkhkklssudaeyeax5mpfu45c/kira] -peggy_denom = factory/inj1xzfme2xzc2zcwdvkhkklssudaeyeax5mpfu45c/kira -decimals = 6 - -[factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/IPDAI] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/IPDAI -decimals = 0 - -[factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/Ipdai] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/Ipdai -decimals = 0 - -[factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/Test1] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/Test1 -decimals = 6 - -[factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/ak] -peggy_denom = factory/inj1y3g4wpgnc4s28gd9ure3vwm9cmvmdphml6mtul/ak -decimals = 0 - -[factory/inj1y3g6p8hsdk2tx85nhftujuz2femtztwpzwxlun/position] -peggy_denom = factory/inj1y3g6p8hsdk2tx85nhftujuz2femtztwpzwxlun/position -decimals = 0 - -[factory/inj1y3uz825u9x4yr440x7dpfpz9p93k2ua3mfsj8m/position] -peggy_denom = factory/inj1y3uz825u9x4yr440x7dpfpz9p93k2ua3mfsj8m/position -decimals = 0 - -[factory/inj1y40ej8fymv3y3002y7vs38ad8wmkfx70x6p9fl/position] -peggy_denom = factory/inj1y40ej8fymv3y3002y7vs38ad8wmkfx70x6p9fl/position -decimals = 0 - -[factory/inj1y5869da9fkn54gz389fnf7xm937uxjncjjpcag/Ann] -peggy_denom = factory/inj1y5869da9fkn54gz389fnf7xm937uxjncjjpcag/Ann -decimals = 9 - -[factory/inj1y8mflyjjgrtmtmufn9cpt9snkyaksv8yyjfn7e/position] -peggy_denom = factory/inj1y8mflyjjgrtmtmufn9cpt9snkyaksv8yyjfn7e/position -decimals = 0 - -[factory/inj1y8n40n0r4qhpv03refwjf2w8qeskn7wz9papy9/position] -peggy_denom = factory/inj1y8n40n0r4qhpv03refwjf2w8qeskn7wz9papy9/position -decimals = 0 - -[factory/inj1y9ns569xn73s2dez3edfl8x9rldhlnmf342x2v/uLP] -peggy_denom = factory/inj1y9ns569xn73s2dez3edfl8x9rldhlnmf342x2v/uLP -decimals = 0 - -[factory/inj1ye40enxslv7ae0xdu2f7sjueet5ahewc6uzp5w/test] -peggy_denom = factory/inj1ye40enxslv7ae0xdu2f7sjueet5ahewc6uzp5w/test -decimals = 0 - -[factory/inj1yflxv3tzd0ya8rsqzl8y5e2fanzmwczzlzrh96/position] -peggy_denom = factory/inj1yflxv3tzd0ya8rsqzl8y5e2fanzmwczzlzrh96/position -decimals = 0 - -[factory/inj1yfxejgk5n6jljvf9f5sxex7k22td5vkqnugnvm/ak] -peggy_denom = factory/inj1yfxejgk5n6jljvf9f5sxex7k22td5vkqnugnvm/ak -decimals = 6 - -[factory/inj1yg24mn8enl5e6v4jl2j6cce47mx4vyd6e8dpck/milk] -peggy_denom = factory/inj1yg24mn8enl5e6v4jl2j6cce47mx4vyd6e8dpck/milk -decimals = 6 - -[factory/inj1ygcvq2vzldwq0vr7mr0ha3cgjkhe5q8ahfckhw/duynt-1] -peggy_denom = factory/inj1ygcvq2vzldwq0vr7mr0ha3cgjkhe5q8ahfckhw/duynt-1 -decimals = 9 - -[factory/inj1yhssz5sjmea8cfa6waykwtpa29qdd7f43260fx/nept] -peggy_denom = factory/inj1yhssz5sjmea8cfa6waykwtpa29qdd7f43260fx/nept -decimals = 6 - -[factory/inj1yhyhvdj0lsjnvvrsv6r0wplzvg5w3ye5nskecp/position] -peggy_denom = factory/inj1yhyhvdj0lsjnvvrsv6r0wplzvg5w3ye5nskecp/position -decimals = 0 - -[factory/inj1ykvprwchmpgm632hsqwwmnwquazrpxmdykap3m/position] -peggy_denom = factory/inj1ykvprwchmpgm632hsqwwmnwquazrpxmdykap3m/position -decimals = 0 - -[factory/inj1yl97tnwqftg37d6ccjvd4zq3vh4mxynp6e2ldp/position] -peggy_denom = factory/inj1yl97tnwqftg37d6ccjvd4zq3vh4mxynp6e2ldp/position -decimals = 0 - -[factory/inj1ym7sl98neeh4t7gq8z4we3ugp4s68ghpvvkyas/position] -peggy_denom = factory/inj1ym7sl98neeh4t7gq8z4we3ugp4s68ghpvvkyas/position -decimals = 0 - -[factory/inj1ymah0zcd9ujkgaqaldfks6drttmxhwun05fvpv/kUSD] -peggy_denom = factory/inj1ymah0zcd9ujkgaqaldfks6drttmxhwun05fvpv/kUSD -decimals = 0 - -[factory/inj1ymqf6eyt00yxxqg40c8jrn9ey3ydms52ep39wh/position] -peggy_denom = factory/inj1ymqf6eyt00yxxqg40c8jrn9ey3ydms52ep39wh/position -decimals = 0 - -[factory/inj1yn4sntvmxmmzejlq7uer85g0jn0qr884qnhhkk/position] -peggy_denom = factory/inj1yn4sntvmxmmzejlq7uer85g0jn0qr884qnhhkk/position -decimals = 0 - -[factory/inj1yq4dwvnujpr9m8w4m5uq3e8hu0xxnw0eypzr0k/VIC] -peggy_denom = factory/inj1yq4dwvnujpr9m8w4m5uq3e8hu0xxnw0eypzr0k/VIC -decimals = 6 - -[factory/inj1yq4dwvnujpr9m8w4m5uq3e8hu0xxnw0eypzr0k/injtokens] -peggy_denom = factory/inj1yq4dwvnujpr9m8w4m5uq3e8hu0xxnw0eypzr0k/injtokens -decimals = 0 - -[factory/inj1yrcescuerfwmuk9fcsmzrcqxjk0l2crkva7w7q/position] -peggy_denom = factory/inj1yrcescuerfwmuk9fcsmzrcqxjk0l2crkva7w7q/position -decimals = 0 - -[factory/inj1yreaxfwm7hrnft6qckl9g8xc3p827qm06c90sp/position] -peggy_denom = factory/inj1yreaxfwm7hrnft6qckl9g8xc3p827qm06c90sp/position -decimals = 0 - -[factory/inj1yrhrhqxg8f9nd4eakydm6rmt62yr49q87me6d8/symbol] -peggy_denom = factory/inj1yrhrhqxg8f9nd4eakydm6rmt62yr49q87me6d8/symbol -decimals = 9 - -[factory/inj1ysw6mfrdusl7t68axsjzva7uf805zjrf35uzf4/position] -peggy_denom = factory/inj1ysw6mfrdusl7t68axsjzva7uf805zjrf35uzf4/position -decimals = 0 - -[factory/inj1ysym7p26k099yftp7pecfefefqu6y8lpg5380e/position] -peggy_denom = factory/inj1ysym7p26k099yftp7pecfefefqu6y8lpg5380e/position -decimals = 0 - -[factory/inj1ytsgm4785kt2knde6zs9dr24w0vhsaqptma6wh/position] -peggy_denom = factory/inj1ytsgm4785kt2knde6zs9dr24w0vhsaqptma6wh/position -decimals = 0 - -[factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/test] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/test -decimals = 6 - -[factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/testtt] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/testtt -decimals = 6 - -[factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/testttt] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/testttt -decimals = 6 - -[factory/inj1yuhlreumk975lw4ne3qp0r3cvp4zphvpjm0x3a/bINJ] -peggy_denom = factory/inj1yuhlreumk975lw4ne3qp0r3cvp4zphvpjm0x3a/bINJ -decimals = 0 - -[factory/inj1yvfgszkzz5elj0vt8zwnua9fqkgmep83kety09/position] -peggy_denom = factory/inj1yvfgszkzz5elj0vt8zwnua9fqkgmep83kety09/position -decimals = 0 - -[factory/inj1yvu45hmxcn53m4uwrklzpemxhfpgcvw5klglyd/LIOR] -peggy_denom = factory/inj1yvu45hmxcn53m4uwrklzpemxhfpgcvw5klglyd/LIOR -decimals = 6 - -[factory/inj1yvu45hmxcn53m4uwrklzpemxhfpgcvw5klglyd/LIORi] -peggy_denom = factory/inj1yvu45hmxcn53m4uwrklzpemxhfpgcvw5klglyd/LIORi -decimals = 6 - -[factory/inj1yxyprnlhyupl2lmpwsjhnux70uz8d5rgqussvc/ak] -peggy_denom = factory/inj1yxyprnlhyupl2lmpwsjhnux70uz8d5rgqussvc/ak -decimals = 0 - -[factory/inj1yxyprnlhyupl2lmpwsjhnux70uz8d5rgqussvc/bonk2] -peggy_denom = factory/inj1yxyprnlhyupl2lmpwsjhnux70uz8d5rgqussvc/bonk2 -decimals = 0 - -[factory/inj1yy6u35zlmjz9wr3judrakha5t896y2zu8l96ld/position] -peggy_denom = factory/inj1yy6u35zlmjz9wr3judrakha5t896y2zu8l96ld/position -decimals = 0 - -[factory/inj1yzctp4r2g9phkam9zhensdasar83h0u4hrq0ap/MEME] -peggy_denom = factory/inj1yzctp4r2g9phkam9zhensdasar83h0u4hrq0ap/MEME -decimals = 6 - -[factory/inj1yzl27sewa2447vtvnp00r02fca8sw3vyc57fkl/position] -peggy_denom = factory/inj1yzl27sewa2447vtvnp00r02fca8sw3vyc57fkl/position -decimals = 0 - -[factory/inj1z2mvkyphlykuayz5jk5geujpc2s5h6x5p40gkq/position] -peggy_denom = factory/inj1z2mvkyphlykuayz5jk5geujpc2s5h6x5p40gkq/position -decimals = 0 - -[factory/inj1z2yh32tk3gu8z9shasyrhh42vwsuljmcft82ut/position] -peggy_denom = factory/inj1z2yh32tk3gu8z9shasyrhh42vwsuljmcft82ut/position -decimals = 0 - -[factory/inj1z3ke3q2p0zz5hdfjngxndu4n6y8xfk4scm342y/auction.0] -peggy_denom = factory/inj1z3ke3q2p0zz5hdfjngxndu4n6y8xfk4scm342y/auction.0 -decimals = 0 - -[factory/inj1z3qduw4n3uq549xx47sertmrclyratf498x63e/position] -peggy_denom = factory/inj1z3qduw4n3uq549xx47sertmrclyratf498x63e/position -decimals = 0 - -[factory/inj1z426atp9k68uv49kaam7m0vnehw5fulxkyvde0/shuriken] -peggy_denom = factory/inj1z426atp9k68uv49kaam7m0vnehw5fulxkyvde0/shuriken -decimals = 6 - -[factory/inj1z4phq0clwmns79duanyg7nk2eankp3we7h4sdk/position] -peggy_denom = factory/inj1z4phq0clwmns79duanyg7nk2eankp3we7h4sdk/position -decimals = 0 - -[factory/inj1z6sccypszye9qke2w35m3ptmj7c4tjr2amedyf/cuongprohello] -peggy_denom = factory/inj1z6sccypszye9qke2w35m3ptmj7c4tjr2amedyf/cuongprohello -decimals = 0 - -[factory/inj1z7jcqanqnw969ad6wlucxn9v0t3z3j6swnunvs/lp] -peggy_denom = factory/inj1z7jcqanqnw969ad6wlucxn9v0t3z3j6swnunvs/lp -decimals = 0 - -[factory/inj1z8hv3ad5uskyk8rqtm7aje8gnml5y4rrs97txq/position] -peggy_denom = factory/inj1z8hv3ad5uskyk8rqtm7aje8gnml5y4rrs97txq/position -decimals = 0 - -[factory/inj1z9vd7p6pjgun9h8g0c8snuu03nrqer0sjuuhdf/position] -peggy_denom = factory/inj1z9vd7p6pjgun9h8g0c8snuu03nrqer0sjuuhdf/position -decimals = 0 - -[factory/inj1zcd6q9pgvlqg77uap9fy89a0ljpwm2wnaskf0g/position] -peggy_denom = factory/inj1zcd6q9pgvlqg77uap9fy89a0ljpwm2wnaskf0g/position -decimals = 0 - -[factory/inj1zdhmeaydxdhdd35wa4edrf748rpma662vrenk3/position] -peggy_denom = factory/inj1zdhmeaydxdhdd35wa4edrf748rpma662vrenk3/position -decimals = 0 - -[factory/inj1zf6dferymtlutcycrlddy9gy979sgsp6wj9046/position] -peggy_denom = factory/inj1zf6dferymtlutcycrlddy9gy979sgsp6wj9046/position -decimals = 0 - -[factory/inj1zgrjmn0ak8w566fvruttuzu22lyuqgm0gwtn6x/ninja] -peggy_denom = factory/inj1zgrjmn0ak8w566fvruttuzu22lyuqgm0gwtn6x/ninja -decimals = 0 - -[factory/inj1zhwkngnvdh6wewmp75ka7q6jn3c4z8sglrvfgl/position] -peggy_denom = factory/inj1zhwkngnvdh6wewmp75ka7q6jn3c4z8sglrvfgl/position -decimals = 0 - -[factory/inj1zjjt92jzn7r2qfwuza67jhgjr79xfjdjy29ae8/BTC] -peggy_denom = factory/inj1zjjt92jzn7r2qfwuza67jhgjr79xfjdjy29ae8/BTC -decimals = 0 - -[factory/inj1zmunv4qvrnl5023drl008kqnm5dp5luwxylf4p/position] -peggy_denom = factory/inj1zmunv4qvrnl5023drl008kqnm5dp5luwxylf4p/position -decimals = 0 - -[factory/inj1zmy72r0sl4q85kxszv5jljqsvqsq4geqg8yvcz/position] -peggy_denom = factory/inj1zmy72r0sl4q85kxszv5jljqsvqsq4geqg8yvcz/position -decimals = 0 - -[factory/inj1znf9vj0gjl0uhewdqa7eqyvrjgmyqvmc7tvwrm/test3] -peggy_denom = factory/inj1znf9vj0gjl0uhewdqa7eqyvrjgmyqvmc7tvwrm/test3 -decimals = 0 - -[factory/inj1zr0qfmzlputn5x8g62l383wasj6tsqvu9l6fcv/position] -peggy_denom = factory/inj1zr0qfmzlputn5x8g62l383wasj6tsqvu9l6fcv/position -decimals = 0 - -[factory/inj1zszapyz8f2meqqccarkervwtcqq6994n6e4uce/position] -peggy_denom = factory/inj1zszapyz8f2meqqccarkervwtcqq6994n6e4uce/position -decimals = 0 - -[factory/inj1ztude0usp9vkxmaeh7pggx5lcc80rrwj97l3pz/position] -peggy_denom = factory/inj1ztude0usp9vkxmaeh7pggx5lcc80rrwj97l3pz/position -decimals = 0 - -[factory/inj1ztz8ftj8c87xczhfa24t0enntz86e0u4dp7sp3/position] -peggy_denom = factory/inj1ztz8ftj8c87xczhfa24t0enntz86e0u4dp7sp3/position -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj10khun6rk82dp2wdajh6z3vjsrac6wpuywt22yy] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj10khun6rk82dp2wdajh6z3vjsrac6wpuywt22yy -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj12yzugqf4uchk7y3j4mw5epwh88rw7hc7k79x2y] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj12yzugqf4uchk7y3j4mw5epwh88rw7hc7k79x2y -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj144r9lg7zjsmxkz34wa9cjj83mamfav3yr7pguc] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj144r9lg7zjsmxkz34wa9cjj83mamfav3yr7pguc -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1989lj26y5jcartkvj2x55vnef8kf5ayl6p67gw] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1989lj26y5jcartkvj2x55vnef8kf5ayl6p67gw -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1etyvn2kgsgl0fwlcwljsq7l85cep878v7n0n3z] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1etyvn2kgsgl0fwlcwljsq7l85cep878v7n0n3z -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1fm2wjk79v79qdm5nprxrevnmjxlnhpvclg84rq] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1fm2wjk79v79qdm5nprxrevnmjxlnhpvclg84rq -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1haaudm8yme03h45aflzerlsng098prk83pxany] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1haaudm8yme03h45aflzerlsng098prk83pxany -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1j3twfggy7t48hq3rkwnt9lf3q7q3ud58jzdnx6] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1j3twfggy7t48hq3rkwnt9lf3q7q3ud58jzdnx6 -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1jd2sq5eh25dszupf08dgnhha5dufmp5u85zhgj] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1jd2sq5eh25dszupf08dgnhha5dufmp5u85zhgj -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1juujgtcttsykxmqn0rr5whsr0djc73pgawr622] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1juujgtcttsykxmqn0rr5whsr0djc73pgawr622 -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1l0ge2pwpr74ck23p99f29p7tpkuj6uuhxrvt5x] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1l0ge2pwpr74ck23p99f29p7tpkuj6uuhxrvt5x -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1pllmhm80hnlh56u4aledjqye989cf83hhfwrxk] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1pllmhm80hnlh56u4aledjqye989cf83hhfwrxk -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1qpha543j56js3nfx0ywd3m5av7qhl68qcad8h4] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1qpha543j56js3nfx0ywd3m5av7qhl68qcad8h4 -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1rejyjsu3rdgx0w9l3v07ar220n5s7tawg48p2a] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1rejyjsu3rdgx0w9l3v07ar220n5s7tawg48p2a -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1rltxjlvs4wz53jldufklaaxar73n5ytpcpacfp] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1rltxjlvs4wz53jldufklaaxar73n5ytpcpacfp -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1ru65qlj534a8wu4guw9txetpkev43ausxdsv3s] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1ru65qlj534a8wu4guw9txetpkev43ausxdsv3s -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1s5v5rmqmplwa68fj26rztlyh0dzy83sqd255xq] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1s5v5rmqmplwa68fj26rztlyh0dzy83sqd255xq -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1sln84pshkreuvash6js0vu2gzcnwfg34lugwt7] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1sln84pshkreuvash6js0vu2gzcnwfg34lugwt7 -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1stjq2xyc7mtxp3ms60rauw2v6fvpfdl04d2qxj] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1stjq2xyc7mtxp3ms60rauw2v6fvpfdl04d2qxj -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1wm6uhg9ht6089c8h3yev2mt454s54v8kanxmcf] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1wm6uhg9ht6089c8h3yev2mt454s54v8kanxmcf -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1xdc8dhazn69vt4u6elpcn0kwxlmq0hjtjwytq5] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1xdc8dhazn69vt4u6elpcn0kwxlmq0hjtjwytq5 -decimals = 0 - -[factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1y3pkfkrr3nr23320a3w4t2x5qlfk0l5w0s6rwl] -peggy_denom = factory/inj1zxd4pvdczkw52yhum0u23vsxzhqr7jyuau7cef/lpinj1y3pkfkrr3nr23320a3w4t2x5qlfk0l5w0s6rwl -decimals = 0 - -[factory/inj1zzm7s6thfkfr2hhpaq6m2c7xc0g3nek7gvrcht/inj136zzmzanrgth7hw4f4z09eqym5ur76wr664la2] -peggy_denom = factory/inj1zzm7s6thfkfr2hhpaq6m2c7xc0g3nek7gvrcht/inj136zzmzanrgth7hw4f4z09eqym5ur76wr664la2 -decimals = 0 - -[factory/inj1zzm7s6thfkfr2hhpaq6m2c7xc0g3nek7gvrcht/inj1rfl7neqrtmhmujrktpll075latrq760c96emkc] -peggy_denom = factory/inj1zzm7s6thfkfr2hhpaq6m2c7xc0g3nek7gvrcht/inj1rfl7neqrtmhmujrktpll075latrq760c96emkc -decimals = 0 - -[fund0409] -peggy_denom = factory/inj1q9zul5e6j58gyfz0yym35wvtdmwzeevcnrs443/fund0409 -decimals = 9 - -[good] -peggy_denom = factory/inj1gvhyp8un5l9jpxpd90rdtj3ejd6qser2s2jxtz/good -decimals = 6 - -[hINJ] -peggy_denom = factory/inj1hdvy6tl89llqy3ze8lv6mz5qh66sx9enn0jxg6/inj1mz7mfhgx8tuvjqut03qdujrkzwlx9xhcj6yldc -decimals = 18 - -[hk1] -peggy_denom = factory/inj1phj8tp8nul9cglg2unuu9dp43v8m0aptx7a8gd/hk1 -decimals = 9 - -[hk2] -peggy_denom = factory/inj143698t5gp32ykkhrhhcf2v684htuhqt0t9amwd/hk2 -decimals = 9 - -[hng] -peggy_denom = factory/inj1hslxdwcszyjesl0e7q339qvqme8jtpkgvfw667/hng -decimals = 6 - -[hoa] -peggy_denom = factory/inj1wy4jy5u9agsc6le2cp6lx8p77uxdyuuha256vp/hoa -decimals = 9 - -[hoa1] -peggy_denom = factory/inj1d4eex70m7pzvv73993gepxzxxt35z4z6k3vyy6/hoa1 -decimals = 9 - -[hoa2] -peggy_denom = factory/inj1a6xs3gyhzrtm86f3jentj5fgeydjfq4q9zl6m2/hoa2 -decimals = 9 - -[hoa3] -peggy_denom = factory/inj1cjmxve82ylt7rmk4py8uvty9ccyrmg6ut0fdz3/hoa3 -decimals = 9 - -[hoa4] -peggy_denom = factory/inj1dwrgqjl2t5fsdchfvq9z5f20etl9rhtmrjde3z/hoa4 -decimals = 9 - -[hoa5] -peggy_denom = factory/inj150tu4havpyu7lr9sl2khsaznny2ta4qcxg2ux2/hoa5 -decimals = 9 - -[iUSD] -peggy_denom = factory/inj16a2uxar2v8uyj3xanx6tyvzaqmlqj6jj03829u/nUSD -decimals = 18 - -[ibc/2CD6478D5AFA173C86448E008B760934166AED04C3968874EA6E44D2ECEA236D] -peggy_denom = ibc/2CD6478D5AFA173C86448E008B760934166AED04C3968874EA6E44D2ECEA236D -decimals = 0 - -[ibc/45B1C97F9EF078E4E4E0DEBA0CCE451F7CCA62C051DD29A4C57B7C31F8EBF87D] -peggy_denom = ibc/45B1C97F9EF078E4E4E0DEBA0CCE451F7CCA62C051DD29A4C57B7C31F8EBF87D -decimals = 0 - -[ibc/51EF06F0C3D94C42CBB77F2E9FD853862B29D8524D69A389F761C94F12DDABFB] -peggy_denom = ibc/51EF06F0C3D94C42CBB77F2E9FD853862B29D8524D69A389F761C94F12DDABFB -decimals = 0 - -[ibc/6767A6D74DE6E67F282BF0DA664960588594E10FAE25C7568D0E9714854A614A] -peggy_denom = ibc/6767A6D74DE6E67F282BF0DA664960588594E10FAE25C7568D0E9714854A614A -decimals = 0 - -[ibc/728275E9A4A5485F9EE43886013B01426A4A5C6E9747C8F0F422492B74BF0DD5] -peggy_denom = ibc/728275E9A4A5485F9EE43886013B01426A4A5C6E9747C8F0F422492B74BF0DD5 -decimals = 0 - -[ibc/85F860A9556E285E2F5E6CBC39F04E8E7A497488B9E7D11912030EB49D5E2CCB] -peggy_denom = ibc/85F860A9556E285E2F5E6CBC39F04E8E7A497488B9E7D11912030EB49D5E2CCB -decimals = 0 - -[ibc/86D3C0CC2008F9254902A58D2B24237BEFB9194F8CF1FF7E29312D932C31E841] -peggy_denom = ibc/86D3C0CC2008F9254902A58D2B24237BEFB9194F8CF1FF7E29312D932C31E841 -decimals = 0 - -[ibc/8D50C7D7F9EE586BC705D088C68601ACA5D192C63F6043B785676963074774B3] -peggy_denom = ibc/8D50C7D7F9EE586BC705D088C68601ACA5D192C63F6043B785676963074774B3 -decimals = 0 - -[ibc/97498452BF27CC90656FD7D6EFDA287FA2BFFFF3E84691C84CB9E0451F6DF0A4] -peggy_denom = ibc/97498452BF27CC90656FD7D6EFDA287FA2BFFFF3E84691C84CB9E0451F6DF0A4 -decimals = 0 - -[ibc/9E7EA73E3A4BA56CE72A4E574F529D43DABFEB1BDE5451515A21D6828E52EED5] -peggy_denom = ibc/9E7EA73E3A4BA56CE72A4E574F529D43DABFEB1BDE5451515A21D6828E52EED5 -decimals = 0 - -[ibc/9EBB1486F41AC90325E2BDB23F1EBE57BD6B0DDE25CC9E3051A5EAE2A589B032] -peggy_denom = ibc/9EBB1486F41AC90325E2BDB23F1EBE57BD6B0DDE25CC9E3051A5EAE2A589B032 -decimals = 0 - -[ibc/A2BBF23BE4234FD27AEF7269B30A124B91E3EB2D7F33E756B5EC2FC1F3DCF0B3] -peggy_denom = ibc/A2BBF23BE4234FD27AEF7269B30A124B91E3EB2D7F33E756B5EC2FC1F3DCF0B3 -decimals = 0 - -[ibc/B0D9A85855FFB4C6472AD514B48C91275453B2AFC501472EE29895C400463E6B] -peggy_denom = ibc/B0D9A85855FFB4C6472AD514B48C91275453B2AFC501472EE29895C400463E6B -decimals = 0 - -[ibc/B8F94CEDA547914DC365232034474E8AFE503304BDE91D281C3AB5024060A491] -peggy_denom = ibc/B8F94CEDA547914DC365232034474E8AFE503304BDE91D281C3AB5024060A491 -decimals = 0 - -[ibc/BE8B9A10C7F6E014F617E4C883D24A8E34A4399C2E18D583DD9506CEADF0D7E5] -peggy_denom = ibc/BE8B9A10C7F6E014F617E4C883D24A8E34A4399C2E18D583DD9506CEADF0D7E5 -decimals = 0 - -[ibc/C738E90C95E4D7A405B7D3D8992EC554DDCC2079991AB5FF67051A99E02C95A1] -peggy_denom = ibc/C738E90C95E4D7A405B7D3D8992EC554DDCC2079991AB5FF67051A99E02C95A1 -decimals = 0 - -[ibc/C877F38C8B5172A906FBFDEBB243B8313C58CCF2F534C1EC5DD6819662051DDE] -peggy_denom = ibc/C877F38C8B5172A906FBFDEBB243B8313C58CCF2F534C1EC5DD6819662051DDE -decimals = 0 - -[ibc/D9C20413CBBD2CD0AA87141639F7048597F2A90A80F63D155A91F483BD04CFA3] -peggy_denom = ibc/D9C20413CBBD2CD0AA87141639F7048597F2A90A80F63D155A91F483BD04CFA3 -decimals = 0 - -[ibc/E1932BA371D397A1FD6066792D585348090F3764E2BA4F08298803ED8A76F226] -peggy_denom = ibc/E1932BA371D397A1FD6066792D585348090F3764E2BA4F08298803ED8A76F226 -decimals = 0 - -[ibc/E40FBDD3CB829D3A57D8A5588783C39620B4E4F26B08970DE0F8173D60E3E6E1] -peggy_denom = ibc/E40FBDD3CB829D3A57D8A5588783C39620B4E4F26B08970DE0F8173D60E3E6E1 -decimals = 0 - -[ibc/EBD5A24C554198EBAF44979C5B4D2C2D312E6EBAB71962C92F735499C7575839] -peggy_denom = ibc/EBD5A24C554198EBAF44979C5B4D2C2D312E6EBAB71962C92F735499C7575839 -decimals = 6 - -[ibc/F14B1670FD61AC2BA511C6260D940A120A47B27AAF8322FCDBBAD8E9967BB518] -peggy_denom = ibc/F14B1670FD61AC2BA511C6260D940A120A47B27AAF8322FCDBBAD8E9967BB518 -decimals = 0 - -[inj-test] -peggy_denom = factory/inj1dskr075p0ktts987r8h3jxcjce6h73flvmm8a4/inj-test -decimals = 6 - -[inj12ngevx045zpvacus9s6anr258gkwpmthnz80e9] -peggy_denom = inj12ngevx045zpvacus9s6anr258gkwpmthnz80e9 -decimals = 8 - -[inj12sqy9uzzl3h3vqxam7sz9f0yvmhampcgesh3qw] -peggy_denom = inj12sqy9uzzl3h3vqxam7sz9f0yvmhampcgesh3qw -decimals = 6 - -[inj14eaxewvy7a3fk948c3g3qham98mcqpm8v5y0dp] -peggy_denom = inj14eaxewvy7a3fk948c3g3qham98mcqpm8v5y0dp -decimals = 6 - -[inj1mz7mfhgx8tuvjqut03qdujrkzwlx9xhcj6yldc] -peggy_denom = inj1mz7mfhgx8tuvjqut03qdujrkzwlx9xhcj6yldc -decimals = 18 - -[inj1plsk58sxqjw9828aqzeskmc8xy9eu5kppw3jg4] -peggy_denom = inj1plsk58sxqjw9828aqzeskmc8xy9eu5kppw3jg4 -decimals = 8 - -[injjj] -peggy_denom = factory/inj1dqagu9cx72lph0rg3ghhuwj20cw9f8x7rq2zz6/injjj -decimals = 6 - -[injo] -peggy_denom = factory/inj1kt6ujkzdfv9we6t3ca344d3wquynrq6dg77qju/injo -decimals = 6 - -[injtest1] -peggy_denom = factory/inj1ef5ddgx4q83a8mmap2gxsc7w5q5pj6rmfhjaex/inj-test1 -decimals = 6 - -[jhd] -peggy_denom = factory/inj18pj77a29y9v40npsj59fvasa0frs69ljnsugm4/jhd -decimals = 9 - -[juj] -peggy_denom = factory/inj19da3yxdtxzdrzdg9vxwp0g68npthnttzvk72eh/juj -decimals = 9 - -[kUSD] -peggy_denom = factory/inj1kheekln6ukwx36hwa3d4u05a0yjnf97kjkes4h/kUSD -decimals = 6 - -[lol] -peggy_denom = factory/inj1x5h2d974gqwcskvk4pdtf25f7heml469e756ez/lol -decimals = 6 - -[lootbox1] -peggy_denom = factory/inj1llr45x92t7jrqtxvc02gpkcqhqr82dvyzkr4mz/lootbox1 -decimals = 0 - -[lootbox22] -peggy_denom = factory/inj1aetmaq5pswvfg6nhvgd4lt94qmg23ka3ljgxlm/lootbox22 -decimals = 0 - -[lym] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/lym -decimals = 6 - -[mINJo] -peggy_denom = factory/inj1tnphav95y6ekpvnta3ztsdyhla0543mkrfy7af/mINJo -decimals = 6 - -[mani] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/mani -decimals = 6 - -[minh1] -peggy_denom = factory/inj1muny6gyqj3mkpkksnyfag6v3l2dss8zgrpevft/minh1 -decimals = 9 - -[minh2] -peggy_denom = factory/inj1pyw2pkgp88fd7nfegecyynzs2n9305ccd4qxsa/minh2 -decimals = 9 - -[mmm] -peggy_denom = factory/inj1cv82kfsc0h4hd0q28d8zzrrn3hh42z2g4mn6tn/mmm -decimals = 9 - -[mnk] -peggy_denom = factory/inj1ckddr5lfwjvm2lvtzra0ftx7066seqr3navva0/mnk -decimals = 6 - -[nATOM] -peggy_denom = inj16jf4qkcarp3lan4wl2qkrelf4kduvvujwg0780 -decimals = 6 - -[nINJ] -peggy_denom = inj13xlpypcwl5fuc84uhqzzqumnrcfpptyl6w3vrf -decimals = 18 - -[nTIA] -peggy_denom = inj1fzquxxxam59z6fzewy2hvvreeh3m04x83zg4vv -decimals = 6 - -[nUSD] -peggy_denom = factory/inj13l36tutxv09s72adll47g3jykymj305zuw42r0/nUSD -decimals = 18 - -[nUSDT] -peggy_denom = inj1cy9hes20vww2yr6crvs75gxy5hpycya2hmjg9s -decimals = 6 - -[nWETH] -peggy_denom = inj1kehk5nvreklhylx22p3x0yjydfsz9fv3fvg5xt -decimals = 18 - -[napejas] -peggy_denom = factory/inj148sjw9h9n3n8gjw37reetwdlc7v4hfhl8r7vv3/napejas -decimals = 6 - -[ninja] -peggy_denom = factory/inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0/ninja -decimals = 6 - -[pal] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/pal -decimals = 6 - -[peggy0x1902e18fEB1234D00d880f1fACA5C8d74e8501E9] -peggy_denom = peggy0x1902e18fEB1234D00d880f1fACA5C8d74e8501E9 -decimals = 18 - -[peggy0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599] -peggy_denom = peggy0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 -decimals = 8 - -[peggy0x43123e1d077351267113ada8bE85A058f5D492De] -peggy_denom = peggy0x43123e1d077351267113ada8bE85A058f5D492De -decimals = 6 - -[peggy0x43871C5e85144EC340A3A63109F3F11C3745FE4E] -peggy_denom = peggy0x43871C5e85144EC340A3A63109F3F11C3745FE4E -decimals = 18 - -[peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7] -peggy_denom = peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7 -decimals = 0 - -[peggy0x5Ac3A2F6205a481C7a8984E4291E450e52cd0369] -peggy_denom = peggy0x5Ac3A2F6205a481C7a8984E4291E450e52cd0369 -decimals = 18 - -[peggy0x6F3050fa31c4CC2bB4A213B7d53c220Ac04Dd59D] -peggy_denom = peggy0x6F3050fa31c4CC2bB4A213B7d53c220Ac04Dd59D -decimals = 18 - -[peggy0x6c3ea9036406852006290770BEdFcAbA0e23A0e8] -peggy_denom = peggy0x6c3ea9036406852006290770BEdFcAbA0e23A0e8 -decimals = 6 - -[peggy0x8D983cb9388EaC77af0474fA441C4815500Cb7BB] -peggy_denom = peggy0x8D983cb9388EaC77af0474fA441C4815500Cb7BB -decimals = 6 - -[peggy0x91Efc46E7C52ab1fFca310Ca7972AeA48891E5CD] -peggy_denom = peggy0x91Efc46E7C52ab1fFca310Ca7972AeA48891E5CD -decimals = 18 - -[peggy0x9ff0b0dA21e77D775eB27A4845eCbF9700bfCF0B] -peggy_denom = peggy0x9ff0b0dA21e77D775eB27A4845eCbF9700bfCF0B -decimals = 18 - -[peggy0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6] -peggy_denom = peggy0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6 -decimals = 18 - -[peggy0xBe8d71D26525440A03311cc7fa372262c5354A3c] -peggy_denom = peggy0xBe8d71D26525440A03311cc7fa372262c5354A3c -decimals = 18 - -[peggy0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2] -peggy_denom = peggy0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 -decimals = 18 - -[peggy0xC2C527C0CACF457746Bd31B2a698Fe89de2b6d49] -peggy_denom = peggy0xC2C527C0CACF457746Bd31B2a698Fe89de2b6d49 -decimals = 6 - -[peggy0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C] -peggy_denom = peggy0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C -decimals = 6 - -[peggy0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080] -peggy_denom = peggy0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080 -decimals = 10 - -[peggy0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0] -peggy_denom = peggy0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0 -decimals = 6 - -[peggy0xe28b3b32b6c345a34ff64674606124dd5aceca30] -peggy_denom = peggy0xe28b3b32b6c345a34ff64674606124dd5aceca30 -decimals = 18 - -[peggy0xf9152067989BDc8783fF586624124C05A529A5D1] -peggy_denom = peggy0xf9152067989BDc8783fF586624124C05A529A5D1 -decimals = 6 - -[pip] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/pip -decimals = 6 - -[pli] -peggy_denom = factory/inj1jx7r5vjr7ykdg4weseluq7ta90emw02jyz5mt5/pli -decimals = 6 - -[pop] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/pop -decimals = 6 - -[pot] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/pot -decimals = 6 - -[pqc] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/pqc -decimals = 6 - -[pvs] -peggy_denom = factory/inj1rc34aepsrw03kczyskra9dlk9fzkx9jf48ccjc/pvs -decimals = 6 - -[red] -peggy_denom = factory/inj18xg8yh445ernwxdquklwpngffqv3agfyt5uqqs/red -decimals = 6 - -[rereerre] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/rereerre -decimals = 6 - -[rpo] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/rpo -decimals = 6 - -[rrrt] -peggy_denom = factory/inj13rgc9jwc3q7day42a7r2znhyvvvaauvlpuxwvh/rrrt -decimals = 6 - -[s] -peggy_denom = factory/inj1tvml37kkfymrwmx583ed9eyur3jjq72ftf67rc/inj-fuckingcomeon -decimals = 6 - -[sUSDE] -peggy_denom = peggy0x9D39A5DE30e57443BfF2A8307A4256c8797A3497 -decimals = 18 - -[share1] -peggy_denom = share1 -decimals = 18 - -[share10] -peggy_denom = share10 -decimals = 18 - -[share100] -peggy_denom = share100 -decimals = 18 - -[share101] -peggy_denom = share101 -decimals = 18 - -[share102] -peggy_denom = share102 -decimals = 18 - -[share103] -peggy_denom = share103 -decimals = 18 - -[share104] -peggy_denom = share104 -decimals = 18 - -[share105] -peggy_denom = share105 -decimals = 18 - -[share106] -peggy_denom = share106 -decimals = 18 - -[share107] -peggy_denom = share107 -decimals = 18 - -[share108] -peggy_denom = share108 -decimals = 18 - -[share109] -peggy_denom = share109 -decimals = 18 - -[share11] -peggy_denom = share11 -decimals = 18 - -[share110] -peggy_denom = share110 -decimals = 18 - -[share111] -peggy_denom = share111 -decimals = 18 - -[share112] -peggy_denom = share112 -decimals = 18 - -[share113] -peggy_denom = share113 -decimals = 18 - -[share114] -peggy_denom = share114 -decimals = 18 - -[share115] -peggy_denom = share115 -decimals = 18 - -[share116] -peggy_denom = share116 -decimals = 18 - -[share117] -peggy_denom = share117 -decimals = 18 - -[share118] -peggy_denom = share118 -decimals = 18 - -[share119] -peggy_denom = share119 -decimals = 18 - -[share12] -peggy_denom = share12 -decimals = 18 - -[share120] -peggy_denom = share120 -decimals = 18 - -[share121] -peggy_denom = share121 -decimals = 18 - -[share122] -peggy_denom = share122 -decimals = 18 - -[share123] -peggy_denom = share123 -decimals = 18 - -[share124] -peggy_denom = share124 -decimals = 18 - -[share125] -peggy_denom = share125 -decimals = 18 - -[share126] -peggy_denom = share126 -decimals = 18 - -[share127] -peggy_denom = share127 -decimals = 18 - -[share128] -peggy_denom = share128 -decimals = 18 - -[share129] -peggy_denom = share129 -decimals = 18 - -[share13] -peggy_denom = share13 -decimals = 18 - -[share130] -peggy_denom = share130 -decimals = 18 - -[share131] -peggy_denom = share131 -decimals = 18 - -[share132] -peggy_denom = share132 -decimals = 18 - -[share133] -peggy_denom = share133 -decimals = 18 - -[share134] -peggy_denom = share134 -decimals = 18 - -[share135] -peggy_denom = share135 -decimals = 18 - -[share136] -peggy_denom = share136 -decimals = 18 - -[share137] -peggy_denom = share137 -decimals = 18 - -[share138] -peggy_denom = share138 -decimals = 18 - -[share139] -peggy_denom = share139 -decimals = 18 - -[share14] -peggy_denom = share14 -decimals = 18 - -[share140] -peggy_denom = share140 -decimals = 18 - -[share141] -peggy_denom = share141 -decimals = 18 - -[share142] -peggy_denom = share142 -decimals = 18 - -[share143] -peggy_denom = share143 -decimals = 18 - -[share144] -peggy_denom = share144 -decimals = 18 - -[share145] -peggy_denom = share145 -decimals = 18 - -[share146] -peggy_denom = share146 -decimals = 18 - -[share147] -peggy_denom = share147 -decimals = 18 - -[share148] -peggy_denom = share148 -decimals = 18 - -[share149] -peggy_denom = share149 -decimals = 18 - -[share15] -peggy_denom = share15 -decimals = 18 - -[share150] -peggy_denom = share150 -decimals = 18 - -[share151] -peggy_denom = share151 -decimals = 18 - -[share152] -peggy_denom = share152 -decimals = 18 - -[share153] -peggy_denom = share153 -decimals = 18 - -[share154] -peggy_denom = share154 -decimals = 18 - -[share155] -peggy_denom = share155 -decimals = 18 - -[share156] -peggy_denom = share156 -decimals = 18 - -[share157] -peggy_denom = share157 -decimals = 18 - -[share158] -peggy_denom = share158 -decimals = 18 - -[share159] -peggy_denom = share159 -decimals = 18 - -[share16] -peggy_denom = share16 -decimals = 18 - -[share160] -peggy_denom = share160 -decimals = 18 - -[share17] -peggy_denom = share17 -decimals = 18 - -[share18] -peggy_denom = share18 -decimals = 18 - -[share19] -peggy_denom = share19 -decimals = 18 - -[share2] -peggy_denom = share2 -decimals = 18 - -[share20] -peggy_denom = share20 -decimals = 18 - -[share21] -peggy_denom = share21 -decimals = 18 - -[share22] -peggy_denom = share22 -decimals = 18 - -[share23] -peggy_denom = share23 -decimals = 18 - -[share24] -peggy_denom = share24 -decimals = 18 - -[share25] -peggy_denom = share25 -decimals = 18 - -[share27] -peggy_denom = share27 -decimals = 18 - -[share28] -peggy_denom = share28 -decimals = 18 - -[share29] -peggy_denom = share29 -decimals = 18 - -[share3] -peggy_denom = share3 -decimals = 18 - -[share30] -peggy_denom = share30 -decimals = 18 - -[share31] -peggy_denom = share31 -decimals = 18 - -[share32] -peggy_denom = share32 -decimals = 18 - -[share33] -peggy_denom = share33 -decimals = 18 - -[share34] -peggy_denom = share34 -decimals = 18 - -[share35] -peggy_denom = share35 -decimals = 18 - -[share36] -peggy_denom = share36 -decimals = 18 - -[share37] -peggy_denom = share37 -decimals = 18 - -[share38] -peggy_denom = share38 -decimals = 18 - -[share39] -peggy_denom = share39 -decimals = 18 - -[share4] -peggy_denom = share4 -decimals = 18 - -[share40] -peggy_denom = share40 -decimals = 18 - -[share41] -peggy_denom = share41 -decimals = 18 - -[share42] -peggy_denom = share42 -decimals = 18 - -[share43] -peggy_denom = share43 -decimals = 18 - -[share44] -peggy_denom = share44 -decimals = 18 - -[share45] -peggy_denom = share45 -decimals = 18 - -[share46] -peggy_denom = share46 -decimals = 18 - -[share47] -peggy_denom = share47 -decimals = 18 - -[share48] -peggy_denom = share48 -decimals = 18 - -[share49] -peggy_denom = share49 -decimals = 18 - -[share5] -peggy_denom = share5 -decimals = 18 - -[share50] -peggy_denom = share50 -decimals = 18 - -[share51] -peggy_denom = share51 -decimals = 18 - -[share52] -peggy_denom = share52 -decimals = 18 - -[share53] -peggy_denom = share53 -decimals = 18 - -[share54] -peggy_denom = share54 -decimals = 18 - -[share55] -peggy_denom = share55 -decimals = 18 - -[share56] -peggy_denom = share56 -decimals = 18 - -[share57] -peggy_denom = share57 -decimals = 18 - -[share58] -peggy_denom = share58 -decimals = 18 - -[share59] -peggy_denom = share59 -decimals = 18 - -[share6] -peggy_denom = share6 -decimals = 18 - -[share60] -peggy_denom = share60 -decimals = 18 - -[share61] -peggy_denom = share61 -decimals = 18 - -[share62] -peggy_denom = share62 -decimals = 18 - -[share63] -peggy_denom = share63 -decimals = 18 - -[share64] -peggy_denom = share64 -decimals = 18 - -[share65] -peggy_denom = share65 -decimals = 18 - -[share66] -peggy_denom = share66 -decimals = 18 - -[share67] -peggy_denom = share67 -decimals = 18 - -[share68] -peggy_denom = share68 -decimals = 18 - -[share69] -peggy_denom = share69 -decimals = 18 - -[share7] -peggy_denom = share7 -decimals = 18 - -[share70] -peggy_denom = share70 -decimals = 18 - -[share71] -peggy_denom = share71 -decimals = 18 - -[share72] -peggy_denom = share72 -decimals = 18 - -[share73] -peggy_denom = share73 -decimals = 18 - -[share74] -peggy_denom = share74 -decimals = 18 - -[share75] -peggy_denom = share75 -decimals = 18 - -[share76] -peggy_denom = share76 -decimals = 18 - -[share77] -peggy_denom = share77 -decimals = 18 - -[share78] -peggy_denom = share78 -decimals = 18 - -[share79] -peggy_denom = share79 -decimals = 18 - -[share8] -peggy_denom = share8 -decimals = 18 - -[share80] -peggy_denom = share80 -decimals = 18 - -[share81] -peggy_denom = share81 -decimals = 18 - -[share82] -peggy_denom = share82 -decimals = 18 - -[share83] -peggy_denom = share83 -decimals = 18 - -[share84] -peggy_denom = share84 -decimals = 18 - -[share85] -peggy_denom = share85 -decimals = 18 - -[share86] -peggy_denom = share86 -decimals = 18 - -[share87] -peggy_denom = share87 -decimals = 18 - -[share88] -peggy_denom = share88 -decimals = 18 - -[share89] -peggy_denom = share89 -decimals = 18 - -[share9] -peggy_denom = share9 -decimals = 18 - -[share90] -peggy_denom = share90 -decimals = 18 - -[share91] -peggy_denom = share91 -decimals = 18 - -[share92] -peggy_denom = share92 -decimals = 18 - -[share93] -peggy_denom = share93 -decimals = 18 - -[share94] -peggy_denom = share94 -decimals = 18 - -[share95] -peggy_denom = share95 -decimals = 18 - -[share96] -peggy_denom = share96 -decimals = 18 - -[share97] -peggy_denom = share97 -decimals = 18 - -[share98] -peggy_denom = share98 -decimals = 18 - -[share99] -peggy_denom = share99 -decimals = 18 - -[shroom1] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/shroom1 -decimals = 18 - -[shroom2] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/shroom2 -decimals = 18 - -[sis] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/sis -decimals = 6 - -[sms] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/sms -decimals = 6 - -[snake] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/snake -decimals = 18 - -[spore] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/spore -decimals = 18 - -[ssINJ] -peggy_denom = factory/inj1mlalkqq4egj7mz68x47tmpnf57aj7480g4evxa/ssainj -decimals = 0 - -[sssyn] -peggy_denom = factory/inj1mlalkqq4egj7mz68x47tmpnf57aj7480g4evxa/sssyn -decimals = 0 - -[stETH] -peggy_denom = peggy0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 -decimals = 18 - -[syl] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/syl -decimals = 6 - -[symbol] -peggy_denom = factory/inj1cdugmt5t0mgfsmfc99eyhe4fzps0937ae0jgqh/subdenom -decimals = 0 - -[symbol1] -peggy_denom = factory/inj14wj620xr3jgdc3p8yw0ravkmcyuac809xzmlys/symbol1 -decimals = 9 - -[symbol2] -peggy_denom = factory/inj1huarspl3twhrq8gdgakhlnw2kq7lv8mrhc5k3e/symbol2 -decimals = 9 - -[tclub] -peggy_denom = factory/inj10knx7vr764l30lwckhsk6ahwzg52akrrngccfh/tclub -decimals = 6 - -[test] -peggy_denom = factory/inj106ul9gd8vf0rdhs7gvul4e5eqju8uyr62twp6v/test -decimals = 6 - -[test123] -peggy_denom = factory/inj1kle8tjn2z2rq4vy6y2getsva6vd3n3j7uh2tds/test123 -decimals = 6 - -[test2] -peggy_denom = factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/test2 -decimals = 6 - -[test213] -peggy_denom = factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/test213 -decimals = 6 - -[test2134] -peggy_denom = factory/inj1asqp852arxkam8uckm2uvc4y365kdf06evq3zy/test2134 -decimals = 6 - -[test3] -peggy_denom = factory/inj1gvhyp8un5l9jpxpd90rdtj3ejd6qser2s2jxtz/test222 -decimals = 0 - -[test5] -peggy_denom = factory/inj1k4wfy3kjmhczjzttwatrpapdgpvaqxchr7gk7a/test7555 -decimals = 0 - -[testcoin21] -peggy_denom = factory/inj1rgetw4w58wy9p74ckx6lph5p8qg20md8u9z9eq/testcoin21 -decimals = 6 - -[testdokwon] -peggy_denom = factory/inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0/testdokwon -decimals = 6 - -[teste] -peggy_denom = factory/inj1fcj6mmsj44wm04ff77kuncqx6vg4cl9qsgugkg/teste -decimals = 6 - -[teste3] -peggy_denom = factory/inj1sn6u0472ds6v8x2x482gqqc36g0lz28uhq660v/teste3 -decimals = 8 - -[testestse] -peggy_denom = factory/inj1597pysn2u56ggcckykt2zzjuqkeezy5yxfujtj/TooTOO -decimals = 6 - -[testff] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/testff -decimals = 6 - -[testt] -peggy_denom = factory/inj1js6xyr58llrsme8zwydk2u6jty95q0d3aqhrq6/testt -decimals = 6 - -[testtoken] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/testtoken -decimals = 6 - -[testtt] -peggy_denom = factory/inj1js6xyr58llrsme8zwydk2u6jty95q0d3aqhrq6/testtt -decimals = 6 - -[testttt] -peggy_denom = factory/inj1cml96vmptgw99syqrrz8az79xer2pcgp0a885r/testttt -decimals = 6 - -[testtttt] -peggy_denom = factory/inj1yuaz9qw8m75w7gxn3j7p9ph9pcsp8krpune70q/testtttt -decimals = 6 - -[testy] -peggy_denom = factory/inj1d86g3stvh4jhypce4wfdl6gwa0zr9emq4445c5/test -decimals = 6 - -[tet] -peggy_denom = factory/inj1e5yundzcqr77d8nkswgxn9qyrhmr4hdk6qq9pl/tet -decimals = 6 - -[toby] -peggy_denom = factory/inj1temu696g738vldkgnn7fqmgvkq2l36qsng5ea7/toby -decimals = 6 - -[token-symbol] -peggy_denom = factory/inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe/token-symbol -decimals = 6 - -[tol] -peggy_denom = factory/inj1p30u767z9wwxmnh986snpp0c9u0sxwc9mnyexy/tol -decimals = 6 - -[tst] -peggy_denom = factory/inj1s2n5rq58sp9cak8808q0c0qtdpu5xhfgeu2y97/inj-icon -decimals = 6 - -[tst1] -peggy_denom = factory/inj1wt8aa8ct7eap805lsz9jh8spezf6mkxe0ejp79/tst1 -decimals = 6 - -[unknown] -peggy_denom = unknown -decimals = 0 - -[usssyn] -peggy_denom = factory/inj1mlalkqq4egj7mz68x47tmpnf57aj7480g4evxa/usssyn -decimals = 0 - -[uyO] -peggy_denom = factory/inj17gkuet8f6pssxd8nycm3qr9d9y699rupv6397z/uyO -decimals = 0 - -[vui] -peggy_denom = factory/inj103u7nu8pfhrudhl8ydylxlcsuwtw228gnt35x7/vui -decimals = 9 - -[wBTC] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/wbtc -decimals = 8 - -[wETH] -peggy_denom = factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/weth -decimals = 8 - -[wUSDM] -peggy_denom = peggy0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812 -decimals = 18 - -[xband] -peggy_denom = factory/inj1maeyvxfamtn8lfyxpjca8kuvauuf2qeu6gtxm3/Stake-0 -decimals = 6 - -[yolo] -peggy_denom = factory/inj1mt876zny9j6xae25h7hl7zuqf7gkx8q63k0426/yolo -decimals = 6 diff --git a/pyinjective/orderhash.py b/pyinjective/orderhash.py index dd6a43c6..a90147bb 100644 --- a/pyinjective/orderhash.py +++ b/pyinjective/orderhash.py @@ -5,6 +5,8 @@ from eth_account.messages import _hash_eip191_message as hash_eip191_message from hexbytes import HexBytes +from pyinjective.core.token import Token + class OrderInfo(EIP712Type): SubaccountId: "string" # noqa: F821 @@ -94,9 +96,9 @@ def compute_order_hashes(self, spot_orders, derivative_orders, subaccount_index) return order_hashes -def param_to_backend_go(param) -> int: - go_param = Decimal(param) / pow(10, 18) - return format(go_param, ".18f") +def param_to_backend_go(param: str) -> str: + go_param = Token.convert_value_from_chain_format(value=Decimal(param)) + return f"{go_param.normalize():.18f}" def parse_order_type(order): diff --git a/pyinjective/utils/denom.py b/pyinjective/utils/denom.py index b53fd4db..3c083fce 100644 --- a/pyinjective/utils/denom.py +++ b/pyinjective/utils/denom.py @@ -1,6 +1,3 @@ -from pyinjective.constant import devnet_config, mainnet_config, testnet_config - - class Denom: def __init__( self, @@ -17,33 +14,3 @@ def __init__( self.min_price_tick_size = min_price_tick_size self.min_quantity_tick_size = min_quantity_tick_size self.min_notional = min_notional - - @classmethod - def load_market(cls, network, market_id): - if network == "devnet": - config = devnet_config - elif network == "testnet": - config = testnet_config - else: - config = mainnet_config - - return cls( - description=config[market_id]["description"], - base=int(config[market_id]["base"]), - quote=int(config[market_id]["quote"]), - min_price_tick_size=float(config[market_id]["min_price_tick_size"]), - min_quantity_tick_size=float(config[market_id]["min_quantity_tick_size"]), - min_notional=float(config[market_id]["min_notional"]), - ) - - @classmethod - def load_peggy_denom(cls, network, symbol): - if network == "devnet": - config = devnet_config - elif network == "local": - config = devnet_config - elif network == "testnet": - config = testnet_config - else: - config = mainnet_config - return config[symbol]["peggy_denom"], int(config[symbol]["decimals"]) diff --git a/pyinjective/utils/fetch_metadata.py b/pyinjective/utils/fetch_metadata.py deleted file mode 100644 index 59efb99d..00000000 --- a/pyinjective/utils/fetch_metadata.py +++ /dev/null @@ -1,101 +0,0 @@ -import asyncio -from decimal import Decimal - -from pyinjective.async_client import AsyncClient -from pyinjective.core.network import Network - -metadata_template = """[{}] -description = '{} {} {}' -base = {} -quote = {} -min_price_tick_size = {} -min_display_price_tick_size = {} -min_quantity_tick_size = {} -min_display_quantity_tick_size = {} -min_notional = {} - -""" - -symbol_template = """[{}] -peggy_denom = {} -decimals = {} - -""" - -testnet_denom_output = "" -mainnet_denom_output = "" - - -async def fetch_denom(network) -> str: - denom_output = "" - - # fetch meta data for spot markets - client = AsyncClient(network) - spot_markets = await client.all_spot_markets() - for market in spot_markets.values(): - min_display_price_tick_size = market.min_price_tick_size / Decimal( - f"1e{market.quote_token.decimals - market.base_token.decimals}" - ) - min_display_quantity_tick_size = market.min_quantity_tick_size / Decimal(f"1e{market.base_token.decimals}") - config = metadata_template.format( - market.id, - network.string().capitalize(), - "Spot", - market.ticker, - market.base_token.decimals, - market.quote_token.decimals, - f"{market.min_price_tick_size.normalize():f}", - f"{min_display_price_tick_size.normalize():f}", - f"{market.min_quantity_tick_size.normalize():f}", - f"{min_display_quantity_tick_size.normalize():f}", - f"{market.min_notional.normalize():f}", - ) - denom_output += config - - # fetch meta data for derivative markets - client = AsyncClient(network) - derivative_markets = await client.all_derivative_markets() - for market in derivative_markets.values(): - min_display_price_tick_size = market.min_price_tick_size / Decimal(f"1e{market.quote_token.decimals}") - config = metadata_template.format( - market.id, - network.string().capitalize(), - "Derivative", - market.ticker, - 0, - market.quote_token.decimals, - f"{market.min_price_tick_size.normalize():f}", - f"{min_display_price_tick_size.normalize():f}", - f"{market.min_quantity_tick_size.normalize():f}", - f"{market.min_quantity_tick_size.normalize():f}", - f"{market.min_notional.normalize():f}", - ) - denom_output += config - - tokens = await client.all_tokens() - for token_symbol, token in sorted(tokens.items(), key=lambda dict_item: dict_item[0]): - symbol = symbol_template.format(token_symbol, token.denom, token.decimals) - denom_output += symbol - - return denom_output - - -async def main() -> None: - devnet = Network.devnet() - data = await fetch_denom(devnet) - with open("../denoms_devnet.ini", "w") as text_file: - text_file.write(data) - - testnet = Network.testnet() - data = await fetch_denom(testnet) - with open("../denoms_testnet.ini", "w") as text_file: - text_file.write(data) - - mainnet = Network.mainnet() - data = await fetch_denom(mainnet) - with open("../denoms_mainnet.ini", "w") as text_file: - text_file.write(data) - - -if __name__ == "__main__": - asyncio.get_event_loop().run_until_complete(main()) diff --git a/pyinjective/utils/metadata_validation.py b/pyinjective/utils/metadata_validation.py deleted file mode 100644 index 772d84fb..00000000 --- a/pyinjective/utils/metadata_validation.py +++ /dev/null @@ -1,158 +0,0 @@ -import asyncio -from decimal import Decimal -from typing import Any, List, Tuple - -import pyinjective.constant as constant -import pyinjective.utils.denom -from pyinjective.async_client import AsyncClient -from pyinjective.core.market import BinaryOptionMarket, DerivativeMarket, SpotMarket -from pyinjective.core.network import Network - - -def find_metadata_inconsistencies(network: Network) -> Tuple[List[Any]]: - client = AsyncClient(network) - ini_config = constant.CONFIGS[network.string()] - - spot_markets = asyncio.get_event_loop().run_until_complete(client.all_spot_markets()) - derivative_markets = asyncio.get_event_loop().run_until_complete(client.all_derivative_markets()) - binary_option_markets = asyncio.get_event_loop().run_until_complete(client.all_binary_option_markets()) - all_tokens = asyncio.get_event_loop().run_until_complete(client.all_tokens()) - - markets_not_found = [] - markets_with_diffs = [] - peggy_denoms_not_found = [] - peggy_denoms_with_diffs = [] - - for config_key in ini_config: - if config_key.startswith("0x"): - denom = pyinjective.utils.denom.Denom.load_market(network=network.string(), market_id=config_key) - if config_key in spot_markets: - market: SpotMarket = spot_markets[config_key] - if ( - market.base_token.decimals != denom.base - or market.quote_token.decimals != denom.quote - or market.min_price_tick_size != Decimal(str(denom.min_price_tick_size)) - or market.min_quantity_tick_size != Decimal(str(denom.min_quantity_tick_size)) - or market.min_notional != Decimal(str(denom.min_notional)) - ): - markets_with_diffs.append( - [ - { - "denom-market": config_key, - "base_decimals": denom.base, - "quote_decimals": denom.quote, - "min_quantity_tick_size": denom.min_quantity_tick_size, - "min_price_tick_size": denom.min_price_tick_size, - "min_notional": denom.min_notional, - }, - { - "newer-market": market.id, - "base_decimals": market.base_token.decimals, - "quote_decimals": market.quote_token.decimals, - "min_quantity_tick_size": float(market.min_quantity_tick_size), - "min_price_tick_size": float(market.min_price_tick_size), - "min_notional": float(market.min_notional), - "ticker": market.ticker, - }, - ] - ) - elif config_key in derivative_markets: - market: DerivativeMarket = derivative_markets[config_key] - if ( - market.quote_token.decimals != denom.quote - or market.min_price_tick_size != Decimal(str(denom.min_price_tick_size)) - or market.min_quantity_tick_size != Decimal(str(denom.min_quantity_tick_size)) - or market.min_notional != Decimal(str(denom.min_notional)) - ): - markets_with_diffs.append( - [ - { - "denom-market": config_key, - "quote_decimals": denom.quote, - "min_quantity_tick_size": denom.min_quantity_tick_size, - "min_price_tick_size": denom.min_price_tick_size, - "min_notional": denom.min_notional, - }, - { - "newer-market": market.id, - "quote_decimals": market.quote_token.decimals, - "min_quantity_tick_size": float(market.min_quantity_tick_size), - "min_price_tick_size": float(market.min_price_tick_size), - "min_notional": float(market.min_notional), - "ticker": market.ticker, - }, - ] - ) - elif config_key in binary_option_markets: - market: BinaryOptionMarket = binary_option_markets[config_key] - if ( - market.quote_token.decimals != denom.quote - or market.min_price_tick_size != Decimal(str(denom.min_price_tick_size)) - or market.min_quantity_tick_size != Decimal(str(denom.min_quantity_tick_size)) - or market.min_notional != Decimal(str(denom.min_notional)) - ): - markets_with_diffs.append( - [ - { - "denom-market": config_key, - "quote_decimals": denom.quote, - "min_quantity_tick_size": denom.min_quantity_tick_size, - "min_price_tick_size": denom.min_price_tick_size, - "min_notional": denom.min_notional, - }, - { - "newer-market": market.id, - "quote_decimals": market.quote_token.decimals, - "min_quantity_tick_size": float(market.min_quantity_tick_size), - "min_price_tick_size": float(market.min_price_tick_size), - "min_notional": float(market.min_notional), - "ticker": market.ticker, - }, - ] - ) - else: - markets_not_found.append({"denom-market": config_key, "description": denom.description}) - - elif config_key == "DEFAULT": - continue - else: - # the configuration is a token - peggy_denom, decimals = pyinjective.utils.denom.Denom.load_peggy_denom( - network=network.string(), symbol=config_key - ) - if config_key in all_tokens: - token = all_tokens[config_key] - if token.denom != peggy_denom or token.decimals != decimals: - peggy_denoms_with_diffs.append( - [ - {"denom_token": config_key, "peggy_denom": peggy_denom, "decimals": decimals}, - {"newer_token": token.symbol, "peggy_denom": token.denom, "decimals": token.decimals}, - ] - ) - else: - peggy_denoms_not_found.append( - {"denom_token": config_key, "peggy_denom": peggy_denom, "decimals": decimals} - ) - - return markets_with_diffs, markets_not_found, peggy_denoms_with_diffs, peggy_denoms_not_found - - -def print_metadata_mismatches(network: Network): - ( - markets_with_diffs, - markets_not_found, - peggy_denoms_with_diffs, - peggy_denoms_not_found, - ) = find_metadata_inconsistencies(network=network) - - for diff_pair in markets_with_diffs: - print(f"{diff_pair[0]}\n{diff_pair[1]}") - print("\n\n") - for missing_market in markets_not_found: - print(f"{missing_market}") - print("\n\n") - for diff_token in peggy_denoms_with_diffs: - print(f"{diff_token[0]}\n{diff_token[1]}") - print("\n\n") - for missing_peggy in peggy_denoms_not_found: - print(f"{missing_peggy}") diff --git a/tests/core/test_gas_limit_estimator.py b/tests/core/test_gas_limit_estimator.py index c3cff5ef..72b10ab4 100644 --- a/tests/core/test_gas_limit_estimator.py +++ b/tests/core/test_gas_limit_estimator.py @@ -1,5 +1,7 @@ from decimal import Decimal +import pytest + from pyinjective.composer import Composer from pyinjective.core.gas_limit_estimator import ( DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT, @@ -15,9 +17,15 @@ GasLimitEstimator, ) from pyinjective.core.market import BinaryOptionMarket +from pyinjective.core.network import Network from pyinjective.proto.cosmos.gov.v1beta1 import tx_pb2 as gov_tx_pb from pyinjective.proto.cosmwasm.wasm.v1 import tx_pb2 as wasm_tx_pb from pyinjective.proto.injective.exchange.v1beta1 import tx_pb2 as injective_exchange_tx_pb +from tests.model_fixtures.markets_fixtures import btc_usdt_perp_market # noqa: F401 +from tests.model_fixtures.markets_fixtures import first_match_bet_market # noqa: F401 +from tests.model_fixtures.markets_fixtures import inj_token # noqa: F401 +from tests.model_fixtures.markets_fixtures import inj_usdt_spot_market # noqa: F401 +from tests.model_fixtures.markets_fixtures import usdt_perp_token # noqa: F401 from tests.model_fixtures.markets_fixtures import usdt_token # noqa: F401 @@ -71,11 +79,26 @@ def test_estimation_for_governance_message(self): class TestGasLimitEstimatorForV1ExchangeMessages: - def test_estimation_for_batch_create_spot_limit_orders(self): - spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" - composer = Composer(network="testnet") + @pytest.fixture + def basic_composer(self, inj_usdt_spot_market, btc_usdt_perp_market, first_match_bet_market): + composer = Composer( + network=Network.devnet().string(), + spot_markets={inj_usdt_spot_market.id: inj_usdt_spot_market}, + derivative_markets={btc_usdt_perp_market.id: btc_usdt_perp_market}, + binary_option_markets={first_match_bet_market.id: first_match_bet_market}, + tokens={ + inj_usdt_spot_market.base_token.symbol: inj_usdt_spot_market.base_token, + inj_usdt_spot_market.quote_token.symbol: inj_usdt_spot_market.quote_token, + btc_usdt_perp_market.quote_token.symbol: btc_usdt_perp_market.quote_token, + }, + ) + + return composer + + def test_estimation_for_batch_create_spot_limit_orders(self, basic_composer): + spot_market_id = list(basic_composer.spot_markets.keys())[0] orders = [ - composer.spot_order( + basic_composer.spot_order( market_id=spot_market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -83,7 +106,7 @@ def test_estimation_for_batch_create_spot_limit_orders(self): quantity=Decimal("1"), order_type="BUY", ), - composer.spot_order( + basic_composer.spot_order( market_id=spot_market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -92,7 +115,7 @@ def test_estimation_for_batch_create_spot_limit_orders(self): order_type="BUY", ), ] - message = composer.msg_batch_create_spot_limit_orders(sender="sender", orders=orders) + message = basic_composer.msg_batch_create_spot_limit_orders(sender="sender", orders=orders) estimator = GasLimitEstimator.for_message(message=message) expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT @@ -100,27 +123,26 @@ def test_estimation_for_batch_create_spot_limit_orders(self): assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_cancel_spot_orders(self): - spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" - composer = Composer(network="testnet") + def test_estimation_for_batch_cancel_spot_orders(self, basic_composer): + spot_market_id = list(basic_composer.spot_markets.keys())[0] orders = [ - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", ), ] - message = composer.msg_batch_cancel_spot_orders(sender="sender", orders_data=orders) + message = basic_composer.msg_batch_cancel_spot_orders(sender="sender", orders_data=orders) estimator = GasLimitEstimator.for_message(message=message) expected_order_gas_limit = SPOT_ORDER_CANCELATION_GAS_LIMIT @@ -128,11 +150,10 @@ def test_estimation_for_batch_cancel_spot_orders(self): assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_create_derivative_limit_orders(self): - market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" - composer = Composer(network="testnet") + def test_estimation_for_batch_create_derivative_limit_orders(self, basic_composer): + market_id = list(basic_composer.derivative_markets.keys())[0] orders = [ - composer.derivative_order( + basic_composer.derivative_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -141,7 +162,7 @@ def test_estimation_for_batch_create_derivative_limit_orders(self): margin=Decimal(3), order_type="BUY", ), - composer.derivative_order( + basic_composer.derivative_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -151,7 +172,7 @@ def test_estimation_for_batch_create_derivative_limit_orders(self): order_type="SELL", ), ] - message = composer.msg_batch_create_derivative_limit_orders(sender="sender", orders=orders) + message = basic_composer.msg_batch_create_derivative_limit_orders(sender="sender", orders=orders) estimator = GasLimitEstimator.for_message(message=message) expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT @@ -159,27 +180,26 @@ def test_estimation_for_batch_create_derivative_limit_orders(self): assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_cancel_derivative_orders(self): - spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" - composer = Composer(network="testnet") + def test_estimation_for_batch_cancel_derivative_orders(self, basic_composer): + spot_market_id = list(basic_composer.spot_markets.keys())[0] orders = [ - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=spot_market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", ), ] - message = composer.msg_batch_cancel_derivative_orders(sender="sender", orders_data=orders) + message = basic_composer.msg_batch_cancel_derivative_orders(sender="sender", orders_data=orders) estimator = GasLimitEstimator.for_message(message=message) expected_order_gas_limit = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT @@ -187,11 +207,10 @@ def test_estimation_for_batch_cancel_derivative_orders(self): assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_update_orders_to_create_spot_orders(self): - market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" - composer = Composer(network="testnet") + def test_estimation_for_batch_update_orders_to_create_spot_orders(self, basic_composer): + market_id = list(basic_composer.spot_markets.keys())[0] orders = [ - composer.spot_order( + basic_composer.spot_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -199,7 +218,7 @@ def test_estimation_for_batch_update_orders_to_create_spot_orders(self): quantity=Decimal("1"), order_type="BUY", ), - composer.spot_order( + basic_composer.spot_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -208,7 +227,7 @@ def test_estimation_for_batch_update_orders_to_create_spot_orders(self): order_type="BUY", ), ] - message = composer.msg_batch_update_orders( + message = basic_composer.msg_batch_update_orders( sender="senders", derivative_orders_to_create=[], spot_orders_to_create=orders, @@ -222,11 +241,10 @@ def test_estimation_for_batch_update_orders_to_create_spot_orders(self): assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_update_orders_to_create_derivative_orders(self): - market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" - composer = Composer(network="testnet") + def test_estimation_for_batch_update_orders_to_create_derivative_orders(self, basic_composer): + market_id = list(basic_composer.derivative_markets.keys())[0] orders = [ - composer.derivative_order( + basic_composer.derivative_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -235,7 +253,7 @@ def test_estimation_for_batch_update_orders_to_create_derivative_orders(self): margin=Decimal(3), order_type="BUY", ), - composer.derivative_order( + basic_composer.derivative_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -245,7 +263,7 @@ def test_estimation_for_batch_update_orders_to_create_derivative_orders(self): order_type="SELL", ), ] - message = composer.msg_batch_update_orders( + message = basic_composer.msg_batch_update_orders( sender="senders", derivative_orders_to_create=orders, spot_orders_to_create=[], @@ -259,9 +277,8 @@ def test_estimation_for_batch_update_orders_to_create_derivative_orders(self): assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_token): - market_id = "0x230dcce315364ff6360097838701b14713e2f4007d704df20ed3d81d09eec957" - composer = Composer(network="testnet") + def test_estimation_for_batch_update_orders_to_create_binary_orders(self, basic_composer, usdt_token): + market_id = list(basic_composer.binary_option_markets.keys())[0] market = BinaryOptionMarket( id=market_id, status="active", @@ -280,9 +297,9 @@ def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_t min_quantity_tick_size=Decimal("1"), min_notional=Decimal(0), ) - composer.binary_option_markets[market.id] = market + basic_composer.binary_option_markets[market.id] = market orders = [ - composer.binary_options_order( + basic_composer.binary_options_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -291,7 +308,7 @@ def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_t margin=Decimal(3), order_type="BUY", ), - composer.binary_options_order( + basic_composer.binary_options_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -301,7 +318,7 @@ def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_t order_type="SELL", ), ] - message = composer.msg_batch_update_orders( + message = basic_composer.msg_batch_update_orders( sender="senders", derivative_orders_to_create=[], spot_orders_to_create=[], @@ -316,27 +333,26 @@ def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_t assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self): - market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" - composer = Composer(network="testnet") + def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self, basic_composer): + market_id = list(basic_composer.spot_markets.keys())[0] orders = [ - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", ), ] - message = composer.msg_batch_update_orders( + message = basic_composer.msg_batch_update_orders( sender="senders", derivative_orders_to_create=[], spot_orders_to_create=[], @@ -350,27 +366,26 @@ def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self): assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self): - market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" - composer = Composer(network="testnet") + def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self, basic_composer): + market_id = list(basic_composer.derivative_markets.keys())[0] orders = [ - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", ), ] - message = composer.msg_batch_update_orders( + message = basic_composer.msg_batch_update_orders( sender="senders", derivative_orders_to_create=[], spot_orders_to_create=[], @@ -384,27 +399,26 @@ def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self): assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_batch_update_orders_to_cancel_binary_orders(self): - market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" - composer = Composer(network="testnet") + def test_estimation_for_batch_update_orders_to_cancel_binary_orders(self, basic_composer): + market_id = list(basic_composer.binary_option_markets.keys())[0] orders = [ - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", ), - composer.order_data_without_mask( + basic_composer.order_data_without_mask( market_id=market_id, subaccount_id="subaccount_id", order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", ), ] - message = composer.msg_batch_update_orders( + message = basic_composer.msg_batch_update_orders( sender="senders", derivative_orders_to_create=[], spot_orders_to_create=[], @@ -479,11 +493,10 @@ def test_estimation_for_batch_update_orders_to_cancel_all_for_binary_options_mar assert expected_gas_limit + expected_message_gas_limit == estimator.gas_limit() - def test_estimation_for_exec_message(self): - market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" - composer = Composer(network="testnet") + def test_estimation_for_exec_message(self, basic_composer): + market_id = list(basic_composer.spot_markets.keys())[0] orders = [ - composer.spot_order( + basic_composer.spot_order( market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", @@ -492,14 +505,14 @@ def test_estimation_for_exec_message(self): order_type="BUY", ), ] - inner_message = composer.msg_batch_update_orders( + inner_message = basic_composer.msg_batch_update_orders( sender="senders", derivative_orders_to_create=[], spot_orders_to_create=orders, derivative_orders_to_cancel=[], spot_orders_to_cancel=[], ) - message = composer.MsgExec(grantee="grantee", msgs=[inner_message]) + message = basic_composer.MsgExec(grantee="grantee", msgs=[inner_message]) estimator = GasLimitEstimator.for_message(message=message) @@ -512,11 +525,11 @@ def test_estimation_for_exec_message(self): == estimator.gas_limit() ) - def test_estimation_for_generic_exchange_message(self): - composer = Composer(network="testnet") - message = composer.msg_create_spot_limit_order( + def test_estimation_for_generic_exchange_message(self, basic_composer): + market_id = list(basic_composer.spot_markets.keys())[0] + message = basic_composer.msg_create_spot_limit_order( sender="sender", - market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + market_id=market_id, subaccount_id="subaccount_id", fee_recipient="fee_recipient", price=Decimal("7.523"), diff --git a/tests/rpc_fixtures/markets_fixtures.py b/tests/rpc_fixtures/markets_fixtures.py index 2b14bb63..b4e35dfd 100644 --- a/tests/rpc_fixtures/markets_fixtures.py +++ b/tests/rpc_fixtures/markets_fixtures.py @@ -108,23 +108,25 @@ def usdt_perp_token_meta(): @pytest.fixture -def ape_usdt_spot_market_meta(ape_token_meta, usdt_token_meta_second_denom): - from pyinjective.proto.exchange import injective_spot_exchange_rpc_pb2 as spot_exchange_pb +def ape_usdt_spot_market_meta(): + from pyinjective.proto.injective.exchange.v2 import market_pb2 as market_pb - market = spot_exchange_pb.SpotMarketInfo( - market_id="0x8b67e705bb4e09c88aecfc295569481dbf2fe1d5efe364651fbe72385938e000", - market_status="active", + market = market_pb.SpotMarket( ticker="APE/USDT", base_denom="peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", - base_token_meta=ape_token_meta, - quote_denom="factory/peggy0x87aB3B4C8661e07D6372361211B96ed4Dc300000", - quote_token_meta=usdt_token_meta_second_denom, + quote_denom="factory/inj10vkkttgxdeqcgeppu20x9qtyvuaxxev8qh0awq/usdt", maker_fee_rate="-0.0001", taker_fee_rate="0.001", - service_provider_fee="0.4", - min_price_tick_size="0.000000000000001", - min_quantity_tick_size="1000000000000000", - min_notional="0.000000000001", + relayer_fee_share_rate="0.4", + market_id="0x8b67e705bb4e09c88aecfc295569481dbf2fe1d5efe364651fbe72385938e000", + status=1, + min_price_tick_size="0.01", + min_quantity_tick_size="1", + min_notional="5", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + base_decimals=18, + quote_decimals=6, ) return market @@ -132,22 +134,24 @@ def ape_usdt_spot_market_meta(ape_token_meta, usdt_token_meta_second_denom): @pytest.fixture def inj_usdt_spot_market_meta(inj_token_meta, usdt_token_meta): - from pyinjective.proto.exchange import injective_spot_exchange_rpc_pb2 as spot_exchange_pb + from pyinjective.proto.injective.exchange.v2 import market_pb2 as market_pb - market = spot_exchange_pb.SpotMarketInfo( - market_id="0x7a57e705bb4e09c88aecfc295569481dbf2fe1d5efe364651fbe72385938e9b0", - market_status="active", + market = market_pb.SpotMarket( ticker="INJ/USDT", base_denom="inj", - base_token_meta=inj_token_meta, quote_denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", - quote_token_meta=usdt_token_meta, maker_fee_rate="-0.0001", taker_fee_rate="0.001", - service_provider_fee="0.4", - min_price_tick_size="0.000000000000001", - min_quantity_tick_size="1000000000000000", - min_notional="0.000000000001", + relayer_fee_share_rate="0.4", + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + status=1, + min_price_tick_size="0.01", + min_quantity_tick_size="1", + min_notional="5", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + base_decimals=18, + quote_decimals=6, ) return market @@ -155,67 +159,90 @@ def inj_usdt_spot_market_meta(inj_token_meta, usdt_token_meta): @pytest.fixture def btc_usdt_perp_market_meta(usdt_perp_token_meta): - from pyinjective.proto.exchange import injective_derivative_exchange_rpc_pb2 as derivative_exchange_pb - - perpetual_market_info = derivative_exchange_pb.PerpetualMarketInfo( - hourly_funding_rate_cap="0.0000625", - hourly_interest_rate="0.00000416666", - next_funding_timestamp=1684764000, - funding_interval=3600, - ) - perpetual_market_funding = derivative_exchange_pb.PerpetualMarketFunding( - cumulative_funding="6880500093.266083891331674194", - cumulative_price="-0.952642601240470199", - last_timestamp=1684763442, + from pyinjective.proto.injective.exchange.v2 import ( + exchange_pb2 as exchange_pb, + market_pb2 as market_pb, + query_pb2 as exchange_query_pb, ) - market = derivative_exchange_pb.DerivativeMarketInfo( - market_id="0x4ca0f92fc28be0c9761326016b5a1a2177dd6375558365116b5bdda9abc229ce", - market_status="active", + market = market_pb.DerivativeMarket( ticker="BTC/USDT PERP", oracle_base="BTC", oracle_quote="USDT", - oracle_type="bandibc", + oracle_type=10, oracle_scale_factor=6, + quote_denom="peggy0xdAC17F958D2ee523a2206206994597C13D831ec7", + market_id="0x4ca0f92fc28be0c9761326016b5a1a2177dd6375558365116b5bdda9abc229ce", initial_margin_ratio="0.095", maintenance_margin_ratio="0.025", - quote_denom="peggy0xdAC17F958D2ee523a2206206994597C13D831ec7", - quote_token_meta=usdt_perp_token_meta, maker_fee_rate="-0.0001", taker_fee_rate="0.001", - service_provider_fee="0.4", - is_perpetual=True, - min_price_tick_size="1000000", - min_quantity_tick_size="0.0001", - perpetual_market_info=perpetual_market_info, - perpetual_market_funding=perpetual_market_funding, - min_notional="0.000001", + relayer_fee_share_rate="0.4", + isPerpetual=True, + status=1, + min_price_tick_size="0.01", + min_quantity_tick_size="1", + min_notional="5", + admin="inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr", + admin_permissions=1, + quote_decimals=6, + ) + market_info = market_pb.PerpetualMarketInfo( + market_id="0x4ca0f92fc28be0c9761326016b5a1a2177dd6375558365116b5bdda9abc229ce", + hourly_funding_rate_cap="625000000000000", + hourly_interest_rate="4166660000000", + next_funding_timestamp=1708099200, + funding_interval=3600, + ) + funding_info = market_pb.PerpetualMarketFunding( + cumulative_funding="-107853477278881692857461", + cumulative_price="0", + last_timestamp=1708099200, + ) + perpetual_info = exchange_query_pb.PerpetualMarketState( + market_info=market_info, + funding_info=funding_info, + ) + mid_price_and_tob = exchange_pb.MidPriceAndTOB( + mid_price="2000000000000000000", + best_buy_price="1000000000000000000", + best_sell_price="3000000000000000000", + ) + full_market = exchange_query_pb.FullDerivativeMarket( + market=market, + perpetual_info=perpetual_info, + mark_price="33803835513327368963000000", + mid_price_and_tob=mid_price_and_tob, ) - return market + return full_market @pytest.fixture def first_match_bet_market_meta(inj_usdt_spot_market_meta): - from pyinjective.proto.exchange import injective_derivative_exchange_rpc_pb2 as derivative_exchange_pb + from pyinjective.proto.injective.exchange.v2 import market_pb2 as market_pb - market = derivative_exchange_pb.BinaryOptionsMarketInfo( - market_id="0x230dcce315364ff6360097838701b14713e2f4007d704df20ed3d81d09eec957", - market_status="active", + market = market_pb.BinaryOptionsMarket( ticker="5fdbe0b1-1707800399-WAS", oracle_symbol="Frontrunner", oracle_provider="Frontrunner", - oracle_type="provider", + oracle_type=11, oracle_scale_factor=6, - expiration_timestamp=1707800399, - settlement_timestamp=1707843599, + expiration_timestamp=1708099200, + settlement_timestamp=1707099200, + admin="inj1zlh5sqevkfphtwnu9cul8p89vseme2eqt0snn9", quote_denom=inj_usdt_spot_market_meta.quote_denom, + market_id="0x230dcce315364ff6360097838701b14713e2f4007d704df20ed3d81d09eec957", maker_fee_rate="0", taker_fee_rate="0", - service_provider_fee="0.4", - min_price_tick_size="10000", + relayer_fee_share_rate="0.4", + status=1, + min_price_tick_size="0.01", min_quantity_tick_size="1", - min_notional="0", + settlement_price="1", + min_notional="1", + admin_permissions=1, + quote_decimals=6, ) return market diff --git a/tests/test_async_client.py b/tests/test_async_client.py index b67ed799..46e30d4b 100644 --- a/tests/test_async_client.py +++ b/tests/test_async_client.py @@ -6,13 +6,9 @@ from pyinjective.core.network import Network from pyinjective.proto.cosmos.bank.v1beta1 import query_pb2 as bank_query_pb from pyinjective.proto.cosmos.base.query.v1beta1 import pagination_pb2 as pagination_pb -from pyinjective.proto.exchange import ( - injective_derivative_exchange_rpc_pb2 as derivative_exchange_pb, - injective_spot_exchange_rpc_pb2 as spot_exchange_pb, -) +from pyinjective.proto.injective.exchange.v2 import query_pb2 as exchange_query_pb from tests.client.chain.grpc.configurable_bank_query_servicer import ConfigurableBankQueryServicer -from tests.client.indexer.configurable_derivative_query_servicer import ConfigurableDerivativeQueryServicer -from tests.client.indexer.configurable_spot_query_servicer import ConfigurableSpotQueryServicer +from tests.client.chain.grpc.configurable_exchange_v2_query_servicer import ConfigurableExchangeV2QueryServicer from tests.rpc_fixtures.markets_fixtures import ( # noqa: F401 ape_token_meta, ape_usdt_spot_market_meta, @@ -33,13 +29,8 @@ def bank_servicer(): @pytest.fixture -def spot_servicer(): - return ConfigurableSpotQueryServicer() - - -@pytest.fixture -def derivative_servicer(): - return ConfigurableDerivativeQueryServicer() +def exchange_servicer(): + return ConfigurableExchangeV2QueryServicer() class TestAsyncClient: @@ -82,8 +73,7 @@ async def test_get_account_logs_exception(self, caplog): @pytest.mark.asyncio async def test_initialize_tokens_and_markets( self, - spot_servicer, - derivative_servicer, + exchange_servicer, inj_usdt_spot_market_meta, ape_usdt_spot_market_meta, btc_usdt_perp_market_meta, @@ -91,24 +81,88 @@ async def test_initialize_tokens_and_markets( aioresponses, ): test_network = Network.local() - aioresponses.get(test_network.official_tokens_list_url, payload=[]) + tokens_list = [ + { + "address": "0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + "isNative": False, + "tokenVerification": "verified", + "decimals": 6, + "symbol": "APE", + "name": "Ape", + "logo": "https://imagedelivery.net/lPzngbR8EltRfBOi_WYaXw/6f015260-c589-499f-b692-a57964af9900/public", + "coinGeckoId": "", + "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", + "tokenType": "erc20", + "externalLogo": "unknown.png", + }, + { + "address": "0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + "isNative": False, + "tokenVerification": "verified", + "decimals": 6, + "symbol": "USDT", + "name": "Tether", + "logo": "https://imagedelivery.net/lPzngbR8EltRfBOi_WYaXw/a0bd252b-1005-47ef-d209-7c1c4a3cbf00/public", + "coinGeckoId": "tether", + "denom": "peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + "tokenType": "erc20", + "externalLogo": "usdt.png", + }, + { + "decimals": 6, + "symbol": "USDT", + "name": "Other USDT", + "logo": "https://imagedelivery.net/lPzngbR8EltRfBOi_WYaXw/6f015260-c589-499f-b692-a57964af9900/public", + "coinGeckoId": "", + "address": "factory/inj10vkkttgxdeqcgeppu20x9qtyvuaxxev8qh0awq/usdt", + "denom": "factory/inj10vkkttgxdeqcgeppu20x9qtyvuaxxev8qh0awq/usdt", + "externalLogo": "unknown.png", + "tokenType": "tokenFactory", + "tokenVerification": "internal", + }, + { + "address": "inj", + "isNative": True, + "tokenVerification": "verified", + "decimals": 18, + "symbol": "INJ", + "name": "Injective", + "logo": "https://imagedelivery.net/lPzngbR8EltRfBOi_WYaXw/18984c0b-3e61-431d-241d-dfbb60b57600/public", + "coinGeckoId": "injective-protocol", + "denom": "inj", + "tokenType": "native", + "externalLogo": "injective-v3.png", + }, + { + "decimals": 6, + "symbol": "USDTPERP", + "name": "USDT PERP", + "logo": "https://static.alchemyapi.io/images/assets/825.png", + "coinGeckoId": "", + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "denom": "peggy0xdAC17F958D2ee523a2206206994597C13D831ec7", + "externalLogo": "unknown.png", + "tokenType": "tokenFactory", + "tokenVerification": "internal", + }, + ] + aioresponses.get(test_network.official_tokens_list_url, payload=tokens_list) - spot_servicer.markets_responses.append( - spot_exchange_pb.MarketsResponse(markets=[inj_usdt_spot_market_meta, ape_usdt_spot_market_meta]) + exchange_servicer.spot_markets_responses.append( + exchange_query_pb.QuerySpotMarketsResponse(markets=[inj_usdt_spot_market_meta, ape_usdt_spot_market_meta]) ) - derivative_servicer.markets_responses.append( - derivative_exchange_pb.MarketsResponse(markets=[btc_usdt_perp_market_meta]) + exchange_servicer.derivative_markets_responses.append( + exchange_query_pb.QueryDerivativeMarketsResponse(markets=[btc_usdt_perp_market_meta]) ) - derivative_servicer.binary_options_markets_responses.append( - derivative_exchange_pb.BinaryOptionsMarketsResponse(markets=[first_match_bet_market_meta]) + exchange_servicer.binary_options_markets_responses.append( + exchange_query_pb.QueryBinaryMarketsResponse(markets=[first_match_bet_market_meta]) ) client = AsyncClient( network=test_network, ) - client.exchange_spot_api._stub = spot_servicer - client.exchange_derivative_api._stub = derivative_servicer + client.chain_exchange_v2_api._stub = exchange_servicer await client._initialize_tokens_and_markets() @@ -116,8 +170,8 @@ async def test_initialize_tokens_and_markets( assert 5 == len(all_tokens) inj_symbol, usdt_symbol = inj_usdt_spot_market_meta.ticker.split("/") ape_symbol, _ = ape_usdt_spot_market_meta.ticker.split("/") - alternative_usdt_name = ape_usdt_spot_market_meta.quote_token_meta.name - usdt_perp_symbol = btc_usdt_perp_market_meta.quote_token_meta.symbol + alternative_usdt_name = "Other USDT" + usdt_perp_symbol = "USDTPERP" assert inj_symbol in all_tokens assert usdt_symbol in all_tokens assert alternative_usdt_name in all_tokens @@ -131,7 +185,9 @@ async def test_initialize_tokens_and_markets( all_derivative_markets = await client.all_derivative_markets() assert 1 == len(all_derivative_markets) - assert any((btc_usdt_perp_market_meta.market_id == market.id for market in all_derivative_markets.values())) + assert any( + (btc_usdt_perp_market_meta.market.market_id == market.id for market in all_derivative_markets.values()) + ) all_binary_option_markets = await client.all_binary_option_markets() assert 1 == len(all_binary_option_markets) @@ -142,8 +198,7 @@ async def test_initialize_tokens_and_markets( @pytest.mark.asyncio async def test_tokens_and_markets_initialization_read_tokens_from_official_list( self, - spot_servicer, - derivative_servicer, + exchange_servicer, inj_usdt_spot_market_meta, ape_usdt_spot_market_meta, btc_usdt_perp_market_meta, @@ -187,18 +242,19 @@ async def test_tokens_and_markets_initialization_read_tokens_from_official_list( ] aioresponses.get(test_network.official_tokens_list_url, payload=tokens_list) - spot_servicer.markets_responses.append(spot_exchange_pb.MarketsResponse(markets=[])) - derivative_servicer.markets_responses.append(derivative_exchange_pb.MarketsResponse(markets=[])) - derivative_servicer.binary_options_markets_responses.append( - derivative_exchange_pb.BinaryOptionsMarketsResponse(markets=[]) + exchange_servicer.spot_markets_responses.append(exchange_query_pb.QuerySpotMarketsResponse(markets=[])) + exchange_servicer.derivative_markets_responses.append( + exchange_query_pb.QueryDerivativeMarketsResponse(markets=[]) + ) + exchange_servicer.binary_options_markets_responses.append( + exchange_query_pb.QueryBinaryMarketsResponse(markets=[]) ) client = AsyncClient( network=test_network, ) - client.exchange_spot_api._stub = spot_servicer - client.exchange_derivative_api._stub = derivative_servicer + client.chain_exchange_v2_api._stub = exchange_servicer await client._initialize_tokens_and_markets() @@ -210,8 +266,7 @@ async def test_tokens_and_markets_initialization_read_tokens_from_official_list( async def test_initialize_tokens_from_chain_denoms( self, bank_servicer, - spot_servicer, - derivative_servicer, + exchange_servicer, smart_denom_metadata, aioresponses, ): @@ -229,19 +284,20 @@ async def test_initialize_tokens_from_chain_denoms( ) ) - spot_servicer.markets_responses.append(spot_exchange_pb.MarketsResponse(markets=[])) - derivative_servicer.markets_responses.append(derivative_exchange_pb.MarketsResponse(markets=[])) - derivative_servicer.binary_options_markets_responses.append( - derivative_exchange_pb.BinaryOptionsMarketsResponse(markets=[]) + exchange_servicer.spot_markets_responses.append(exchange_query_pb.QuerySpotMarketsResponse(markets=[])) + exchange_servicer.derivative_markets_responses.append( + exchange_query_pb.QueryDerivativeMarketsResponse(markets=[]) + ) + exchange_servicer.binary_options_markets_responses.append( + exchange_query_pb.QueryBinaryMarketsResponse(markets=[]) ) client = AsyncClient( network=test_network, ) + client.chain_exchange_v2_api._stub = exchange_servicer client.bank_api._stub = bank_servicer - client.exchange_spot_api._stub = spot_servicer - client.exchange_derivative_api._stub = derivative_servicer await client._initialize_tokens_and_markets() await client.initialize_tokens_from_chain_denoms() diff --git a/tests/test_composer.py b/tests/test_composer.py index d1eaa8f0..85a02d2e 100644 --- a/tests/test_composer.py +++ b/tests/test_composer.py @@ -7,6 +7,7 @@ from pyinjective.composer import Composer from pyinjective.constant import ADDITIONAL_CHAIN_FORMAT_DECIMALS, INJ_DECIMALS from pyinjective.core.network import Network +from pyinjective.core.token import Token from tests.model_fixtures.markets_fixtures import btc_usdt_perp_market # noqa: F401 from tests.model_fixtures.markets_fixtures import first_match_bet_market # noqa: F401 from tests.model_fixtures.markets_fixtures import inj_token # noqa: F401 @@ -36,26 +37,6 @@ def basic_composer(self, inj_usdt_spot_market, btc_usdt_perp_market, first_match return composer - def test_composer_initialization_from_ini_files(self): - composer = Composer(network=Network.devnet().string()) - - inj_token = composer.tokens["INJ"] - inj_usdt_spot_market = next( - (market for market in composer.spot_markets.values() if market.ticker == "'Devnet Spot INJ/USDT'") - ) - inj_usdt_perp_market = next( - ( - market - for market in composer.derivative_markets.values() - if market.ticker == "'Devnet Derivative INJ/USDT PERP'" - ) - ) - - assert 18 == inj_token.decimals - assert 18 == inj_usdt_spot_market.base_token.decimals - assert 6 == inj_usdt_spot_market.quote_token.decimals - assert 6 == inj_usdt_perp_market.quote_token.decimals - def test_msg_create_denom(self, basic_composer: Composer): sender = "inj1apmvarl2xyv6kecx2ukkeymddw3we4zkygjyc0" subdenom = "inj-test" @@ -247,7 +228,7 @@ def test_msg_deposit(self, basic_composer): amount = 100 denom = "inj" - expected_amount = basic_composer.convert_value_to_chain_format(value=Decimal(str(amount))) + expected_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) message = basic_composer.msg_deposit_v2( sender=sender, @@ -287,7 +268,7 @@ def test_msg_withdraw(self, basic_composer): "sender": sender, "subaccountId": subaccount_id, "amount": { - "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(str(amount))):f}", + "amount": f"{Token.convert_value_to_chain_format(value=Decimal(str(amount))):f}", "denom": denom, }, } @@ -320,9 +301,9 @@ def test_msg_instant_spot_market_launch(self, basic_composer): quote_decimals=quote_decimals, ) - chain_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) expected_message = { "sender": sender, @@ -421,13 +402,13 @@ def test_msg_instant_expiry_futures_market_launch(self, basic_composer): maintenance_margin_ratio = Decimal("0.03") min_notional = Decimal("2") - expected_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) - expected_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) - expected_maker_fee_rate = basic_composer.convert_value_to_chain_format(value=maker_fee_rate) - expected_taker_fee_rate = basic_composer.convert_value_to_chain_format(value=taker_fee_rate) - expected_initial_margin_ratio = basic_composer.convert_value_to_chain_format(value=initial_margin_ratio) - expected_maintenance_margin_ratio = basic_composer.convert_value_to_chain_format(value=maintenance_margin_ratio) - expected_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) + expected_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) + expected_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) + expected_maker_fee_rate = Token.convert_value_to_chain_format(value=maker_fee_rate) + expected_taker_fee_rate = Token.convert_value_to_chain_format(value=taker_fee_rate) + expected_initial_margin_ratio = Token.convert_value_to_chain_format(value=initial_margin_ratio) + expected_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=maintenance_margin_ratio) + expected_min_notional = Token.convert_value_to_chain_format(value=min_notional) message = basic_composer.msg_instant_expiry_futures_market_launch_v2( sender=sender, @@ -583,9 +564,9 @@ def test_msg_create_spot_limit_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = basic_composer.convert_value_to_chain_format(value=price) - expected_quantity = basic_composer.convert_value_to_chain_format(value=quantity) - expected_trigger_price = basic_composer.convert_value_to_chain_format(value=trigger_price) + expected_price = Token.convert_value_to_chain_format(value=price) + expected_quantity = Token.convert_value_to_chain_format(value=quantity) + expected_trigger_price = Token.convert_value_to_chain_format(value=trigger_price) assert "injective.exchange.v2.MsgCreateSpotLimitOrder" == message.DESCRIPTOR.full_name expected_message = { @@ -677,12 +658,12 @@ def test_msg_create_spot_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{basic_composer.convert_value_to_chain_format(value=price).normalize():f}", - "quantity": f"{basic_composer.convert_value_to_chain_format(value=quantity).normalize():f}", + "price": f"{Token.convert_value_to_chain_format(value=price).normalize():f}", + "quantity": f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}", "cid": cid, }, "orderType": order_type, - "triggerPrice": f"{basic_composer.convert_value_to_chain_format(value=trigger_price).normalize():f}", + "triggerPrice": f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -906,13 +887,13 @@ def test_msg_create_derivative_limit_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{basic_composer.convert_value_to_chain_format(value=price).normalize():f}", - "quantity": f"{basic_composer.convert_value_to_chain_format(value=quantity).normalize():f}", + "price": f"{Token.convert_value_to_chain_format(value=price).normalize():f}", + "quantity": f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{basic_composer.convert_value_to_chain_format(value=margin).normalize():f}", + "margin": f"{Token.convert_value_to_chain_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{basic_composer.convert_value_to_chain_format(value=trigger_price).normalize():f}", + "triggerPrice": f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -991,13 +972,13 @@ def test_msg_create_derivative_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{basic_composer.convert_value_to_chain_format(value=price).normalize():f}", - "quantity": f"{basic_composer.convert_value_to_chain_format(value=quantity).normalize():f}", + "price": f"{Token.convert_value_to_chain_format(value=price).normalize():f}", + "quantity": f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{basic_composer.convert_value_to_chain_format(value=margin).normalize():f}", + "margin": f"{Token.convert_value_to_chain_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{basic_composer.convert_value_to_chain_format(value=trigger_price).normalize():f}", + "triggerPrice": f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -1108,9 +1089,9 @@ def test_msg_instant_binary_options_market_launch(self, basic_composer): min_notional=min_notional, ) - chain_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) + chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) expected_message = { "sender": sender, @@ -1119,8 +1100,8 @@ def test_msg_instant_binary_options_market_launch(self, basic_composer): "oracleProvider": oracle_provider, "oracleType": oracle_type, "oracleScaleFactor": oracle_scale_factor, - "makerFeeRate": f"{basic_composer.convert_value_to_chain_format(value=maker_fee_rate).normalize():f}", - "takerFeeRate": f"{basic_composer.convert_value_to_chain_format(value=taker_fee_rate).normalize():f}", + "makerFeeRate": f"{Token.convert_value_to_chain_format(value=maker_fee_rate).normalize():f}", + "takerFeeRate": f"{Token.convert_value_to_chain_format(value=taker_fee_rate).normalize():f}", "expirationTimestamp": str(expiration_timestamp), "settlementTimestamp": str(settlement_timestamp), "admin": admin, @@ -1160,10 +1141,10 @@ def test_msg_create_binary_options_limit_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = basic_composer.convert_value_to_chain_format(value=price) - expected_quantity = basic_composer.convert_value_to_chain_format(value=quantity) - expected_margin = basic_composer.convert_value_to_chain_format(value=margin) - expected_trigger_price = basic_composer.convert_value_to_chain_format(value=trigger_price) + expected_price = Token.convert_value_to_chain_format(value=price) + expected_quantity = Token.convert_value_to_chain_format(value=quantity) + expected_margin = Token.convert_value_to_chain_format(value=margin) + expected_trigger_price = Token.convert_value_to_chain_format(value=trigger_price) expected_message = { "sender": sender, @@ -1219,13 +1200,13 @@ def test_msg_create_binary_options_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{basic_composer.convert_value_to_chain_format(value=price).normalize():f}", - "quantity": f"{basic_composer.convert_value_to_chain_format(value=quantity).normalize():f}", + "price": f"{Token.convert_value_to_chain_format(value=price).normalize():f}", + "quantity": f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{basic_composer.convert_value_to_chain_format(value=margin).normalize():f}", + "margin": f"{Token.convert_value_to_chain_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{basic_composer.convert_value_to_chain_format(value=trigger_price).normalize():f}", + "triggerPrice": f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -1295,7 +1276,7 @@ def test_msg_subaccount_transfer(self, basic_composer): "sourceSubaccountId": source_subaccount_id, "destinationSubaccountId": destination_subaccount_id, "amount": { - "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(str(amount))).normalize():f}", + "amount": f"{Token.convert_value_to_chain_format(value=Decimal(str(amount))).normalize():f}", "denom": denom, }, } @@ -1325,7 +1306,7 @@ def test_msg_external_transfer(self, basic_composer): "sourceSubaccountId": source_subaccount_id, "destinationSubaccountId": destination_subaccount_id, "amount": { - "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(str(amount))).normalize():f}", + "amount": f"{Token.convert_value_to_chain_format(value=Decimal(str(amount))).normalize():f}", "denom": denom, }, } @@ -1397,7 +1378,7 @@ def test_msg_increase_position_margin(self, basic_composer): destination_subaccount_id = "0xc6fe5d33615a1c52c08018c47e8bc53646a0e101000000000000000000000000" amount = Decimal(100) - expected_amount = basic_composer.convert_value_to_chain_format(value=amount) + expected_amount = Token.convert_value_to_chain_format(value=amount) message = basic_composer.msg_increase_position_margin_v2( sender=sender, @@ -1427,7 +1408,7 @@ def test_msg_decrease_position_margin(self, basic_composer): destination_subaccount_id = "0xc6fe5d33615a1c52c08018c47e8bc53646a0e101000000000000000000000000" amount = Decimal(100) - expected_amount = basic_composer.convert_value_to_chain_format(value=amount) + expected_amount = Token.convert_value_to_chain_format(value=amount) message = basic_composer.msg_decrease_position_margin_v2( sender=sender, @@ -1474,7 +1455,7 @@ def test_msg_admin_update_binary_options_market(self, basic_composer): expiration_timestamp = 1630000000 settlement_timestamp = 1660000000 - expected_settlement_price = basic_composer.convert_value_to_chain_format(value=settlement_price) + expected_settlement_price = Token.convert_value_to_chain_format(value=settlement_price) message = basic_composer.msg_admin_update_binary_options_market_v2( sender=sender, @@ -1507,9 +1488,9 @@ def test_msg_update_spot_market(self, basic_composer): min_quantity_tick_size = Decimal("10") min_notional = Decimal("5") - expected_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) - expected_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) - expected_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) + expected_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) + expected_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) + expected_min_notional = Token.convert_value_to_chain_format(value=min_notional) message = basic_composer.msg_update_spot_market_v2( admin=sender, @@ -1544,11 +1525,11 @@ def test_msg_update_derivative_market(self, basic_composer): initial_margin_ratio = Decimal("0.05") maintenance_margin_ratio = Decimal("0.009") - expected_min_price_tick_size = basic_composer.convert_value_to_chain_format(value=min_price_tick_size) - expected_min_quantity_tick_size = basic_composer.convert_value_to_chain_format(value=min_quantity_tick_size) - expected_min_notional = basic_composer.convert_value_to_chain_format(value=min_notional) - expected_initial_margin_ratio = basic_composer.convert_value_to_chain_format(value=initial_margin_ratio) - expected_maintenance_margin_ratio = basic_composer.convert_value_to_chain_format(value=maintenance_margin_ratio) + expected_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) + expected_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) + expected_min_notional = Token.convert_value_to_chain_format(value=min_notional) + expected_initial_margin_ratio = Token.convert_value_to_chain_format(value=initial_margin_ratio) + expected_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=maintenance_margin_ratio) message = basic_composer.msg_update_derivative_market_v2( admin=sender, @@ -1957,7 +1938,7 @@ def test_msg_create_insurance_fund(self, basic_composer): "oracleType": "Band", "expiry": "-1", "initialDeposit": { - "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal('1')).normalize():f}", + "amount": f"{Token.convert_value_to_chain_format(value=Decimal('1')).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, } @@ -1980,11 +1961,11 @@ def test_msg_send_to_eth_fund(self, basic_composer): "sender": "sender", "ethDest": "eth_dest", "amount": { - "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(1)).normalize():f}", + "amount": f"{Token.convert_value_to_chain_format(value=Decimal(1)).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, "bridgeFee": { - "amount": f"{basic_composer.convert_value_to_chain_format(value=Decimal(2)).normalize():f}", + "amount": f"{Token.convert_value_to_chain_format(value=Decimal(2)).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, } @@ -2006,7 +1987,7 @@ def test_msg_underwrite(self, basic_composer): "sender": "sender", "marketId": "market_id", "deposit": { - "amount": f"{basic_composer.convert_value_to_chain_format(Decimal('1')).normalize():f}", + "amount": f"{Token.convert_value_to_chain_format(Decimal('1')).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, } @@ -2029,7 +2010,7 @@ def test_msg_send(self, basic_composer): "toAddress": "to_address", "amount": [ { - "amount": f"{basic_composer.convert_value_to_chain_format(Decimal('1')).normalize():f}", + "amount": f"{Token.convert_value_to_chain_format(Decimal('1')).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, ], diff --git a/tests/test_orderhash.py b/tests/test_orderhash.py index c2940d8d..d98dfa00 100644 --- a/tests/test_orderhash.py +++ b/tests/test_orderhash.py @@ -24,7 +24,7 @@ def test_spot_order_hash(self, requests_mock): fee_recipient = "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" spot_orders = [ - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -32,7 +32,7 @@ def test_spot_order_hash(self, requests_mock): quantity=Decimal("0.01"), order_type="BUY", ), - composer.spot_order( + composer.create_v2_spot_order( market_id=spot_market_id, subaccount_id=subaccount_id, fee_recipient=fee_recipient, @@ -48,5 +48,5 @@ def test_spot_order_hash(self, requests_mock): assert len(order_hashes_response.spot) == 2 assert len(order_hashes_response.derivative) == 0 - assert order_hashes_response.spot[0] == "0x6b1e4d1fb3012735dd5e386175eb4541c024e0d8dbfeb452767b973d70ae0924" - assert order_hashes_response.spot[1] == "0xb36146f913955d989269732d167ec554e6d0d544411d82d7f86aef18350b252b" + assert order_hashes_response.spot[0] == "0x4f70723b33db271e6c56201e42c5911dd97a9f5345c7fcf12eb69c2689f94e78" + assert order_hashes_response.spot[1] == "0x2cc1acacf0e576ea41e9381725f4c78fc5c191f9df4e3e98402c09b8ad2c82e8" From a05a00cc7452fd2de24c948a38a507ad57f42e9f Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 4 Nov 2024 12:26:33 -0300 Subject: [PATCH 6/7] (fix) Renamed two methods to make the intent more clear --- pyinjective/async_client.py | 58 +++++++++++------- pyinjective/composer.py | 108 +++++++++++++++++---------------- pyinjective/core/token.py | 4 +- pyinjective/orderhash.py | 2 +- tests/test_composer.py | 118 +++++++++++++++++++----------------- 5 files changed, 157 insertions(+), 133 deletions(-) diff --git a/pyinjective/async_client.py b/pyinjective/async_client.py index 05e43589..d4be6c96 100644 --- a/pyinjective/async_client.py +++ b/pyinjective/async_client.py @@ -2808,14 +2808,18 @@ async def _initialize_tokens_and_markets(self): ticker=market_info["ticker"], base_token=base_token, quote_token=quote_token, - maker_fee_rate=Token.convert_value_from_chain_format(Decimal(market_info["makerFeeRate"])), - taker_fee_rate=Token.convert_value_from_chain_format(Decimal(market_info["takerFeeRate"])), - service_provider_fee=Token.convert_value_from_chain_format(Decimal(market_info["relayerFeeShareRate"])), - min_price_tick_size=Token.convert_value_from_chain_format(Decimal(market_info["minPriceTickSize"])), - min_quantity_tick_size=Token.convert_value_from_chain_format( + maker_fee_rate=Token.convert_value_from_extended_decimal_format(Decimal(market_info["makerFeeRate"])), + taker_fee_rate=Token.convert_value_from_extended_decimal_format(Decimal(market_info["takerFeeRate"])), + service_provider_fee=Token.convert_value_from_extended_decimal_format( + Decimal(market_info["relayerFeeShareRate"]) + ), + min_price_tick_size=Token.convert_value_from_extended_decimal_format( + Decimal(market_info["minPriceTickSize"]) + ), + min_quantity_tick_size=Token.convert_value_from_extended_decimal_format( Decimal(market_info["minQuantityTickSize"]) ), - min_notional=Token.convert_value_from_chain_format(Decimal(market_info["minNotional"])), + min_notional=Token.convert_value_from_extended_decimal_format(Decimal(market_info["minNotional"])), ) spot_markets[market.id] = market @@ -2835,17 +2839,25 @@ async def _initialize_tokens_and_markets(self): oracle_quote=market["oracleQuote"], oracle_type=market["oracleType"], oracle_scale_factor=market["oracleScaleFactor"], - initial_margin_ratio=Token.convert_value_from_chain_format(Decimal(market["initialMarginRatio"])), - maintenance_margin_ratio=Token.convert_value_from_chain_format( + initial_margin_ratio=Token.convert_value_from_extended_decimal_format( + Decimal(market["initialMarginRatio"]) + ), + maintenance_margin_ratio=Token.convert_value_from_extended_decimal_format( Decimal(market["maintenanceMarginRatio"]) ), quote_token=quote_token, - maker_fee_rate=Token.convert_value_from_chain_format(Decimal(market["makerFeeRate"])), - taker_fee_rate=Token.convert_value_from_chain_format(Decimal(market["takerFeeRate"])), - service_provider_fee=Token.convert_value_from_chain_format(Decimal(market["relayerFeeShareRate"])), - min_price_tick_size=Token.convert_value_from_chain_format(Decimal(market["minPriceTickSize"])), - min_quantity_tick_size=Token.convert_value_from_chain_format(Decimal(market["minQuantityTickSize"])), - min_notional=Token.convert_value_from_chain_format(Decimal(market["minNotional"])), + maker_fee_rate=Token.convert_value_from_extended_decimal_format(Decimal(market["makerFeeRate"])), + taker_fee_rate=Token.convert_value_from_extended_decimal_format(Decimal(market["takerFeeRate"])), + service_provider_fee=Token.convert_value_from_extended_decimal_format( + Decimal(market["relayerFeeShareRate"]) + ), + min_price_tick_size=Token.convert_value_from_extended_decimal_format( + Decimal(market["minPriceTickSize"]) + ), + min_quantity_tick_size=Token.convert_value_from_extended_decimal_format( + Decimal(market["minQuantityTickSize"]) + ), + min_notional=Token.convert_value_from_extended_decimal_format(Decimal(market["minNotional"])), ) derivative_markets[derivative_market.id] = derivative_market @@ -2865,17 +2877,21 @@ async def _initialize_tokens_and_markets(self): expiration_timestamp=market_info["expirationTimestamp"], settlement_timestamp=market_info["settlementTimestamp"], quote_token=quote_token, - maker_fee_rate=Token.convert_value_from_chain_format(Decimal(market_info["makerFeeRate"])), - taker_fee_rate=Token.convert_value_from_chain_format(Decimal(market_info["takerFeeRate"])), - service_provider_fee=Token.convert_value_from_chain_format(Decimal(market_info["relayerFeeShareRate"])), - min_price_tick_size=Token.convert_value_from_chain_format(Decimal(market_info["minPriceTickSize"])), - min_quantity_tick_size=Token.convert_value_from_chain_format( + maker_fee_rate=Token.convert_value_from_extended_decimal_format(Decimal(market_info["makerFeeRate"])), + taker_fee_rate=Token.convert_value_from_extended_decimal_format(Decimal(market_info["takerFeeRate"])), + service_provider_fee=Token.convert_value_from_extended_decimal_format( + Decimal(market_info["relayerFeeShareRate"]) + ), + min_price_tick_size=Token.convert_value_from_extended_decimal_format( + Decimal(market_info["minPriceTickSize"]) + ), + min_quantity_tick_size=Token.convert_value_from_extended_decimal_format( Decimal(market_info["minQuantityTickSize"]) ), - min_notional=Token.convert_value_from_chain_format(Decimal(market_info["minNotional"])), + min_notional=Token.convert_value_from_extended_decimal_format(Decimal(market_info["minNotional"])), settlement_price=None if market_info["settlementPrice"] == "" - else Token.convert_value_from_chain_format(Decimal(market_info["settlementPrice"])), + else Token.convert_value_from_extended_decimal_format(Decimal(market_info["settlementPrice"])), ) binary_option_markets[market.id] = market diff --git a/pyinjective/composer.py b/pyinjective/composer.py index 7f8d0bcc..d3c0ad15 100644 --- a/pyinjective/composer.py +++ b/pyinjective/composer.py @@ -493,9 +493,9 @@ def create_v2_spot_order( ) -> injective_order_v2_pb.SpotOrder: trigger_price = trigger_price or Decimal(0) chain_order_type = injective_order_v2_pb.OrderType.Value(order_type) - chain_quantity = f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}" - chain_price = f"{Token.convert_value_to_chain_format(value=price).normalize():f}" - chain_trigger_price = f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}" + chain_quantity = f"{Token.convert_value_to_extended_decimal_format(value=quantity).normalize():f}" + chain_price = f"{Token.convert_value_to_extended_decimal_format(value=price).normalize():f}" + chain_trigger_price = f"{Token.convert_value_to_extended_decimal_format(value=trigger_price).normalize():f}" return injective_order_v2_pb.SpotOrder( market_id=market_id, @@ -655,7 +655,7 @@ def create_grant_authorization(self, grantee: str, amount: Decimal) -> injective # region Auction module def MsgBid(self, sender: str, bid_amount: float, round: float): - be_amount = Token.convert_value_to_chain_format(value=Decimal(str(bid_amount))) + be_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(bid_amount))) return injective_auction_tx_pb.MsgBid( sender=sender, @@ -718,7 +718,7 @@ def MsgSend(self, from_address: str, to_address: str, amount: float, denom: str) ) def msg_send(self, from_address: str, to_address: str, amount: int, denom: str): - chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=denom) return cosmos_bank_tx_pb.MsgSend( @@ -749,7 +749,7 @@ def msg_deposit( def msg_deposit_v2( self, sender: str, subaccount_id: str, amount: int, denom: str ) -> injective_exchange_tx_v2_pb.MsgDeposit: - chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=denom) return injective_exchange_tx_v2_pb.MsgDeposit( @@ -781,7 +781,7 @@ def msg_withdraw_v2( amount: int, denom: str, ) -> injective_exchange_tx_v2_pb.MsgWithdraw: - chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=denom) return injective_exchange_tx_v2_pb.MsgWithdraw( @@ -846,11 +846,13 @@ def msg_instant_spot_market_launch_v2( base_decimals: int, quote_decimals: int, ) -> injective_exchange_tx_v2_pb.MsgInstantSpotMarketLaunch: - chain_min_price_tick_size = f"{Token.convert_value_to_chain_format(value=min_price_tick_size).normalize():f}" + chain_min_price_tick_size = ( + f"{Token.convert_value_to_extended_decimal_format(value=min_price_tick_size).normalize():f}" + ) chain_min_quantity_tick_size = ( - f"{Token.convert_value_to_chain_format(value=min_quantity_tick_size).normalize():f}" + f"{Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size).normalize():f}" ) - chain_min_notional = f"{Token.convert_value_to_chain_format(value=min_notional).normalize():f}" + chain_min_notional = f"{Token.convert_value_to_extended_decimal_format(value=min_notional).normalize():f}" return injective_exchange_tx_v2_pb.MsgInstantSpotMarketLaunch( sender=sender, @@ -938,13 +940,13 @@ def msg_instant_perpetual_market_launch_v2( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: - chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_maker_fee_rate = Token.convert_value_to_chain_format(value=maker_fee_rate) - chain_taker_fee_rate = Token.convert_value_to_chain_format(value=taker_fee_rate) - chain_initial_margin_ratio = Token.convert_value_to_chain_format(value=initial_margin_ratio) - chain_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=maintenance_margin_ratio) - chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size) + chain_maker_fee_rate = Token.convert_value_to_extended_decimal_format(value=maker_fee_rate) + chain_taker_fee_rate = Token.convert_value_to_extended_decimal_format(value=taker_fee_rate) + chain_initial_margin_ratio = Token.convert_value_to_extended_decimal_format(value=initial_margin_ratio) + chain_maintenance_margin_ratio = Token.convert_value_to_extended_decimal_format(value=maintenance_margin_ratio) + chain_min_notional = Token.convert_value_to_extended_decimal_format(value=min_notional) return injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch( sender=sender, @@ -1041,13 +1043,13 @@ def msg_instant_expiry_futures_market_launch_v2( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: - chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_maker_fee_rate = Token.convert_value_to_chain_format(value=maker_fee_rate) - chain_taker_fee_rate = Token.convert_value_to_chain_format(value=taker_fee_rate) - chain_initial_margin_ratio = Token.convert_value_to_chain_format(value=initial_margin_ratio) - chain_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=maintenance_margin_ratio) - chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size) + chain_maker_fee_rate = Token.convert_value_to_extended_decimal_format(value=maker_fee_rate) + chain_taker_fee_rate = Token.convert_value_to_extended_decimal_format(value=taker_fee_rate) + chain_initial_margin_ratio = Token.convert_value_to_extended_decimal_format(value=initial_margin_ratio) + chain_maintenance_margin_ratio = Token.convert_value_to_extended_decimal_format(value=maintenance_margin_ratio) + chain_min_notional = Token.convert_value_to_extended_decimal_format(value=min_notional) return injective_exchange_tx_v2_pb.MsgInstantExpiryFuturesMarketLaunch( sender=sender, @@ -1650,11 +1652,11 @@ def msg_instant_binary_options_market_launch_v2( min_quantity_tick_size: Decimal, min_notional: Decimal, ) -> injective_exchange_tx_v2_pb.MsgInstantPerpetualMarketLaunch: - chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_maker_fee_rate = Token.convert_value_to_chain_format(value=maker_fee_rate) - chain_taker_fee_rate = Token.convert_value_to_chain_format(value=taker_fee_rate) - chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size) + chain_maker_fee_rate = Token.convert_value_to_extended_decimal_format(value=maker_fee_rate) + chain_taker_fee_rate = Token.convert_value_to_extended_decimal_format(value=taker_fee_rate) + chain_min_notional = Token.convert_value_to_extended_decimal_format(value=min_notional) return injective_exchange_tx_v2_pb.MsgInstantBinaryOptionsMarketLaunch( sender=sender, @@ -1893,7 +1895,7 @@ def msg_subaccount_transfer_v2( amount: int, denom: str, ) -> injective_exchange_tx_v2_pb.MsgSubaccountTransfer: - chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) amount_coin = self.coin(amount=int(chain_amount), denom=denom) return injective_exchange_tx_v2_pb.MsgSubaccountTransfer( @@ -1933,7 +1935,7 @@ def msg_external_transfer_v2( amount: int, denom: str, ) -> injective_exchange_tx_v2_pb.MsgExternalTransfer: - chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=denom) return injective_exchange_tx_v2_pb.MsgExternalTransfer( @@ -2027,7 +2029,7 @@ def msg_increase_position_margin_v2( market_id: str, amount: Decimal, ) -> injective_exchange_tx_v2_pb.MsgIncreasePositionMargin: - additional_margin = Token.convert_value_to_chain_format(value=amount) + additional_margin = Token.convert_value_to_extended_decimal_format(value=amount) return injective_exchange_tx_v2_pb.MsgIncreasePositionMargin( sender=sender, source_subaccount_id=source_subaccount_id, @@ -2093,7 +2095,7 @@ def msg_admin_update_binary_options_market_v2( ) if settlement_price is not None: - chain_settlement_price = Token.convert_value_to_chain_format(value=settlement_price) + chain_settlement_price = Token.convert_value_to_extended_decimal_format(value=settlement_price) message.settlement_price = f"{chain_settlement_price.normalize():f}" return message @@ -2130,7 +2132,7 @@ def msg_decrease_position_margin_v2( market_id: str, amount: Decimal, ) -> injective_exchange_tx_v2_pb.MsgDecreasePositionMargin: - additional_margin = Token.convert_value_to_chain_format(value=amount) + additional_margin = Token.convert_value_to_extended_decimal_format(value=amount) return injective_exchange_tx_v2_pb.MsgDecreasePositionMargin( sender=sender, source_subaccount_id=source_subaccount_id, @@ -2183,9 +2185,9 @@ def msg_update_spot_market_v2( new_min_quantity_tick_size: Decimal, new_min_notional: Decimal, ) -> injective_exchange_tx_v2_pb.MsgUpdateSpotMarket: - chain_min_price_tick_size = Token.convert_value_to_chain_format(value=new_min_price_tick_size) - chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=new_min_quantity_tick_size) - chain_min_notional = Token.convert_value_to_chain_format(value=new_min_notional) + chain_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=new_min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=new_min_quantity_tick_size) + chain_min_notional = Token.convert_value_to_extended_decimal_format(value=new_min_notional) return injective_exchange_tx_v2_pb.MsgUpdateSpotMarket( admin=admin, @@ -2246,11 +2248,13 @@ def msg_update_derivative_market_v2( new_initial_margin_ratio: Decimal, new_maintenance_margin_ratio: Decimal, ) -> injective_exchange_tx_v2_pb.MsgUpdateDerivativeMarket: - chain_min_price_tick_size = Token.convert_value_to_chain_format(value=new_min_price_tick_size) - chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=new_min_quantity_tick_size) - chain_min_notional = Token.convert_value_to_chain_format(value=new_min_notional) - chain_initial_margin_ratio = Token.convert_value_to_chain_format(value=new_initial_margin_ratio) - chain_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=new_maintenance_margin_ratio) + chain_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=new_min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=new_min_quantity_tick_size) + chain_min_notional = Token.convert_value_to_extended_decimal_format(value=new_min_notional) + chain_initial_margin_ratio = Token.convert_value_to_extended_decimal_format(value=new_initial_margin_ratio) + chain_maintenance_margin_ratio = Token.convert_value_to_extended_decimal_format( + value=new_maintenance_margin_ratio + ) return injective_exchange_tx_v2_pb.MsgUpdateDerivativeMarket( admin=admin, @@ -2321,7 +2325,7 @@ def msg_create_insurance_fund( expiry: int, initial_deposit: int, ) -> injective_insurance_tx_pb.MsgCreateInsuranceFund: - chain_initial_deposit = Token.convert_value_to_chain_format(value=Decimal(str(initial_deposit))) + chain_initial_deposit = Token.convert_value_to_extended_decimal_format(value=Decimal(str(initial_deposit))) deposit = self.coin(amount=int(chain_initial_deposit), denom=quote_denom) return injective_insurance_tx_pb.MsgCreateInsuranceFund( @@ -2362,7 +2366,7 @@ def msg_underwrite( quote_denom: str, amount: int, ): - chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) coin = self.coin(amount=int(chain_amount), denom=quote_denom) return injective_insurance_tx_pb.MsgUnderwrite( @@ -2378,7 +2382,7 @@ def MsgRequestRedemption( share_denom: str, amount: int, ): - chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + chain_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) return injective_insurance_tx_pb.MsgRequestRedemption( sender=sender, market_id=market_id, @@ -2423,8 +2427,8 @@ def MsgSendToEth(self, denom: str, sender: str, eth_dest: str, amount: float, br ) def msg_send_to_eth(self, denom: str, sender: str, eth_dest: str, amount: int, bridge_fee: int): - chain_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) - chain_bridge_fee = Token.convert_value_to_chain_format(value=Decimal(str(bridge_fee))) + chain_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) + chain_bridge_fee = Token.convert_value_to_extended_decimal_format(value=Decimal(str(bridge_fee))) amount_coin = self.coin(amount=int(chain_amount), denom=denom) bridge_fee_coin = self.coin(amount=int(chain_bridge_fee), denom=denom) @@ -2439,7 +2443,7 @@ def msg_send_to_eth(self, denom: str, sender: str, eth_dest: str, amount: int, b # region Staking module def MsgDelegate(self, delegator_address: str, validator_address: str, amount: float): - be_amount = Token.convert_value_to_chain_format(Decimal(str(amount))) + be_amount = Token.convert_value_to_extended_decimal_format(Decimal(str(amount))) return cosmos_staking_tx_pb.MsgDelegate( delegator_address=delegator_address, @@ -3172,10 +3176,10 @@ def _basic_v2_derivative_order( trigger_price: Optional[Decimal] = None, ) -> injective_order_v2_pb.DerivativeOrder: trigger_price = trigger_price or Decimal(0) - chain_quantity = f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}" - chain_price = f"{Token.convert_value_to_chain_format(value=price).normalize():f}" - chain_margin = f"{Token.convert_value_to_chain_format(value=margin).normalize():f}" - chain_trigger_price = f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}" + chain_quantity = f"{Token.convert_value_to_extended_decimal_format(value=quantity).normalize():f}" + chain_price = f"{Token.convert_value_to_extended_decimal_format(value=price).normalize():f}" + chain_margin = f"{Token.convert_value_to_extended_decimal_format(value=margin).normalize():f}" + chain_trigger_price = f"{Token.convert_value_to_extended_decimal_format(value=trigger_price).normalize():f}" chain_order_type = injective_order_v2_pb.OrderType.Value(order_type) return injective_order_v2_pb.DerivativeOrder( diff --git a/pyinjective/core/token.py b/pyinjective/core/token.py index 8c0f3561..bdeace85 100644 --- a/pyinjective/core/token.py +++ b/pyinjective/core/token.py @@ -15,11 +15,11 @@ class Token: updated: int @staticmethod - def convert_value_to_chain_format(value: Decimal) -> Decimal: + def convert_value_to_extended_decimal_format(value: Decimal) -> Decimal: return value * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") @staticmethod - def convert_value_from_chain_format(value: Decimal) -> Decimal: + def convert_value_from_extended_decimal_format(value: Decimal) -> Decimal: return value / Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") def chain_formatted_value(self, human_readable_value: Decimal) -> Decimal: diff --git a/pyinjective/orderhash.py b/pyinjective/orderhash.py index a90147bb..1d7f91cf 100644 --- a/pyinjective/orderhash.py +++ b/pyinjective/orderhash.py @@ -97,7 +97,7 @@ def compute_order_hashes(self, spot_orders, derivative_orders, subaccount_index) def param_to_backend_go(param: str) -> str: - go_param = Token.convert_value_from_chain_format(value=Decimal(param)) + go_param = Token.convert_value_from_extended_decimal_format(value=Decimal(param)) return f"{go_param.normalize():.18f}" diff --git a/tests/test_composer.py b/tests/test_composer.py index 85a02d2e..4c8ba01f 100644 --- a/tests/test_composer.py +++ b/tests/test_composer.py @@ -228,7 +228,7 @@ def test_msg_deposit(self, basic_composer): amount = 100 denom = "inj" - expected_amount = Token.convert_value_to_chain_format(value=Decimal(str(amount))) + expected_amount = Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))) message = basic_composer.msg_deposit_v2( sender=sender, @@ -268,7 +268,7 @@ def test_msg_withdraw(self, basic_composer): "sender": sender, "subaccountId": subaccount_id, "amount": { - "amount": f"{Token.convert_value_to_chain_format(value=Decimal(str(amount))):f}", + "amount": f"{Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))):f}", "denom": denom, }, } @@ -301,9 +301,9 @@ def test_msg_instant_spot_market_launch(self, basic_composer): quote_decimals=quote_decimals, ) - chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size) + chain_min_notional = Token.convert_value_to_extended_decimal_format(value=min_notional) expected_message = { "sender": sender, @@ -402,13 +402,15 @@ def test_msg_instant_expiry_futures_market_launch(self, basic_composer): maintenance_margin_ratio = Decimal("0.03") min_notional = Decimal("2") - expected_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) - expected_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) - expected_maker_fee_rate = Token.convert_value_to_chain_format(value=maker_fee_rate) - expected_taker_fee_rate = Token.convert_value_to_chain_format(value=taker_fee_rate) - expected_initial_margin_ratio = Token.convert_value_to_chain_format(value=initial_margin_ratio) - expected_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=maintenance_margin_ratio) - expected_min_notional = Token.convert_value_to_chain_format(value=min_notional) + expected_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=min_price_tick_size) + expected_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size) + expected_maker_fee_rate = Token.convert_value_to_extended_decimal_format(value=maker_fee_rate) + expected_taker_fee_rate = Token.convert_value_to_extended_decimal_format(value=taker_fee_rate) + expected_initial_margin_ratio = Token.convert_value_to_extended_decimal_format(value=initial_margin_ratio) + expected_maintenance_margin_ratio = Token.convert_value_to_extended_decimal_format( + value=maintenance_margin_ratio + ) + expected_min_notional = Token.convert_value_to_extended_decimal_format(value=min_notional) message = basic_composer.msg_instant_expiry_futures_market_launch_v2( sender=sender, @@ -564,9 +566,9 @@ def test_msg_create_spot_limit_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = Token.convert_value_to_chain_format(value=price) - expected_quantity = Token.convert_value_to_chain_format(value=quantity) - expected_trigger_price = Token.convert_value_to_chain_format(value=trigger_price) + expected_price = Token.convert_value_to_extended_decimal_format(value=price) + expected_quantity = Token.convert_value_to_extended_decimal_format(value=quantity) + expected_trigger_price = Token.convert_value_to_extended_decimal_format(value=trigger_price) assert "injective.exchange.v2.MsgCreateSpotLimitOrder" == message.DESCRIPTOR.full_name expected_message = { @@ -658,12 +660,12 @@ def test_msg_create_spot_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{Token.convert_value_to_chain_format(value=price).normalize():f}", - "quantity": f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}", + "price": f"{Token.convert_value_to_extended_decimal_format(value=price).normalize():f}", + "quantity": f"{Token.convert_value_to_extended_decimal_format(value=quantity).normalize():f}", "cid": cid, }, "orderType": order_type, - "triggerPrice": f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}", + "triggerPrice": f"{Token.convert_value_to_extended_decimal_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -887,13 +889,13 @@ def test_msg_create_derivative_limit_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{Token.convert_value_to_chain_format(value=price).normalize():f}", - "quantity": f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}", + "price": f"{Token.convert_value_to_extended_decimal_format(value=price).normalize():f}", + "quantity": f"{Token.convert_value_to_extended_decimal_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{Token.convert_value_to_chain_format(value=margin).normalize():f}", + "margin": f"{Token.convert_value_to_extended_decimal_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}", + "triggerPrice": f"{Token.convert_value_to_extended_decimal_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -972,13 +974,13 @@ def test_msg_create_derivative_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{Token.convert_value_to_chain_format(value=price).normalize():f}", - "quantity": f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}", + "price": f"{Token.convert_value_to_extended_decimal_format(value=price).normalize():f}", + "quantity": f"{Token.convert_value_to_extended_decimal_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{Token.convert_value_to_chain_format(value=margin).normalize():f}", + "margin": f"{Token.convert_value_to_extended_decimal_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}", + "triggerPrice": f"{Token.convert_value_to_extended_decimal_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -1089,9 +1091,9 @@ def test_msg_instant_binary_options_market_launch(self, basic_composer): min_notional=min_notional, ) - chain_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) - chain_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) - chain_min_notional = Token.convert_value_to_chain_format(value=min_notional) + chain_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=min_price_tick_size) + chain_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size) + chain_min_notional = Token.convert_value_to_extended_decimal_format(value=min_notional) expected_message = { "sender": sender, @@ -1100,8 +1102,8 @@ def test_msg_instant_binary_options_market_launch(self, basic_composer): "oracleProvider": oracle_provider, "oracleType": oracle_type, "oracleScaleFactor": oracle_scale_factor, - "makerFeeRate": f"{Token.convert_value_to_chain_format(value=maker_fee_rate).normalize():f}", - "takerFeeRate": f"{Token.convert_value_to_chain_format(value=taker_fee_rate).normalize():f}", + "makerFeeRate": f"{Token.convert_value_to_extended_decimal_format(value=maker_fee_rate).normalize():f}", + "takerFeeRate": f"{Token.convert_value_to_extended_decimal_format(value=taker_fee_rate).normalize():f}", "expirationTimestamp": str(expiration_timestamp), "settlementTimestamp": str(settlement_timestamp), "admin": admin, @@ -1141,10 +1143,10 @@ def test_msg_create_binary_options_limit_order(self, basic_composer): trigger_price=trigger_price, ) - expected_price = Token.convert_value_to_chain_format(value=price) - expected_quantity = Token.convert_value_to_chain_format(value=quantity) - expected_margin = Token.convert_value_to_chain_format(value=margin) - expected_trigger_price = Token.convert_value_to_chain_format(value=trigger_price) + expected_price = Token.convert_value_to_extended_decimal_format(value=price) + expected_quantity = Token.convert_value_to_extended_decimal_format(value=quantity) + expected_margin = Token.convert_value_to_extended_decimal_format(value=margin) + expected_trigger_price = Token.convert_value_to_extended_decimal_format(value=trigger_price) expected_message = { "sender": sender, @@ -1200,13 +1202,13 @@ def test_msg_create_binary_options_market_order(self, basic_composer): "orderInfo": { "subaccountId": subaccount_id, "feeRecipient": fee_recipient, - "price": f"{Token.convert_value_to_chain_format(value=price).normalize():f}", - "quantity": f"{Token.convert_value_to_chain_format(value=quantity).normalize():f}", + "price": f"{Token.convert_value_to_extended_decimal_format(value=price).normalize():f}", + "quantity": f"{Token.convert_value_to_extended_decimal_format(value=quantity).normalize():f}", "cid": cid, }, - "margin": f"{Token.convert_value_to_chain_format(value=margin).normalize():f}", + "margin": f"{Token.convert_value_to_extended_decimal_format(value=margin).normalize():f}", "orderType": order_type, - "triggerPrice": f"{Token.convert_value_to_chain_format(value=trigger_price).normalize():f}", + "triggerPrice": f"{Token.convert_value_to_extended_decimal_format(value=trigger_price).normalize():f}", }, } dict_message = json_format.MessageToDict( @@ -1276,7 +1278,7 @@ def test_msg_subaccount_transfer(self, basic_composer): "sourceSubaccountId": source_subaccount_id, "destinationSubaccountId": destination_subaccount_id, "amount": { - "amount": f"{Token.convert_value_to_chain_format(value=Decimal(str(amount))).normalize():f}", + "amount": f"{Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))).normalize():f}", "denom": denom, }, } @@ -1306,7 +1308,7 @@ def test_msg_external_transfer(self, basic_composer): "sourceSubaccountId": source_subaccount_id, "destinationSubaccountId": destination_subaccount_id, "amount": { - "amount": f"{Token.convert_value_to_chain_format(value=Decimal(str(amount))).normalize():f}", + "amount": f"{Token.convert_value_to_extended_decimal_format(value=Decimal(str(amount))).normalize():f}", "denom": denom, }, } @@ -1378,7 +1380,7 @@ def test_msg_increase_position_margin(self, basic_composer): destination_subaccount_id = "0xc6fe5d33615a1c52c08018c47e8bc53646a0e101000000000000000000000000" amount = Decimal(100) - expected_amount = Token.convert_value_to_chain_format(value=amount) + expected_amount = Token.convert_value_to_extended_decimal_format(value=amount) message = basic_composer.msg_increase_position_margin_v2( sender=sender, @@ -1408,7 +1410,7 @@ def test_msg_decrease_position_margin(self, basic_composer): destination_subaccount_id = "0xc6fe5d33615a1c52c08018c47e8bc53646a0e101000000000000000000000000" amount = Decimal(100) - expected_amount = Token.convert_value_to_chain_format(value=amount) + expected_amount = Token.convert_value_to_extended_decimal_format(value=amount) message = basic_composer.msg_decrease_position_margin_v2( sender=sender, @@ -1455,7 +1457,7 @@ def test_msg_admin_update_binary_options_market(self, basic_composer): expiration_timestamp = 1630000000 settlement_timestamp = 1660000000 - expected_settlement_price = Token.convert_value_to_chain_format(value=settlement_price) + expected_settlement_price = Token.convert_value_to_extended_decimal_format(value=settlement_price) message = basic_composer.msg_admin_update_binary_options_market_v2( sender=sender, @@ -1488,9 +1490,9 @@ def test_msg_update_spot_market(self, basic_composer): min_quantity_tick_size = Decimal("10") min_notional = Decimal("5") - expected_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) - expected_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) - expected_min_notional = Token.convert_value_to_chain_format(value=min_notional) + expected_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=min_price_tick_size) + expected_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size) + expected_min_notional = Token.convert_value_to_extended_decimal_format(value=min_notional) message = basic_composer.msg_update_spot_market_v2( admin=sender, @@ -1525,11 +1527,13 @@ def test_msg_update_derivative_market(self, basic_composer): initial_margin_ratio = Decimal("0.05") maintenance_margin_ratio = Decimal("0.009") - expected_min_price_tick_size = Token.convert_value_to_chain_format(value=min_price_tick_size) - expected_min_quantity_tick_size = Token.convert_value_to_chain_format(value=min_quantity_tick_size) - expected_min_notional = Token.convert_value_to_chain_format(value=min_notional) - expected_initial_margin_ratio = Token.convert_value_to_chain_format(value=initial_margin_ratio) - expected_maintenance_margin_ratio = Token.convert_value_to_chain_format(value=maintenance_margin_ratio) + expected_min_price_tick_size = Token.convert_value_to_extended_decimal_format(value=min_price_tick_size) + expected_min_quantity_tick_size = Token.convert_value_to_extended_decimal_format(value=min_quantity_tick_size) + expected_min_notional = Token.convert_value_to_extended_decimal_format(value=min_notional) + expected_initial_margin_ratio = Token.convert_value_to_extended_decimal_format(value=initial_margin_ratio) + expected_maintenance_margin_ratio = Token.convert_value_to_extended_decimal_format( + value=maintenance_margin_ratio + ) message = basic_composer.msg_update_derivative_market_v2( admin=sender, @@ -1938,7 +1942,7 @@ def test_msg_create_insurance_fund(self, basic_composer): "oracleType": "Band", "expiry": "-1", "initialDeposit": { - "amount": f"{Token.convert_value_to_chain_format(value=Decimal('1')).normalize():f}", + "amount": f"{Token.convert_value_to_extended_decimal_format(value=Decimal('1')).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, } @@ -1961,11 +1965,11 @@ def test_msg_send_to_eth_fund(self, basic_composer): "sender": "sender", "ethDest": "eth_dest", "amount": { - "amount": f"{Token.convert_value_to_chain_format(value=Decimal(1)).normalize():f}", + "amount": f"{Token.convert_value_to_extended_decimal_format(value=Decimal(1)).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, "bridgeFee": { - "amount": f"{Token.convert_value_to_chain_format(value=Decimal(2)).normalize():f}", + "amount": f"{Token.convert_value_to_extended_decimal_format(value=Decimal(2)).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, } @@ -1987,7 +1991,7 @@ def test_msg_underwrite(self, basic_composer): "sender": "sender", "marketId": "market_id", "deposit": { - "amount": f"{Token.convert_value_to_chain_format(Decimal('1')).normalize():f}", + "amount": f"{Token.convert_value_to_extended_decimal_format(Decimal('1')).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, } @@ -2010,7 +2014,7 @@ def test_msg_send(self, basic_composer): "toAddress": "to_address", "amount": [ { - "amount": f"{Token.convert_value_to_chain_format(Decimal('1')).normalize():f}", + "amount": f"{Token.convert_value_to_extended_decimal_format(Decimal('1')).normalize():f}", "denom": "peggy0x44C21afAaF20c270EBbF5914Cfc3b5022173FEB7", }, ], From 7d7fc080ce288cc18028144a65a7c6d4acf26401 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 4 Nov 2024 15:08:18 -0300 Subject: [PATCH 7/7] (fix) Removed support for chain stream V2, since it was decided we are not going to include that in chain core --- buf.gen.yaml | 2 +- examples/chain_client/7_ChainStream.py | 22 +- pyinjective/async_client.py | 33 -- .../grpc_stream/chain_grpc_chain_stream.py | 42 -- pyinjective/composer.py | 107 ----- pyinjective/proto/google/api/client_pb2.py | 78 +-- .../proto/injective/exchange/v2/events_pb2.py | 30 +- .../injective/stream/v1beta1/query_pb2.py | 87 ++-- .../proto/injective/stream/v2/query_pb2.py | 132 ------ .../injective/stream/v2/query_pb2_grpc.py | 80 ---- ...onfigurable_chain_stream_query_servicer.py | 14 - .../test_chain_grpc_chain_stream.py | 443 +----------------- tests/test_composer_deprecation_warnings.py | 91 ---- 13 files changed, 146 insertions(+), 1015 deletions(-) delete mode 100644 pyinjective/proto/injective/stream/v2/query_pb2.py delete mode 100644 pyinjective/proto/injective/stream/v2/query_pb2_grpc.py diff --git a/buf.gen.yaml b/buf.gen.yaml index 4c9a0415..0464ad6d 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -24,6 +24,6 @@ inputs: # tag: v1.13.0 # subdir: proto - git_repo: https://github.com/InjectiveLabs/injective-core - branch: feat/chain_stream_exchange_v2 + branch: feat/update_chain_stream_for_exchange_v2 subdir: proto - directory: proto diff --git a/examples/chain_client/7_ChainStream.py b/examples/chain_client/7_ChainStream.py index d63ff6ea..05a5bbdc 100644 --- a/examples/chain_client/7_ChainStream.py +++ b/examples/chain_client/7_ChainStream.py @@ -31,29 +31,29 @@ async def main() -> None: inj_usdt_market = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" inj_usdt_perp_market = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" - bank_balances_filter = composer.chain_stream_bank_balances_v2_filter( + bank_balances_filter = composer.chain_stream_bank_balances_filter( accounts=["inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r"] ) - subaccount_deposits_filter = composer.chain_stream_subaccount_deposits_v2_filter(subaccount_ids=[subaccount_id]) - spot_trades_filter = composer.chain_stream_trades_v2_filter(subaccount_ids=["*"], market_ids=[inj_usdt_market]) - derivative_trades_filter = composer.chain_stream_trades_v2_filter( + subaccount_deposits_filter = composer.chain_stream_subaccount_deposits_filter(subaccount_ids=[subaccount_id]) + spot_trades_filter = composer.chain_stream_trades_filter(subaccount_ids=["*"], market_ids=[inj_usdt_market]) + derivative_trades_filter = composer.chain_stream_trades_filter( subaccount_ids=["*"], market_ids=[inj_usdt_perp_market] ) - spot_orders_filter = composer.chain_stream_orders_v2_filter( + spot_orders_filter = composer.chain_stream_orders_filter( subaccount_ids=[subaccount_id], market_ids=[inj_usdt_market] ) - derivative_orders_filter = composer.chain_stream_orders_v2_filter( + derivative_orders_filter = composer.chain_stream_orders_filter( subaccount_ids=[subaccount_id], market_ids=[inj_usdt_perp_market] ) - spot_orderbooks_filter = composer.chain_stream_orderbooks_v2_filter(market_ids=[inj_usdt_market]) - derivative_orderbooks_filter = composer.chain_stream_orderbooks_v2_filter(market_ids=[inj_usdt_perp_market]) - positions_filter = composer.chain_stream_positions_v2_filter( + spot_orderbooks_filter = composer.chain_stream_orderbooks_filter(market_ids=[inj_usdt_market]) + derivative_orderbooks_filter = composer.chain_stream_orderbooks_filter(market_ids=[inj_usdt_perp_market]) + positions_filter = composer.chain_stream_positions_filter( subaccount_ids=[subaccount_id], market_ids=[inj_usdt_perp_market] ) - oracle_price_filter = composer.chain_stream_oracle_price_v2_filter(symbols=["INJ", "USDT"]) + oracle_price_filter = composer.chain_stream_oracle_price_filter(symbols=["INJ", "USDT"]) task = asyncio.get_event_loop().create_task( - client.listen_chain_stream_v2_updates( + client.listen_chain_stream_updates( callback=chain_stream_event_processor, on_end_callback=stream_closed_processor, on_status_callback=stream_error_processor, diff --git a/pyinjective/async_client.py b/pyinjective/async_client.py index d4be6c96..edcd7052 100644 --- a/pyinjective/async_client.py +++ b/pyinjective/async_client.py @@ -56,7 +56,6 @@ tendermint_pb2 as ibc_tendermint, ) from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_query -from pyinjective.proto.injective.stream.v2 import query_pb2 as chain_stream_v2_query from pyinjective.proto.injective.types.v1beta1 import account_pb2 from pyinjective.utils.logger import LoggerProvider @@ -2503,38 +2502,6 @@ async def listen_chain_stream_updates( oracle_price_filter=oracle_price_filter, ) - async def listen_chain_stream_v2_updates( - self, - callback: Callable, - on_end_callback: Optional[Callable] = None, - on_status_callback: Optional[Callable] = None, - bank_balances_filter: Optional[chain_stream_v2_query.BankBalancesFilter] = None, - subaccount_deposits_filter: Optional[chain_stream_v2_query.SubaccountDepositsFilter] = None, - spot_trades_filter: Optional[chain_stream_v2_query.TradesFilter] = None, - derivative_trades_filter: Optional[chain_stream_v2_query.TradesFilter] = None, - spot_orders_filter: Optional[chain_stream_v2_query.OrdersFilter] = None, - derivative_orders_filter: Optional[chain_stream_v2_query.OrdersFilter] = None, - spot_orderbooks_filter: Optional[chain_stream_v2_query.OrderbookFilter] = None, - derivative_orderbooks_filter: Optional[chain_stream_v2_query.OrderbookFilter] = None, - positions_filter: Optional[chain_stream_v2_query.PositionsFilter] = None, - oracle_price_filter: Optional[chain_stream_v2_query.OraclePriceFilter] = None, - ): - return await self.chain_stream_api.stream_v2( - callback=callback, - on_end_callback=on_end_callback, - on_status_callback=on_status_callback, - bank_balances_filter=bank_balances_filter, - subaccount_deposits_filter=subaccount_deposits_filter, - spot_trades_filter=spot_trades_filter, - derivative_trades_filter=derivative_trades_filter, - spot_orders_filter=spot_orders_filter, - derivative_orders_filter=derivative_orders_filter, - spot_orderbooks_filter=spot_orderbooks_filter, - derivative_orderbooks_filter=derivative_orderbooks_filter, - positions_filter=positions_filter, - oracle_price_filter=oracle_price_filter, - ) - # region IBC Transfer module async def fetch_denom_trace(self, hash: str) -> Dict[str, Any]: return await self.ibc_transfer_api.fetch_denom_trace(hash=hash) diff --git a/pyinjective/client/chain/grpc_stream/chain_grpc_chain_stream.py b/pyinjective/client/chain/grpc_stream/chain_grpc_chain_stream.py index 4f86599a..3b34ae4d 100644 --- a/pyinjective/client/chain/grpc_stream/chain_grpc_chain_stream.py +++ b/pyinjective/client/chain/grpc_stream/chain_grpc_chain_stream.py @@ -4,17 +4,12 @@ from pyinjective.core.network import CookieAssistant from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_pb, query_pb2_grpc as chain_stream_grpc -from pyinjective.proto.injective.stream.v2 import ( - query_pb2 as chain_stream_v2_pb, - query_pb2_grpc as chain_stream_v2_grpc, -) from pyinjective.utils.grpc_api_stream_assistant import GrpcApiStreamAssistant class ChainGrpcChainStream: def __init__(self, channel: Channel, cookie_assistant: CookieAssistant): self._stub = chain_stream_grpc.StreamStub(channel) - self._stub_v2 = chain_stream_v2_grpc.StreamStub(channel) self._assistant = GrpcApiStreamAssistant(cookie_assistant=cookie_assistant) async def stream( @@ -53,40 +48,3 @@ async def stream( on_end_callback=on_end_callback, on_status_callback=on_status_callback, ) - - async def stream_v2( - self, - callback: Callable, - on_end_callback: Optional[Callable] = None, - on_status_callback: Optional[Callable] = None, - bank_balances_filter: Optional[chain_stream_v2_pb.BankBalancesFilter] = None, - subaccount_deposits_filter: Optional[chain_stream_v2_pb.SubaccountDepositsFilter] = None, - spot_trades_filter: Optional[chain_stream_v2_pb.TradesFilter] = None, - derivative_trades_filter: Optional[chain_stream_v2_pb.TradesFilter] = None, - spot_orders_filter: Optional[chain_stream_v2_pb.OrdersFilter] = None, - derivative_orders_filter: Optional[chain_stream_v2_pb.OrdersFilter] = None, - spot_orderbooks_filter: Optional[chain_stream_v2_pb.OrderbookFilter] = None, - derivative_orderbooks_filter: Optional[chain_stream_v2_pb.OrderbookFilter] = None, - positions_filter: Optional[chain_stream_v2_pb.PositionsFilter] = None, - oracle_price_filter: Optional[chain_stream_v2_pb.OraclePriceFilter] = None, - ): - request = chain_stream_v2_pb.StreamRequest( - bank_balances_filter=bank_balances_filter, - subaccount_deposits_filter=subaccount_deposits_filter, - spot_trades_filter=spot_trades_filter, - derivative_trades_filter=derivative_trades_filter, - spot_orders_filter=spot_orders_filter, - derivative_orders_filter=derivative_orders_filter, - spot_orderbooks_filter=spot_orderbooks_filter, - derivative_orderbooks_filter=derivative_orderbooks_filter, - positions_filter=positions_filter, - oracle_price_filter=oracle_price_filter, - ) - - await self._assistant.listen_stream( - call=self._stub_v2.StreamV2, - request=request, - callback=callback, - on_end_callback=on_end_callback, - on_status_callback=on_status_callback, - ) diff --git a/pyinjective/composer.py b/pyinjective/composer.py index d3c0ad15..534c7335 100644 --- a/pyinjective/composer.py +++ b/pyinjective/composer.py @@ -46,7 +46,6 @@ tx_pb2 as injective_permissions_tx_pb, ) from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_query -from pyinjective.proto.injective.stream.v2 import query_pb2 as chain_stream_v2_query from pyinjective.proto.injective.tokenfactory.v1beta1 import tx_pb2 as token_factory_tx_pb from pyinjective.proto.injective.wasmx.v1 import tx_pb2 as wasmx_tx_pb from pyinjective.utils.denom import Denom @@ -2713,15 +2712,6 @@ def MsgVote( def chain_stream_bank_balances_filter( self, accounts: Optional[List[str]] = None ) -> chain_stream_query.BankBalancesFilter: - """ - This method is deprecated and will be removed soon. Please use `chain_stream_bank_balances_v2_filter` instead - """ - warn( - "This method is deprecated. Use chain_stream_bank_balances_v2_filter instead", - DeprecationWarning, - stacklevel=2, - ) - accounts = accounts or ["*"] return chain_stream_query.BankBalancesFilter(accounts=accounts) @@ -2729,16 +2719,6 @@ def chain_stream_subaccount_deposits_filter( self, subaccount_ids: Optional[List[str]] = None, ) -> chain_stream_query.SubaccountDepositsFilter: - """ - This method is deprecated and will be removed soon. - Please use `chain_stream_subaccount_deposits_v2_filter` instead - """ - warn( - "This method is deprecated. Use chain_stream_subaccount_deposits_v2_filter instead", - DeprecationWarning, - stacklevel=2, - ) - subaccount_ids = subaccount_ids or ["*"] return chain_stream_query.SubaccountDepositsFilter(subaccount_ids=subaccount_ids) @@ -2747,11 +2727,6 @@ def chain_stream_trades_filter( subaccount_ids: Optional[List[str]] = None, market_ids: Optional[List[str]] = None, ) -> chain_stream_query.TradesFilter: - """ - This method is deprecated and will be removed soon. Please use `chain_stream_trades_v2_filter` instead - """ - warn("This method is deprecated. Use chain_stream_trades_v2_filter instead", DeprecationWarning, stacklevel=2) - subaccount_ids = subaccount_ids or ["*"] market_ids = market_ids or ["*"] return chain_stream_query.TradesFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) @@ -2761,11 +2736,6 @@ def chain_stream_orders_filter( subaccount_ids: Optional[List[str]] = None, market_ids: Optional[List[str]] = None, ) -> chain_stream_query.OrdersFilter: - """ - This method is deprecated and will be removed soon. Please use `chain_stream_orders_v2_filter` instead - """ - warn("This method is deprecated. Use chain_stream_orders_v2_filter instead", DeprecationWarning, stacklevel=2) - subaccount_ids = subaccount_ids or ["*"] market_ids = market_ids or ["*"] return chain_stream_query.OrdersFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) @@ -2774,13 +2744,6 @@ def chain_stream_orderbooks_filter( self, market_ids: Optional[List[str]] = None, ) -> chain_stream_query.OrderbookFilter: - """ - This method is deprecated and will be removed soon. Please use `chain_stream_orderbooks_v2_filter` instead - """ - warn( - "This method is deprecated. Use chain_stream_orderbooks_v2_filter instead", DeprecationWarning, stacklevel=2 - ) - market_ids = market_ids or ["*"] return chain_stream_query.OrderbookFilter(market_ids=market_ids) @@ -2789,13 +2752,6 @@ def chain_stream_positions_filter( subaccount_ids: Optional[List[str]] = None, market_ids: Optional[List[str]] = None, ) -> chain_stream_query.PositionsFilter: - """ - This method is deprecated and will be removed soon. Please use `chain_stream_positions_v2_filter` instead - """ - warn( - "This method is deprecated. Use chain_stream_positions_v2_filter instead", DeprecationWarning, stacklevel=2 - ) - subaccount_ids = subaccount_ids or ["*"] market_ids = market_ids or ["*"] return chain_stream_query.PositionsFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) @@ -2804,72 +2760,9 @@ def chain_stream_oracle_price_filter( self, symbols: Optional[List[str]] = None, ) -> chain_stream_query.PositionsFilter: - """ - This method is deprecated and will be removed soon. Please use `chain_stream_oracle_price_v2_filter` instead - """ - warn( - "This method is deprecated. Use chain_stream_oracle_price_v2_filter instead", - DeprecationWarning, - stacklevel=2, - ) - symbols = symbols or ["*"] return chain_stream_query.OraclePriceFilter(symbol=symbols) - def chain_stream_bank_balances_v2_filter( - self, accounts: Optional[List[str]] = None - ) -> chain_stream_v2_query.BankBalancesFilter: - accounts = accounts or ["*"] - return chain_stream_v2_query.BankBalancesFilter(accounts=accounts) - - def chain_stream_subaccount_deposits_v2_filter( - self, - subaccount_ids: Optional[List[str]] = None, - ) -> chain_stream_v2_query.SubaccountDepositsFilter: - subaccount_ids = subaccount_ids or ["*"] - return chain_stream_v2_query.SubaccountDepositsFilter(subaccount_ids=subaccount_ids) - - def chain_stream_trades_v2_filter( - self, - subaccount_ids: Optional[List[str]] = None, - market_ids: Optional[List[str]] = None, - ) -> chain_stream_v2_query.TradesFilter: - subaccount_ids = subaccount_ids or ["*"] - market_ids = market_ids or ["*"] - return chain_stream_v2_query.TradesFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) - - def chain_stream_orders_v2_filter( - self, - subaccount_ids: Optional[List[str]] = None, - market_ids: Optional[List[str]] = None, - ) -> chain_stream_v2_query.OrdersFilter: - subaccount_ids = subaccount_ids or ["*"] - market_ids = market_ids or ["*"] - return chain_stream_v2_query.OrdersFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) - - def chain_stream_orderbooks_v2_filter( - self, - market_ids: Optional[List[str]] = None, - ) -> chain_stream_v2_query.OrderbookFilter: - market_ids = market_ids or ["*"] - return chain_stream_v2_query.OrderbookFilter(market_ids=market_ids) - - def chain_stream_positions_v2_filter( - self, - subaccount_ids: Optional[List[str]] = None, - market_ids: Optional[List[str]] = None, - ) -> chain_stream_v2_query.PositionsFilter: - subaccount_ids = subaccount_ids or ["*"] - market_ids = market_ids or ["*"] - return chain_stream_v2_query.PositionsFilter(subaccount_ids=subaccount_ids, market_ids=market_ids) - - def chain_stream_oracle_price_v2_filter( - self, - symbols: Optional[List[str]] = None, - ) -> chain_stream_v2_query.PositionsFilter: - symbols = symbols or ["*"] - return chain_stream_v2_query.OraclePriceFilter(symbol=symbols) - # endregion # ------------------------------------------------ diff --git a/pyinjective/proto/google/api/client_pb2.py b/pyinjective/proto/google/api/client_pb2.py index 57d8f80c..5acd81af 100644 --- a/pyinjective/proto/google/api/client_pb2.py +++ b/pyinjective/proto/google/api/client_pb2.py @@ -17,7 +17,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17google/api/client.proto\x12\ngoogle.api\x1a\x1dgoogle/api/launch_stage.proto\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto\"\x94\x01\n\x16\x43ommonLanguageSettings\x12\x30\n\x12reference_docs_uri\x18\x01 \x01(\tB\x02\x18\x01R\x10referenceDocsUri\x12H\n\x0c\x64\x65stinations\x18\x02 \x03(\x0e\x32$.google.api.ClientLibraryDestinationR\x0c\x64\x65stinations\"\x93\x05\n\x15\x43lientLibrarySettings\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12:\n\x0claunch_stage\x18\x02 \x01(\x0e\x32\x17.google.api.LaunchStageR\x0blaunchStage\x12,\n\x12rest_numeric_enums\x18\x03 \x01(\x08R\x10restNumericEnums\x12=\n\rjava_settings\x18\x15 \x01(\x0b\x32\x18.google.api.JavaSettingsR\x0cjavaSettings\x12:\n\x0c\x63pp_settings\x18\x16 \x01(\x0b\x32\x17.google.api.CppSettingsR\x0b\x63ppSettings\x12:\n\x0cphp_settings\x18\x17 \x01(\x0b\x32\x17.google.api.PhpSettingsR\x0bphpSettings\x12\x43\n\x0fpython_settings\x18\x18 \x01(\x0b\x32\x1a.google.api.PythonSettingsR\x0epythonSettings\x12=\n\rnode_settings\x18\x19 \x01(\x0b\x32\x18.google.api.NodeSettingsR\x0cnodeSettings\x12\x43\n\x0f\x64otnet_settings\x18\x1a \x01(\x0b\x32\x1a.google.api.DotnetSettingsR\x0e\x64otnetSettings\x12=\n\rruby_settings\x18\x1b \x01(\x0b\x32\x18.google.api.RubySettingsR\x0crubySettings\x12\x37\n\x0bgo_settings\x18\x1c \x01(\x0b\x32\x16.google.api.GoSettingsR\ngoSettings\"\xf4\x04\n\nPublishing\x12\x43\n\x0fmethod_settings\x18\x02 \x03(\x0b\x32\x1a.google.api.MethodSettingsR\x0emethodSettings\x12\"\n\rnew_issue_uri\x18\x65 \x01(\tR\x0bnewIssueUri\x12+\n\x11\x64ocumentation_uri\x18\x66 \x01(\tR\x10\x64ocumentationUri\x12$\n\x0e\x61pi_short_name\x18g \x01(\tR\x0c\x61piShortName\x12!\n\x0cgithub_label\x18h \x01(\tR\x0bgithubLabel\x12\x34\n\x16\x63odeowner_github_teams\x18i \x03(\tR\x14\x63odeownerGithubTeams\x12$\n\x0e\x64oc_tag_prefix\x18j \x01(\tR\x0c\x64ocTagPrefix\x12I\n\x0corganization\x18k \x01(\x0e\x32%.google.api.ClientLibraryOrganizationR\x0corganization\x12L\n\x10library_settings\x18m \x03(\x0b\x32!.google.api.ClientLibrarySettingsR\x0flibrarySettings\x12I\n!proto_reference_documentation_uri\x18n \x01(\tR\x1eprotoReferenceDocumentationUri\x12G\n rest_reference_documentation_uri\x18o \x01(\tR\x1drestReferenceDocumentationUri\"\x9a\x02\n\x0cJavaSettings\x12\'\n\x0flibrary_package\x18\x01 \x01(\tR\x0elibraryPackage\x12_\n\x13service_class_names\x18\x02 \x03(\x0b\x32/.google.api.JavaSettings.ServiceClassNamesEntryR\x11serviceClassNames\x12:\n\x06\x63ommon\x18\x03 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x1a\x44\n\x16ServiceClassNamesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"I\n\x0b\x43ppSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"I\n\x0bPhpSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"\xfd\x01\n\x0ePythonSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x12\x64\n\x15\x65xperimental_features\x18\x02 \x01(\x0b\x32/.google.api.PythonSettings.ExperimentalFeaturesR\x14\x65xperimentalFeatures\x1aI\n\x14\x45xperimentalFeatures\x12\x31\n\x15rest_async_io_enabled\x18\x01 \x01(\x08R\x12restAsyncIoEnabled\"J\n\x0cNodeSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"\xae\x04\n\x0e\x44otnetSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x12Z\n\x10renamed_services\x18\x02 \x03(\x0b\x32/.google.api.DotnetSettings.RenamedServicesEntryR\x0frenamedServices\x12]\n\x11renamed_resources\x18\x03 \x03(\x0b\x32\x30.google.api.DotnetSettings.RenamedResourcesEntryR\x10renamedResources\x12+\n\x11ignored_resources\x18\x04 \x03(\tR\x10ignoredResources\x12\x38\n\x18\x66orced_namespace_aliases\x18\x05 \x03(\tR\x16\x66orcedNamespaceAliases\x12\x35\n\x16handwritten_signatures\x18\x06 \x03(\tR\x15handwrittenSignatures\x1a\x42\n\x14RenamedServicesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a\x43\n\x15RenamedResourcesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"J\n\x0cRubySettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"H\n\nGoSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"\xc2\x03\n\x0eMethodSettings\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12I\n\x0clong_running\x18\x02 \x01(\x0b\x32&.google.api.MethodSettings.LongRunningR\x0blongRunning\x12\x32\n\x15\x61uto_populated_fields\x18\x03 \x03(\tR\x13\x61utoPopulatedFields\x1a\x94\x02\n\x0bLongRunning\x12G\n\x12initial_poll_delay\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x10initialPollDelay\x12\x32\n\x15poll_delay_multiplier\x18\x02 \x01(\x02R\x13pollDelayMultiplier\x12?\n\x0emax_poll_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x0cmaxPollDelay\x12G\n\x12total_poll_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x10totalPollTimeout*\xa3\x01\n\x19\x43lientLibraryOrganization\x12+\n\'CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\x10\x00\x12\t\n\x05\x43LOUD\x10\x01\x12\x07\n\x03\x41\x44S\x10\x02\x12\n\n\x06PHOTOS\x10\x03\x12\x0f\n\x0bSTREET_VIEW\x10\x04\x12\x0c\n\x08SHOPPING\x10\x05\x12\x07\n\x03GEO\x10\x06\x12\x11\n\rGENERATIVE_AI\x10\x07*g\n\x18\x43lientLibraryDestination\x12*\n&CLIENT_LIBRARY_DESTINATION_UNSPECIFIED\x10\x00\x12\n\n\x06GITHUB\x10\n\x12\x13\n\x0fPACKAGE_MANAGER\x10\x14:J\n\x10method_signature\x12\x1e.google.protobuf.MethodOptions\x18\x9b\x08 \x03(\tR\x0fmethodSignature:C\n\x0c\x64\x65\x66\x61ult_host\x12\x1f.google.protobuf.ServiceOptions\x18\x99\x08 \x01(\tR\x0b\x64\x65\x66\x61ultHost:C\n\x0coauth_scopes\x12\x1f.google.protobuf.ServiceOptions\x18\x9a\x08 \x01(\tR\x0boauthScopes:D\n\x0b\x61pi_version\x12\x1f.google.protobuf.ServiceOptions\x18\xc1\xba\xab\xfa\x01 \x01(\tR\napiVersionB\xa9\x01\n\x0e\x63om.google.apiB\x0b\x43lientProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x03GAX\xaa\x02\nGoogle.Api\xca\x02\nGoogle\\Api\xe2\x02\x16Google\\Api\\GPBMetadata\xea\x02\x0bGoogle::Apib\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17google/api/client.proto\x12\ngoogle.api\x1a\x1dgoogle/api/launch_stage.proto\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto\"\xf8\x01\n\x16\x43ommonLanguageSettings\x12\x30\n\x12reference_docs_uri\x18\x01 \x01(\tB\x02\x18\x01R\x10referenceDocsUri\x12H\n\x0c\x64\x65stinations\x18\x02 \x03(\x0e\x32$.google.api.ClientLibraryDestinationR\x0c\x64\x65stinations\x12\x62\n\x1aselective_gapic_generation\x18\x03 \x01(\x0b\x32$.google.api.SelectiveGapicGenerationR\x18selectiveGapicGeneration\"\x93\x05\n\x15\x43lientLibrarySettings\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12:\n\x0claunch_stage\x18\x02 \x01(\x0e\x32\x17.google.api.LaunchStageR\x0blaunchStage\x12,\n\x12rest_numeric_enums\x18\x03 \x01(\x08R\x10restNumericEnums\x12=\n\rjava_settings\x18\x15 \x01(\x0b\x32\x18.google.api.JavaSettingsR\x0cjavaSettings\x12:\n\x0c\x63pp_settings\x18\x16 \x01(\x0b\x32\x17.google.api.CppSettingsR\x0b\x63ppSettings\x12:\n\x0cphp_settings\x18\x17 \x01(\x0b\x32\x17.google.api.PhpSettingsR\x0bphpSettings\x12\x43\n\x0fpython_settings\x18\x18 \x01(\x0b\x32\x1a.google.api.PythonSettingsR\x0epythonSettings\x12=\n\rnode_settings\x18\x19 \x01(\x0b\x32\x18.google.api.NodeSettingsR\x0cnodeSettings\x12\x43\n\x0f\x64otnet_settings\x18\x1a \x01(\x0b\x32\x1a.google.api.DotnetSettingsR\x0e\x64otnetSettings\x12=\n\rruby_settings\x18\x1b \x01(\x0b\x32\x18.google.api.RubySettingsR\x0crubySettings\x12\x37\n\x0bgo_settings\x18\x1c \x01(\x0b\x32\x16.google.api.GoSettingsR\ngoSettings\"\xf4\x04\n\nPublishing\x12\x43\n\x0fmethod_settings\x18\x02 \x03(\x0b\x32\x1a.google.api.MethodSettingsR\x0emethodSettings\x12\"\n\rnew_issue_uri\x18\x65 \x01(\tR\x0bnewIssueUri\x12+\n\x11\x64ocumentation_uri\x18\x66 \x01(\tR\x10\x64ocumentationUri\x12$\n\x0e\x61pi_short_name\x18g \x01(\tR\x0c\x61piShortName\x12!\n\x0cgithub_label\x18h \x01(\tR\x0bgithubLabel\x12\x34\n\x16\x63odeowner_github_teams\x18i \x03(\tR\x14\x63odeownerGithubTeams\x12$\n\x0e\x64oc_tag_prefix\x18j \x01(\tR\x0c\x64ocTagPrefix\x12I\n\x0corganization\x18k \x01(\x0e\x32%.google.api.ClientLibraryOrganizationR\x0corganization\x12L\n\x10library_settings\x18m \x03(\x0b\x32!.google.api.ClientLibrarySettingsR\x0flibrarySettings\x12I\n!proto_reference_documentation_uri\x18n \x01(\tR\x1eprotoReferenceDocumentationUri\x12G\n rest_reference_documentation_uri\x18o \x01(\tR\x1drestReferenceDocumentationUri\"\x9a\x02\n\x0cJavaSettings\x12\'\n\x0flibrary_package\x18\x01 \x01(\tR\x0elibraryPackage\x12_\n\x13service_class_names\x18\x02 \x03(\x0b\x32/.google.api.JavaSettings.ServiceClassNamesEntryR\x11serviceClassNames\x12:\n\x06\x63ommon\x18\x03 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x1a\x44\n\x16ServiceClassNamesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"I\n\x0b\x43ppSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"I\n\x0bPhpSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"\xfd\x01\n\x0ePythonSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x12\x64\n\x15\x65xperimental_features\x18\x02 \x01(\x0b\x32/.google.api.PythonSettings.ExperimentalFeaturesR\x14\x65xperimentalFeatures\x1aI\n\x14\x45xperimentalFeatures\x12\x31\n\x15rest_async_io_enabled\x18\x01 \x01(\x08R\x12restAsyncIoEnabled\"J\n\x0cNodeSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"\xae\x04\n\x0e\x44otnetSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x12Z\n\x10renamed_services\x18\x02 \x03(\x0b\x32/.google.api.DotnetSettings.RenamedServicesEntryR\x0frenamedServices\x12]\n\x11renamed_resources\x18\x03 \x03(\x0b\x32\x30.google.api.DotnetSettings.RenamedResourcesEntryR\x10renamedResources\x12+\n\x11ignored_resources\x18\x04 \x03(\tR\x10ignoredResources\x12\x38\n\x18\x66orced_namespace_aliases\x18\x05 \x03(\tR\x16\x66orcedNamespaceAliases\x12\x35\n\x16handwritten_signatures\x18\x06 \x03(\tR\x15handwrittenSignatures\x1a\x42\n\x14RenamedServicesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x1a\x43\n\x15RenamedResourcesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"J\n\x0cRubySettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"H\n\nGoSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\"\xc2\x03\n\x0eMethodSettings\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12I\n\x0clong_running\x18\x02 \x01(\x0b\x32&.google.api.MethodSettings.LongRunningR\x0blongRunning\x12\x32\n\x15\x61uto_populated_fields\x18\x03 \x03(\tR\x13\x61utoPopulatedFields\x1a\x94\x02\n\x0bLongRunning\x12G\n\x12initial_poll_delay\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x10initialPollDelay\x12\x32\n\x15poll_delay_multiplier\x18\x02 \x01(\x02R\x13pollDelayMultiplier\x12?\n\x0emax_poll_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x0cmaxPollDelay\x12G\n\x12total_poll_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x10totalPollTimeout\"4\n\x18SelectiveGapicGeneration\x12\x18\n\x07methods\x18\x01 \x03(\tR\x07methods*\xa3\x01\n\x19\x43lientLibraryOrganization\x12+\n\'CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\x10\x00\x12\t\n\x05\x43LOUD\x10\x01\x12\x07\n\x03\x41\x44S\x10\x02\x12\n\n\x06PHOTOS\x10\x03\x12\x0f\n\x0bSTREET_VIEW\x10\x04\x12\x0c\n\x08SHOPPING\x10\x05\x12\x07\n\x03GEO\x10\x06\x12\x11\n\rGENERATIVE_AI\x10\x07*g\n\x18\x43lientLibraryDestination\x12*\n&CLIENT_LIBRARY_DESTINATION_UNSPECIFIED\x10\x00\x12\n\n\x06GITHUB\x10\n\x12\x13\n\x0fPACKAGE_MANAGER\x10\x14:J\n\x10method_signature\x12\x1e.google.protobuf.MethodOptions\x18\x9b\x08 \x03(\tR\x0fmethodSignature:C\n\x0c\x64\x65\x66\x61ult_host\x12\x1f.google.protobuf.ServiceOptions\x18\x99\x08 \x01(\tR\x0b\x64\x65\x66\x61ultHost:C\n\x0coauth_scopes\x12\x1f.google.protobuf.ServiceOptions\x18\x9a\x08 \x01(\tR\x0boauthScopes:D\n\x0b\x61pi_version\x12\x1f.google.protobuf.ServiceOptions\x18\xc1\xba\xab\xfa\x01 \x01(\tR\napiVersionB\xa9\x01\n\x0e\x63om.google.apiB\x0b\x43lientProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x03GAX\xaa\x02\nGoogle.Api\xca\x02\nGoogle\\Api\xe2\x02\x16Google\\Api\\GPBMetadata\xea\x02\x0bGoogle::Apib\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -33,42 +33,44 @@ _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_options = b'8\001' _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._loaded_options = None _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_options = b'8\001' - _globals['_CLIENTLIBRARYORGANIZATION']._serialized_start=3512 - _globals['_CLIENTLIBRARYORGANIZATION']._serialized_end=3675 - _globals['_CLIENTLIBRARYDESTINATION']._serialized_start=3677 - _globals['_CLIENTLIBRARYDESTINATION']._serialized_end=3780 + _globals['_CLIENTLIBRARYORGANIZATION']._serialized_start=3666 + _globals['_CLIENTLIBRARYORGANIZATION']._serialized_end=3829 + _globals['_CLIENTLIBRARYDESTINATION']._serialized_start=3831 + _globals['_CLIENTLIBRARYDESTINATION']._serialized_end=3934 _globals['_COMMONLANGUAGESETTINGS']._serialized_start=137 - _globals['_COMMONLANGUAGESETTINGS']._serialized_end=285 - _globals['_CLIENTLIBRARYSETTINGS']._serialized_start=288 - _globals['_CLIENTLIBRARYSETTINGS']._serialized_end=947 - _globals['_PUBLISHING']._serialized_start=950 - _globals['_PUBLISHING']._serialized_end=1578 - _globals['_JAVASETTINGS']._serialized_start=1581 - _globals['_JAVASETTINGS']._serialized_end=1863 - _globals['_JAVASETTINGS_SERVICECLASSNAMESENTRY']._serialized_start=1795 - _globals['_JAVASETTINGS_SERVICECLASSNAMESENTRY']._serialized_end=1863 - _globals['_CPPSETTINGS']._serialized_start=1865 - _globals['_CPPSETTINGS']._serialized_end=1938 - _globals['_PHPSETTINGS']._serialized_start=1940 - _globals['_PHPSETTINGS']._serialized_end=2013 - _globals['_PYTHONSETTINGS']._serialized_start=2016 - _globals['_PYTHONSETTINGS']._serialized_end=2269 - _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_start=2196 - _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_end=2269 - _globals['_NODESETTINGS']._serialized_start=2271 - _globals['_NODESETTINGS']._serialized_end=2345 - _globals['_DOTNETSETTINGS']._serialized_start=2348 - _globals['_DOTNETSETTINGS']._serialized_end=2906 - _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=2771 - _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=2837 - _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_start=2839 - _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_end=2906 - _globals['_RUBYSETTINGS']._serialized_start=2908 - _globals['_RUBYSETTINGS']._serialized_end=2982 - _globals['_GOSETTINGS']._serialized_start=2984 - _globals['_GOSETTINGS']._serialized_end=3056 - _globals['_METHODSETTINGS']._serialized_start=3059 - _globals['_METHODSETTINGS']._serialized_end=3509 - _globals['_METHODSETTINGS_LONGRUNNING']._serialized_start=3233 - _globals['_METHODSETTINGS_LONGRUNNING']._serialized_end=3509 + _globals['_COMMONLANGUAGESETTINGS']._serialized_end=385 + _globals['_CLIENTLIBRARYSETTINGS']._serialized_start=388 + _globals['_CLIENTLIBRARYSETTINGS']._serialized_end=1047 + _globals['_PUBLISHING']._serialized_start=1050 + _globals['_PUBLISHING']._serialized_end=1678 + _globals['_JAVASETTINGS']._serialized_start=1681 + _globals['_JAVASETTINGS']._serialized_end=1963 + _globals['_JAVASETTINGS_SERVICECLASSNAMESENTRY']._serialized_start=1895 + _globals['_JAVASETTINGS_SERVICECLASSNAMESENTRY']._serialized_end=1963 + _globals['_CPPSETTINGS']._serialized_start=1965 + _globals['_CPPSETTINGS']._serialized_end=2038 + _globals['_PHPSETTINGS']._serialized_start=2040 + _globals['_PHPSETTINGS']._serialized_end=2113 + _globals['_PYTHONSETTINGS']._serialized_start=2116 + _globals['_PYTHONSETTINGS']._serialized_end=2369 + _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_start=2296 + _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_end=2369 + _globals['_NODESETTINGS']._serialized_start=2371 + _globals['_NODESETTINGS']._serialized_end=2445 + _globals['_DOTNETSETTINGS']._serialized_start=2448 + _globals['_DOTNETSETTINGS']._serialized_end=3006 + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=2871 + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=2937 + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_start=2939 + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_end=3006 + _globals['_RUBYSETTINGS']._serialized_start=3008 + _globals['_RUBYSETTINGS']._serialized_end=3082 + _globals['_GOSETTINGS']._serialized_start=3084 + _globals['_GOSETTINGS']._serialized_end=3156 + _globals['_METHODSETTINGS']._serialized_start=3159 + _globals['_METHODSETTINGS']._serialized_end=3609 + _globals['_METHODSETTINGS_LONGRUNNING']._serialized_start=3333 + _globals['_METHODSETTINGS_LONGRUNNING']._serialized_end=3609 + _globals['_SELECTIVEGAPICGENERATION']._serialized_start=3611 + _globals['_SELECTIVEGAPICGENERATION']._serialized_end=3663 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/exchange/v2/events_pb2.py b/pyinjective/proto/injective/exchange/v2/events_pb2.py index 04428a8f..de2274e5 100644 --- a/pyinjective/proto/injective/exchange/v2/events_pb2.py +++ b/pyinjective/proto/injective/exchange/v2/events_pb2.py @@ -20,7 +20,7 @@ from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"injective/exchange/v2/events.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a$injective/exchange/v2/exchange.proto\x1a\"injective/exchange/v2/market.proto\x1a!injective/exchange/v2/order.proto\"\xd2\x01\n\x17\x45ventBatchSpotExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12J\n\rexecutionType\x18\x03 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x37\n\x06trades\x18\x04 \x03(\x0b\x32\x1f.injective.exchange.v2.TradeLogR\x06trades\"\xdd\x02\n\x1d\x45ventBatchDerivativeExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12%\n\x0eis_liquidation\x18\x03 \x01(\x08R\risLiquidation\x12R\n\x12\x63umulative_funding\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x63umulativeFunding\x12J\n\rexecutionType\x18\x05 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x41\n\x06trades\x18\x06 \x03(\x0b\x32).injective.exchange.v2.DerivativeTradeLogR\x06trades\"\xc2\x02\n\x1d\x45ventLostFundsFromLiquidation\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12x\n\'lost_funds_from_available_during_payout\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"lostFundsFromAvailableDuringPayout\x12\x65\n\x1dlost_funds_from_order_cancels\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19lostFundsFromOrderCancels\"\x84\x01\n\x1c\x45ventBatchDerivativePosition\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\tpositions\x18\x02 \x03(\x0b\x32).injective.exchange.v2.SubaccountPositionR\tpositions\"\xbb\x01\n\x1b\x45ventDerivativeMarketPaused\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12.\n\x13total_missing_funds\x18\x03 \x01(\tR\x11totalMissingFunds\x12,\n\x12missing_funds_rate\x18\x04 \x01(\tR\x10missingFundsRate\"\x8f\x01\n\x1b\x45ventMarketBeyondBankruptcy\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12\x30\n\x14missing_market_funds\x18\x03 \x01(\tR\x12missingMarketFunds\"\x88\x01\n\x18\x45ventAllPositionsHaircut\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12,\n\x12missing_funds_rate\x18\x03 \x01(\tR\x10missingFundsRate\"j\n\x1e\x45ventBinaryOptionsMarketUpdate\x12H\n\x06market\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.BinaryOptionsMarketB\x04\xc8\xde\x1f\x00R\x06market\"\xbf\x01\n\x12\x45ventNewSpotOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x44\n\nbuy_orders\x18\x02 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\tbuyOrders\x12\x46\n\x0bsell_orders\x18\x03 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\nsellOrders\"\xd1\x01\n\x18\x45ventNewDerivativeOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\nbuy_orders\x18\x02 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\tbuyOrders\x12L\n\x0bsell_orders\x18\x03 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\nsellOrders\"v\n\x14\x45ventCancelSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"X\n\x15\x45ventSpotMarketUpdate\x12?\n\x06market\x18\x01 \x01(\x0b\x32!.injective.exchange.v2.SpotMarketB\x04\xc8\xde\x1f\x00R\x06market\"\x98\x02\n\x1a\x45ventPerpetualMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12\x64\n\x15perpetual_market_info\x18\x02 \x01(\x0b\x32*.injective.exchange.v2.PerpetualMarketInfoB\x04\xc8\xde\x1f\x01R\x13perpetualMarketInfo\x12M\n\x07\x66unding\x18\x03 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x01R\x07\x66unding\"\xda\x01\n\x1e\x45ventExpiryFuturesMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12q\n\x1a\x65xpiry_futures_market_info\x18\x03 \x01(\x0b\x32..injective.exchange.v2.ExpiryFuturesMarketInfoB\x04\xc8\xde\x1f\x01R\x17\x65xpiryFuturesMarketInfo\"\xc7\x02\n!EventPerpetualMarketFundingUpdate\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12M\n\x07\x66unding\x18\x02 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x00R\x07\x66unding\x12*\n\x11is_hourly_funding\x18\x03 \x01(\x08R\x0fisHourlyFunding\x12\x46\n\x0c\x66unding_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x66undingRate\x12\x42\n\nmark_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tmarkPrice\"\x97\x01\n\x16\x45ventSubaccountDeposit\x12\x1f\n\x0bsrc_address\x18\x01 \x01(\tR\nsrcAddress\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\x98\x01\n\x17\x45ventSubaccountWithdraw\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12\x1f\n\x0b\x64st_address\x18\x02 \x01(\tR\ndstAddress\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\xb1\x01\n\x1e\x45ventSubaccountBalanceTransfer\x12*\n\x11src_subaccount_id\x18\x01 \x01(\tR\x0fsrcSubaccountId\x12*\n\x11\x64st_subaccount_id\x18\x02 \x01(\tR\x0f\x64stSubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"h\n\x17\x45ventBatchDepositUpdate\x12M\n\x0f\x64\x65posit_updates\x18\x01 \x03(\x0b\x32$.injective.exchange.v2.DepositUpdateR\x0e\x64\x65positUpdates\"\xc2\x01\n\x1b\x44\x65rivativeMarketOrderCancel\x12U\n\x0cmarket_order\x18\x01 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\x12L\n\x0f\x63\x61ncel_quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0e\x63\x61ncelQuantity\"\x9d\x02\n\x1a\x45ventCancelDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12h\n\x13market_order_cancel\x18\x04 \x01(\x0b\x32\x32.injective.exchange.v2.DerivativeMarketOrderCancelB\x04\xc8\xde\x1f\x01R\x11marketOrderCancel\"b\n\x18\x45ventFeeDiscountSchedule\x12\x46\n\x08schedule\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountScheduleR\x08schedule\"\xd8\x01\n EventTradingRewardCampaignUpdate\x12U\n\rcampaign_info\x18\x01 \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12]\n\x15\x63\x61mpaign_reward_pools\x18\x02 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR\x13\x63\x61mpaignRewardPools\"p\n\x1e\x45ventTradingRewardDistribution\x12N\n\x0f\x61\x63\x63ount_rewards\x18\x01 \x03(\x0b\x32%.injective.exchange.v2.AccountRewardsR\x0e\x61\x63\x63ountRewards\"\xb0\x01\n\"EventNewConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12<\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderR\x05order\x12\x12\n\x04hash\x18\x03 \x01(\x0cR\x04hash\x12\x1b\n\tis_market\x18\x04 \x01(\x08R\x08isMarket\"\x95\x02\n%EventCancelConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12U\n\x0cmarket_order\x18\x04 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\"\xfb\x01\n&EventConditionalDerivativeOrderTrigger\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12&\n\x0eisLimitTrigger\x18\x02 \x01(\x08R\x0eisLimitTrigger\x12\x30\n\x14triggered_order_hash\x18\x03 \x01(\x0cR\x12triggeredOrderHash\x12*\n\x11placed_order_hash\x18\x04 \x01(\x0cR\x0fplacedOrderHash\x12.\n\x13triggered_order_cid\x18\x05 \x01(\tR\x11triggeredOrderCid\"l\n\x0e\x45ventOrderFail\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0cR\x07\x61\x63\x63ount\x12\x16\n\x06hashes\x18\x02 \x03(\x0cR\x06hashes\x12\x14\n\x05\x66lags\x18\x03 \x03(\rR\x05\x66lags\x12\x12\n\x04\x63ids\x18\x04 \x03(\tR\x04\x63ids\"\x8f\x01\n+EventAtomicMarketOrderFeeMultipliersUpdated\x12`\n\x16market_fee_multipliers\x18\x01 \x03(\x0b\x32*.injective.exchange.v2.MarketFeeMultiplierR\x14marketFeeMultipliers\"\xb8\x01\n\x14\x45ventOrderbookUpdate\x12I\n\x0cspot_updates\x18\x01 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x0bspotUpdates\x12U\n\x12\x64\x65rivative_updates\x18\x02 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x11\x64\x65rivativeUpdates\"c\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12>\n\torderbook\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.OrderbookR\torderbook\"\xa4\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12;\n\nbuy_levels\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\tbuyLevels\x12=\n\x0bsell_levels\x18\x03 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\nsellLevels\"w\n\x18\x45ventGrantAuthorizations\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x41\n\x06grants\x18\x02 \x03(\x0b\x32).injective.exchange.v2.GrantAuthorizationR\x06grants\"\x81\x01\n\x14\x45ventGrantActivation\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\x12\x35\n\x06\x61mount\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"G\n\x11\x45ventInvalidGrant\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\"\xab\x01\n\x14\x45ventOrderCancelFail\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x04 \x01(\tR\x03\x63id\x12 \n\x0b\x64\x65scription\x18\x05 \x01(\tR\x0b\x64\x65scriptionB\xf1\x01\n\x19\x63om.injective.exchange.v2B\x0b\x45ventsProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"injective/exchange/v2/events.proto\x12\x15injective.exchange.v2\x1a\x14gogoproto/gogo.proto\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a%injective/oracle/v1beta1/oracle.proto\x1a$injective/exchange/v2/exchange.proto\x1a\"injective/exchange/v2/market.proto\x1a!injective/exchange/v2/order.proto\"\xd2\x01\n\x17\x45ventBatchSpotExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12J\n\rexecutionType\x18\x03 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x37\n\x06trades\x18\x04 \x03(\x0b\x32\x1f.injective.exchange.v2.TradeLogR\x06trades\"\xdd\x02\n\x1d\x45ventBatchDerivativeExecution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12%\n\x0eis_liquidation\x18\x03 \x01(\x08R\risLiquidation\x12R\n\x12\x63umulative_funding\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x11\x63umulativeFunding\x12J\n\rexecutionType\x18\x05 \x01(\x0e\x32$.injective.exchange.v2.ExecutionTypeR\rexecutionType\x12\x41\n\x06trades\x18\x06 \x03(\x0b\x32).injective.exchange.v2.DerivativeTradeLogR\x06trades\"\xc2\x02\n\x1d\x45ventLostFundsFromLiquidation\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12x\n\'lost_funds_from_available_during_payout\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\"lostFundsFromAvailableDuringPayout\x12\x65\n\x1dlost_funds_from_order_cancels\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x19lostFundsFromOrderCancels\"\x84\x01\n\x1c\x45ventBatchDerivativePosition\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\tpositions\x18\x02 \x03(\x0b\x32).injective.exchange.v2.SubaccountPositionR\tpositions\"\xbb\x01\n\x1b\x45ventDerivativeMarketPaused\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12.\n\x13total_missing_funds\x18\x03 \x01(\tR\x11totalMissingFunds\x12,\n\x12missing_funds_rate\x18\x04 \x01(\tR\x10missingFundsRate\"\x8f\x01\n\x1b\x45ventMarketBeyondBankruptcy\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12\x30\n\x14missing_market_funds\x18\x03 \x01(\tR\x12missingMarketFunds\"\x88\x01\n\x18\x45ventAllPositionsHaircut\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12!\n\x0csettle_price\x18\x02 \x01(\tR\x0bsettlePrice\x12,\n\x12missing_funds_rate\x18\x03 \x01(\tR\x10missingFundsRate\"j\n\x1e\x45ventBinaryOptionsMarketUpdate\x12H\n\x06market\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.BinaryOptionsMarketB\x04\xc8\xde\x1f\x00R\x06market\"\xbf\x01\n\x12\x45ventNewSpotOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x44\n\nbuy_orders\x18\x02 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\tbuyOrders\x12\x46\n\x0bsell_orders\x18\x03 \x03(\x0b\x32%.injective.exchange.v2.SpotLimitOrderR\nsellOrders\"\xd1\x01\n\x18\x45ventNewDerivativeOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12J\n\nbuy_orders\x18\x02 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\tbuyOrders\x12L\n\x0bsell_orders\x18\x03 \x03(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderR\nsellOrders\"v\n\x14\x45ventCancelSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"X\n\x15\x45ventSpotMarketUpdate\x12?\n\x06market\x18\x01 \x01(\x0b\x32!.injective.exchange.v2.SpotMarketB\x04\xc8\xde\x1f\x00R\x06market\"\x98\x02\n\x1a\x45ventPerpetualMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12\x64\n\x15perpetual_market_info\x18\x02 \x01(\x0b\x32*.injective.exchange.v2.PerpetualMarketInfoB\x04\xc8\xde\x1f\x01R\x13perpetualMarketInfo\x12M\n\x07\x66unding\x18\x03 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x01R\x07\x66unding\"\xda\x01\n\x1e\x45ventExpiryFuturesMarketUpdate\x12\x45\n\x06market\x18\x01 \x01(\x0b\x32\'.injective.exchange.v2.DerivativeMarketB\x04\xc8\xde\x1f\x00R\x06market\x12q\n\x1a\x65xpiry_futures_market_info\x18\x03 \x01(\x0b\x32..injective.exchange.v2.ExpiryFuturesMarketInfoB\x04\xc8\xde\x1f\x01R\x17\x65xpiryFuturesMarketInfo\"\xc7\x02\n!EventPerpetualMarketFundingUpdate\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12M\n\x07\x66unding\x18\x02 \x01(\x0b\x32-.injective.exchange.v2.PerpetualMarketFundingB\x04\xc8\xde\x1f\x00R\x07\x66unding\x12*\n\x11is_hourly_funding\x18\x03 \x01(\x08R\x0fisHourlyFunding\x12\x46\n\x0c\x66unding_rate\x18\x04 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0b\x66undingRate\x12\x42\n\nmark_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\tmarkPrice\"\x97\x01\n\x16\x45ventSubaccountDeposit\x12\x1f\n\x0bsrc_address\x18\x01 \x01(\tR\nsrcAddress\x12#\n\rsubaccount_id\x18\x02 \x01(\x0cR\x0csubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\x98\x01\n\x17\x45ventSubaccountWithdraw\x12#\n\rsubaccount_id\x18\x01 \x01(\x0cR\x0csubaccountId\x12\x1f\n\x0b\x64st_address\x18\x02 \x01(\tR\ndstAddress\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"\xb1\x01\n\x1e\x45ventSubaccountBalanceTransfer\x12*\n\x11src_subaccount_id\x18\x01 \x01(\tR\x0fsrcSubaccountId\x12*\n\x11\x64st_subaccount_id\x18\x02 \x01(\tR\x0f\x64stSubaccountId\x12\x37\n\x06\x61mount\x18\x03 \x01(\x0b\x32\x19.cosmos.base.v1beta1.CoinB\x04\xc8\xde\x1f\x00R\x06\x61mount\"h\n\x17\x45ventBatchDepositUpdate\x12M\n\x0f\x64\x65posit_updates\x18\x01 \x03(\x0b\x32$.injective.exchange.v2.DepositUpdateR\x0e\x64\x65positUpdates\"\xc2\x01\n\x1b\x44\x65rivativeMarketOrderCancel\x12U\n\x0cmarket_order\x18\x01 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\x12L\n\x0f\x63\x61ncel_quantity\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x0e\x63\x61ncelQuantity\"\x9d\x02\n\x1a\x45ventCancelDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12h\n\x13market_order_cancel\x18\x04 \x01(\x0b\x32\x32.injective.exchange.v2.DerivativeMarketOrderCancelB\x04\xc8\xde\x1f\x01R\x11marketOrderCancel\"b\n\x18\x45ventFeeDiscountSchedule\x12\x46\n\x08schedule\x18\x01 \x01(\x0b\x32*.injective.exchange.v2.FeeDiscountScheduleR\x08schedule\"\xd8\x01\n EventTradingRewardCampaignUpdate\x12U\n\rcampaign_info\x18\x01 \x01(\x0b\x32\x30.injective.exchange.v2.TradingRewardCampaignInfoR\x0c\x63\x61mpaignInfo\x12]\n\x15\x63\x61mpaign_reward_pools\x18\x02 \x03(\x0b\x32).injective.exchange.v2.CampaignRewardPoolR\x13\x63\x61mpaignRewardPools\"p\n\x1e\x45ventTradingRewardDistribution\x12N\n\x0f\x61\x63\x63ount_rewards\x18\x01 \x03(\x0b\x32%.injective.exchange.v2.AccountRewardsR\x0e\x61\x63\x63ountRewards\"\xb0\x01\n\"EventNewConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12<\n\x05order\x18\x02 \x01(\x0b\x32&.injective.exchange.v2.DerivativeOrderR\x05order\x12\x12\n\x04hash\x18\x03 \x01(\x0cR\x04hash\x12\x1b\n\tis_market\x18\x04 \x01(\x08R\x08isMarket\"\x95\x02\n%EventCancelConditionalDerivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12$\n\risLimitCancel\x18\x02 \x01(\x08R\risLimitCancel\x12R\n\x0blimit_order\x18\x03 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x01R\nlimitOrder\x12U\n\x0cmarket_order\x18\x04 \x01(\x0b\x32,.injective.exchange.v2.DerivativeMarketOrderB\x04\xc8\xde\x1f\x01R\x0bmarketOrder\"\xfb\x01\n&EventConditionalDerivativeOrderTrigger\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12&\n\x0eisLimitTrigger\x18\x02 \x01(\x08R\x0eisLimitTrigger\x12\x30\n\x14triggered_order_hash\x18\x03 \x01(\x0cR\x12triggeredOrderHash\x12*\n\x11placed_order_hash\x18\x04 \x01(\x0cR\x0fplacedOrderHash\x12.\n\x13triggered_order_cid\x18\x05 \x01(\tR\x11triggeredOrderCid\"l\n\x0e\x45ventOrderFail\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0cR\x07\x61\x63\x63ount\x12\x16\n\x06hashes\x18\x02 \x03(\x0cR\x06hashes\x12\x14\n\x05\x66lags\x18\x03 \x03(\rR\x05\x66lags\x12\x12\n\x04\x63ids\x18\x04 \x03(\tR\x04\x63ids\"\x8f\x01\n+EventAtomicMarketOrderFeeMultipliersUpdated\x12`\n\x16market_fee_multipliers\x18\x01 \x03(\x0b\x32*.injective.exchange.v2.MarketFeeMultiplierR\x14marketFeeMultipliers\"\xb8\x01\n\x14\x45ventOrderbookUpdate\x12I\n\x0cspot_updates\x18\x01 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x0bspotUpdates\x12U\n\x12\x64\x65rivative_updates\x18\x02 \x03(\x0b\x32&.injective.exchange.v2.OrderbookUpdateR\x11\x64\x65rivativeUpdates\"c\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12>\n\torderbook\x18\x02 \x01(\x0b\x32 .injective.exchange.v2.OrderbookR\torderbook\"\xa4\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\x0cR\x08marketId\x12;\n\nbuy_levels\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\tbuyLevels\x12=\n\x0bsell_levels\x18\x03 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\nsellLevels\"w\n\x18\x45ventGrantAuthorizations\x12\x18\n\x07granter\x18\x01 \x01(\tR\x07granter\x12\x41\n\x06grants\x18\x02 \x03(\x0b\x32).injective.exchange.v2.GrantAuthorizationR\x06grants\"\x81\x01\n\x14\x45ventGrantActivation\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\x12\x35\n\x06\x61mount\x18\x03 \x01(\tB\x1d\xc8\xde\x1f\x00\xda\xde\x1f\x15\x63osmossdk.io/math.IntR\x06\x61mount\"G\n\x11\x45ventInvalidGrant\x12\x18\n\x07grantee\x18\x01 \x01(\tR\x07grantee\x12\x18\n\x07granter\x18\x02 \x01(\tR\x07granter\"\xab\x01\n\x14\x45ventOrderCancelFail\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1d\n\norder_hash\x18\x03 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x04 \x01(\tR\x03\x63id\x12 \n\x0b\x64\x65scription\x18\x05 \x01(\tR\x0b\x64\x65scription\"\xfb\x01\n EventDerivativeOrdersV2Migration\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12[\n\x11\x62uy_order_changes\x18\x02 \x03(\x0b\x32/.injective.exchange.v2.DerivativeOrderV2ChangesR\x0f\x62uyOrderChanges\x12]\n\x12sell_order_changes\x18\x03 \x03(\x0b\x32/.injective.exchange.v2.DerivativeOrderV2ChangesR\x10sellOrderChanges\"\xc1\x02\n\x18\x44\x65rivativeOrderV2Changes\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12\x12\n\x04hash\x18\x02 \x01(\x0cR\x04hash\x12\x31\n\x01p\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01p\x12\x31\n\x01q\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01q\x12\x31\n\x01m\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01m\x12\x31\n\x01\x66\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01\x66\x12\x33\n\x02tp\x18\x07 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x02tp\"\xe9\x01\n\x1a\x45ventSpotOrdersV2Migration\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12U\n\x11\x62uy_order_changes\x18\x02 \x03(\x0b\x32).injective.exchange.v2.SpotOrderV2ChangesR\x0f\x62uyOrderChanges\x12W\n\x12sell_order_changes\x18\x03 \x03(\x0b\x32).injective.exchange.v2.SpotOrderV2ChangesR\x10sellOrderChanges\"\x88\x02\n\x12SpotOrderV2Changes\x12\x10\n\x03\x63id\x18\x01 \x01(\tR\x03\x63id\x12\x12\n\x04hash\x18\x02 \x01(\x0cR\x04hash\x12\x31\n\x01p\x18\x03 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01p\x12\x31\n\x01q\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01q\x12\x31\n\x01\x66\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x01\x66\x12\x33\n\x02tp\x18\x06 \x01(\tB#\xc8\xde\x1f\x01\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x02tp\"k\n\"EventDerivativePositionV2Migration\x12\x45\n\x08position\x18\x01 \x01(\x0b\x32).injective.exchange.v2.DerivativePositionR\x08positionB\xf1\x01\n\x19\x63om.injective.exchange.v2B\x0b\x45ventsProtoP\x01ZQgithub.com/InjectiveLabs/injective-core/injective-chain/modules/exchange/types/v2\xa2\x02\x03IEX\xaa\x02\x15Injective.Exchange.V2\xca\x02\x15Injective\\Exchange\\V2\xe2\x02!Injective\\Exchange\\V2\\GPBMetadata\xea\x02\x17Injective::Exchange::V2b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -76,6 +76,24 @@ _globals['_EVENTCANCELCONDITIONALDERIVATIVEORDER'].fields_by_name['market_order']._serialized_options = b'\310\336\037\001' _globals['_EVENTGRANTACTIVATION'].fields_by_name['amount']._loaded_options = None _globals['_EVENTGRANTACTIVATION'].fields_by_name['amount']._serialized_options = b'\310\336\037\000\332\336\037\025cosmossdk.io/math.Int' + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['p']._loaded_options = None + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['p']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['q']._loaded_options = None + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['q']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['m']._loaded_options = None + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['m']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['f']._loaded_options = None + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['f']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['tp']._loaded_options = None + _globals['_DERIVATIVEORDERV2CHANGES'].fields_by_name['tp']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTORDERV2CHANGES'].fields_by_name['p']._loaded_options = None + _globals['_SPOTORDERV2CHANGES'].fields_by_name['p']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTORDERV2CHANGES'].fields_by_name['q']._loaded_options = None + _globals['_SPOTORDERV2CHANGES'].fields_by_name['q']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTORDERV2CHANGES'].fields_by_name['f']._loaded_options = None + _globals['_SPOTORDERV2CHANGES'].fields_by_name['f']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' + _globals['_SPOTORDERV2CHANGES'].fields_by_name['tp']._loaded_options = None + _globals['_SPOTORDERV2CHANGES'].fields_by_name['tp']._serialized_options = b'\310\336\037\001\332\336\037\033cosmossdk.io/math.LegacyDec' _globals['_EVENTBATCHSPOTEXECUTION']._serialized_start=264 _globals['_EVENTBATCHSPOTEXECUTION']._serialized_end=474 _globals['_EVENTBATCHDERIVATIVEEXECUTION']._serialized_start=477 @@ -148,4 +166,14 @@ _globals['_EVENTINVALIDGRANT']._serialized_end=6582 _globals['_EVENTORDERCANCELFAIL']._serialized_start=6585 _globals['_EVENTORDERCANCELFAIL']._serialized_end=6756 + _globals['_EVENTDERIVATIVEORDERSV2MIGRATION']._serialized_start=6759 + _globals['_EVENTDERIVATIVEORDERSV2MIGRATION']._serialized_end=7010 + _globals['_DERIVATIVEORDERV2CHANGES']._serialized_start=7013 + _globals['_DERIVATIVEORDERV2CHANGES']._serialized_end=7334 + _globals['_EVENTSPOTORDERSV2MIGRATION']._serialized_start=7337 + _globals['_EVENTSPOTORDERSV2MIGRATION']._serialized_end=7570 + _globals['_SPOTORDERV2CHANGES']._serialized_start=7573 + _globals['_SPOTORDERV2CHANGES']._serialized_end=7837 + _globals['_EVENTDERIVATIVEPOSITIONV2MIGRATION']._serialized_start=7839 + _globals['_EVENTDERIVATIVEPOSITIONV2MIGRATION']._serialized_end=7946 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/stream/v1beta1/query_pb2.py b/pyinjective/proto/injective/stream/v1beta1/query_pb2.py index 380cce40..d5f8bc56 100644 --- a/pyinjective/proto/injective/stream/v1beta1/query_pb2.py +++ b/pyinjective/proto/injective/stream/v1beta1/query_pb2.py @@ -14,11 +14,12 @@ from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as cosmos_dot_base_dot_v1beta1_dot_coin__pb2 from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 -from pyinjective.proto.injective.exchange.v1beta1 import events_pb2 as injective_dot_exchange_dot_v1beta1_dot_events__pb2 -from pyinjective.proto.injective.exchange.v1beta1 import exchange_pb2 as injective_dot_exchange_dot_v1beta1_dot_exchange__pb2 +from pyinjective.proto.injective.exchange.v2 import events_pb2 as injective_dot_exchange_dot_v2_dot_events__pb2 +from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as injective_dot_exchange_dot_v2_dot_exchange__pb2 +from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$injective/stream/v1beta1/query.proto\x12\x18injective.stream.v1beta1\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x14gogoproto/gogo.proto\x1a\'injective/exchange/v1beta1/events.proto\x1a)injective/exchange/v1beta1/exchange.proto\"\x8e\x08\n\rStreamRequest\x12\x64\n\x14\x62\x61nk_balances_filter\x18\x01 \x01(\x0b\x32,.injective.stream.v1beta1.BankBalancesFilterB\x04\xc8\xde\x1f\x01R\x12\x62\x61nkBalancesFilter\x12v\n\x1asubaccount_deposits_filter\x18\x02 \x01(\x0b\x32\x32.injective.stream.v1beta1.SubaccountDepositsFilterB\x04\xc8\xde\x1f\x01R\x18subaccountDepositsFilter\x12Z\n\x12spot_trades_filter\x18\x03 \x01(\x0b\x32&.injective.stream.v1beta1.TradesFilterB\x04\xc8\xde\x1f\x01R\x10spotTradesFilter\x12\x66\n\x18\x64\x65rivative_trades_filter\x18\x04 \x01(\x0b\x32&.injective.stream.v1beta1.TradesFilterB\x04\xc8\xde\x1f\x01R\x16\x64\x65rivativeTradesFilter\x12Z\n\x12spot_orders_filter\x18\x05 \x01(\x0b\x32&.injective.stream.v1beta1.OrdersFilterB\x04\xc8\xde\x1f\x01R\x10spotOrdersFilter\x12\x66\n\x18\x64\x65rivative_orders_filter\x18\x06 \x01(\x0b\x32&.injective.stream.v1beta1.OrdersFilterB\x04\xc8\xde\x1f\x01R\x16\x64\x65rivativeOrdersFilter\x12\x65\n\x16spot_orderbooks_filter\x18\x07 \x01(\x0b\x32).injective.stream.v1beta1.OrderbookFilterB\x04\xc8\xde\x1f\x01R\x14spotOrderbooksFilter\x12q\n\x1c\x64\x65rivative_orderbooks_filter\x18\x08 \x01(\x0b\x32).injective.stream.v1beta1.OrderbookFilterB\x04\xc8\xde\x1f\x01R\x1a\x64\x65rivativeOrderbooksFilter\x12Z\n\x10positions_filter\x18\t \x01(\x0b\x32).injective.stream.v1beta1.PositionsFilterB\x04\xc8\xde\x1f\x01R\x0fpositionsFilter\x12\x61\n\x13oracle_price_filter\x18\n \x01(\x0b\x32+.injective.stream.v1beta1.OraclePriceFilterB\x04\xc8\xde\x1f\x01R\x11oraclePriceFilter\"\xa1\x07\n\x0eStreamResponse\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_time\x18\x02 \x01(\x03R\tblockTime\x12J\n\rbank_balances\x18\x03 \x03(\x0b\x32%.injective.stream.v1beta1.BankBalanceR\x0c\x62\x61nkBalances\x12]\n\x13subaccount_deposits\x18\x04 \x03(\x0b\x32,.injective.stream.v1beta1.SubaccountDepositsR\x12subaccountDeposits\x12\x44\n\x0bspot_trades\x18\x05 \x03(\x0b\x32#.injective.stream.v1beta1.SpotTradeR\nspotTrades\x12V\n\x11\x64\x65rivative_trades\x18\x06 \x03(\x0b\x32).injective.stream.v1beta1.DerivativeTradeR\x10\x64\x65rivativeTrades\x12J\n\x0bspot_orders\x18\x07 \x03(\x0b\x32).injective.stream.v1beta1.SpotOrderUpdateR\nspotOrders\x12\\\n\x11\x64\x65rivative_orders\x18\x08 \x03(\x0b\x32/.injective.stream.v1beta1.DerivativeOrderUpdateR\x10\x64\x65rivativeOrders\x12_\n\x16spot_orderbook_updates\x18\t \x03(\x0b\x32).injective.stream.v1beta1.OrderbookUpdateR\x14spotOrderbookUpdates\x12k\n\x1c\x64\x65rivative_orderbook_updates\x18\n \x03(\x0b\x32).injective.stream.v1beta1.OrderbookUpdateR\x1a\x64\x65rivativeOrderbookUpdates\x12@\n\tpositions\x18\x0b \x03(\x0b\x32\".injective.stream.v1beta1.PositionR\tpositions\x12J\n\roracle_prices\x18\x0c \x03(\x0b\x32%.injective.stream.v1beta1.OraclePriceR\x0coraclePrices\"f\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12\x41\n\torderbook\x18\x02 \x01(\x0b\x32#.injective.stream.v1beta1.OrderbookR\torderbook\"\xae\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12@\n\nbuy_levels\x18\x02 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\tbuyLevels\x12\x42\n\x0bsell_levels\x18\x03 \x03(\x0b\x32!.injective.exchange.v1beta1.LevelR\nsellLevels\"\x90\x01\n\x0b\x42\x61nkBalance\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12g\n\x08\x62\x61lances\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x08\x62\x61lances\"\x88\x01\n\x12SubaccountDeposits\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12M\n\x08\x64\x65posits\x18\x02 \x03(\x0b\x32+.injective.stream.v1beta1.SubaccountDepositB\x04\xc8\xde\x1f\x00R\x08\x64\x65posits\"n\n\x11SubaccountDeposit\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x43\n\x07\x64\x65posit\x18\x02 \x01(\x0b\x32#.injective.exchange.v1beta1.DepositB\x04\xc8\xde\x1f\x00R\x07\x64\x65posit\"\xc2\x01\n\x0fSpotOrderUpdate\x12\x43\n\x06status\x18\x01 \x01(\x0e\x32+.injective.stream.v1beta1.OrderUpdateStatusR\x06status\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id\x12\x39\n\x05order\x18\x04 \x01(\x0b\x32#.injective.stream.v1beta1.SpotOrderR\x05order\"p\n\tSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x46\n\x05order\x18\x02 \x01(\x0b\x32*.injective.exchange.v1beta1.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"\xce\x01\n\x15\x44\x65rivativeOrderUpdate\x12\x43\n\x06status\x18\x01 \x01(\x0e\x32+.injective.stream.v1beta1.OrderUpdateStatusR\x06status\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id\x12?\n\x05order\x18\x04 \x01(\x0b\x32).injective.stream.v1beta1.DerivativeOrderR\x05order\"\x99\x01\n\x0f\x44\x65rivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12L\n\x05order\x18\x02 \x01(\x0b\x32\x30.injective.exchange.v1beta1.DerivativeLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\x12\x1b\n\tis_market\x18\x03 \x01(\x08R\x08isMarket\"\x87\x03\n\x08Position\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x16\n\x06isLong\x18\x03 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12;\n\x06margin\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12]\n\x18\x63umulative_funding_entry\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16\x63umulativeFundingEntry\"t\n\x0bOraclePrice\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\"\xc3\x03\n\tSpotTrade\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12$\n\rexecutionType\x18\x03 \x01(\tR\rexecutionType\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12#\n\rsubaccount_id\x18\x06 \x01(\tR\x0csubaccountId\x12\x35\n\x03\x66\x65\x65\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x08 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\t \x01(\tB\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\n \x01(\tR\x03\x63id\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\"\xdc\x03\n\x0f\x44\x65rivativeTrade\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12$\n\rexecutionType\x18\x03 \x01(\tR\rexecutionType\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12P\n\x0eposition_delta\x18\x05 \x01(\x0b\x32).injective.exchange.v1beta1.PositionDeltaR\rpositionDelta\x12;\n\x06payout\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout\x12\x35\n\x03\x66\x65\x65\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x08 \x01(\tR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\t \x01(\tB\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\n \x01(\tR\x03\x63id\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\"T\n\x0cTradesFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"W\n\x0fPositionsFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"T\n\x0cOrdersFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"0\n\x0fOrderbookFilter\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"0\n\x12\x42\x61nkBalancesFilter\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\"A\n\x18SubaccountDepositsFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\"+\n\x11OraclePriceFilter\x12\x16\n\x06symbol\x18\x01 \x03(\tR\x06symbol*L\n\x11OrderUpdateStatus\x12\x0f\n\x0bUnspecified\x10\x00\x12\n\n\x06\x42ooked\x10\x01\x12\x0b\n\x07Matched\x10\x02\x12\r\n\tCancelled\x10\x03\x32g\n\x06Stream\x12]\n\x06Stream\x12\'.injective.stream.v1beta1.StreamRequest\x1a(.injective.stream.v1beta1.StreamResponse0\x01\x42\xf2\x01\n\x1c\x63om.injective.stream.v1beta1B\nQueryProtoP\x01ZDgithub.com/InjectiveLabs/injective-core/injective-chain/stream/types\xa2\x02\x03ISX\xaa\x02\x18Injective.Stream.V1beta1\xca\x02\x18Injective\\Stream\\V1beta1\xe2\x02$Injective\\Stream\\V1beta1\\GPBMetadata\xea\x02\x1aInjective::Stream::V1beta1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$injective/stream/v1beta1/query.proto\x12\x18injective.stream.v1beta1\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x14gogoproto/gogo.proto\x1a\"injective/exchange/v2/events.proto\x1a$injective/exchange/v2/exchange.proto\x1a!injective/exchange/v2/order.proto\"\x8e\x08\n\rStreamRequest\x12\x64\n\x14\x62\x61nk_balances_filter\x18\x01 \x01(\x0b\x32,.injective.stream.v1beta1.BankBalancesFilterB\x04\xc8\xde\x1f\x01R\x12\x62\x61nkBalancesFilter\x12v\n\x1asubaccount_deposits_filter\x18\x02 \x01(\x0b\x32\x32.injective.stream.v1beta1.SubaccountDepositsFilterB\x04\xc8\xde\x1f\x01R\x18subaccountDepositsFilter\x12Z\n\x12spot_trades_filter\x18\x03 \x01(\x0b\x32&.injective.stream.v1beta1.TradesFilterB\x04\xc8\xde\x1f\x01R\x10spotTradesFilter\x12\x66\n\x18\x64\x65rivative_trades_filter\x18\x04 \x01(\x0b\x32&.injective.stream.v1beta1.TradesFilterB\x04\xc8\xde\x1f\x01R\x16\x64\x65rivativeTradesFilter\x12Z\n\x12spot_orders_filter\x18\x05 \x01(\x0b\x32&.injective.stream.v1beta1.OrdersFilterB\x04\xc8\xde\x1f\x01R\x10spotOrdersFilter\x12\x66\n\x18\x64\x65rivative_orders_filter\x18\x06 \x01(\x0b\x32&.injective.stream.v1beta1.OrdersFilterB\x04\xc8\xde\x1f\x01R\x16\x64\x65rivativeOrdersFilter\x12\x65\n\x16spot_orderbooks_filter\x18\x07 \x01(\x0b\x32).injective.stream.v1beta1.OrderbookFilterB\x04\xc8\xde\x1f\x01R\x14spotOrderbooksFilter\x12q\n\x1c\x64\x65rivative_orderbooks_filter\x18\x08 \x01(\x0b\x32).injective.stream.v1beta1.OrderbookFilterB\x04\xc8\xde\x1f\x01R\x1a\x64\x65rivativeOrderbooksFilter\x12Z\n\x10positions_filter\x18\t \x01(\x0b\x32).injective.stream.v1beta1.PositionsFilterB\x04\xc8\xde\x1f\x01R\x0fpositionsFilter\x12\x61\n\x13oracle_price_filter\x18\n \x01(\x0b\x32+.injective.stream.v1beta1.OraclePriceFilterB\x04\xc8\xde\x1f\x01R\x11oraclePriceFilter\"\xa1\x07\n\x0eStreamResponse\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_time\x18\x02 \x01(\x03R\tblockTime\x12J\n\rbank_balances\x18\x03 \x03(\x0b\x32%.injective.stream.v1beta1.BankBalanceR\x0c\x62\x61nkBalances\x12]\n\x13subaccount_deposits\x18\x04 \x03(\x0b\x32,.injective.stream.v1beta1.SubaccountDepositsR\x12subaccountDeposits\x12\x44\n\x0bspot_trades\x18\x05 \x03(\x0b\x32#.injective.stream.v1beta1.SpotTradeR\nspotTrades\x12V\n\x11\x64\x65rivative_trades\x18\x06 \x03(\x0b\x32).injective.stream.v1beta1.DerivativeTradeR\x10\x64\x65rivativeTrades\x12J\n\x0bspot_orders\x18\x07 \x03(\x0b\x32).injective.stream.v1beta1.SpotOrderUpdateR\nspotOrders\x12\\\n\x11\x64\x65rivative_orders\x18\x08 \x03(\x0b\x32/.injective.stream.v1beta1.DerivativeOrderUpdateR\x10\x64\x65rivativeOrders\x12_\n\x16spot_orderbook_updates\x18\t \x03(\x0b\x32).injective.stream.v1beta1.OrderbookUpdateR\x14spotOrderbookUpdates\x12k\n\x1c\x64\x65rivative_orderbook_updates\x18\n \x03(\x0b\x32).injective.stream.v1beta1.OrderbookUpdateR\x1a\x64\x65rivativeOrderbookUpdates\x12@\n\tpositions\x18\x0b \x03(\x0b\x32\".injective.stream.v1beta1.PositionR\tpositions\x12J\n\roracle_prices\x18\x0c \x03(\x0b\x32%.injective.stream.v1beta1.OraclePriceR\x0coraclePrices\"f\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12\x41\n\torderbook\x18\x02 \x01(\x0b\x32#.injective.stream.v1beta1.OrderbookR\torderbook\"\xa4\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12;\n\nbuy_levels\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\tbuyLevels\x12=\n\x0bsell_levels\x18\x03 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\nsellLevels\"\x90\x01\n\x0b\x42\x61nkBalance\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12g\n\x08\x62\x61lances\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x08\x62\x61lances\"\x88\x01\n\x12SubaccountDeposits\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12M\n\x08\x64\x65posits\x18\x02 \x03(\x0b\x32+.injective.stream.v1beta1.SubaccountDepositB\x04\xc8\xde\x1f\x00R\x08\x64\x65posits\"i\n\x11SubaccountDeposit\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12>\n\x07\x64\x65posit\x18\x02 \x01(\x0b\x32\x1e.injective.exchange.v2.DepositB\x04\xc8\xde\x1f\x00R\x07\x64\x65posit\"\xc2\x01\n\x0fSpotOrderUpdate\x12\x43\n\x06status\x18\x01 \x01(\x0e\x32+.injective.stream.v1beta1.OrderUpdateStatusR\x06status\x12\x1d\n\norder_hash\x18\x02 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id\x12\x39\n\x05order\x18\x04 \x01(\x0b\x32#.injective.stream.v1beta1.SpotOrderR\x05order\"k\n\tSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"\xce\x01\n\x15\x44\x65rivativeOrderUpdate\x12\x43\n\x06status\x18\x01 \x01(\x0e\x32+.injective.stream.v1beta1.OrderUpdateStatusR\x06status\x12\x1d\n\norder_hash\x18\x02 \x01(\tR\torderHash\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id\x12?\n\x05order\x18\x04 \x01(\x0b\x32).injective.stream.v1beta1.DerivativeOrderR\x05order\"\x94\x01\n\x0f\x44\x65rivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\x12\x1b\n\tis_market\x18\x03 \x01(\x08R\x08isMarket\"\x87\x03\n\x08Position\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x16\n\x06isLong\x18\x03 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12;\n\x06margin\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12]\n\x18\x63umulative_funding_entry\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16\x63umulativeFundingEntry\"t\n\x0bOraclePrice\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\"\xc3\x03\n\tSpotTrade\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12$\n\rexecutionType\x18\x03 \x01(\tR\rexecutionType\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12#\n\rsubaccount_id\x18\x06 \x01(\tR\x0csubaccountId\x12\x35\n\x03\x66\x65\x65\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x08 \x01(\tR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\t \x01(\tB\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\n \x01(\tR\x03\x63id\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\"\xd7\x03\n\x0f\x44\x65rivativeTrade\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12$\n\rexecutionType\x18\x03 \x01(\tR\rexecutionType\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12K\n\x0eposition_delta\x18\x05 \x01(\x0b\x32$.injective.exchange.v2.PositionDeltaR\rpositionDelta\x12;\n\x06payout\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout\x12\x35\n\x03\x66\x65\x65\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x08 \x01(\tR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\t \x01(\tB\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\n \x01(\tR\x03\x63id\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\"T\n\x0cTradesFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"W\n\x0fPositionsFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"T\n\x0cOrdersFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"0\n\x0fOrderbookFilter\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"0\n\x12\x42\x61nkBalancesFilter\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\"A\n\x18SubaccountDepositsFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\"+\n\x11OraclePriceFilter\x12\x16\n\x06symbol\x18\x01 \x03(\tR\x06symbol*L\n\x11OrderUpdateStatus\x12\x0f\n\x0bUnspecified\x10\x00\x12\n\n\x06\x42ooked\x10\x01\x12\x0b\n\x07Matched\x10\x02\x12\r\n\tCancelled\x10\x03\x32g\n\x06Stream\x12]\n\x06Stream\x12\'.injective.stream.v1beta1.StreamRequest\x1a(.injective.stream.v1beta1.StreamResponse0\x01\x42\xf2\x01\n\x1c\x63om.injective.stream.v1beta1B\nQueryProtoP\x01ZDgithub.com/InjectiveLabs/injective-core/injective-chain/stream/types\xa2\x02\x03ISX\xaa\x02\x18Injective.Stream.V1beta1\xca\x02\x18Injective\\Stream\\V1beta1\xe2\x02$Injective\\Stream\\V1beta1\\GPBMetadata\xea\x02\x1aInjective::Stream::V1beta1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -80,29 +81,29 @@ _globals['_DERIVATIVETRADE'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' _globals['_DERIVATIVETRADE'].fields_by_name['fee_recipient_address']._loaded_options = None _globals['_DERIVATIVETRADE'].fields_by_name['fee_recipient_address']._serialized_options = b'\310\336\037\001' - _globals['_ORDERUPDATESTATUS']._serialized_start=5450 - _globals['_ORDERUPDATESTATUS']._serialized_end=5526 - _globals['_STREAMREQUEST']._serialized_start=205 - _globals['_STREAMREQUEST']._serialized_end=1243 - _globals['_STREAMRESPONSE']._serialized_start=1246 - _globals['_STREAMRESPONSE']._serialized_end=2175 - _globals['_ORDERBOOKUPDATE']._serialized_start=2177 - _globals['_ORDERBOOKUPDATE']._serialized_end=2279 - _globals['_ORDERBOOK']._serialized_start=2282 - _globals['_ORDERBOOK']._serialized_end=2456 - _globals['_BANKBALANCE']._serialized_start=2459 - _globals['_BANKBALANCE']._serialized_end=2603 - _globals['_SUBACCOUNTDEPOSITS']._serialized_start=2606 - _globals['_SUBACCOUNTDEPOSITS']._serialized_end=2742 - _globals['_SUBACCOUNTDEPOSIT']._serialized_start=2744 - _globals['_SUBACCOUNTDEPOSIT']._serialized_end=2854 - _globals['_SPOTORDERUPDATE']._serialized_start=2857 - _globals['_SPOTORDERUPDATE']._serialized_end=3051 - _globals['_SPOTORDER']._serialized_start=3053 - _globals['_SPOTORDER']._serialized_end=3165 - _globals['_DERIVATIVEORDERUPDATE']._serialized_start=3168 - _globals['_DERIVATIVEORDERUPDATE']._serialized_end=3374 - _globals['_DERIVATIVEORDER']._serialized_start=3377 + _globals['_ORDERUPDATESTATUS']._serialized_start=5445 + _globals['_ORDERUPDATESTATUS']._serialized_end=5521 + _globals['_STREAMREQUEST']._serialized_start=230 + _globals['_STREAMREQUEST']._serialized_end=1268 + _globals['_STREAMRESPONSE']._serialized_start=1271 + _globals['_STREAMRESPONSE']._serialized_end=2200 + _globals['_ORDERBOOKUPDATE']._serialized_start=2202 + _globals['_ORDERBOOKUPDATE']._serialized_end=2304 + _globals['_ORDERBOOK']._serialized_start=2307 + _globals['_ORDERBOOK']._serialized_end=2471 + _globals['_BANKBALANCE']._serialized_start=2474 + _globals['_BANKBALANCE']._serialized_end=2618 + _globals['_SUBACCOUNTDEPOSITS']._serialized_start=2621 + _globals['_SUBACCOUNTDEPOSITS']._serialized_end=2757 + _globals['_SUBACCOUNTDEPOSIT']._serialized_start=2759 + _globals['_SUBACCOUNTDEPOSIT']._serialized_end=2864 + _globals['_SPOTORDERUPDATE']._serialized_start=2867 + _globals['_SPOTORDERUPDATE']._serialized_end=3061 + _globals['_SPOTORDER']._serialized_start=3063 + _globals['_SPOTORDER']._serialized_end=3170 + _globals['_DERIVATIVEORDERUPDATE']._serialized_start=3173 + _globals['_DERIVATIVEORDERUPDATE']._serialized_end=3379 + _globals['_DERIVATIVEORDER']._serialized_start=3382 _globals['_DERIVATIVEORDER']._serialized_end=3530 _globals['_POSITION']._serialized_start=3533 _globals['_POSITION']._serialized_end=3924 @@ -111,21 +112,21 @@ _globals['_SPOTTRADE']._serialized_start=4045 _globals['_SPOTTRADE']._serialized_end=4496 _globals['_DERIVATIVETRADE']._serialized_start=4499 - _globals['_DERIVATIVETRADE']._serialized_end=4975 - _globals['_TRADESFILTER']._serialized_start=4977 - _globals['_TRADESFILTER']._serialized_end=5061 - _globals['_POSITIONSFILTER']._serialized_start=5063 - _globals['_POSITIONSFILTER']._serialized_end=5150 - _globals['_ORDERSFILTER']._serialized_start=5152 - _globals['_ORDERSFILTER']._serialized_end=5236 - _globals['_ORDERBOOKFILTER']._serialized_start=5238 - _globals['_ORDERBOOKFILTER']._serialized_end=5286 - _globals['_BANKBALANCESFILTER']._serialized_start=5288 - _globals['_BANKBALANCESFILTER']._serialized_end=5336 - _globals['_SUBACCOUNTDEPOSITSFILTER']._serialized_start=5338 - _globals['_SUBACCOUNTDEPOSITSFILTER']._serialized_end=5403 - _globals['_ORACLEPRICEFILTER']._serialized_start=5405 - _globals['_ORACLEPRICEFILTER']._serialized_end=5448 - _globals['_STREAM']._serialized_start=5528 - _globals['_STREAM']._serialized_end=5631 + _globals['_DERIVATIVETRADE']._serialized_end=4970 + _globals['_TRADESFILTER']._serialized_start=4972 + _globals['_TRADESFILTER']._serialized_end=5056 + _globals['_POSITIONSFILTER']._serialized_start=5058 + _globals['_POSITIONSFILTER']._serialized_end=5145 + _globals['_ORDERSFILTER']._serialized_start=5147 + _globals['_ORDERSFILTER']._serialized_end=5231 + _globals['_ORDERBOOKFILTER']._serialized_start=5233 + _globals['_ORDERBOOKFILTER']._serialized_end=5281 + _globals['_BANKBALANCESFILTER']._serialized_start=5283 + _globals['_BANKBALANCESFILTER']._serialized_end=5331 + _globals['_SUBACCOUNTDEPOSITSFILTER']._serialized_start=5333 + _globals['_SUBACCOUNTDEPOSITSFILTER']._serialized_end=5398 + _globals['_ORACLEPRICEFILTER']._serialized_start=5400 + _globals['_ORACLEPRICEFILTER']._serialized_end=5443 + _globals['_STREAM']._serialized_start=5523 + _globals['_STREAM']._serialized_end=5626 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/stream/v2/query_pb2.py b/pyinjective/proto/injective/stream/v2/query_pb2.py deleted file mode 100644 index 65d5ff53..00000000 --- a/pyinjective/proto/injective/stream/v2/query_pb2.py +++ /dev/null @@ -1,132 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: injective/stream/v2/query.proto -# Protobuf Python Version: 5.26.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as cosmos_dot_base_dot_v1beta1_dot_coin__pb2 -from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 -from pyinjective.proto.injective.exchange.v2 import events_pb2 as injective_dot_exchange_dot_v2_dot_events__pb2 -from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as injective_dot_exchange_dot_v2_dot_exchange__pb2 -from pyinjective.proto.injective.exchange.v2 import order_pb2 as injective_dot_exchange_dot_v2_dot_order__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1finjective/stream/v2/query.proto\x12\x13injective.stream.v2\x1a\x1e\x63osmos/base/v1beta1/coin.proto\x1a\x14gogoproto/gogo.proto\x1a\"injective/exchange/v2/events.proto\x1a$injective/exchange/v2/exchange.proto\x1a!injective/exchange/v2/order.proto\"\xdc\x07\n\rStreamRequest\x12_\n\x14\x62\x61nk_balances_filter\x18\x01 \x01(\x0b\x32\'.injective.stream.v2.BankBalancesFilterB\x04\xc8\xde\x1f\x01R\x12\x62\x61nkBalancesFilter\x12q\n\x1asubaccount_deposits_filter\x18\x02 \x01(\x0b\x32-.injective.stream.v2.SubaccountDepositsFilterB\x04\xc8\xde\x1f\x01R\x18subaccountDepositsFilter\x12U\n\x12spot_trades_filter\x18\x03 \x01(\x0b\x32!.injective.stream.v2.TradesFilterB\x04\xc8\xde\x1f\x01R\x10spotTradesFilter\x12\x61\n\x18\x64\x65rivative_trades_filter\x18\x04 \x01(\x0b\x32!.injective.stream.v2.TradesFilterB\x04\xc8\xde\x1f\x01R\x16\x64\x65rivativeTradesFilter\x12U\n\x12spot_orders_filter\x18\x05 \x01(\x0b\x32!.injective.stream.v2.OrdersFilterB\x04\xc8\xde\x1f\x01R\x10spotOrdersFilter\x12\x61\n\x18\x64\x65rivative_orders_filter\x18\x06 \x01(\x0b\x32!.injective.stream.v2.OrdersFilterB\x04\xc8\xde\x1f\x01R\x16\x64\x65rivativeOrdersFilter\x12`\n\x16spot_orderbooks_filter\x18\x07 \x01(\x0b\x32$.injective.stream.v2.OrderbookFilterB\x04\xc8\xde\x1f\x01R\x14spotOrderbooksFilter\x12l\n\x1c\x64\x65rivative_orderbooks_filter\x18\x08 \x01(\x0b\x32$.injective.stream.v2.OrderbookFilterB\x04\xc8\xde\x1f\x01R\x1a\x64\x65rivativeOrderbooksFilter\x12U\n\x10positions_filter\x18\t \x01(\x0b\x32$.injective.stream.v2.PositionsFilterB\x04\xc8\xde\x1f\x01R\x0fpositionsFilter\x12\\\n\x13oracle_price_filter\x18\n \x01(\x0b\x32&.injective.stream.v2.OraclePriceFilterB\x04\xc8\xde\x1f\x01R\x11oraclePriceFilter\"\xef\x06\n\x0eStreamResponse\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_time\x18\x02 \x01(\x03R\tblockTime\x12\x45\n\rbank_balances\x18\x03 \x03(\x0b\x32 .injective.stream.v2.BankBalanceR\x0c\x62\x61nkBalances\x12X\n\x13subaccount_deposits\x18\x04 \x03(\x0b\x32\'.injective.stream.v2.SubaccountDepositsR\x12subaccountDeposits\x12?\n\x0bspot_trades\x18\x05 \x03(\x0b\x32\x1e.injective.stream.v2.SpotTradeR\nspotTrades\x12Q\n\x11\x64\x65rivative_trades\x18\x06 \x03(\x0b\x32$.injective.stream.v2.DerivativeTradeR\x10\x64\x65rivativeTrades\x12\x45\n\x0bspot_orders\x18\x07 \x03(\x0b\x32$.injective.stream.v2.SpotOrderUpdateR\nspotOrders\x12W\n\x11\x64\x65rivative_orders\x18\x08 \x03(\x0b\x32*.injective.stream.v2.DerivativeOrderUpdateR\x10\x64\x65rivativeOrders\x12Z\n\x16spot_orderbook_updates\x18\t \x03(\x0b\x32$.injective.stream.v2.OrderbookUpdateR\x14spotOrderbookUpdates\x12\x66\n\x1c\x64\x65rivative_orderbook_updates\x18\n \x03(\x0b\x32$.injective.stream.v2.OrderbookUpdateR\x1a\x64\x65rivativeOrderbookUpdates\x12;\n\tpositions\x18\x0b \x03(\x0b\x32\x1d.injective.stream.v2.PositionR\tpositions\x12\x45\n\roracle_prices\x18\x0c \x03(\x0b\x32 .injective.stream.v2.OraclePriceR\x0coraclePrices\"a\n\x0fOrderbookUpdate\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12<\n\torderbook\x18\x02 \x01(\x0b\x32\x1e.injective.stream.v2.OrderbookR\torderbook\"\xa4\x01\n\tOrderbook\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12;\n\nbuy_levels\x18\x02 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\tbuyLevels\x12=\n\x0bsell_levels\x18\x03 \x03(\x0b\x32\x1c.injective.exchange.v2.LevelR\nsellLevels\"\x90\x01\n\x0b\x42\x61nkBalance\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12g\n\x08\x62\x61lances\x18\x02 \x03(\x0b\x32\x19.cosmos.base.v1beta1.CoinB0\xc8\xde\x1f\x00\xaa\xdf\x1f(github.com/cosmos/cosmos-sdk/types.CoinsR\x08\x62\x61lances\"\x83\x01\n\x12SubaccountDeposits\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12H\n\x08\x64\x65posits\x18\x02 \x03(\x0b\x32&.injective.stream.v2.SubaccountDepositB\x04\xc8\xde\x1f\x00R\x08\x64\x65posits\"i\n\x11SubaccountDeposit\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12>\n\x07\x64\x65posit\x18\x02 \x01(\x0b\x32\x1e.injective.exchange.v2.DepositB\x04\xc8\xde\x1f\x00R\x07\x64\x65posit\"\xb8\x01\n\x0fSpotOrderUpdate\x12>\n\x06status\x18\x01 \x01(\x0e\x32&.injective.stream.v2.OrderUpdateStatusR\x06status\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id\x12\x34\n\x05order\x18\x04 \x01(\x0b\x32\x1e.injective.stream.v2.SpotOrderR\x05order\"k\n\tSpotOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x41\n\x05order\x18\x02 \x01(\x0b\x32%.injective.exchange.v2.SpotLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\"\xc4\x01\n\x15\x44\x65rivativeOrderUpdate\x12>\n\x06status\x18\x01 \x01(\x0e\x32&.injective.stream.v2.OrderUpdateStatusR\x06status\x12\x1d\n\norder_hash\x18\x02 \x01(\x0cR\torderHash\x12\x10\n\x03\x63id\x18\x03 \x01(\tR\x03\x63id\x12:\n\x05order\x18\x04 \x01(\x0b\x32$.injective.stream.v2.DerivativeOrderR\x05order\"\x94\x01\n\x0f\x44\x65rivativeOrder\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12G\n\x05order\x18\x02 \x01(\x0b\x32+.injective.exchange.v2.DerivativeLimitOrderB\x04\xc8\xde\x1f\x00R\x05order\x12\x1b\n\tis_market\x18\x03 \x01(\x08R\x08isMarket\"\x87\x03\n\x08Position\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x16\n\x06isLong\x18\x03 \x01(\x08R\x06isLong\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x44\n\x0b\x65ntry_price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\nentryPrice\x12;\n\x06margin\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06margin\x12]\n\x18\x63umulative_funding_entry\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x16\x63umulativeFundingEntry\"t\n\x0bOraclePrice\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x39\n\x05price\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\"\xc3\x03\n\tSpotTrade\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12$\n\rexecutionType\x18\x03 \x01(\tR\rexecutionType\x12?\n\x08quantity\x18\x04 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x08quantity\x12\x39\n\x05price\x18\x05 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x05price\x12#\n\rsubaccount_id\x18\x06 \x01(\tR\x0csubaccountId\x12\x35\n\x03\x66\x65\x65\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x08 \x01(\x0cR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\t \x01(\tB\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\n \x01(\tR\x03\x63id\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\"\xd7\x03\n\x0f\x44\x65rivativeTrade\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x15\n\x06is_buy\x18\x02 \x01(\x08R\x05isBuy\x12$\n\rexecutionType\x18\x03 \x01(\tR\rexecutionType\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12K\n\x0eposition_delta\x18\x05 \x01(\x0b\x32$.injective.exchange.v2.PositionDeltaR\rpositionDelta\x12;\n\x06payout\x18\x06 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06payout\x12\x35\n\x03\x66\x65\x65\x18\x07 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x03\x66\x65\x65\x12\x1d\n\norder_hash\x18\x08 \x01(\tR\torderHash\x12\x38\n\x15\x66\x65\x65_recipient_address\x18\t \x01(\tB\x04\xc8\xde\x1f\x01R\x13\x66\x65\x65RecipientAddress\x12\x10\n\x03\x63id\x18\n \x01(\tR\x03\x63id\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\"T\n\x0cTradesFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"W\n\x0fPositionsFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"T\n\x0cOrdersFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\"0\n\x0fOrderbookFilter\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"0\n\x12\x42\x61nkBalancesFilter\x12\x1a\n\x08\x61\x63\x63ounts\x18\x01 \x03(\tR\x08\x61\x63\x63ounts\"A\n\x18SubaccountDepositsFilter\x12%\n\x0esubaccount_ids\x18\x01 \x03(\tR\rsubaccountIds\"+\n\x11OraclePriceFilter\x12\x16\n\x06symbol\x18\x01 \x03(\tR\x06symbol*L\n\x11OrderUpdateStatus\x12\x0f\n\x0bUnspecified\x10\x00\x12\n\n\x06\x42ooked\x10\x01\x12\x0b\n\x07Matched\x10\x02\x12\r\n\tCancelled\x10\x03\x32_\n\x06Stream\x12U\n\x08StreamV2\x12\".injective.stream.v2.StreamRequest\x1a#.injective.stream.v2.StreamResponse0\x01\x42\xdc\x01\n\x17\x63om.injective.stream.v2B\nQueryProtoP\x01ZGgithub.com/InjectiveLabs/injective-core/injective-chain/stream/types/v2\xa2\x02\x03ISX\xaa\x02\x13Injective.Stream.V2\xca\x02\x13Injective\\Stream\\V2\xe2\x02\x1fInjective\\Stream\\V2\\GPBMetadata\xea\x02\x15Injective::Stream::V2b\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.stream.v2.query_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\027com.injective.stream.v2B\nQueryProtoP\001ZGgithub.com/InjectiveLabs/injective-core/injective-chain/stream/types/v2\242\002\003ISX\252\002\023Injective.Stream.V2\312\002\023Injective\\Stream\\V2\342\002\037Injective\\Stream\\V2\\GPBMetadata\352\002\025Injective::Stream::V2' - _globals['_STREAMREQUEST'].fields_by_name['bank_balances_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['bank_balances_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['subaccount_deposits_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['subaccount_deposits_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['spot_trades_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['spot_trades_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['derivative_trades_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['derivative_trades_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['spot_orders_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['spot_orders_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['derivative_orders_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['derivative_orders_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['spot_orderbooks_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['spot_orderbooks_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['derivative_orderbooks_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['derivative_orderbooks_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['positions_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['positions_filter']._serialized_options = b'\310\336\037\001' - _globals['_STREAMREQUEST'].fields_by_name['oracle_price_filter']._loaded_options = None - _globals['_STREAMREQUEST'].fields_by_name['oracle_price_filter']._serialized_options = b'\310\336\037\001' - _globals['_BANKBALANCE'].fields_by_name['balances']._loaded_options = None - _globals['_BANKBALANCE'].fields_by_name['balances']._serialized_options = b'\310\336\037\000\252\337\037(github.com/cosmos/cosmos-sdk/types.Coins' - _globals['_SUBACCOUNTDEPOSITS'].fields_by_name['deposits']._loaded_options = None - _globals['_SUBACCOUNTDEPOSITS'].fields_by_name['deposits']._serialized_options = b'\310\336\037\000' - _globals['_SUBACCOUNTDEPOSIT'].fields_by_name['deposit']._loaded_options = None - _globals['_SUBACCOUNTDEPOSIT'].fields_by_name['deposit']._serialized_options = b'\310\336\037\000' - _globals['_SPOTORDER'].fields_by_name['order']._loaded_options = None - _globals['_SPOTORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' - _globals['_DERIVATIVEORDER'].fields_by_name['order']._loaded_options = None - _globals['_DERIVATIVEORDER'].fields_by_name['order']._serialized_options = b'\310\336\037\000' - _globals['_POSITION'].fields_by_name['quantity']._loaded_options = None - _globals['_POSITION'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_POSITION'].fields_by_name['entry_price']._loaded_options = None - _globals['_POSITION'].fields_by_name['entry_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_POSITION'].fields_by_name['margin']._loaded_options = None - _globals['_POSITION'].fields_by_name['margin']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_POSITION'].fields_by_name['cumulative_funding_entry']._loaded_options = None - _globals['_POSITION'].fields_by_name['cumulative_funding_entry']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_ORACLEPRICE'].fields_by_name['price']._loaded_options = None - _globals['_ORACLEPRICE'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_SPOTTRADE'].fields_by_name['quantity']._loaded_options = None - _globals['_SPOTTRADE'].fields_by_name['quantity']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_SPOTTRADE'].fields_by_name['price']._loaded_options = None - _globals['_SPOTTRADE'].fields_by_name['price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_SPOTTRADE'].fields_by_name['fee']._loaded_options = None - _globals['_SPOTTRADE'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_SPOTTRADE'].fields_by_name['fee_recipient_address']._loaded_options = None - _globals['_SPOTTRADE'].fields_by_name['fee_recipient_address']._serialized_options = b'\310\336\037\001' - _globals['_DERIVATIVETRADE'].fields_by_name['payout']._loaded_options = None - _globals['_DERIVATIVETRADE'].fields_by_name['payout']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_DERIVATIVETRADE'].fields_by_name['fee']._loaded_options = None - _globals['_DERIVATIVETRADE'].fields_by_name['fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' - _globals['_DERIVATIVETRADE'].fields_by_name['fee_recipient_address']._loaded_options = None - _globals['_DERIVATIVETRADE'].fields_by_name['fee_recipient_address']._serialized_options = b'\310\336\037\001' - _globals['_ORDERUPDATESTATUS']._serialized_start=5305 - _globals['_ORDERUPDATESTATUS']._serialized_end=5381 - _globals['_STREAMREQUEST']._serialized_start=220 - _globals['_STREAMREQUEST']._serialized_end=1208 - _globals['_STREAMRESPONSE']._serialized_start=1211 - _globals['_STREAMRESPONSE']._serialized_end=2090 - _globals['_ORDERBOOKUPDATE']._serialized_start=2092 - _globals['_ORDERBOOKUPDATE']._serialized_end=2189 - _globals['_ORDERBOOK']._serialized_start=2192 - _globals['_ORDERBOOK']._serialized_end=2356 - _globals['_BANKBALANCE']._serialized_start=2359 - _globals['_BANKBALANCE']._serialized_end=2503 - _globals['_SUBACCOUNTDEPOSITS']._serialized_start=2506 - _globals['_SUBACCOUNTDEPOSITS']._serialized_end=2637 - _globals['_SUBACCOUNTDEPOSIT']._serialized_start=2639 - _globals['_SUBACCOUNTDEPOSIT']._serialized_end=2744 - _globals['_SPOTORDERUPDATE']._serialized_start=2747 - _globals['_SPOTORDERUPDATE']._serialized_end=2931 - _globals['_SPOTORDER']._serialized_start=2933 - _globals['_SPOTORDER']._serialized_end=3040 - _globals['_DERIVATIVEORDERUPDATE']._serialized_start=3043 - _globals['_DERIVATIVEORDERUPDATE']._serialized_end=3239 - _globals['_DERIVATIVEORDER']._serialized_start=3242 - _globals['_DERIVATIVEORDER']._serialized_end=3390 - _globals['_POSITION']._serialized_start=3393 - _globals['_POSITION']._serialized_end=3784 - _globals['_ORACLEPRICE']._serialized_start=3786 - _globals['_ORACLEPRICE']._serialized_end=3902 - _globals['_SPOTTRADE']._serialized_start=3905 - _globals['_SPOTTRADE']._serialized_end=4356 - _globals['_DERIVATIVETRADE']._serialized_start=4359 - _globals['_DERIVATIVETRADE']._serialized_end=4830 - _globals['_TRADESFILTER']._serialized_start=4832 - _globals['_TRADESFILTER']._serialized_end=4916 - _globals['_POSITIONSFILTER']._serialized_start=4918 - _globals['_POSITIONSFILTER']._serialized_end=5005 - _globals['_ORDERSFILTER']._serialized_start=5007 - _globals['_ORDERSFILTER']._serialized_end=5091 - _globals['_ORDERBOOKFILTER']._serialized_start=5093 - _globals['_ORDERBOOKFILTER']._serialized_end=5141 - _globals['_BANKBALANCESFILTER']._serialized_start=5143 - _globals['_BANKBALANCESFILTER']._serialized_end=5191 - _globals['_SUBACCOUNTDEPOSITSFILTER']._serialized_start=5193 - _globals['_SUBACCOUNTDEPOSITSFILTER']._serialized_end=5258 - _globals['_ORACLEPRICEFILTER']._serialized_start=5260 - _globals['_ORACLEPRICEFILTER']._serialized_end=5303 - _globals['_STREAM']._serialized_start=5383 - _globals['_STREAM']._serialized_end=5478 -# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/stream/v2/query_pb2_grpc.py b/pyinjective/proto/injective/stream/v2/query_pb2_grpc.py deleted file mode 100644 index ebb3b134..00000000 --- a/pyinjective/proto/injective/stream/v2/query_pb2_grpc.py +++ /dev/null @@ -1,80 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc - -from pyinjective.proto.injective.stream.v2 import query_pb2 as injective_dot_stream_dot_v2_dot_query__pb2 - - -class StreamStub(object): - """ChainStream defines the gRPC streaming service. - """ - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.StreamV2 = channel.unary_stream( - '/injective.stream.v2.Stream/StreamV2', - request_serializer=injective_dot_stream_dot_v2_dot_query__pb2.StreamRequest.SerializeToString, - response_deserializer=injective_dot_stream_dot_v2_dot_query__pb2.StreamResponse.FromString, - _registered_method=True) - - -class StreamServicer(object): - """ChainStream defines the gRPC streaming service. - """ - - def StreamV2(self, request, context): - """Missing associated documentation comment in .proto file.""" - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_StreamServicer_to_server(servicer, server): - rpc_method_handlers = { - 'StreamV2': grpc.unary_stream_rpc_method_handler( - servicer.StreamV2, - request_deserializer=injective_dot_stream_dot_v2_dot_query__pb2.StreamRequest.FromString, - response_serializer=injective_dot_stream_dot_v2_dot_query__pb2.StreamResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'injective.stream.v2.Stream', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('injective.stream.v2.Stream', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class Stream(object): - """ChainStream defines the gRPC streaming service. - """ - - @staticmethod - def StreamV2(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_stream( - request, - target, - '/injective.stream.v2.Stream/StreamV2', - injective_dot_stream_dot_v2_dot_query__pb2.StreamRequest.SerializeToString, - injective_dot_stream_dot_v2_dot_query__pb2.StreamResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) diff --git a/tests/client/chain/stream_grpc/configurable_chain_stream_query_servicer.py b/tests/client/chain/stream_grpc/configurable_chain_stream_query_servicer.py index 943b91c0..8e7a5963 100644 --- a/tests/client/chain/stream_grpc/configurable_chain_stream_query_servicer.py +++ b/tests/client/chain/stream_grpc/configurable_chain_stream_query_servicer.py @@ -1,10 +1,6 @@ from collections import deque from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_pb, query_pb2_grpc as chain_stream_grpc -from pyinjective.proto.injective.stream.v2 import ( - query_pb2 as chain_stream_v2_pb, - query_pb2_grpc as chain_stream_v2_grpc, -) class ConfigurableChainStreamQueryServicer(chain_stream_grpc.StreamServicer): @@ -16,13 +12,3 @@ def __init__(self): async def Stream(self, request: chain_stream_pb.StreamRequest, context=None, metadata=None): for event in self.stream_responses: yield event - - -class ConfigurableChainStreamV2QueryServicer(chain_stream_v2_grpc.StreamServicer): - def __init__(self): - super().__init__() - self.stream_responses = deque() - - async def StreamV2(self, request: chain_stream_v2_pb.StreamRequest, context=None, metadata=None): - for event in self.stream_responses: - yield event diff --git a/tests/client/chain/stream_grpc/test_chain_grpc_chain_stream.py b/tests/client/chain/stream_grpc/test_chain_grpc_chain_stream.py index bbbcad52..da22aec1 100644 --- a/tests/client/chain/stream_grpc/test_chain_grpc_chain_stream.py +++ b/tests/client/chain/stream_grpc/test_chain_grpc_chain_stream.py @@ -8,14 +8,9 @@ from pyinjective.composer import Composer from pyinjective.core.network import DisabledCookieAssistant, Network from pyinjective.proto.cosmos.base.v1beta1 import coin_pb2 as coin_pb -from pyinjective.proto.injective.exchange.v1beta1 import exchange_pb2 as exchange_pb from pyinjective.proto.injective.exchange.v2 import exchange_pb2 as exchange_v2_pb, order_pb2 as order_v2_pb from pyinjective.proto.injective.stream.v1beta1 import query_pb2 as chain_stream_pb -from pyinjective.proto.injective.stream.v2 import query_pb2 as chain_stream_v2_pb -from tests.client.chain.stream_grpc.configurable_chain_stream_query_servicer import ( - ConfigurableChainStreamQueryServicer, - ConfigurableChainStreamV2QueryServicer, -) +from tests.client.chain.stream_grpc.configurable_chain_stream_query_servicer import ConfigurableChainStreamQueryServicer @pytest.fixture @@ -23,17 +18,11 @@ def chain_stream_servicer(): return ConfigurableChainStreamQueryServicer() -@pytest.fixture -def chain_stream_v2_servicer(): - return ConfigurableChainStreamV2QueryServicer() - - class TestChainGrpcChainStream: @pytest.mark.asyncio async def test_stream( self, chain_stream_servicer, - chain_stream_v2_servicer, ): block_height = 19114391 block_time = 1701457189786 @@ -45,7 +34,7 @@ async def test_stream( account="inj1qaq7mkvuc474k2nyjm2suwyes06fdm4kt26ks4", balances=[balance_coin], ) - deposit = exchange_pb.Deposit( + deposit = exchange_v2_pb.Deposit( available_balance="112292968420000000000000", total_balance="73684013968420000000000000", ) @@ -65,12 +54,12 @@ async def test_stream( price="18215000", subaccount_id="0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001", fee="76503000000000000000", - order_hash=b"\xaa\xb0Ju\xa3)@\xfe\xd58N\xba\xdfG\xfd\xd8}\xe4\r\xf4\xf8a\xd9\n\xa9\xd6x+V\x9b\x02&", + order_hash="0xce0d9b701f77cd6ddfda5dd3a4fe7b2d53ba83e5d6c054fb2e9e886200b7b7bb", fee_recipient_address="inj13ylj40uqx338u5xtccujxystzy39q08q2gz3dx", cid="HBOTSIJUT60b77b9c56f0456af96c5c6c0d8", trade_id=f"{block_height}_0", ) - position_delta = exchange_pb.PositionDelta( + position_delta = exchange_v2_pb.PositionDelta( is_long=True, execution_quantity="5000000", execution_price="13945600", @@ -89,16 +78,16 @@ async def test_stream( cid="cid1", trade_id=f"{block_height}_1", ) - spot_order_info = exchange_pb.OrderInfo( + spot_order_info = order_v2_pb.OrderInfo( subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000004", fee_recipient="inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy", price="18775000", quantity="54606542000000000000000000000000000000000", cid="cid2", ) - spot_limit_order = exchange_pb.SpotLimitOrder( + spot_limit_order = order_v2_pb.SpotLimitOrder( order_info=spot_order_info, - order_type=exchange_pb.OrderType.SELL_PO, + order_type=order_v2_pb.OrderType.SELL_PO, fillable="54606542000000000000000000000000000000000", trigger_price="", order_hash=( @@ -111,22 +100,20 @@ async def test_stream( ) spot_order_update = chain_stream_pb.SpotOrderUpdate( status="Booked", - order_hash=( - b"\xf9\xc7\xd8v8\x84-\x9b\x99s\xf5\xdfX\xc9\xf9V\x9a\xf7\xf9\xc3\xa1\x00h\t\xc17<\xd1k\x9d\x12\xed" - ), + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", cid="cid2", order=spot_order, ) - derivative_order_info = exchange_pb.OrderInfo( + derivative_order_info = order_v2_pb.OrderInfo( subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000004", fee_recipient="inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy", price="18775000", quantity="54606542000000000000000000000000000000000", cid="cid2", ) - derivative_limit_order = exchange_pb.DerivativeLimitOrder( + derivative_limit_order = order_v2_pb.DerivativeLimitOrder( order_info=derivative_order_info, - order_type=exchange_pb.OrderType.SELL_PO, + order_type=order_v2_pb.OrderType.SELL_PO, margin="54606542000000000000000000000000000000000", fillable="54606542000000000000000000000000000000000", trigger_price="", @@ -139,12 +126,12 @@ async def test_stream( ) derivative_order_update = chain_stream_pb.DerivativeOrderUpdate( status="Booked", - order_hash=b"\x03\xc9\xf8G*Q-G%\xf1\xbcF3\xe89g\xbe\xeag\xd8Y\x7f\x87\x8a\xa5\xac\x8ew\x8a\x91\xa2F", + order_hash="0x48690013c382d5dbaff9989db04629a16a5818d7524e027d517ccc89fd068103", cid="cid3", order=derivative_order, ) - spot_buy_level = exchange_pb.Level(p="17280000", q="44557734000000000000000000000000000000000") - spot_sell_level = exchange_pb.Level( + spot_buy_level = exchange_v2_pb.Level(p="17280000", q="44557734000000000000000000000000000000000") + spot_sell_level = exchange_v2_pb.Level( p="18207000", q="22196395000000000000000000000000000000000", ) @@ -157,8 +144,8 @@ async def test_stream( seq=6645013, orderbook=spot_orderbook, ) - derivative_buy_level = exchange_pb.Level(p="17280000", q="44557734000000000000000000000000000000000") - derivative_sell_level = exchange_pb.Level( + derivative_buy_level = exchange_v2_pb.Level(p="17280000", q="44557734000000000000000000000000000000000") + derivative_sell_level = exchange_v2_pb.Level( p="18207000", q="22196395000000000000000000000000000000000", ) @@ -205,7 +192,7 @@ async def test_stream( network = Network.devnet() composer = Composer(network=network.string()) - api = self._api_instance(servicer=chain_stream_servicer, servicer_v2=chain_stream_v2_servicer) + api = self._api_instance(servicer=chain_stream_servicer) events = asyncio.Queue() end_event = asyncio.Event() @@ -262,7 +249,7 @@ async def test_stream( "price": spot_trade.price, "subaccountId": spot_trade.subaccount_id, "fee": spot_trade.fee, - "orderHash": base64.b64encode(spot_trade.order_hash).decode(), + "orderHash": spot_trade.order_hash, "feeRecipientAddress": spot_trade.fee_recipient_address, "cid": spot_trade.cid, "tradeId": spot_trade.trade_id, @@ -291,7 +278,7 @@ async def test_stream( "spotOrders": [ { "status": "Booked", - "orderHash": base64.b64encode(spot_order_update.order_hash).decode(), + "orderHash": spot_order_update.order_hash, "cid": spot_order_update.cid, "order": { "marketId": spot_order.market_id, @@ -314,7 +301,7 @@ async def test_stream( "derivativeOrders": [ { "status": "Booked", - "orderHash": base64.b64encode(derivative_order_update.order_hash).decode(), + "orderHash": derivative_order_update.order_hash, "cid": derivative_order_update.cid, "order": { "marketId": derivative_order.market_id, @@ -416,400 +403,12 @@ async def test_stream( assert first_update == expected_update assert end_event.is_set() - @pytest.mark.asyncio - async def test_stream_v2( - self, - chain_stream_servicer, - chain_stream_v2_servicer, - ): - block_height = 19114391 - block_time = 1701457189786 - balance_coin = coin_pb.Coin( - denom="inj", - amount="6941221373191000000000", - ) - bank_balance = chain_stream_v2_pb.BankBalance( - account="inj1qaq7mkvuc474k2nyjm2suwyes06fdm4kt26ks4", - balances=[balance_coin], - ) - deposit = exchange_v2_pb.Deposit( - available_balance="112292968420000000000000", - total_balance="73684013968420000000000000", - ) - subaccount_deposit = chain_stream_v2_pb.SubaccountDeposit( - denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", - deposit=deposit, - ) - subaccount_deposits = chain_stream_v2_pb.SubaccountDeposits( - subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000007", - deposits=[subaccount_deposit], - ) - spot_trade = chain_stream_v2_pb.SpotTrade( - market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", - is_buy=False, - executionType="LimitMatchNewOrder", - quantity="70", - price="18.215", - subaccount_id="0x893f2abf8034627e50cbc63923120b1122503ce0000000000000000000000001", - fee="7.6503", - order_hash=b"\xaa\xb0Ju\xa3)@\xfe\xd58N\xba\xdfG\xfd\xd8}\xe4\r\xf4\xf8a\xd9\n\xa9\xd6x+V\x9b\x02&", - fee_recipient_address="inj13ylj40uqx338u5xtccujxystzy39q08q2gz3dx", - cid="HBOTSIJUT60b77b9c56f0456af96c5c6c0d8", - trade_id=f"{block_height}_0", - ) - position_delta = exchange_v2_pb.PositionDelta( - is_long=True, - execution_quantity="5", - execution_price="13.9456", - execution_margin="69.728", - ) - derivative_trade = chain_stream_v2_pb.DerivativeTrade( - market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", - is_buy=False, - executionType="LimitMatchNewOrder", - subaccount_id="0xc7dca7c15c364865f77a4fb67ab11dc95502e6fe000000000000000000000001", - position_delta=position_delta, - payout="0", - fee="7.6503", - order_hash="0xe549e4750287c93fcc8dec24f319c15025e07e89a8d0937be2b3865ed79d9da7", - fee_recipient_address="inj1clw20s2uxeyxtam6f7m84vgae92s9eh7vygagt", - cid="cid1", - trade_id=f"{block_height}_1", - ) - spot_order_info = order_v2_pb.OrderInfo( - subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000004", - fee_recipient="inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy", - price="18.775", - quantity="54.606542", - cid="cid2", - ) - spot_limit_order = order_v2_pb.SpotLimitOrder( - order_info=spot_order_info, - order_type=order_v2_pb.OrderType.SELL_PO, - fillable="54.606542", - trigger_price="", - order_hash=( - b"\xf9\xc7\xd8v8\x84-\x9b\x99s\xf5\xdfX\xc9\xf9V\x9a\xf7\xf9\xc3\xa1\x00h\t\xc17<\xd1k\x9d\x12\xed" - ), - ) - spot_order = chain_stream_v2_pb.SpotOrder( - market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", - order=spot_limit_order, - ) - spot_order_update = chain_stream_v2_pb.SpotOrderUpdate( - status="Booked", - order_hash=( - b"\xf9\xc7\xd8v8\x84-\x9b\x99s\xf5\xdfX\xc9\xf9V\x9a\xf7\xf9\xc3\xa1\x00h\t\xc17<\xd1k\x9d\x12\xed" - ), - cid="cid2", - order=spot_order, - ) - derivative_order_info = order_v2_pb.OrderInfo( - subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000004", - fee_recipient="inj1tcjf7r5vksr0g80pdcdada44teauwkkahelyfy", - price="18.775", - quantity="54.606542", - cid="cid2", - ) - derivative_limit_order = order_v2_pb.DerivativeLimitOrder( - order_info=derivative_order_info, - order_type=order_v2_pb.OrderType.SELL_PO, - margin="546.06542", - fillable="54.606542", - trigger_price="", - order_hash=b"\x03\xc9\xf8G*Q-G%\xf1\xbcF3\xe89g\xbe\xeag\xd8Y\x7f\x87\x8a\xa5\xac\x8ew\x8a\x91\xa2F", - ) - derivative_order = chain_stream_v2_pb.DerivativeOrder( - market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", - order=derivative_limit_order, - is_market=False, - ) - derivative_order_update = chain_stream_v2_pb.DerivativeOrderUpdate( - status="Booked", - order_hash=b"\x03\xc9\xf8G*Q-G%\xf1\xbcF3\xe89g\xbe\xeag\xd8Y\x7f\x87\x8a\xa5\xac\x8ew\x8a\x91\xa2F", - cid="cid3", - order=derivative_order, - ) - spot_buy_level = exchange_v2_pb.Level(p="17.28", q="445577.34") - spot_sell_level = exchange_v2_pb.Level( - p="18.207", - q="221963.95", - ) - spot_orderbook = chain_stream_v2_pb.Orderbook( - market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", - buy_levels=[spot_buy_level], - sell_levels=[spot_sell_level], - ) - spot_orderbook_update = chain_stream_v2_pb.OrderbookUpdate( - seq=6645013, - orderbook=spot_orderbook, - ) - derivative_buy_level = exchange_v2_pb.Level(p="17.28", q="445577.34") - derivative_sell_level = exchange_v2_pb.Level( - p="18.207", - q="221963.95", - ) - derivative_orderbook = chain_stream_v2_pb.Orderbook( - market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", - buy_levels=[derivative_buy_level], - sell_levels=[derivative_sell_level], - ) - derivative_orderbook_update = chain_stream_v2_pb.OrderbookUpdate( - seq=6645013, - orderbook=derivative_orderbook, - ) - position = chain_stream_v2_pb.Position( - market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6", - subaccount_id="0x5e249f0e8cb406f41de16e1bd6f6b55e7bc75add000000000000000000000004", - isLong=True, - quantity="221.96395", - entry_price="18.207", - margin="2219.6395", - cumulative_funding_entry="0", - ) - oracle_price = chain_stream_v2_pb.OraclePrice( - symbol="0x41f3625971ca2ed2263e78573fe5ce23e13d2558ed3f2e47ab0f84fb9e7ae722", - price="99.991086", - type="pyth", - ) - - chain_stream_v2_servicer.stream_responses.append( - chain_stream_v2_pb.StreamResponse( - block_height=block_height, - block_time=block_time, - bank_balances=[bank_balance], - subaccount_deposits=[subaccount_deposits], - spot_trades=[spot_trade], - derivative_trades=[derivative_trade], - spot_orders=[spot_order_update], - derivative_orders=[derivative_order_update], - spot_orderbook_updates=[spot_orderbook_update], - derivative_orderbook_updates=[derivative_orderbook_update], - positions=[position], - oracle_prices=[oracle_price], - ) - ) - - network = Network.devnet() - composer = Composer(network=network.string()) - api = self._api_instance(servicer=chain_stream_servicer, servicer_v2=chain_stream_v2_servicer) - - events = asyncio.Queue() - end_event = asyncio.Event() - - callback = lambda update: events.put_nowait(update) - error_callback = lambda exception: pytest.fail(str(exception)) - end_callback = lambda: end_event.set() - - bank_balances_filter = composer.chain_stream_bank_balances_v2_filter() - subaccount_deposits_filter = composer.chain_stream_subaccount_deposits_v2_filter() - spot_trades_filter = composer.chain_stream_trades_v2_filter() - derivative_trades_filter = composer.chain_stream_trades_v2_filter() - spot_orders_filter = composer.chain_stream_orders_v2_filter() - derivative_orders_filter = composer.chain_stream_orders_v2_filter() - spot_orderbooks_filter = composer.chain_stream_orderbooks_v2_filter() - derivative_orderbooks_filter = composer.chain_stream_orderbooks_v2_filter() - positions_filter = composer.chain_stream_positions_v2_filter() - oracle_price_filter = composer.chain_stream_oracle_price_v2_filter() - - expected_update = { - "blockHeight": str(block_height), - "blockTime": str(block_time), - "bankBalances": [ - { - "account": bank_balance.account, - "balances": [ - { - "denom": balance_coin.denom, - "amount": balance_coin.amount, - } - ], - }, - ], - "subaccountDeposits": [ - { - "subaccountId": subaccount_deposits.subaccount_id, - "deposits": [ - { - "denom": subaccount_deposit.denom, - "deposit": { - "availableBalance": deposit.available_balance, - "totalBalance": deposit.total_balance, - }, - } - ], - } - ], - "spotTrades": [ - { - "marketId": spot_trade.market_id, - "isBuy": spot_trade.is_buy, - "executionType": spot_trade.executionType, - "quantity": spot_trade.quantity, - "price": spot_trade.price, - "subaccountId": spot_trade.subaccount_id, - "fee": spot_trade.fee, - "orderHash": base64.b64encode(spot_trade.order_hash).decode(), - "feeRecipientAddress": spot_trade.fee_recipient_address, - "cid": spot_trade.cid, - "tradeId": spot_trade.trade_id, - }, - ], - "derivativeTrades": [ - { - "marketId": derivative_trade.market_id, - "isBuy": derivative_trade.is_buy, - "executionType": derivative_trade.executionType, - "subaccountId": derivative_trade.subaccount_id, - "positionDelta": { - "isLong": position_delta.is_long, - "executionMargin": position_delta.execution_margin, - "executionQuantity": position_delta.execution_quantity, - "executionPrice": position_delta.execution_price, - }, - "payout": derivative_trade.payout, - "fee": derivative_trade.fee, - "orderHash": derivative_trade.order_hash, - "feeRecipientAddress": derivative_trade.fee_recipient_address, - "cid": derivative_trade.cid, - "tradeId": derivative_trade.trade_id, - } - ], - "spotOrders": [ - { - "status": "Booked", - "orderHash": base64.b64encode(spot_order_update.order_hash).decode(), - "cid": spot_order_update.cid, - "order": { - "marketId": spot_order.market_id, - "order": { - "orderInfo": { - "subaccountId": spot_order_info.subaccount_id, - "feeRecipient": spot_order_info.fee_recipient, - "price": spot_order_info.price, - "quantity": spot_order_info.quantity, - "cid": spot_order_info.cid, - }, - "orderType": "SELL_PO", - "fillable": spot_limit_order.fillable, - "triggerPrice": spot_limit_order.trigger_price, - "orderHash": base64.b64encode(spot_limit_order.order_hash).decode(), - }, - }, - }, - ], - "derivativeOrders": [ - { - "status": "Booked", - "orderHash": base64.b64encode(derivative_order_update.order_hash).decode(), - "cid": derivative_order_update.cid, - "order": { - "marketId": derivative_order.market_id, - "order": { - "orderInfo": { - "subaccountId": derivative_order_info.subaccount_id, - "feeRecipient": derivative_order_info.fee_recipient, - "price": derivative_order_info.price, - "quantity": derivative_order_info.quantity, - "cid": derivative_order_info.cid, - }, - "orderType": "SELL_PO", - "margin": derivative_limit_order.margin, - "fillable": derivative_limit_order.fillable, - "triggerPrice": derivative_limit_order.trigger_price, - "orderHash": base64.b64encode(derivative_limit_order.order_hash).decode(), - }, - "isMarket": derivative_order.is_market, - }, - }, - ], - "spotOrderbookUpdates": [ - { - "seq": str(spot_orderbook_update.seq), - "orderbook": { - "marketId": spot_orderbook.market_id, - "buyLevels": [ - { - "p": spot_buy_level.p, - "q": spot_buy_level.q, - }, - ], - "sellLevels": [ - {"p": spot_sell_level.p, "q": spot_sell_level.q}, - ], - }, - }, - ], - "derivativeOrderbookUpdates": [ - { - "seq": str(derivative_orderbook_update.seq), - "orderbook": { - "marketId": derivative_orderbook.market_id, - "buyLevels": [ - { - "p": derivative_buy_level.p, - "q": derivative_buy_level.q, - }, - ], - "sellLevels": [ - { - "p": derivative_sell_level.p, - "q": derivative_sell_level.q, - }, - ], - }, - }, - ], - "positions": [ - { - "marketId": position.market_id, - "subaccountId": position.subaccount_id, - "isLong": position.isLong, - "quantity": position.quantity, - "entryPrice": position.entry_price, - "margin": position.margin, - "cumulativeFundingEntry": position.cumulative_funding_entry, - } - ], - "oraclePrices": [ - { - "symbol": oracle_price.symbol, - "price": oracle_price.price, - "type": oracle_price.type, - }, - ], - } - - asyncio.get_event_loop().create_task( - api.stream_v2( - callback=callback, - on_end_callback=end_callback, - on_status_callback=error_callback, - bank_balances_filter=bank_balances_filter, - subaccount_deposits_filter=subaccount_deposits_filter, - spot_trades_filter=spot_trades_filter, - derivative_trades_filter=derivative_trades_filter, - spot_orders_filter=spot_orders_filter, - derivative_orders_filter=derivative_orders_filter, - spot_orderbooks_filter=spot_orderbooks_filter, - derivative_orderbooks_filter=derivative_orderbooks_filter, - positions_filter=positions_filter, - oracle_price_filter=oracle_price_filter, - ) - ) - - first_update = await asyncio.wait_for(events.get(), timeout=1) - - assert first_update == expected_update - assert end_event.is_set() - - def _api_instance(self, servicer, servicer_v2): + def _api_instance(self, servicer): network = Network.devnet() channel = grpc.aio.insecure_channel(network.grpc_endpoint) cookie_assistant = DisabledCookieAssistant() api = ChainGrpcChainStream(channel=channel, cookie_assistant=cookie_assistant) api._stub = servicer - api._stub_v2 = servicer_v2 return api diff --git a/tests/test_composer_deprecation_warnings.py b/tests/test_composer_deprecation_warnings.py index e21c48a6..190bc02e 100644 --- a/tests/test_composer_deprecation_warnings.py +++ b/tests/test_composer_deprecation_warnings.py @@ -30,97 +30,6 @@ def basic_composer(self, inj_usdt_spot_market, btc_usdt_perp_market, first_match return composer - def test_chain_stream_bank_balances_filter_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.chain_stream_bank_balances_filter(accounts=["account"]) - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use chain_stream_bank_balances_v2_filter instead" - ) - - def test_chain_stream_subaccount_deposits_filter_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.chain_stream_subaccount_deposits_filter() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use chain_stream_subaccount_deposits_v2_filter instead" - ) - - def test_chain_stream_trades_filter_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.chain_stream_trades_filter() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use chain_stream_trades_v2_filter instead" - ) - - def test_chain_stream_orders_filter_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.chain_stream_orders_filter() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use chain_stream_orders_v2_filter instead" - ) - - def test_chain_stream_orderbooks_filter_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.chain_stream_orderbooks_filter() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use chain_stream_orderbooks_v2_filter instead" - ) - - def test_chain_stream_positions_filter_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.chain_stream_positions_filter() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use chain_stream_positions_v2_filter instead" - ) - - def test_chain_stream_oracle_price_filter_deprecation_warning(self): - composer = Composer(network=Network.devnet().string()) - - with warnings.catch_warnings(record=True) as all_warnings: - composer.chain_stream_oracle_price_filter() - - deprecation_warnings = [warning for warning in all_warnings if issubclass(warning.category, DeprecationWarning)] - assert len(deprecation_warnings) == 1 - assert ( - str(deprecation_warnings[0].message) - == "This method is deprecated. Use chain_stream_oracle_price_v2_filter instead" - ) - def test_msg_grant_typed_deprecation_warning(self): composer = Composer(network=Network.devnet().string())