From 68759f31e008cf8f82b97f4d529bad093f0e5140 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Thu, 13 Feb 2025 16:16:55 -0300 Subject: [PATCH 01/13] feat: updated changelog and version number for v1.9.0 release --- CHANGELOG.md | 2 +- Makefile | 2 +- buf.gen.yaml | 8 +- pyinjective/ofac.json | 1 + .../exchange/injective_archiver_rpc_pb2.py | 28 +- .../proto/exchange/injective_chart_rpc_pb2.py | 16 +- .../exchange/injective_explorer_rpc_pb2.py | 256 +++++++++--------- .../injective_explorer_rpc_pb2_grpc.py | 88 ++++++ pyinjective/proto/google/api/client_pb2.py | 54 ++-- pyinjective/proto/google/api/http_pb2.py | 4 +- pyinjective/proto/google/api/resource_pb2.py | 4 +- .../proto/google/api/visibility_pb2.py | 4 +- pyproject.toml | 2 +- 13 files changed, 284 insertions(+), 185 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 322c61d2..bd2471b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## [1.9.0] - 9999-99-99 +## [1.9.0] - 2025-02-13 ### Added - Added support for all new queries and messages from the new Permissions module diff --git a/Makefile b/Makefile index ca05f4cc..b4553c25 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ clean-all: $(call clean_repos) clone-injective-indexer: - git clone https://github.com/InjectiveLabs/injective-indexer.git -b v1.13.117_RC1 --depth 1 --single-branch + git clone https://github.com/InjectiveLabs/injective-indexer.git -b v1.14.1-RC.6 --depth 1 --single-branch clone-all: clone-injective-indexer diff --git a/buf.gen.yaml b/buf.gen.yaml index 580c2310..2a4273a1 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -19,11 +19,11 @@ inputs: tag: v0.53.2-inj-1 # - 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: testnet + tag: v1.14.0 subdir: proto + # - git_repo: https://github.com/InjectiveLabs/injective-core + # branch: testnet + # subdir: proto - directory: proto diff --git a/pyinjective/ofac.json b/pyinjective/ofac.json index 90751074..66b27cd2 100644 --- a/pyinjective/ofac.json +++ b/pyinjective/ofac.json @@ -19,6 +19,7 @@ "0x178169b423a011fff22b9e3f3abea13414ddd0f1", "0x179f48c78f57a3a78f0608cc9197b8972921d1d2", "0x1967d8af5bd86a497fb3dd7899a020e47560daaf", + "0x1999ef52700c34de7ec2b68a28aafb37db0c5ade", "0x19aa5fe80d33a56d56c78e82ea5e50e5d80b4dff", "0x19f8f2b0915daa12a3f5c9cf01df9e24d53794f7", "0x1da5821544e25c636c1417ba96ade4cf6d2f9b5a", diff --git a/pyinjective/proto/exchange/injective_archiver_rpc_pb2.py b/pyinjective/proto/exchange/injective_archiver_rpc_pb2.py index e5b50906..8ddf1bb1 100644 --- a/pyinjective/proto/exchange/injective_archiver_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_archiver_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_archiver_rpc.proto\x12\x16injective_archiver_rpc\"J\n\x0e\x42\x61lanceRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"k\n\x0f\x42\x61lanceResponse\x12X\n\x12historical_balance\x18\x01 \x01(\x0b\x32).injective_archiver_rpc.HistoricalBalanceR\x11historicalBalance\"/\n\x11HistoricalBalance\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"G\n\x0bRpnlRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"_\n\x0cRpnlResponse\x12O\n\x0fhistorical_rpnl\x18\x01 \x01(\x0b\x32&.injective_archiver_rpc.HistoricalRPNLR\x0ehistoricalRpnl\",\n\x0eHistoricalRPNL\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"J\n\x0eVolumesRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"k\n\x0fVolumesResponse\x12X\n\x12historical_volumes\x18\x01 \x01(\x0b\x32).injective_archiver_rpc.HistoricalVolumesR\x11historicalVolumes\"/\n\x11HistoricalVolumes\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"\x81\x01\n\x15PnlLeaderboardRequest\x12\x1d\n\nstart_date\x18\x01 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x02 \x01(\x12R\x07\x65ndDate\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x04 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n\x16PnlLeaderboardResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"h\n\x0eLeaderboardRow\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x10\n\x03pnl\x18\x02 \x01(\x01R\x03pnl\x12\x16\n\x06volume\x18\x03 \x01(\x01R\x06volume\x12\x12\n\x04rank\x18\x04 \x01(\x11R\x04rank\"\x81\x01\n\x15VolLeaderboardRequest\x12\x1d\n\nstart_date\x18\x01 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x02 \x01(\x12R\x07\x65ndDate\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x04 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n\x16VolLeaderboardResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"v\n$PnlLeaderboardFixedResolutionRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\"\xee\x01\n%PnlLeaderboardFixedResolutionResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"v\n$VolLeaderboardFixedResolutionRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\"\xee\x01\n%VolLeaderboardFixedResolutionResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"W\n\x13\x44\x65nomHoldersRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\"d\n\x14\x44\x65nomHoldersResponse\x12\x38\n\x07holders\x18\x01 \x03(\x0b\x32\x1e.injective_archiver_rpc.HolderR\x07holders\x12\x12\n\x04next\x18\x02 \x03(\tR\x04next\"K\n\x06Holder\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance\"\xd8\x01\n\x17HistoricalTradesRequest\x12\x1d\n\nfrom_block\x18\x01 \x01(\x04R\tfromBlock\x12\x1b\n\tend_block\x18\x02 \x01(\x04R\x08\x65ndBlock\x12\x1b\n\tfrom_time\x18\x03 \x01(\x12R\x08\x66romTime\x12\x19\n\x08\x65nd_time\x18\x04 \x01(\x12R\x07\x65ndTime\x12\x19\n\x08per_page\x18\x05 \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\x06 \x01(\tR\x05token\x12\x18\n\x07\x61\x63\x63ount\x18\x07 \x01(\tR\x07\x61\x63\x63ount\"\xad\x01\n\x18HistoricalTradesResponse\x12?\n\x06trades\x18\x01 \x03(\x0b\x32\'.injective_archiver_rpc.HistoricalTradeR\x06trades\x12\x1f\n\x0blast_height\x18\x02 \x01(\x04R\nlastHeight\x12\x1b\n\tlast_time\x18\x03 \x01(\x12R\x08lastTime\x12\x12\n\x04next\x18\x04 \x03(\tR\x04next\"\xcc\x03\n\x0fHistoricalTrade\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\'\n\x0ftrade_direction\x18\x04 \x01(\tR\x0etradeDirection\x12\x38\n\x05price\x18\x05 \x01(\x0b\x32\".injective_archiver_rpc.PriceLevelR\x05price\x12\x10\n\x03\x66\x65\x65\x18\x06 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\x07 \x01(\x12R\nexecutedAt\x12\'\n\x0f\x65xecuted_height\x18\x08 \x01(\x04R\x0e\x65xecutedHeight\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12%\n\x0e\x65xecution_side\x18\n \x01(\tR\rexecutionSide\x12\x1b\n\tusd_value\x18\x0b \x01(\tR\x08usdValue\x12\x14\n\x05\x66lags\x18\x0c \x03(\tR\x05\x66lags\x12\x1f\n\x0bmarket_type\x18\r \x01(\tR\nmarketType\"\\\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp2\xa3\x08\n\x14InjectiveArchiverRPC\x12Z\n\x07\x42\x61lance\x12&.injective_archiver_rpc.BalanceRequest\x1a\'.injective_archiver_rpc.BalanceResponse\x12Q\n\x04Rpnl\x12#.injective_archiver_rpc.RpnlRequest\x1a$.injective_archiver_rpc.RpnlResponse\x12Z\n\x07Volumes\x12&.injective_archiver_rpc.VolumesRequest\x1a\'.injective_archiver_rpc.VolumesResponse\x12o\n\x0ePnlLeaderboard\x12-.injective_archiver_rpc.PnlLeaderboardRequest\x1a..injective_archiver_rpc.PnlLeaderboardResponse\x12o\n\x0eVolLeaderboard\x12-.injective_archiver_rpc.VolLeaderboardRequest\x1a..injective_archiver_rpc.VolLeaderboardResponse\x12\x9c\x01\n\x1dPnlLeaderboardFixedResolution\x12<.injective_archiver_rpc.PnlLeaderboardFixedResolutionRequest\x1a=.injective_archiver_rpc.PnlLeaderboardFixedResolutionResponse\x12\x9c\x01\n\x1dVolLeaderboardFixedResolution\x12<.injective_archiver_rpc.VolLeaderboardFixedResolutionRequest\x1a=.injective_archiver_rpc.VolLeaderboardFixedResolutionResponse\x12i\n\x0c\x44\x65nomHolders\x12+.injective_archiver_rpc.DenomHoldersRequest\x1a,.injective_archiver_rpc.DenomHoldersResponse\x12u\n\x10HistoricalTrades\x12/.injective_archiver_rpc.HistoricalTradesRequest\x1a\x30.injective_archiver_rpc.HistoricalTradesResponseB\xc2\x01\n\x1a\x63om.injective_archiver_rpcB\x19InjectiveArchiverRpcProtoP\x01Z\x19/injective_archiver_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveArchiverRpc\xca\x02\x14InjectiveArchiverRpc\xe2\x02 InjectiveArchiverRpc\\GPBMetadata\xea\x02\x14InjectiveArchiverRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_archiver_rpc.proto\x12\x16injective_archiver_rpc\"J\n\x0e\x42\x61lanceRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"k\n\x0f\x42\x61lanceResponse\x12X\n\x12historical_balance\x18\x01 \x01(\x0b\x32).injective_archiver_rpc.HistoricalBalanceR\x11historicalBalance\"/\n\x11HistoricalBalance\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"G\n\x0bRpnlRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"_\n\x0cRpnlResponse\x12O\n\x0fhistorical_rpnl\x18\x01 \x01(\x0b\x32&.injective_archiver_rpc.HistoricalRPNLR\x0ehistoricalRpnl\",\n\x0eHistoricalRPNL\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"J\n\x0eVolumesRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"k\n\x0fVolumesResponse\x12X\n\x12historical_volumes\x18\x01 \x01(\x0b\x32).injective_archiver_rpc.HistoricalVolumesR\x11historicalVolumes\"/\n\x11HistoricalVolumes\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"\x81\x01\n\x15PnlLeaderboardRequest\x12\x1d\n\nstart_date\x18\x01 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x02 \x01(\x12R\x07\x65ndDate\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x04 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n\x16PnlLeaderboardResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"h\n\x0eLeaderboardRow\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x10\n\x03pnl\x18\x02 \x01(\x01R\x03pnl\x12\x16\n\x06volume\x18\x03 \x01(\x01R\x06volume\x12\x12\n\x04rank\x18\x04 \x01(\x11R\x04rank\"\x81\x01\n\x15VolLeaderboardRequest\x12\x1d\n\nstart_date\x18\x01 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x02 \x01(\x12R\x07\x65ndDate\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x04 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n\x16VolLeaderboardResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"v\n$PnlLeaderboardFixedResolutionRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\"\xee\x01\n%PnlLeaderboardFixedResolutionResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"v\n$VolLeaderboardFixedResolutionRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\"\xee\x01\n%VolLeaderboardFixedResolutionResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"W\n\x13\x44\x65nomHoldersRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\"z\n\x14\x44\x65nomHoldersResponse\x12\x38\n\x07holders\x18\x01 \x03(\x0b\x32\x1e.injective_archiver_rpc.HolderR\x07holders\x12\x12\n\x04next\x18\x02 \x03(\tR\x04next\x12\x14\n\x05total\x18\x03 \x01(\x11R\x05total\"K\n\x06Holder\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance\"\xd8\x01\n\x17HistoricalTradesRequest\x12\x1d\n\nfrom_block\x18\x01 \x01(\x04R\tfromBlock\x12\x1b\n\tend_block\x18\x02 \x01(\x04R\x08\x65ndBlock\x12\x1b\n\tfrom_time\x18\x03 \x01(\x12R\x08\x66romTime\x12\x19\n\x08\x65nd_time\x18\x04 \x01(\x12R\x07\x65ndTime\x12\x19\n\x08per_page\x18\x05 \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\x06 \x01(\tR\x05token\x12\x18\n\x07\x61\x63\x63ount\x18\x07 \x01(\tR\x07\x61\x63\x63ount\"\xad\x01\n\x18HistoricalTradesResponse\x12?\n\x06trades\x18\x01 \x03(\x0b\x32\'.injective_archiver_rpc.HistoricalTradeR\x06trades\x12\x1f\n\x0blast_height\x18\x02 \x01(\x04R\nlastHeight\x12\x1b\n\tlast_time\x18\x03 \x01(\x12R\x08lastTime\x12\x12\n\x04next\x18\x04 \x03(\tR\x04next\"\xe7\x03\n\x0fHistoricalTrade\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\'\n\x0ftrade_direction\x18\x04 \x01(\tR\x0etradeDirection\x12\x38\n\x05price\x18\x05 \x01(\x0b\x32\".injective_archiver_rpc.PriceLevelR\x05price\x12\x10\n\x03\x66\x65\x65\x18\x06 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\x07 \x01(\x12R\nexecutedAt\x12\'\n\x0f\x65xecuted_height\x18\x08 \x01(\x04R\x0e\x65xecutedHeight\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12%\n\x0e\x65xecution_side\x18\n \x01(\tR\rexecutionSide\x12\x1b\n\tusd_value\x18\x0b \x01(\tR\x08usdValue\x12\x14\n\x05\x66lags\x18\x0c \x03(\tR\x05\x66lags\x12\x1f\n\x0bmarket_type\x18\r \x01(\tR\nmarketType\x12\x19\n\x08trade_id\x18\x0e \x01(\tR\x07tradeId\"\\\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp2\xa3\x08\n\x14InjectiveArchiverRPC\x12Z\n\x07\x42\x61lance\x12&.injective_archiver_rpc.BalanceRequest\x1a\'.injective_archiver_rpc.BalanceResponse\x12Q\n\x04Rpnl\x12#.injective_archiver_rpc.RpnlRequest\x1a$.injective_archiver_rpc.RpnlResponse\x12Z\n\x07Volumes\x12&.injective_archiver_rpc.VolumesRequest\x1a\'.injective_archiver_rpc.VolumesResponse\x12o\n\x0ePnlLeaderboard\x12-.injective_archiver_rpc.PnlLeaderboardRequest\x1a..injective_archiver_rpc.PnlLeaderboardResponse\x12o\n\x0eVolLeaderboard\x12-.injective_archiver_rpc.VolLeaderboardRequest\x1a..injective_archiver_rpc.VolLeaderboardResponse\x12\x9c\x01\n\x1dPnlLeaderboardFixedResolution\x12<.injective_archiver_rpc.PnlLeaderboardFixedResolutionRequest\x1a=.injective_archiver_rpc.PnlLeaderboardFixedResolutionResponse\x12\x9c\x01\n\x1dVolLeaderboardFixedResolution\x12<.injective_archiver_rpc.VolLeaderboardFixedResolutionRequest\x1a=.injective_archiver_rpc.VolLeaderboardFixedResolutionResponse\x12i\n\x0c\x44\x65nomHolders\x12+.injective_archiver_rpc.DenomHoldersRequest\x1a,.injective_archiver_rpc.DenomHoldersResponse\x12u\n\x10HistoricalTrades\x12/.injective_archiver_rpc.HistoricalTradesRequest\x1a\x30.injective_archiver_rpc.HistoricalTradesResponseB\xc2\x01\n\x1a\x63om.injective_archiver_rpcB\x19InjectiveArchiverRpcProtoP\x01Z\x19/injective_archiver_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveArchiverRpc\xca\x02\x14InjectiveArchiverRpc\xe2\x02 InjectiveArchiverRpc\\GPBMetadata\xea\x02\x14InjectiveArchiverRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -61,17 +61,17 @@ _globals['_DENOMHOLDERSREQUEST']._serialized_start=2293 _globals['_DENOMHOLDERSREQUEST']._serialized_end=2380 _globals['_DENOMHOLDERSRESPONSE']._serialized_start=2382 - _globals['_DENOMHOLDERSRESPONSE']._serialized_end=2482 - _globals['_HOLDER']._serialized_start=2484 - _globals['_HOLDER']._serialized_end=2559 - _globals['_HISTORICALTRADESREQUEST']._serialized_start=2562 - _globals['_HISTORICALTRADESREQUEST']._serialized_end=2778 - _globals['_HISTORICALTRADESRESPONSE']._serialized_start=2781 - _globals['_HISTORICALTRADESRESPONSE']._serialized_end=2954 - _globals['_HISTORICALTRADE']._serialized_start=2957 - _globals['_HISTORICALTRADE']._serialized_end=3417 - _globals['_PRICELEVEL']._serialized_start=3419 - _globals['_PRICELEVEL']._serialized_end=3511 - _globals['_INJECTIVEARCHIVERRPC']._serialized_start=3514 - _globals['_INJECTIVEARCHIVERRPC']._serialized_end=4573 + _globals['_DENOMHOLDERSRESPONSE']._serialized_end=2504 + _globals['_HOLDER']._serialized_start=2506 + _globals['_HOLDER']._serialized_end=2581 + _globals['_HISTORICALTRADESREQUEST']._serialized_start=2584 + _globals['_HISTORICALTRADESREQUEST']._serialized_end=2800 + _globals['_HISTORICALTRADESRESPONSE']._serialized_start=2803 + _globals['_HISTORICALTRADESRESPONSE']._serialized_end=2976 + _globals['_HISTORICALTRADE']._serialized_start=2979 + _globals['_HISTORICALTRADE']._serialized_end=3466 + _globals['_PRICELEVEL']._serialized_start=3468 + _globals['_PRICELEVEL']._serialized_end=3560 + _globals['_INJECTIVEARCHIVERRPC']._serialized_start=3563 + _globals['_INJECTIVEARCHIVERRPC']._serialized_end=4622 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_chart_rpc_pb2.py b/pyinjective/proto/exchange/injective_chart_rpc_pb2.py index dd17fc23..a9cb66df 100644 --- a/pyinjective/proto/exchange/injective_chart_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_chart_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"exchange/injective_chart_rpc.proto\x12\x13injective_chart_rpc\"\xb1\x01\n\x18SpotMarketHistoryRequest\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\x12\x12\n\x04\x66rom\x18\x04 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x11R\x02to\x12\x1c\n\tcountback\x18\x06 \x01(\x11R\tcountback\"o\n\x19SpotMarketHistoryResponse\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01o\x18\x02 \x03(\x01R\x01o\x12\x0c\n\x01h\x18\x03 \x03(\x01R\x01h\x12\x0c\n\x01l\x18\x04 \x03(\x01R\x01l\x12\x0c\n\x01\x63\x18\x05 \x03(\x01R\x01\x63\x12\x0c\n\x01v\x18\x06 \x03(\x01R\x01v\"\xb7\x01\n\x1e\x44\x65rivativeMarketHistoryRequest\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\x12\x12\n\x04\x66rom\x18\x04 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x11R\x02to\x12\x1c\n\tcountback\x18\x06 \x01(\x11R\tcountback\"u\n\x1f\x44\x65rivativeMarketHistoryResponse\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01o\x18\x02 \x03(\x01R\x01o\x12\x0c\n\x01h\x18\x03 \x03(\x01R\x01h\x12\x0c\n\x01l\x18\x04 \x03(\x01R\x01l\x12\x0c\n\x01\x63\x18\x05 \x03(\x01R\x01\x63\x12\x0c\n\x01v\x18\x06 \x03(\x01R\x01v2\x8e\x02\n\x11InjectiveChartRPC\x12r\n\x11SpotMarketHistory\x12-.injective_chart_rpc.SpotMarketHistoryRequest\x1a..injective_chart_rpc.SpotMarketHistoryResponse\x12\x84\x01\n\x17\x44\x65rivativeMarketHistory\x12\x33.injective_chart_rpc.DerivativeMarketHistoryRequest\x1a\x34.injective_chart_rpc.DerivativeMarketHistoryResponseB\xad\x01\n\x17\x63om.injective_chart_rpcB\x16InjectiveChartRpcProtoP\x01Z\x16/injective_chart_rpcpb\xa2\x02\x03IXX\xaa\x02\x11InjectiveChartRpc\xca\x02\x11InjectiveChartRpc\xe2\x02\x1dInjectiveChartRpc\\GPBMetadata\xea\x02\x11InjectiveChartRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"exchange/injective_chart_rpc.proto\x12\x13injective_chart_rpc\"\xb1\x01\n\x18SpotMarketHistoryRequest\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\x12\x12\n\x04\x66rom\x18\x04 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x11R\x02to\x12\x1c\n\tcountback\x18\x06 \x01(\x11R\tcountback\"}\n\x19SpotMarketHistoryResponse\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01o\x18\x02 \x03(\x01R\x01o\x12\x0c\n\x01h\x18\x03 \x03(\x01R\x01h\x12\x0c\n\x01l\x18\x04 \x03(\x01R\x01l\x12\x0c\n\x01\x63\x18\x05 \x03(\x01R\x01\x63\x12\x0c\n\x01v\x18\x06 \x03(\x01R\x01v\x12\x0c\n\x01s\x18\x07 \x01(\tR\x01s\"\xb7\x01\n\x1e\x44\x65rivativeMarketHistoryRequest\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\x12\x12\n\x04\x66rom\x18\x04 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x11R\x02to\x12\x1c\n\tcountback\x18\x06 \x01(\x11R\tcountback\"\x83\x01\n\x1f\x44\x65rivativeMarketHistoryResponse\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01o\x18\x02 \x03(\x01R\x01o\x12\x0c\n\x01h\x18\x03 \x03(\x01R\x01h\x12\x0c\n\x01l\x18\x04 \x03(\x01R\x01l\x12\x0c\n\x01\x63\x18\x05 \x03(\x01R\x01\x63\x12\x0c\n\x01v\x18\x06 \x03(\x01R\x01v\x12\x0c\n\x01s\x18\x07 \x01(\tR\x01s2\x8e\x02\n\x11InjectiveChartRPC\x12r\n\x11SpotMarketHistory\x12-.injective_chart_rpc.SpotMarketHistoryRequest\x1a..injective_chart_rpc.SpotMarketHistoryResponse\x12\x84\x01\n\x17\x44\x65rivativeMarketHistory\x12\x33.injective_chart_rpc.DerivativeMarketHistoryRequest\x1a\x34.injective_chart_rpc.DerivativeMarketHistoryResponseB\xad\x01\n\x17\x63om.injective_chart_rpcB\x16InjectiveChartRpcProtoP\x01Z\x16/injective_chart_rpcpb\xa2\x02\x03IXX\xaa\x02\x11InjectiveChartRpc\xca\x02\x11InjectiveChartRpc\xe2\x02\x1dInjectiveChartRpc\\GPBMetadata\xea\x02\x11InjectiveChartRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -25,11 +25,11 @@ _globals['_SPOTMARKETHISTORYREQUEST']._serialized_start=60 _globals['_SPOTMARKETHISTORYREQUEST']._serialized_end=237 _globals['_SPOTMARKETHISTORYRESPONSE']._serialized_start=239 - _globals['_SPOTMARKETHISTORYRESPONSE']._serialized_end=350 - _globals['_DERIVATIVEMARKETHISTORYREQUEST']._serialized_start=353 - _globals['_DERIVATIVEMARKETHISTORYREQUEST']._serialized_end=536 - _globals['_DERIVATIVEMARKETHISTORYRESPONSE']._serialized_start=538 - _globals['_DERIVATIVEMARKETHISTORYRESPONSE']._serialized_end=655 - _globals['_INJECTIVECHARTRPC']._serialized_start=658 - _globals['_INJECTIVECHARTRPC']._serialized_end=928 + _globals['_SPOTMARKETHISTORYRESPONSE']._serialized_end=364 + _globals['_DERIVATIVEMARKETHISTORYREQUEST']._serialized_start=367 + _globals['_DERIVATIVEMARKETHISTORYREQUEST']._serialized_end=550 + _globals['_DERIVATIVEMARKETHISTORYRESPONSE']._serialized_start=553 + _globals['_DERIVATIVEMARKETHISTORYRESPONSE']._serialized_end=684 + _globals['_INJECTIVECHARTRPC']._serialized_start=687 + _globals['_INJECTIVECHARTRPC']._serialized_end=957 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_explorer_rpc_pb2.py b/pyinjective/proto/exchange/injective_explorer_rpc_pb2.py index fd21e15c..de8f80f8 100644 --- a/pyinjective/proto/exchange/injective_explorer_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_explorer_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_explorer_rpc.proto\x12\x16injective_explorer_rpc\"\xc4\x02\n\x14GetAccountTxsRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06\x62\x65\x66ore\x18\x02 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x03 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x12\n\x04type\x18\x06 \x01(\tR\x04type\x12\x16\n\x06module\x18\x07 \x01(\tR\x06module\x12\x1f\n\x0b\x66rom_number\x18\x08 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\t \x01(\x12R\x08toNumber\x12\x1d\n\nstart_time\x18\n \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x0b \x01(\x12R\x07\x65ndTime\x12\x16\n\x06status\x18\x0c \x01(\tR\x06status\"\x89\x01\n\x15GetAccountTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\xab\x05\n\x0cTxDetailData\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x12\n\x04\x63ode\x18\x05 \x01(\rR\x04\x63ode\x12\x12\n\x04\x64\x61ta\x18\x06 \x01(\x0cR\x04\x64\x61ta\x12\x12\n\x04info\x18\x08 \x01(\tR\x04info\x12\x1d\n\ngas_wanted\x18\t \x01(\x12R\tgasWanted\x12\x19\n\x08gas_used\x18\n \x01(\x12R\x07gasUsed\x12\x37\n\x07gas_fee\x18\x0b \x01(\x0b\x32\x1e.injective_explorer_rpc.GasFeeR\x06gasFee\x12\x1c\n\tcodespace\x18\x0c \x01(\tR\tcodespace\x12\x35\n\x06\x65vents\x18\r \x03(\x0b\x32\x1d.injective_explorer_rpc.EventR\x06\x65vents\x12\x17\n\x07tx_type\x18\x0e \x01(\tR\x06txType\x12\x1a\n\x08messages\x18\x0f \x01(\x0cR\x08messages\x12\x41\n\nsignatures\x18\x10 \x03(\x0b\x32!.injective_explorer_rpc.SignatureR\nsignatures\x12\x12\n\x04memo\x18\x11 \x01(\tR\x04memo\x12\x1b\n\ttx_number\x18\x12 \x01(\x04R\x08txNumber\x12\x30\n\x14\x62lock_unix_timestamp\x18\x13 \x01(\x04R\x12\x62lockUnixTimestamp\x12\x1b\n\terror_log\x18\x14 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04logs\x18\x15 \x01(\x0cR\x04logs\x12\x1b\n\tclaim_ids\x18\x16 \x03(\x12R\x08\x63laimIds\"\x91\x01\n\x06GasFee\x12:\n\x06\x61mount\x18\x01 \x03(\x0b\x32\".injective_explorer_rpc.CosmosCoinR\x06\x61mount\x12\x1b\n\tgas_limit\x18\x02 \x01(\x04R\x08gasLimit\x12\x14\n\x05payer\x18\x03 \x01(\tR\x05payer\x12\x18\n\x07granter\x18\x04 \x01(\tR\x07granter\":\n\nCosmosCoin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xa9\x01\n\x05\x45vent\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12M\n\nattributes\x18\x02 \x03(\x0b\x32-.injective_explorer_rpc.Event.AttributesEntryR\nattributes\x1a=\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"w\n\tSignature\x12\x16\n\x06pubkey\x18\x01 \x01(\tR\x06pubkey\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x1a\n\x08sequence\x18\x03 \x01(\x04R\x08sequence\x12\x1c\n\tsignature\x18\x04 \x01(\tR\tsignature\"\x99\x01\n\x15GetContractTxsRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x03 \x01(\x04R\x04skip\x12\x1f\n\x0b\x66rom_number\x18\x04 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x05 \x01(\x12R\x08toNumber\"\x8a\x01\n\x16GetContractTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"\x9b\x01\n\x17GetContractTxsV2Request\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06height\x18\x02 \x01(\x04R\x06height\x12\x12\n\x04\x66rom\x18\x03 \x01(\x12R\x04\x66rom\x12\x0e\n\x02to\x18\x04 \x01(\x12R\x02to\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x14\n\x05token\x18\x06 \x01(\tR\x05token\"h\n\x18GetContractTxsV2Response\x12\x12\n\x04next\x18\x01 \x03(\tR\x04next\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"z\n\x10GetBlocksRequest\x12\x16\n\x06\x62\x65\x66ore\x18\x01 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x02 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04\x66rom\x18\x04 \x01(\x04R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x04R\x02to\"\x82\x01\n\x11GetBlocksResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x35\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32!.injective_explorer_rpc.BlockInfoR\x04\x64\x61ta\"\xad\x02\n\tBlockInfo\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x33\n\x03txs\x18\x08 \x03(\x0b\x32!.injective_explorer_rpc.TxDataRPCR\x03txs\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp\"\xa0\x02\n\tTxDataRPC\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\tR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12\x1b\n\tclaim_ids\x18\n \x03(\x12R\x08\x63laimIds\"!\n\x0fGetBlockRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\"u\n\x10GetBlockResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12;\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\'.injective_explorer_rpc.BlockDetailInfoR\x04\x64\x61ta\"\xcd\x02\n\x0f\x42lockDetailInfo\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x1b\n\ttotal_txs\x18\x08 \x01(\x12R\x08totalTxs\x12\x30\n\x03txs\x18\t \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x03txs\x12\x1c\n\ttimestamp\x18\n \x01(\tR\ttimestamp\"\x96\x03\n\x06TxData\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\x0cR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12 \n\x0ctx_msg_types\x18\n \x01(\x0cR\ntxMsgTypes\x12\x12\n\x04logs\x18\x0b \x01(\x0cR\x04logs\x12\x1b\n\tclaim_ids\x18\x0c \x03(\x12R\x08\x63laimIds\x12\x41\n\nsignatures\x18\r \x03(\x0b\x32!.injective_explorer_rpc.SignatureR\nsignatures\"\x16\n\x14GetValidatorsRequest\"t\n\x15GetValidatorsResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x35\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32!.injective_explorer_rpc.ValidatorR\x04\x64\x61ta\"\xb5\x07\n\tValidator\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07moniker\x18\x02 \x01(\tR\x07moniker\x12)\n\x10operator_address\x18\x03 \x01(\tR\x0foperatorAddress\x12+\n\x11\x63onsensus_address\x18\x04 \x01(\tR\x10\x63onsensusAddress\x12\x16\n\x06jailed\x18\x05 \x01(\x08R\x06jailed\x12\x16\n\x06status\x18\x06 \x01(\x11R\x06status\x12\x16\n\x06tokens\x18\x07 \x01(\tR\x06tokens\x12)\n\x10\x64\x65legator_shares\x18\x08 \x01(\tR\x0f\x64\x65legatorShares\x12N\n\x0b\x64\x65scription\x18\t \x01(\x0b\x32,.injective_explorer_rpc.ValidatorDescriptionR\x0b\x64\x65scription\x12)\n\x10unbonding_height\x18\n \x01(\x12R\x0funbondingHeight\x12%\n\x0eunbonding_time\x18\x0b \x01(\tR\runbondingTime\x12\'\n\x0f\x63ommission_rate\x18\x0c \x01(\tR\x0e\x63ommissionRate\x12.\n\x13\x63ommission_max_rate\x18\r \x01(\tR\x11\x63ommissionMaxRate\x12;\n\x1a\x63ommission_max_change_rate\x18\x0e \x01(\tR\x17\x63ommissionMaxChangeRate\x12\x34\n\x16\x63ommission_update_time\x18\x0f \x01(\tR\x14\x63ommissionUpdateTime\x12\x1a\n\x08proposed\x18\x10 \x01(\x04R\x08proposed\x12\x16\n\x06signed\x18\x11 \x01(\x04R\x06signed\x12\x16\n\x06missed\x18\x12 \x01(\x04R\x06missed\x12\x1c\n\ttimestamp\x18\x13 \x01(\tR\ttimestamp\x12\x41\n\x07uptimes\x18\x14 \x03(\x0b\x32\'.injective_explorer_rpc.ValidatorUptimeR\x07uptimes\x12N\n\x0fslashing_events\x18\x15 \x03(\x0b\x32%.injective_explorer_rpc.SlashingEventR\x0eslashingEvents\x12+\n\x11uptime_percentage\x18\x16 \x01(\x01R\x10uptimePercentage\x12\x1b\n\timage_url\x18\x17 \x01(\tR\x08imageUrl\"\xc8\x01\n\x14ValidatorDescription\x12\x18\n\x07moniker\x18\x01 \x01(\tR\x07moniker\x12\x1a\n\x08identity\x18\x02 \x01(\tR\x08identity\x12\x18\n\x07website\x18\x03 \x01(\tR\x07website\x12)\n\x10security_contact\x18\x04 \x01(\tR\x0fsecurityContact\x12\x18\n\x07\x64\x65tails\x18\x05 \x01(\tR\x07\x64\x65tails\x12\x1b\n\timage_url\x18\x06 \x01(\tR\x08imageUrl\"L\n\x0fValidatorUptime\x12!\n\x0c\x62lock_number\x18\x01 \x01(\x04R\x0b\x62lockNumber\x12\x16\n\x06status\x18\x02 \x01(\tR\x06status\"\xe0\x01\n\rSlashingEvent\x12!\n\x0c\x62lock_number\x18\x01 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x02 \x01(\tR\x0e\x62lockTimestamp\x12\x18\n\x07\x61\x64\x64ress\x18\x03 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05power\x18\x04 \x01(\x04R\x05power\x12\x16\n\x06reason\x18\x05 \x01(\tR\x06reason\x12\x16\n\x06jailed\x18\x06 \x01(\tR\x06jailed\x12#\n\rmissed_blocks\x18\x07 \x01(\x04R\x0cmissedBlocks\"/\n\x13GetValidatorRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\"s\n\x14GetValidatorResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x35\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32!.injective_explorer_rpc.ValidatorR\x04\x64\x61ta\"5\n\x19GetValidatorUptimeRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\"\x7f\n\x1aGetValidatorUptimeResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12;\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32\'.injective_explorer_rpc.ValidatorUptimeR\x04\x64\x61ta\"\xa3\x02\n\rGetTxsRequest\x12\x16\n\x06\x62\x65\x66ore\x18\x01 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x02 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x12\n\x04type\x18\x05 \x01(\tR\x04type\x12\x16\n\x06module\x18\x06 \x01(\tR\x06module\x12\x1f\n\x0b\x66rom_number\x18\x07 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x08 \x01(\x12R\x08toNumber\x12\x1d\n\nstart_time\x18\t \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\n \x01(\x12R\x07\x65ndTime\x12\x16\n\x06status\x18\x0b \x01(\tR\x06status\"|\n\x0eGetTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x32\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x04\x64\x61ta\"*\n\x14GetTxByTxHashRequest\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash\"w\n\x15GetTxByTxHashResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x38\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"y\n\x19GetPeggyDepositTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\"Z\n\x1aGetPeggyDepositTxsResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_explorer_rpc.PeggyDepositTxR\x05\x66ield\"\xf9\x02\n\x0ePeggyDepositTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0b\x65vent_nonce\x18\x03 \x01(\x04R\neventNonce\x12!\n\x0c\x65vent_height\x18\x04 \x01(\x04R\x0b\x65ventHeight\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x06 \x01(\tR\x05\x64\x65nom\x12\x31\n\x14orchestrator_address\x18\x07 \x01(\tR\x13orchestratorAddress\x12\x14\n\x05state\x18\x08 \x01(\tR\x05state\x12\x1d\n\nclaim_type\x18\t \x01(\x11R\tclaimType\x12\x1b\n\ttx_hashes\x18\n \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0b \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0c \x01(\tR\tupdatedAt\"|\n\x1cGetPeggyWithdrawalTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\"`\n\x1dGetPeggyWithdrawalTxsResponse\x12?\n\x05\x66ield\x18\x01 \x03(\x0b\x32).injective_explorer_rpc.PeggyWithdrawalTxR\x05\x66ield\"\x87\x04\n\x11PeggyWithdrawalTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x04 \x01(\tR\x05\x64\x65nom\x12\x1d\n\nbridge_fee\x18\x05 \x01(\tR\tbridgeFee\x12$\n\x0eoutgoing_tx_id\x18\x06 \x01(\x04R\x0coutgoingTxId\x12#\n\rbatch_timeout\x18\x07 \x01(\x04R\x0c\x62\x61tchTimeout\x12\x1f\n\x0b\x62\x61tch_nonce\x18\x08 \x01(\x04R\nbatchNonce\x12\x31\n\x14orchestrator_address\x18\t \x01(\tR\x13orchestratorAddress\x12\x1f\n\x0b\x65vent_nonce\x18\n \x01(\x04R\neventNonce\x12!\n\x0c\x65vent_height\x18\x0b \x01(\x04R\x0b\x65ventHeight\x12\x14\n\x05state\x18\x0c \x01(\tR\x05state\x12\x1d\n\nclaim_type\x18\r \x01(\x11R\tclaimType\x12\x1b\n\ttx_hashes\x18\x0e \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\tR\tupdatedAt\"\xf4\x01\n\x18GetIBCTransferTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0bsrc_channel\x18\x03 \x01(\tR\nsrcChannel\x12\x19\n\x08src_port\x18\x04 \x01(\tR\x07srcPort\x12!\n\x0c\x64\x65st_channel\x18\x05 \x01(\tR\x0b\x64\x65stChannel\x12\x1b\n\tdest_port\x18\x06 \x01(\tR\x08\x64\x65stPort\x12\x14\n\x05limit\x18\x07 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x08 \x01(\x04R\x04skip\"X\n\x19GetIBCTransferTxsResponse\x12;\n\x05\x66ield\x18\x01 \x03(\x0b\x32%.injective_explorer_rpc.IBCTransferTxR\x05\x66ield\"\x9e\x04\n\rIBCTransferTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0bsource_port\x18\x03 \x01(\tR\nsourcePort\x12%\n\x0esource_channel\x18\x04 \x01(\tR\rsourceChannel\x12)\n\x10\x64\x65stination_port\x18\x05 \x01(\tR\x0f\x64\x65stinationPort\x12/\n\x13\x64\x65stination_channel\x18\x06 \x01(\tR\x12\x64\x65stinationChannel\x12\x16\n\x06\x61mount\x18\x07 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x08 \x01(\tR\x05\x64\x65nom\x12%\n\x0etimeout_height\x18\t \x01(\tR\rtimeoutHeight\x12+\n\x11timeout_timestamp\x18\n \x01(\x04R\x10timeoutTimestamp\x12\'\n\x0fpacket_sequence\x18\x0b \x01(\x04R\x0epacketSequence\x12\x19\n\x08\x64\x61ta_hex\x18\x0c \x01(\x0cR\x07\x64\x61taHex\x12\x14\n\x05state\x18\r \x01(\tR\x05state\x12\x1b\n\ttx_hashes\x18\x0e \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\tR\tupdatedAt\"i\n\x13GetWasmCodesRequest\x12\x14\n\x05limit\x18\x01 \x01(\x11R\x05limit\x12\x1f\n\x0b\x66rom_number\x18\x02 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x03 \x01(\x12R\x08toNumber\"\x84\x01\n\x14GetWasmCodesResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x34\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32 .injective_explorer_rpc.WasmCodeR\x04\x64\x61ta\"\xe2\x03\n\x08WasmCode\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12<\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .injective_explorer_rpc.ChecksumR\x08\x63hecksum\x12\x1d\n\ncreated_at\x18\x04 \x01(\x04R\tcreatedAt\x12#\n\rcontract_type\x18\x05 \x01(\tR\x0c\x63ontractType\x12\x18\n\x07version\x18\x06 \x01(\tR\x07version\x12J\n\npermission\x18\x07 \x01(\x0b\x32*.injective_explorer_rpc.ContractPermissionR\npermission\x12\x1f\n\x0b\x63ode_schema\x18\x08 \x01(\tR\ncodeSchema\x12\x1b\n\tcode_view\x18\t \x01(\tR\x08\x63odeView\x12\"\n\x0cinstantiates\x18\n \x01(\x04R\x0cinstantiates\x12\x18\n\x07\x63reator\x18\x0b \x01(\tR\x07\x63reator\x12\x1f\n\x0b\x63ode_number\x18\x0c \x01(\x12R\ncodeNumber\x12\x1f\n\x0bproposal_id\x18\r \x01(\x12R\nproposalId\"<\n\x08\x43hecksum\x12\x1c\n\talgorithm\x18\x01 \x01(\tR\talgorithm\x12\x12\n\x04hash\x18\x02 \x01(\tR\x04hash\"O\n\x12\x43ontractPermission\x12\x1f\n\x0b\x61\x63\x63\x65ss_type\x18\x01 \x01(\x11R\naccessType\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\"1\n\x16GetWasmCodeByIDRequest\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x12R\x06\x63odeId\"\xf1\x03\n\x17GetWasmCodeByIDResponse\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12<\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .injective_explorer_rpc.ChecksumR\x08\x63hecksum\x12\x1d\n\ncreated_at\x18\x04 \x01(\x04R\tcreatedAt\x12#\n\rcontract_type\x18\x05 \x01(\tR\x0c\x63ontractType\x12\x18\n\x07version\x18\x06 \x01(\tR\x07version\x12J\n\npermission\x18\x07 \x01(\x0b\x32*.injective_explorer_rpc.ContractPermissionR\npermission\x12\x1f\n\x0b\x63ode_schema\x18\x08 \x01(\tR\ncodeSchema\x12\x1b\n\tcode_view\x18\t \x01(\tR\x08\x63odeView\x12\"\n\x0cinstantiates\x18\n \x01(\x04R\x0cinstantiates\x12\x18\n\x07\x63reator\x18\x0b \x01(\tR\x07\x63reator\x12\x1f\n\x0b\x63ode_number\x18\x0c \x01(\x12R\ncodeNumber\x12\x1f\n\x0bproposal_id\x18\r \x01(\x12R\nproposalId\"\xd1\x01\n\x17GetWasmContractsRequest\x12\x14\n\x05limit\x18\x01 \x01(\x11R\x05limit\x12\x17\n\x07\x63ode_id\x18\x02 \x01(\x12R\x06\x63odeId\x12\x1f\n\x0b\x66rom_number\x18\x03 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x04 \x01(\x12R\x08toNumber\x12\x1f\n\x0b\x61ssets_only\x18\x05 \x01(\x08R\nassetsOnly\x12\x12\n\x04skip\x18\x06 \x01(\x12R\x04skip\x12\x14\n\x05label\x18\x07 \x01(\tR\x05label\"\x8c\x01\n\x18GetWasmContractsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.WasmContractR\x04\x64\x61ta\"\xe9\x04\n\x0cWasmContract\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x17\n\x07tx_hash\x18\x03 \x01(\tR\x06txHash\x12\x18\n\x07\x63reator\x18\x04 \x01(\tR\x07\x63reator\x12\x1a\n\x08\x65xecutes\x18\x05 \x01(\x04R\x08\x65xecutes\x12\'\n\x0finstantiated_at\x18\x06 \x01(\x04R\x0einstantiatedAt\x12!\n\x0cinit_message\x18\x07 \x01(\tR\x0binitMessage\x12(\n\x10last_executed_at\x18\x08 \x01(\x04R\x0elastExecutedAt\x12:\n\x05\x66unds\x18\t \x03(\x0b\x32$.injective_explorer_rpc.ContractFundR\x05\x66unds\x12\x17\n\x07\x63ode_id\x18\n \x01(\x04R\x06\x63odeId\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x36\n\x17\x63urrent_migrate_message\x18\x0c \x01(\tR\x15\x63urrentMigrateMessage\x12\'\n\x0f\x63ontract_number\x18\r \x01(\x12R\x0e\x63ontractNumber\x12\x18\n\x07version\x18\x0e \x01(\tR\x07version\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12I\n\rcw20_metadata\x18\x10 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\x12\x1f\n\x0bproposal_id\x18\x11 \x01(\x12R\nproposalId\"<\n\x0c\x43ontractFund\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xa6\x01\n\x0c\x43w20Metadata\x12\x44\n\ntoken_info\x18\x01 \x01(\x0b\x32%.injective_explorer_rpc.Cw20TokenInfoR\ttokenInfo\x12P\n\x0emarketing_info\x18\x02 \x01(\x0b\x32).injective_explorer_rpc.Cw20MarketingInfoR\rmarketingInfo\"z\n\rCw20TokenInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n\x06symbol\x18\x02 \x01(\tR\x06symbol\x12\x1a\n\x08\x64\x65\x63imals\x18\x03 \x01(\x12R\x08\x64\x65\x63imals\x12!\n\x0ctotal_supply\x18\x04 \x01(\tR\x0btotalSupply\"\x81\x01\n\x11\x43w20MarketingInfo\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x12\n\x04logo\x18\x03 \x01(\tR\x04logo\x12\x1c\n\tmarketing\x18\x04 \x01(\x0cR\tmarketing\"L\n\x1fGetWasmContractByAddressRequest\x12)\n\x10\x63ontract_address\x18\x01 \x01(\tR\x0f\x63ontractAddress\"\xfd\x04\n GetWasmContractByAddressResponse\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x17\n\x07tx_hash\x18\x03 \x01(\tR\x06txHash\x12\x18\n\x07\x63reator\x18\x04 \x01(\tR\x07\x63reator\x12\x1a\n\x08\x65xecutes\x18\x05 \x01(\x04R\x08\x65xecutes\x12\'\n\x0finstantiated_at\x18\x06 \x01(\x04R\x0einstantiatedAt\x12!\n\x0cinit_message\x18\x07 \x01(\tR\x0binitMessage\x12(\n\x10last_executed_at\x18\x08 \x01(\x04R\x0elastExecutedAt\x12:\n\x05\x66unds\x18\t \x03(\x0b\x32$.injective_explorer_rpc.ContractFundR\x05\x66unds\x12\x17\n\x07\x63ode_id\x18\n \x01(\x04R\x06\x63odeId\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x36\n\x17\x63urrent_migrate_message\x18\x0c \x01(\tR\x15\x63urrentMigrateMessage\x12\'\n\x0f\x63ontract_number\x18\r \x01(\x12R\x0e\x63ontractNumber\x12\x18\n\x07version\x18\x0e \x01(\tR\x07version\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12I\n\rcw20_metadata\x18\x10 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\x12\x1f\n\x0bproposal_id\x18\x11 \x01(\x12R\nproposalId\"G\n\x15GetCw20BalanceRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\"W\n\x16GetCw20BalanceResponse\x12=\n\x05\x66ield\x18\x01 \x03(\x0b\x32\'.injective_explorer_rpc.WasmCw20BalanceR\x05\x66ield\"\xda\x01\n\x0fWasmCw20Balance\x12)\n\x10\x63ontract_address\x18\x01 \x01(\tR\x0f\x63ontractAddress\x12\x18\n\x07\x61\x63\x63ount\x18\x02 \x01(\tR\x07\x61\x63\x63ount\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x1d\n\nupdated_at\x18\x04 \x01(\x12R\tupdatedAt\x12I\n\rcw20_metadata\x18\x05 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\"1\n\x0fRelayersRequest\x12\x1e\n\x0bmarket_i_ds\x18\x01 \x03(\tR\tmarketIDs\"P\n\x10RelayersResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_explorer_rpc.RelayerMarketsR\x05\x66ield\"j\n\x0eRelayerMarkets\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12;\n\x08relayers\x18\x02 \x03(\x0b\x32\x1f.injective_explorer_rpc.RelayerR\x08relayers\"/\n\x07Relayer\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03\x63ta\x18\x02 \x01(\tR\x03\x63ta\"\xbd\x02\n\x17GetBankTransfersRequest\x12\x18\n\x07senders\x18\x01 \x03(\tR\x07senders\x12\x1e\n\nrecipients\x18\x02 \x03(\tR\nrecipients\x12\x39\n\x19is_community_pool_related\x18\x03 \x01(\x08R\x16isCommunityPoolRelated\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x18\n\x07\x61\x64\x64ress\x18\x08 \x03(\tR\x07\x61\x64\x64ress\x12\x19\n\x08per_page\x18\t \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\n \x01(\tR\x05token\"\x8c\x01\n\x18GetBankTransfersResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.BankTransferR\x04\x64\x61ta\"\xc8\x01\n\x0c\x42\x61nkTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1c\n\trecipient\x18\x02 \x01(\tR\trecipient\x12\x36\n\x07\x61mounts\x18\x03 \x03(\x0b\x32\x1c.injective_explorer_rpc.CoinR\x07\x61mounts\x12!\n\x0c\x62lock_number\x18\x04 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x05 \x01(\tR\x0e\x62lockTimestamp\"4\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\x12\n\x10StreamTxsRequest\"\xa8\x02\n\x11StreamTxsResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\tR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12\x1b\n\tclaim_ids\x18\n \x03(\x12R\x08\x63laimIds\"\x15\n\x13StreamBlocksRequest\"\xb8\x02\n\x14StreamBlocksResponse\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x33\n\x03txs\x18\x08 \x03(\x0b\x32!.injective_explorer_rpc.TxDataRPCR\x03txs\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp\"\x11\n\x0fGetStatsRequest\"\x9c\x02\n\x10GetStatsResponse\x12\x1c\n\taddresses\x18\x01 \x01(\x04R\taddresses\x12\x16\n\x06\x61ssets\x18\x02 \x01(\x04R\x06\x61ssets\x12\x1d\n\ninj_supply\x18\x03 \x01(\x04R\tinjSupply\x12\x1c\n\ntxs_ps24_h\x18\x04 \x01(\x04R\x08txsPs24H\x12\x1e\n\x0btxs_ps100_b\x18\x05 \x01(\x04R\ttxsPs100B\x12\x1b\n\ttxs_total\x18\x06 \x01(\x04R\x08txsTotal\x12\x17\n\x07txs24_h\x18\x07 \x01(\x04R\x06txs24H\x12\x17\n\x07txs30_d\x18\x08 \x01(\x04R\x06txs30D\x12&\n\x0f\x62lock_count24_h\x18\t \x01(\x04R\rblockCount24H2\xa5\x14\n\x14InjectiveExplorerRPC\x12l\n\rGetAccountTxs\x12,.injective_explorer_rpc.GetAccountTxsRequest\x1a-.injective_explorer_rpc.GetAccountTxsResponse\x12o\n\x0eGetContractTxs\x12-.injective_explorer_rpc.GetContractTxsRequest\x1a..injective_explorer_rpc.GetContractTxsResponse\x12u\n\x10GetContractTxsV2\x12/.injective_explorer_rpc.GetContractTxsV2Request\x1a\x30.injective_explorer_rpc.GetContractTxsV2Response\x12`\n\tGetBlocks\x12(.injective_explorer_rpc.GetBlocksRequest\x1a).injective_explorer_rpc.GetBlocksResponse\x12]\n\x08GetBlock\x12\'.injective_explorer_rpc.GetBlockRequest\x1a(.injective_explorer_rpc.GetBlockResponse\x12l\n\rGetValidators\x12,.injective_explorer_rpc.GetValidatorsRequest\x1a-.injective_explorer_rpc.GetValidatorsResponse\x12i\n\x0cGetValidator\x12+.injective_explorer_rpc.GetValidatorRequest\x1a,.injective_explorer_rpc.GetValidatorResponse\x12{\n\x12GetValidatorUptime\x12\x31.injective_explorer_rpc.GetValidatorUptimeRequest\x1a\x32.injective_explorer_rpc.GetValidatorUptimeResponse\x12W\n\x06GetTxs\x12%.injective_explorer_rpc.GetTxsRequest\x1a&.injective_explorer_rpc.GetTxsResponse\x12l\n\rGetTxByTxHash\x12,.injective_explorer_rpc.GetTxByTxHashRequest\x1a-.injective_explorer_rpc.GetTxByTxHashResponse\x12{\n\x12GetPeggyDepositTxs\x12\x31.injective_explorer_rpc.GetPeggyDepositTxsRequest\x1a\x32.injective_explorer_rpc.GetPeggyDepositTxsResponse\x12\x84\x01\n\x15GetPeggyWithdrawalTxs\x12\x34.injective_explorer_rpc.GetPeggyWithdrawalTxsRequest\x1a\x35.injective_explorer_rpc.GetPeggyWithdrawalTxsResponse\x12x\n\x11GetIBCTransferTxs\x12\x30.injective_explorer_rpc.GetIBCTransferTxsRequest\x1a\x31.injective_explorer_rpc.GetIBCTransferTxsResponse\x12i\n\x0cGetWasmCodes\x12+.injective_explorer_rpc.GetWasmCodesRequest\x1a,.injective_explorer_rpc.GetWasmCodesResponse\x12r\n\x0fGetWasmCodeByID\x12..injective_explorer_rpc.GetWasmCodeByIDRequest\x1a/.injective_explorer_rpc.GetWasmCodeByIDResponse\x12u\n\x10GetWasmContracts\x12/.injective_explorer_rpc.GetWasmContractsRequest\x1a\x30.injective_explorer_rpc.GetWasmContractsResponse\x12\x8d\x01\n\x18GetWasmContractByAddress\x12\x37.injective_explorer_rpc.GetWasmContractByAddressRequest\x1a\x38.injective_explorer_rpc.GetWasmContractByAddressResponse\x12o\n\x0eGetCw20Balance\x12-.injective_explorer_rpc.GetCw20BalanceRequest\x1a..injective_explorer_rpc.GetCw20BalanceResponse\x12]\n\x08Relayers\x12\'.injective_explorer_rpc.RelayersRequest\x1a(.injective_explorer_rpc.RelayersResponse\x12u\n\x10GetBankTransfers\x12/.injective_explorer_rpc.GetBankTransfersRequest\x1a\x30.injective_explorer_rpc.GetBankTransfersResponse\x12\x62\n\tStreamTxs\x12(.injective_explorer_rpc.StreamTxsRequest\x1a).injective_explorer_rpc.StreamTxsResponse0\x01\x12k\n\x0cStreamBlocks\x12+.injective_explorer_rpc.StreamBlocksRequest\x1a,.injective_explorer_rpc.StreamBlocksResponse0\x01\x12]\n\x08GetStats\x12\'.injective_explorer_rpc.GetStatsRequest\x1a(.injective_explorer_rpc.GetStatsResponseB\xc2\x01\n\x1a\x63om.injective_explorer_rpcB\x19InjectiveExplorerRpcProtoP\x01Z\x19/injective_explorer_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveExplorerRpc\xca\x02\x14InjectiveExplorerRpc\xe2\x02 InjectiveExplorerRpc\\GPBMetadata\xea\x02\x14InjectiveExplorerRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_explorer_rpc.proto\x12\x16injective_explorer_rpc\"\xc4\x02\n\x14GetAccountTxsRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06\x62\x65\x66ore\x18\x02 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x03 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x12\n\x04type\x18\x06 \x01(\tR\x04type\x12\x16\n\x06module\x18\x07 \x01(\tR\x06module\x12\x1f\n\x0b\x66rom_number\x18\x08 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\t \x01(\x12R\x08toNumber\x12\x1d\n\nstart_time\x18\n \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x0b \x01(\x12R\x07\x65ndTime\x12\x16\n\x06status\x18\x0c \x01(\tR\x06status\"\x89\x01\n\x15GetAccountTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\xab\x05\n\x0cTxDetailData\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x12\n\x04\x63ode\x18\x05 \x01(\rR\x04\x63ode\x12\x12\n\x04\x64\x61ta\x18\x06 \x01(\x0cR\x04\x64\x61ta\x12\x12\n\x04info\x18\x08 \x01(\tR\x04info\x12\x1d\n\ngas_wanted\x18\t \x01(\x12R\tgasWanted\x12\x19\n\x08gas_used\x18\n \x01(\x12R\x07gasUsed\x12\x37\n\x07gas_fee\x18\x0b \x01(\x0b\x32\x1e.injective_explorer_rpc.GasFeeR\x06gasFee\x12\x1c\n\tcodespace\x18\x0c \x01(\tR\tcodespace\x12\x35\n\x06\x65vents\x18\r \x03(\x0b\x32\x1d.injective_explorer_rpc.EventR\x06\x65vents\x12\x17\n\x07tx_type\x18\x0e \x01(\tR\x06txType\x12\x1a\n\x08messages\x18\x0f \x01(\x0cR\x08messages\x12\x41\n\nsignatures\x18\x10 \x03(\x0b\x32!.injective_explorer_rpc.SignatureR\nsignatures\x12\x12\n\x04memo\x18\x11 \x01(\tR\x04memo\x12\x1b\n\ttx_number\x18\x12 \x01(\x04R\x08txNumber\x12\x30\n\x14\x62lock_unix_timestamp\x18\x13 \x01(\x04R\x12\x62lockUnixTimestamp\x12\x1b\n\terror_log\x18\x14 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04logs\x18\x15 \x01(\x0cR\x04logs\x12\x1b\n\tclaim_ids\x18\x16 \x03(\x12R\x08\x63laimIds\"\x91\x01\n\x06GasFee\x12:\n\x06\x61mount\x18\x01 \x03(\x0b\x32\".injective_explorer_rpc.CosmosCoinR\x06\x61mount\x12\x1b\n\tgas_limit\x18\x02 \x01(\x04R\x08gasLimit\x12\x14\n\x05payer\x18\x03 \x01(\tR\x05payer\x12\x18\n\x07granter\x18\x04 \x01(\tR\x07granter\":\n\nCosmosCoin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xa9\x01\n\x05\x45vent\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12M\n\nattributes\x18\x02 \x03(\x0b\x32-.injective_explorer_rpc.Event.AttributesEntryR\nattributes\x1a=\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"w\n\tSignature\x12\x16\n\x06pubkey\x18\x01 \x01(\tR\x06pubkey\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x1a\n\x08sequence\x18\x03 \x01(\x04R\x08sequence\x12\x1c\n\tsignature\x18\x04 \x01(\tR\tsignature\"\x99\x01\n\x15GetContractTxsRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x03 \x01(\x04R\x04skip\x12\x1f\n\x0b\x66rom_number\x18\x04 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x05 \x01(\x12R\x08toNumber\"\x8a\x01\n\x16GetContractTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"\x9b\x01\n\x17GetContractTxsV2Request\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06height\x18\x02 \x01(\x04R\x06height\x12\x12\n\x04\x66rom\x18\x03 \x01(\x12R\x04\x66rom\x12\x0e\n\x02to\x18\x04 \x01(\x12R\x02to\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x14\n\x05token\x18\x06 \x01(\tR\x05token\"h\n\x18GetContractTxsV2Response\x12\x12\n\x04next\x18\x01 \x03(\tR\x04next\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"z\n\x10GetBlocksRequest\x12\x16\n\x06\x62\x65\x66ore\x18\x01 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x02 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04\x66rom\x18\x04 \x01(\x04R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x04R\x02to\"\x82\x01\n\x11GetBlocksResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x35\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32!.injective_explorer_rpc.BlockInfoR\x04\x64\x61ta\"\xad\x02\n\tBlockInfo\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x33\n\x03txs\x18\x08 \x03(\x0b\x32!.injective_explorer_rpc.TxDataRPCR\x03txs\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp\"\xa0\x02\n\tTxDataRPC\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\tR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12\x1b\n\tclaim_ids\x18\n \x03(\x12R\x08\x63laimIds\"E\n\x12GetBlocksV2Request\x12\x19\n\x08per_page\x18\x01 \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x84\x01\n\x13GetBlocksV2Response\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.CursorR\x06paging\x12\x35\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32!.injective_explorer_rpc.BlockInfoR\x04\x64\x61ta\"V\n\x06\x43ursor\x12\x12\n\x04\x66rom\x18\x01 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x02 \x01(\x11R\x02to\x12\x12\n\x04next\x18\x03 \x03(\tR\x04next\x12\x14\n\x05total\x18\x04 \x01(\x12R\x05total\"!\n\x0fGetBlockRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\"u\n\x10GetBlockResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12;\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\'.injective_explorer_rpc.BlockDetailInfoR\x04\x64\x61ta\"\xcd\x02\n\x0f\x42lockDetailInfo\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x1b\n\ttotal_txs\x18\x08 \x01(\x12R\x08totalTxs\x12\x30\n\x03txs\x18\t \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x03txs\x12\x1c\n\ttimestamp\x18\n \x01(\tR\ttimestamp\"\x96\x03\n\x06TxData\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\x0cR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12 \n\x0ctx_msg_types\x18\n \x01(\x0cR\ntxMsgTypes\x12\x12\n\x04logs\x18\x0b \x01(\x0cR\x04logs\x12\x1b\n\tclaim_ids\x18\x0c \x03(\x12R\x08\x63laimIds\x12\x41\n\nsignatures\x18\r \x03(\x0b\x32!.injective_explorer_rpc.SignatureR\nsignatures\"\x16\n\x14GetValidatorsRequest\"t\n\x15GetValidatorsResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x35\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32!.injective_explorer_rpc.ValidatorR\x04\x64\x61ta\"\xb5\x07\n\tValidator\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07moniker\x18\x02 \x01(\tR\x07moniker\x12)\n\x10operator_address\x18\x03 \x01(\tR\x0foperatorAddress\x12+\n\x11\x63onsensus_address\x18\x04 \x01(\tR\x10\x63onsensusAddress\x12\x16\n\x06jailed\x18\x05 \x01(\x08R\x06jailed\x12\x16\n\x06status\x18\x06 \x01(\x11R\x06status\x12\x16\n\x06tokens\x18\x07 \x01(\tR\x06tokens\x12)\n\x10\x64\x65legator_shares\x18\x08 \x01(\tR\x0f\x64\x65legatorShares\x12N\n\x0b\x64\x65scription\x18\t \x01(\x0b\x32,.injective_explorer_rpc.ValidatorDescriptionR\x0b\x64\x65scription\x12)\n\x10unbonding_height\x18\n \x01(\x12R\x0funbondingHeight\x12%\n\x0eunbonding_time\x18\x0b \x01(\tR\runbondingTime\x12\'\n\x0f\x63ommission_rate\x18\x0c \x01(\tR\x0e\x63ommissionRate\x12.\n\x13\x63ommission_max_rate\x18\r \x01(\tR\x11\x63ommissionMaxRate\x12;\n\x1a\x63ommission_max_change_rate\x18\x0e \x01(\tR\x17\x63ommissionMaxChangeRate\x12\x34\n\x16\x63ommission_update_time\x18\x0f \x01(\tR\x14\x63ommissionUpdateTime\x12\x1a\n\x08proposed\x18\x10 \x01(\x04R\x08proposed\x12\x16\n\x06signed\x18\x11 \x01(\x04R\x06signed\x12\x16\n\x06missed\x18\x12 \x01(\x04R\x06missed\x12\x1c\n\ttimestamp\x18\x13 \x01(\tR\ttimestamp\x12\x41\n\x07uptimes\x18\x14 \x03(\x0b\x32\'.injective_explorer_rpc.ValidatorUptimeR\x07uptimes\x12N\n\x0fslashing_events\x18\x15 \x03(\x0b\x32%.injective_explorer_rpc.SlashingEventR\x0eslashingEvents\x12+\n\x11uptime_percentage\x18\x16 \x01(\x01R\x10uptimePercentage\x12\x1b\n\timage_url\x18\x17 \x01(\tR\x08imageUrl\"\xc8\x01\n\x14ValidatorDescription\x12\x18\n\x07moniker\x18\x01 \x01(\tR\x07moniker\x12\x1a\n\x08identity\x18\x02 \x01(\tR\x08identity\x12\x18\n\x07website\x18\x03 \x01(\tR\x07website\x12)\n\x10security_contact\x18\x04 \x01(\tR\x0fsecurityContact\x12\x18\n\x07\x64\x65tails\x18\x05 \x01(\tR\x07\x64\x65tails\x12\x1b\n\timage_url\x18\x06 \x01(\tR\x08imageUrl\"L\n\x0fValidatorUptime\x12!\n\x0c\x62lock_number\x18\x01 \x01(\x04R\x0b\x62lockNumber\x12\x16\n\x06status\x18\x02 \x01(\tR\x06status\"\xe0\x01\n\rSlashingEvent\x12!\n\x0c\x62lock_number\x18\x01 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x02 \x01(\tR\x0e\x62lockTimestamp\x12\x18\n\x07\x61\x64\x64ress\x18\x03 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05power\x18\x04 \x01(\x04R\x05power\x12\x16\n\x06reason\x18\x05 \x01(\tR\x06reason\x12\x16\n\x06jailed\x18\x06 \x01(\tR\x06jailed\x12#\n\rmissed_blocks\x18\x07 \x01(\x04R\x0cmissedBlocks\"/\n\x13GetValidatorRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\"s\n\x14GetValidatorResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x35\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32!.injective_explorer_rpc.ValidatorR\x04\x64\x61ta\"5\n\x19GetValidatorUptimeRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\"\x7f\n\x1aGetValidatorUptimeResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12;\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32\'.injective_explorer_rpc.ValidatorUptimeR\x04\x64\x61ta\"\xa3\x02\n\rGetTxsRequest\x12\x16\n\x06\x62\x65\x66ore\x18\x01 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x02 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x12\n\x04type\x18\x05 \x01(\tR\x04type\x12\x16\n\x06module\x18\x06 \x01(\tR\x06module\x12\x1f\n\x0b\x66rom_number\x18\x07 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x08 \x01(\x12R\x08toNumber\x12\x1d\n\nstart_time\x18\t \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\n \x01(\x12R\x07\x65ndTime\x12\x16\n\x06status\x18\x0b \x01(\tR\x06status\"|\n\x0eGetTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x32\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x04\x64\x61ta\"\x90\x01\n\x0fGetTxsV2Request\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x1d\n\nstart_time\x18\x02 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x03 \x01(\x12R\x07\x65ndTime\x12\x19\n\x08per_page\x18\x04 \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\"~\n\x10GetTxsV2Response\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.CursorR\x06paging\x12\x32\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x04\x64\x61ta\"*\n\x14GetTxByTxHashRequest\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash\"w\n\x15GetTxByTxHashResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x38\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"y\n\x19GetPeggyDepositTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\"Z\n\x1aGetPeggyDepositTxsResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_explorer_rpc.PeggyDepositTxR\x05\x66ield\"\xf9\x02\n\x0ePeggyDepositTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0b\x65vent_nonce\x18\x03 \x01(\x04R\neventNonce\x12!\n\x0c\x65vent_height\x18\x04 \x01(\x04R\x0b\x65ventHeight\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x06 \x01(\tR\x05\x64\x65nom\x12\x31\n\x14orchestrator_address\x18\x07 \x01(\tR\x13orchestratorAddress\x12\x14\n\x05state\x18\x08 \x01(\tR\x05state\x12\x1d\n\nclaim_type\x18\t \x01(\x11R\tclaimType\x12\x1b\n\ttx_hashes\x18\n \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0b \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0c \x01(\tR\tupdatedAt\"|\n\x1cGetPeggyWithdrawalTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\"`\n\x1dGetPeggyWithdrawalTxsResponse\x12?\n\x05\x66ield\x18\x01 \x03(\x0b\x32).injective_explorer_rpc.PeggyWithdrawalTxR\x05\x66ield\"\x87\x04\n\x11PeggyWithdrawalTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x04 \x01(\tR\x05\x64\x65nom\x12\x1d\n\nbridge_fee\x18\x05 \x01(\tR\tbridgeFee\x12$\n\x0eoutgoing_tx_id\x18\x06 \x01(\x04R\x0coutgoingTxId\x12#\n\rbatch_timeout\x18\x07 \x01(\x04R\x0c\x62\x61tchTimeout\x12\x1f\n\x0b\x62\x61tch_nonce\x18\x08 \x01(\x04R\nbatchNonce\x12\x31\n\x14orchestrator_address\x18\t \x01(\tR\x13orchestratorAddress\x12\x1f\n\x0b\x65vent_nonce\x18\n \x01(\x04R\neventNonce\x12!\n\x0c\x65vent_height\x18\x0b \x01(\x04R\x0b\x65ventHeight\x12\x14\n\x05state\x18\x0c \x01(\tR\x05state\x12\x1d\n\nclaim_type\x18\r \x01(\x11R\tclaimType\x12\x1b\n\ttx_hashes\x18\x0e \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\tR\tupdatedAt\"\xf4\x01\n\x18GetIBCTransferTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0bsrc_channel\x18\x03 \x01(\tR\nsrcChannel\x12\x19\n\x08src_port\x18\x04 \x01(\tR\x07srcPort\x12!\n\x0c\x64\x65st_channel\x18\x05 \x01(\tR\x0b\x64\x65stChannel\x12\x1b\n\tdest_port\x18\x06 \x01(\tR\x08\x64\x65stPort\x12\x14\n\x05limit\x18\x07 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x08 \x01(\x04R\x04skip\"X\n\x19GetIBCTransferTxsResponse\x12;\n\x05\x66ield\x18\x01 \x03(\x0b\x32%.injective_explorer_rpc.IBCTransferTxR\x05\x66ield\"\x9e\x04\n\rIBCTransferTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0bsource_port\x18\x03 \x01(\tR\nsourcePort\x12%\n\x0esource_channel\x18\x04 \x01(\tR\rsourceChannel\x12)\n\x10\x64\x65stination_port\x18\x05 \x01(\tR\x0f\x64\x65stinationPort\x12/\n\x13\x64\x65stination_channel\x18\x06 \x01(\tR\x12\x64\x65stinationChannel\x12\x16\n\x06\x61mount\x18\x07 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x08 \x01(\tR\x05\x64\x65nom\x12%\n\x0etimeout_height\x18\t \x01(\tR\rtimeoutHeight\x12+\n\x11timeout_timestamp\x18\n \x01(\x04R\x10timeoutTimestamp\x12\'\n\x0fpacket_sequence\x18\x0b \x01(\x04R\x0epacketSequence\x12\x19\n\x08\x64\x61ta_hex\x18\x0c \x01(\x0cR\x07\x64\x61taHex\x12\x14\n\x05state\x18\r \x01(\tR\x05state\x12\x1b\n\ttx_hashes\x18\x0e \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\tR\tupdatedAt\"i\n\x13GetWasmCodesRequest\x12\x14\n\x05limit\x18\x01 \x01(\x11R\x05limit\x12\x1f\n\x0b\x66rom_number\x18\x02 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x03 \x01(\x12R\x08toNumber\"\x84\x01\n\x14GetWasmCodesResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x34\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32 .injective_explorer_rpc.WasmCodeR\x04\x64\x61ta\"\xe2\x03\n\x08WasmCode\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12<\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .injective_explorer_rpc.ChecksumR\x08\x63hecksum\x12\x1d\n\ncreated_at\x18\x04 \x01(\x04R\tcreatedAt\x12#\n\rcontract_type\x18\x05 \x01(\tR\x0c\x63ontractType\x12\x18\n\x07version\x18\x06 \x01(\tR\x07version\x12J\n\npermission\x18\x07 \x01(\x0b\x32*.injective_explorer_rpc.ContractPermissionR\npermission\x12\x1f\n\x0b\x63ode_schema\x18\x08 \x01(\tR\ncodeSchema\x12\x1b\n\tcode_view\x18\t \x01(\tR\x08\x63odeView\x12\"\n\x0cinstantiates\x18\n \x01(\x04R\x0cinstantiates\x12\x18\n\x07\x63reator\x18\x0b \x01(\tR\x07\x63reator\x12\x1f\n\x0b\x63ode_number\x18\x0c \x01(\x12R\ncodeNumber\x12\x1f\n\x0bproposal_id\x18\r \x01(\x12R\nproposalId\"<\n\x08\x43hecksum\x12\x1c\n\talgorithm\x18\x01 \x01(\tR\talgorithm\x12\x12\n\x04hash\x18\x02 \x01(\tR\x04hash\"O\n\x12\x43ontractPermission\x12\x1f\n\x0b\x61\x63\x63\x65ss_type\x18\x01 \x01(\x11R\naccessType\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\"1\n\x16GetWasmCodeByIDRequest\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x12R\x06\x63odeId\"\xf1\x03\n\x17GetWasmCodeByIDResponse\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12<\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .injective_explorer_rpc.ChecksumR\x08\x63hecksum\x12\x1d\n\ncreated_at\x18\x04 \x01(\x04R\tcreatedAt\x12#\n\rcontract_type\x18\x05 \x01(\tR\x0c\x63ontractType\x12\x18\n\x07version\x18\x06 \x01(\tR\x07version\x12J\n\npermission\x18\x07 \x01(\x0b\x32*.injective_explorer_rpc.ContractPermissionR\npermission\x12\x1f\n\x0b\x63ode_schema\x18\x08 \x01(\tR\ncodeSchema\x12\x1b\n\tcode_view\x18\t \x01(\tR\x08\x63odeView\x12\"\n\x0cinstantiates\x18\n \x01(\x04R\x0cinstantiates\x12\x18\n\x07\x63reator\x18\x0b \x01(\tR\x07\x63reator\x12\x1f\n\x0b\x63ode_number\x18\x0c \x01(\x12R\ncodeNumber\x12\x1f\n\x0bproposal_id\x18\r \x01(\x12R\nproposalId\"\xd1\x01\n\x17GetWasmContractsRequest\x12\x14\n\x05limit\x18\x01 \x01(\x11R\x05limit\x12\x17\n\x07\x63ode_id\x18\x02 \x01(\x12R\x06\x63odeId\x12\x1f\n\x0b\x66rom_number\x18\x03 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x04 \x01(\x12R\x08toNumber\x12\x1f\n\x0b\x61ssets_only\x18\x05 \x01(\x08R\nassetsOnly\x12\x12\n\x04skip\x18\x06 \x01(\x12R\x04skip\x12\x14\n\x05label\x18\x07 \x01(\tR\x05label\"\x8c\x01\n\x18GetWasmContractsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.WasmContractR\x04\x64\x61ta\"\xe9\x04\n\x0cWasmContract\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x17\n\x07tx_hash\x18\x03 \x01(\tR\x06txHash\x12\x18\n\x07\x63reator\x18\x04 \x01(\tR\x07\x63reator\x12\x1a\n\x08\x65xecutes\x18\x05 \x01(\x04R\x08\x65xecutes\x12\'\n\x0finstantiated_at\x18\x06 \x01(\x04R\x0einstantiatedAt\x12!\n\x0cinit_message\x18\x07 \x01(\tR\x0binitMessage\x12(\n\x10last_executed_at\x18\x08 \x01(\x04R\x0elastExecutedAt\x12:\n\x05\x66unds\x18\t \x03(\x0b\x32$.injective_explorer_rpc.ContractFundR\x05\x66unds\x12\x17\n\x07\x63ode_id\x18\n \x01(\x04R\x06\x63odeId\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x36\n\x17\x63urrent_migrate_message\x18\x0c \x01(\tR\x15\x63urrentMigrateMessage\x12\'\n\x0f\x63ontract_number\x18\r \x01(\x12R\x0e\x63ontractNumber\x12\x18\n\x07version\x18\x0e \x01(\tR\x07version\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12I\n\rcw20_metadata\x18\x10 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\x12\x1f\n\x0bproposal_id\x18\x11 \x01(\x12R\nproposalId\"<\n\x0c\x43ontractFund\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xa6\x01\n\x0c\x43w20Metadata\x12\x44\n\ntoken_info\x18\x01 \x01(\x0b\x32%.injective_explorer_rpc.Cw20TokenInfoR\ttokenInfo\x12P\n\x0emarketing_info\x18\x02 \x01(\x0b\x32).injective_explorer_rpc.Cw20MarketingInfoR\rmarketingInfo\"z\n\rCw20TokenInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n\x06symbol\x18\x02 \x01(\tR\x06symbol\x12\x1a\n\x08\x64\x65\x63imals\x18\x03 \x01(\x12R\x08\x64\x65\x63imals\x12!\n\x0ctotal_supply\x18\x04 \x01(\tR\x0btotalSupply\"\x81\x01\n\x11\x43w20MarketingInfo\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x12\n\x04logo\x18\x03 \x01(\tR\x04logo\x12\x1c\n\tmarketing\x18\x04 \x01(\x0cR\tmarketing\"L\n\x1fGetWasmContractByAddressRequest\x12)\n\x10\x63ontract_address\x18\x01 \x01(\tR\x0f\x63ontractAddress\"\xfd\x04\n GetWasmContractByAddressResponse\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x17\n\x07tx_hash\x18\x03 \x01(\tR\x06txHash\x12\x18\n\x07\x63reator\x18\x04 \x01(\tR\x07\x63reator\x12\x1a\n\x08\x65xecutes\x18\x05 \x01(\x04R\x08\x65xecutes\x12\'\n\x0finstantiated_at\x18\x06 \x01(\x04R\x0einstantiatedAt\x12!\n\x0cinit_message\x18\x07 \x01(\tR\x0binitMessage\x12(\n\x10last_executed_at\x18\x08 \x01(\x04R\x0elastExecutedAt\x12:\n\x05\x66unds\x18\t \x03(\x0b\x32$.injective_explorer_rpc.ContractFundR\x05\x66unds\x12\x17\n\x07\x63ode_id\x18\n \x01(\x04R\x06\x63odeId\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x36\n\x17\x63urrent_migrate_message\x18\x0c \x01(\tR\x15\x63urrentMigrateMessage\x12\'\n\x0f\x63ontract_number\x18\r \x01(\x12R\x0e\x63ontractNumber\x12\x18\n\x07version\x18\x0e \x01(\tR\x07version\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12I\n\rcw20_metadata\x18\x10 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\x12\x1f\n\x0bproposal_id\x18\x11 \x01(\x12R\nproposalId\"G\n\x15GetCw20BalanceRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\"W\n\x16GetCw20BalanceResponse\x12=\n\x05\x66ield\x18\x01 \x03(\x0b\x32\'.injective_explorer_rpc.WasmCw20BalanceR\x05\x66ield\"\xda\x01\n\x0fWasmCw20Balance\x12)\n\x10\x63ontract_address\x18\x01 \x01(\tR\x0f\x63ontractAddress\x12\x18\n\x07\x61\x63\x63ount\x18\x02 \x01(\tR\x07\x61\x63\x63ount\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x1d\n\nupdated_at\x18\x04 \x01(\x12R\tupdatedAt\x12I\n\rcw20_metadata\x18\x05 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\"1\n\x0fRelayersRequest\x12\x1e\n\x0bmarket_i_ds\x18\x01 \x03(\tR\tmarketIDs\"P\n\x10RelayersResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_explorer_rpc.RelayerMarketsR\x05\x66ield\"j\n\x0eRelayerMarkets\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12;\n\x08relayers\x18\x02 \x03(\x0b\x32\x1f.injective_explorer_rpc.RelayerR\x08relayers\"/\n\x07Relayer\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03\x63ta\x18\x02 \x01(\tR\x03\x63ta\"\xbd\x02\n\x17GetBankTransfersRequest\x12\x18\n\x07senders\x18\x01 \x03(\tR\x07senders\x12\x1e\n\nrecipients\x18\x02 \x03(\tR\nrecipients\x12\x39\n\x19is_community_pool_related\x18\x03 \x01(\x08R\x16isCommunityPoolRelated\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x18\n\x07\x61\x64\x64ress\x18\x08 \x03(\tR\x07\x61\x64\x64ress\x12\x19\n\x08per_page\x18\t \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\n \x01(\tR\x05token\"\x8c\x01\n\x18GetBankTransfersResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.BankTransferR\x04\x64\x61ta\"\xc8\x01\n\x0c\x42\x61nkTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1c\n\trecipient\x18\x02 \x01(\tR\trecipient\x12\x36\n\x07\x61mounts\x18\x03 \x03(\x0b\x32\x1c.injective_explorer_rpc.CoinR\x07\x61mounts\x12!\n\x0c\x62lock_number\x18\x04 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x05 \x01(\tR\x0e\x62lockTimestamp\"4\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\x12\n\x10StreamTxsRequest\"\xa8\x02\n\x11StreamTxsResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\tR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12\x1b\n\tclaim_ids\x18\n \x03(\x12R\x08\x63laimIds\"\x15\n\x13StreamBlocksRequest\"\xb8\x02\n\x14StreamBlocksResponse\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x33\n\x03txs\x18\x08 \x03(\x0b\x32!.injective_explorer_rpc.TxDataRPCR\x03txs\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp\"\x11\n\x0fGetStatsRequest\"\x9c\x02\n\x10GetStatsResponse\x12\x1c\n\taddresses\x18\x01 \x01(\x04R\taddresses\x12\x16\n\x06\x61ssets\x18\x02 \x01(\x04R\x06\x61ssets\x12\x1d\n\ninj_supply\x18\x03 \x01(\x04R\tinjSupply\x12\x1c\n\ntxs_ps24_h\x18\x04 \x01(\x04R\x08txsPs24H\x12\x1e\n\x0btxs_ps100_b\x18\x05 \x01(\x04R\ttxsPs100B\x12\x1b\n\ttxs_total\x18\x06 \x01(\x04R\x08txsTotal\x12\x17\n\x07txs24_h\x18\x07 \x01(\x04R\x06txs24H\x12\x17\n\x07txs30_d\x18\x08 \x01(\x04R\x06txs30D\x12&\n\x0f\x62lock_count24_h\x18\t \x01(\x04R\rblockCount24H2\xec\x15\n\x14InjectiveExplorerRPC\x12l\n\rGetAccountTxs\x12,.injective_explorer_rpc.GetAccountTxsRequest\x1a-.injective_explorer_rpc.GetAccountTxsResponse\x12o\n\x0eGetContractTxs\x12-.injective_explorer_rpc.GetContractTxsRequest\x1a..injective_explorer_rpc.GetContractTxsResponse\x12u\n\x10GetContractTxsV2\x12/.injective_explorer_rpc.GetContractTxsV2Request\x1a\x30.injective_explorer_rpc.GetContractTxsV2Response\x12`\n\tGetBlocks\x12(.injective_explorer_rpc.GetBlocksRequest\x1a).injective_explorer_rpc.GetBlocksResponse\x12\x66\n\x0bGetBlocksV2\x12*.injective_explorer_rpc.GetBlocksV2Request\x1a+.injective_explorer_rpc.GetBlocksV2Response\x12]\n\x08GetBlock\x12\'.injective_explorer_rpc.GetBlockRequest\x1a(.injective_explorer_rpc.GetBlockResponse\x12l\n\rGetValidators\x12,.injective_explorer_rpc.GetValidatorsRequest\x1a-.injective_explorer_rpc.GetValidatorsResponse\x12i\n\x0cGetValidator\x12+.injective_explorer_rpc.GetValidatorRequest\x1a,.injective_explorer_rpc.GetValidatorResponse\x12{\n\x12GetValidatorUptime\x12\x31.injective_explorer_rpc.GetValidatorUptimeRequest\x1a\x32.injective_explorer_rpc.GetValidatorUptimeResponse\x12W\n\x06GetTxs\x12%.injective_explorer_rpc.GetTxsRequest\x1a&.injective_explorer_rpc.GetTxsResponse\x12]\n\x08GetTxsV2\x12\'.injective_explorer_rpc.GetTxsV2Request\x1a(.injective_explorer_rpc.GetTxsV2Response\x12l\n\rGetTxByTxHash\x12,.injective_explorer_rpc.GetTxByTxHashRequest\x1a-.injective_explorer_rpc.GetTxByTxHashResponse\x12{\n\x12GetPeggyDepositTxs\x12\x31.injective_explorer_rpc.GetPeggyDepositTxsRequest\x1a\x32.injective_explorer_rpc.GetPeggyDepositTxsResponse\x12\x84\x01\n\x15GetPeggyWithdrawalTxs\x12\x34.injective_explorer_rpc.GetPeggyWithdrawalTxsRequest\x1a\x35.injective_explorer_rpc.GetPeggyWithdrawalTxsResponse\x12x\n\x11GetIBCTransferTxs\x12\x30.injective_explorer_rpc.GetIBCTransferTxsRequest\x1a\x31.injective_explorer_rpc.GetIBCTransferTxsResponse\x12i\n\x0cGetWasmCodes\x12+.injective_explorer_rpc.GetWasmCodesRequest\x1a,.injective_explorer_rpc.GetWasmCodesResponse\x12r\n\x0fGetWasmCodeByID\x12..injective_explorer_rpc.GetWasmCodeByIDRequest\x1a/.injective_explorer_rpc.GetWasmCodeByIDResponse\x12u\n\x10GetWasmContracts\x12/.injective_explorer_rpc.GetWasmContractsRequest\x1a\x30.injective_explorer_rpc.GetWasmContractsResponse\x12\x8d\x01\n\x18GetWasmContractByAddress\x12\x37.injective_explorer_rpc.GetWasmContractByAddressRequest\x1a\x38.injective_explorer_rpc.GetWasmContractByAddressResponse\x12o\n\x0eGetCw20Balance\x12-.injective_explorer_rpc.GetCw20BalanceRequest\x1a..injective_explorer_rpc.GetCw20BalanceResponse\x12]\n\x08Relayers\x12\'.injective_explorer_rpc.RelayersRequest\x1a(.injective_explorer_rpc.RelayersResponse\x12u\n\x10GetBankTransfers\x12/.injective_explorer_rpc.GetBankTransfersRequest\x1a\x30.injective_explorer_rpc.GetBankTransfersResponse\x12\x62\n\tStreamTxs\x12(.injective_explorer_rpc.StreamTxsRequest\x1a).injective_explorer_rpc.StreamTxsResponse0\x01\x12k\n\x0cStreamBlocks\x12+.injective_explorer_rpc.StreamBlocksRequest\x1a,.injective_explorer_rpc.StreamBlocksResponse0\x01\x12]\n\x08GetStats\x12\'.injective_explorer_rpc.GetStatsRequest\x1a(.injective_explorer_rpc.GetStatsResponseB\xc2\x01\n\x1a\x63om.injective_explorer_rpcB\x19InjectiveExplorerRpcProtoP\x01Z\x19/injective_explorer_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveExplorerRpc\xca\x02\x14InjectiveExplorerRpc\xe2\x02 InjectiveExplorerRpc\\GPBMetadata\xea\x02\x14InjectiveExplorerRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -58,126 +58,136 @@ _globals['_BLOCKINFO']._serialized_end=2976 _globals['_TXDATARPC']._serialized_start=2979 _globals['_TXDATARPC']._serialized_end=3267 - _globals['_GETBLOCKREQUEST']._serialized_start=3269 - _globals['_GETBLOCKREQUEST']._serialized_end=3302 - _globals['_GETBLOCKRESPONSE']._serialized_start=3304 - _globals['_GETBLOCKRESPONSE']._serialized_end=3421 - _globals['_BLOCKDETAILINFO']._serialized_start=3424 - _globals['_BLOCKDETAILINFO']._serialized_end=3757 - _globals['_TXDATA']._serialized_start=3760 - _globals['_TXDATA']._serialized_end=4166 - _globals['_GETVALIDATORSREQUEST']._serialized_start=4168 - _globals['_GETVALIDATORSREQUEST']._serialized_end=4190 - _globals['_GETVALIDATORSRESPONSE']._serialized_start=4192 - _globals['_GETVALIDATORSRESPONSE']._serialized_end=4308 - _globals['_VALIDATOR']._serialized_start=4311 - _globals['_VALIDATOR']._serialized_end=5260 - _globals['_VALIDATORDESCRIPTION']._serialized_start=5263 - _globals['_VALIDATORDESCRIPTION']._serialized_end=5463 - _globals['_VALIDATORUPTIME']._serialized_start=5465 - _globals['_VALIDATORUPTIME']._serialized_end=5541 - _globals['_SLASHINGEVENT']._serialized_start=5544 - _globals['_SLASHINGEVENT']._serialized_end=5768 - _globals['_GETVALIDATORREQUEST']._serialized_start=5770 - _globals['_GETVALIDATORREQUEST']._serialized_end=5817 - _globals['_GETVALIDATORRESPONSE']._serialized_start=5819 - _globals['_GETVALIDATORRESPONSE']._serialized_end=5934 - _globals['_GETVALIDATORUPTIMEREQUEST']._serialized_start=5936 - _globals['_GETVALIDATORUPTIMEREQUEST']._serialized_end=5989 - _globals['_GETVALIDATORUPTIMERESPONSE']._serialized_start=5991 - _globals['_GETVALIDATORUPTIMERESPONSE']._serialized_end=6118 - _globals['_GETTXSREQUEST']._serialized_start=6121 - _globals['_GETTXSREQUEST']._serialized_end=6412 - _globals['_GETTXSRESPONSE']._serialized_start=6414 - _globals['_GETTXSRESPONSE']._serialized_end=6538 - _globals['_GETTXBYTXHASHREQUEST']._serialized_start=6540 - _globals['_GETTXBYTXHASHREQUEST']._serialized_end=6582 - _globals['_GETTXBYTXHASHRESPONSE']._serialized_start=6584 - _globals['_GETTXBYTXHASHRESPONSE']._serialized_end=6703 - _globals['_GETPEGGYDEPOSITTXSREQUEST']._serialized_start=6705 - _globals['_GETPEGGYDEPOSITTXSREQUEST']._serialized_end=6826 - _globals['_GETPEGGYDEPOSITTXSRESPONSE']._serialized_start=6828 - _globals['_GETPEGGYDEPOSITTXSRESPONSE']._serialized_end=6918 - _globals['_PEGGYDEPOSITTX']._serialized_start=6921 - _globals['_PEGGYDEPOSITTX']._serialized_end=7298 - _globals['_GETPEGGYWITHDRAWALTXSREQUEST']._serialized_start=7300 - _globals['_GETPEGGYWITHDRAWALTXSREQUEST']._serialized_end=7424 - _globals['_GETPEGGYWITHDRAWALTXSRESPONSE']._serialized_start=7426 - _globals['_GETPEGGYWITHDRAWALTXSRESPONSE']._serialized_end=7522 - _globals['_PEGGYWITHDRAWALTX']._serialized_start=7525 - _globals['_PEGGYWITHDRAWALTX']._serialized_end=8044 - _globals['_GETIBCTRANSFERTXSREQUEST']._serialized_start=8047 - _globals['_GETIBCTRANSFERTXSREQUEST']._serialized_end=8291 - _globals['_GETIBCTRANSFERTXSRESPONSE']._serialized_start=8293 - _globals['_GETIBCTRANSFERTXSRESPONSE']._serialized_end=8381 - _globals['_IBCTRANSFERTX']._serialized_start=8384 - _globals['_IBCTRANSFERTX']._serialized_end=8926 - _globals['_GETWASMCODESREQUEST']._serialized_start=8928 - _globals['_GETWASMCODESREQUEST']._serialized_end=9033 - _globals['_GETWASMCODESRESPONSE']._serialized_start=9036 - _globals['_GETWASMCODESRESPONSE']._serialized_end=9168 - _globals['_WASMCODE']._serialized_start=9171 - _globals['_WASMCODE']._serialized_end=9653 - _globals['_CHECKSUM']._serialized_start=9655 - _globals['_CHECKSUM']._serialized_end=9715 - _globals['_CONTRACTPERMISSION']._serialized_start=9717 - _globals['_CONTRACTPERMISSION']._serialized_end=9796 - _globals['_GETWASMCODEBYIDREQUEST']._serialized_start=9798 - _globals['_GETWASMCODEBYIDREQUEST']._serialized_end=9847 - _globals['_GETWASMCODEBYIDRESPONSE']._serialized_start=9850 - _globals['_GETWASMCODEBYIDRESPONSE']._serialized_end=10347 - _globals['_GETWASMCONTRACTSREQUEST']._serialized_start=10350 - _globals['_GETWASMCONTRACTSREQUEST']._serialized_end=10559 - _globals['_GETWASMCONTRACTSRESPONSE']._serialized_start=10562 - _globals['_GETWASMCONTRACTSRESPONSE']._serialized_end=10702 - _globals['_WASMCONTRACT']._serialized_start=10705 - _globals['_WASMCONTRACT']._serialized_end=11322 - _globals['_CONTRACTFUND']._serialized_start=11324 - _globals['_CONTRACTFUND']._serialized_end=11384 - _globals['_CW20METADATA']._serialized_start=11387 - _globals['_CW20METADATA']._serialized_end=11553 - _globals['_CW20TOKENINFO']._serialized_start=11555 - _globals['_CW20TOKENINFO']._serialized_end=11677 - _globals['_CW20MARKETINGINFO']._serialized_start=11680 - _globals['_CW20MARKETINGINFO']._serialized_end=11809 - _globals['_GETWASMCONTRACTBYADDRESSREQUEST']._serialized_start=11811 - _globals['_GETWASMCONTRACTBYADDRESSREQUEST']._serialized_end=11887 - _globals['_GETWASMCONTRACTBYADDRESSRESPONSE']._serialized_start=11890 - _globals['_GETWASMCONTRACTBYADDRESSRESPONSE']._serialized_end=12527 - _globals['_GETCW20BALANCEREQUEST']._serialized_start=12529 - _globals['_GETCW20BALANCEREQUEST']._serialized_end=12600 - _globals['_GETCW20BALANCERESPONSE']._serialized_start=12602 - _globals['_GETCW20BALANCERESPONSE']._serialized_end=12689 - _globals['_WASMCW20BALANCE']._serialized_start=12692 - _globals['_WASMCW20BALANCE']._serialized_end=12910 - _globals['_RELAYERSREQUEST']._serialized_start=12912 - _globals['_RELAYERSREQUEST']._serialized_end=12961 - _globals['_RELAYERSRESPONSE']._serialized_start=12963 - _globals['_RELAYERSRESPONSE']._serialized_end=13043 - _globals['_RELAYERMARKETS']._serialized_start=13045 - _globals['_RELAYERMARKETS']._serialized_end=13151 - _globals['_RELAYER']._serialized_start=13153 - _globals['_RELAYER']._serialized_end=13200 - _globals['_GETBANKTRANSFERSREQUEST']._serialized_start=13203 - _globals['_GETBANKTRANSFERSREQUEST']._serialized_end=13520 - _globals['_GETBANKTRANSFERSRESPONSE']._serialized_start=13523 - _globals['_GETBANKTRANSFERSRESPONSE']._serialized_end=13663 - _globals['_BANKTRANSFER']._serialized_start=13666 - _globals['_BANKTRANSFER']._serialized_end=13866 - _globals['_COIN']._serialized_start=13868 - _globals['_COIN']._serialized_end=13920 - _globals['_STREAMTXSREQUEST']._serialized_start=13922 - _globals['_STREAMTXSREQUEST']._serialized_end=13940 - _globals['_STREAMTXSRESPONSE']._serialized_start=13943 - _globals['_STREAMTXSRESPONSE']._serialized_end=14239 - _globals['_STREAMBLOCKSREQUEST']._serialized_start=14241 - _globals['_STREAMBLOCKSREQUEST']._serialized_end=14262 - _globals['_STREAMBLOCKSRESPONSE']._serialized_start=14265 - _globals['_STREAMBLOCKSRESPONSE']._serialized_end=14577 - _globals['_GETSTATSREQUEST']._serialized_start=14579 - _globals['_GETSTATSREQUEST']._serialized_end=14596 - _globals['_GETSTATSRESPONSE']._serialized_start=14599 - _globals['_GETSTATSRESPONSE']._serialized_end=14883 - _globals['_INJECTIVEEXPLORERRPC']._serialized_start=14886 - _globals['_INJECTIVEEXPLORERRPC']._serialized_end=17483 + _globals['_GETBLOCKSV2REQUEST']._serialized_start=3269 + _globals['_GETBLOCKSV2REQUEST']._serialized_end=3338 + _globals['_GETBLOCKSV2RESPONSE']._serialized_start=3341 + _globals['_GETBLOCKSV2RESPONSE']._serialized_end=3473 + _globals['_CURSOR']._serialized_start=3475 + _globals['_CURSOR']._serialized_end=3561 + _globals['_GETBLOCKREQUEST']._serialized_start=3563 + _globals['_GETBLOCKREQUEST']._serialized_end=3596 + _globals['_GETBLOCKRESPONSE']._serialized_start=3598 + _globals['_GETBLOCKRESPONSE']._serialized_end=3715 + _globals['_BLOCKDETAILINFO']._serialized_start=3718 + _globals['_BLOCKDETAILINFO']._serialized_end=4051 + _globals['_TXDATA']._serialized_start=4054 + _globals['_TXDATA']._serialized_end=4460 + _globals['_GETVALIDATORSREQUEST']._serialized_start=4462 + _globals['_GETVALIDATORSREQUEST']._serialized_end=4484 + _globals['_GETVALIDATORSRESPONSE']._serialized_start=4486 + _globals['_GETVALIDATORSRESPONSE']._serialized_end=4602 + _globals['_VALIDATOR']._serialized_start=4605 + _globals['_VALIDATOR']._serialized_end=5554 + _globals['_VALIDATORDESCRIPTION']._serialized_start=5557 + _globals['_VALIDATORDESCRIPTION']._serialized_end=5757 + _globals['_VALIDATORUPTIME']._serialized_start=5759 + _globals['_VALIDATORUPTIME']._serialized_end=5835 + _globals['_SLASHINGEVENT']._serialized_start=5838 + _globals['_SLASHINGEVENT']._serialized_end=6062 + _globals['_GETVALIDATORREQUEST']._serialized_start=6064 + _globals['_GETVALIDATORREQUEST']._serialized_end=6111 + _globals['_GETVALIDATORRESPONSE']._serialized_start=6113 + _globals['_GETVALIDATORRESPONSE']._serialized_end=6228 + _globals['_GETVALIDATORUPTIMEREQUEST']._serialized_start=6230 + _globals['_GETVALIDATORUPTIMEREQUEST']._serialized_end=6283 + _globals['_GETVALIDATORUPTIMERESPONSE']._serialized_start=6285 + _globals['_GETVALIDATORUPTIMERESPONSE']._serialized_end=6412 + _globals['_GETTXSREQUEST']._serialized_start=6415 + _globals['_GETTXSREQUEST']._serialized_end=6706 + _globals['_GETTXSRESPONSE']._serialized_start=6708 + _globals['_GETTXSRESPONSE']._serialized_end=6832 + _globals['_GETTXSV2REQUEST']._serialized_start=6835 + _globals['_GETTXSV2REQUEST']._serialized_end=6979 + _globals['_GETTXSV2RESPONSE']._serialized_start=6981 + _globals['_GETTXSV2RESPONSE']._serialized_end=7107 + _globals['_GETTXBYTXHASHREQUEST']._serialized_start=7109 + _globals['_GETTXBYTXHASHREQUEST']._serialized_end=7151 + _globals['_GETTXBYTXHASHRESPONSE']._serialized_start=7153 + _globals['_GETTXBYTXHASHRESPONSE']._serialized_end=7272 + _globals['_GETPEGGYDEPOSITTXSREQUEST']._serialized_start=7274 + _globals['_GETPEGGYDEPOSITTXSREQUEST']._serialized_end=7395 + _globals['_GETPEGGYDEPOSITTXSRESPONSE']._serialized_start=7397 + _globals['_GETPEGGYDEPOSITTXSRESPONSE']._serialized_end=7487 + _globals['_PEGGYDEPOSITTX']._serialized_start=7490 + _globals['_PEGGYDEPOSITTX']._serialized_end=7867 + _globals['_GETPEGGYWITHDRAWALTXSREQUEST']._serialized_start=7869 + _globals['_GETPEGGYWITHDRAWALTXSREQUEST']._serialized_end=7993 + _globals['_GETPEGGYWITHDRAWALTXSRESPONSE']._serialized_start=7995 + _globals['_GETPEGGYWITHDRAWALTXSRESPONSE']._serialized_end=8091 + _globals['_PEGGYWITHDRAWALTX']._serialized_start=8094 + _globals['_PEGGYWITHDRAWALTX']._serialized_end=8613 + _globals['_GETIBCTRANSFERTXSREQUEST']._serialized_start=8616 + _globals['_GETIBCTRANSFERTXSREQUEST']._serialized_end=8860 + _globals['_GETIBCTRANSFERTXSRESPONSE']._serialized_start=8862 + _globals['_GETIBCTRANSFERTXSRESPONSE']._serialized_end=8950 + _globals['_IBCTRANSFERTX']._serialized_start=8953 + _globals['_IBCTRANSFERTX']._serialized_end=9495 + _globals['_GETWASMCODESREQUEST']._serialized_start=9497 + _globals['_GETWASMCODESREQUEST']._serialized_end=9602 + _globals['_GETWASMCODESRESPONSE']._serialized_start=9605 + _globals['_GETWASMCODESRESPONSE']._serialized_end=9737 + _globals['_WASMCODE']._serialized_start=9740 + _globals['_WASMCODE']._serialized_end=10222 + _globals['_CHECKSUM']._serialized_start=10224 + _globals['_CHECKSUM']._serialized_end=10284 + _globals['_CONTRACTPERMISSION']._serialized_start=10286 + _globals['_CONTRACTPERMISSION']._serialized_end=10365 + _globals['_GETWASMCODEBYIDREQUEST']._serialized_start=10367 + _globals['_GETWASMCODEBYIDREQUEST']._serialized_end=10416 + _globals['_GETWASMCODEBYIDRESPONSE']._serialized_start=10419 + _globals['_GETWASMCODEBYIDRESPONSE']._serialized_end=10916 + _globals['_GETWASMCONTRACTSREQUEST']._serialized_start=10919 + _globals['_GETWASMCONTRACTSREQUEST']._serialized_end=11128 + _globals['_GETWASMCONTRACTSRESPONSE']._serialized_start=11131 + _globals['_GETWASMCONTRACTSRESPONSE']._serialized_end=11271 + _globals['_WASMCONTRACT']._serialized_start=11274 + _globals['_WASMCONTRACT']._serialized_end=11891 + _globals['_CONTRACTFUND']._serialized_start=11893 + _globals['_CONTRACTFUND']._serialized_end=11953 + _globals['_CW20METADATA']._serialized_start=11956 + _globals['_CW20METADATA']._serialized_end=12122 + _globals['_CW20TOKENINFO']._serialized_start=12124 + _globals['_CW20TOKENINFO']._serialized_end=12246 + _globals['_CW20MARKETINGINFO']._serialized_start=12249 + _globals['_CW20MARKETINGINFO']._serialized_end=12378 + _globals['_GETWASMCONTRACTBYADDRESSREQUEST']._serialized_start=12380 + _globals['_GETWASMCONTRACTBYADDRESSREQUEST']._serialized_end=12456 + _globals['_GETWASMCONTRACTBYADDRESSRESPONSE']._serialized_start=12459 + _globals['_GETWASMCONTRACTBYADDRESSRESPONSE']._serialized_end=13096 + _globals['_GETCW20BALANCEREQUEST']._serialized_start=13098 + _globals['_GETCW20BALANCEREQUEST']._serialized_end=13169 + _globals['_GETCW20BALANCERESPONSE']._serialized_start=13171 + _globals['_GETCW20BALANCERESPONSE']._serialized_end=13258 + _globals['_WASMCW20BALANCE']._serialized_start=13261 + _globals['_WASMCW20BALANCE']._serialized_end=13479 + _globals['_RELAYERSREQUEST']._serialized_start=13481 + _globals['_RELAYERSREQUEST']._serialized_end=13530 + _globals['_RELAYERSRESPONSE']._serialized_start=13532 + _globals['_RELAYERSRESPONSE']._serialized_end=13612 + _globals['_RELAYERMARKETS']._serialized_start=13614 + _globals['_RELAYERMARKETS']._serialized_end=13720 + _globals['_RELAYER']._serialized_start=13722 + _globals['_RELAYER']._serialized_end=13769 + _globals['_GETBANKTRANSFERSREQUEST']._serialized_start=13772 + _globals['_GETBANKTRANSFERSREQUEST']._serialized_end=14089 + _globals['_GETBANKTRANSFERSRESPONSE']._serialized_start=14092 + _globals['_GETBANKTRANSFERSRESPONSE']._serialized_end=14232 + _globals['_BANKTRANSFER']._serialized_start=14235 + _globals['_BANKTRANSFER']._serialized_end=14435 + _globals['_COIN']._serialized_start=14437 + _globals['_COIN']._serialized_end=14489 + _globals['_STREAMTXSREQUEST']._serialized_start=14491 + _globals['_STREAMTXSREQUEST']._serialized_end=14509 + _globals['_STREAMTXSRESPONSE']._serialized_start=14512 + _globals['_STREAMTXSRESPONSE']._serialized_end=14808 + _globals['_STREAMBLOCKSREQUEST']._serialized_start=14810 + _globals['_STREAMBLOCKSREQUEST']._serialized_end=14831 + _globals['_STREAMBLOCKSRESPONSE']._serialized_start=14834 + _globals['_STREAMBLOCKSRESPONSE']._serialized_end=15146 + _globals['_GETSTATSREQUEST']._serialized_start=15148 + _globals['_GETSTATSREQUEST']._serialized_end=15165 + _globals['_GETSTATSRESPONSE']._serialized_start=15168 + _globals['_GETSTATSRESPONSE']._serialized_end=15452 + _globals['_INJECTIVEEXPLORERRPC']._serialized_start=15455 + _globals['_INJECTIVEEXPLORERRPC']._serialized_end=18251 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_explorer_rpc_pb2_grpc.py b/pyinjective/proto/exchange/injective_explorer_rpc_pb2_grpc.py index 948df135..b58490a8 100644 --- a/pyinjective/proto/exchange/injective_explorer_rpc_pb2_grpc.py +++ b/pyinjective/proto/exchange/injective_explorer_rpc_pb2_grpc.py @@ -35,6 +35,11 @@ def __init__(self, channel): request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksRequest.SerializeToString, response_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksResponse.FromString, _registered_method=True) + self.GetBlocksV2 = channel.unary_unary( + '/injective_explorer_rpc.InjectiveExplorerRPC/GetBlocksV2', + request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Request.SerializeToString, + response_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Response.FromString, + _registered_method=True) self.GetBlock = channel.unary_unary( '/injective_explorer_rpc.InjectiveExplorerRPC/GetBlock', request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlockRequest.SerializeToString, @@ -60,6 +65,11 @@ def __init__(self, channel): request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsRequest.SerializeToString, response_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsResponse.FromString, _registered_method=True) + self.GetTxsV2 = channel.unary_unary( + '/injective_explorer_rpc.InjectiveExplorerRPC/GetTxsV2', + request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Request.SerializeToString, + response_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Response.FromString, + _registered_method=True) self.GetTxByTxHash = channel.unary_unary( '/injective_explorer_rpc.InjectiveExplorerRPC/GetTxByTxHash', request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxByTxHashRequest.SerializeToString, @@ -164,6 +174,13 @@ def GetBlocks(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetBlocksV2(self, request, context): + """GetBlocks returns blocks based upon the request params + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def GetBlock(self, request, context): """GetBlock returns block based upon the height or hash """ @@ -199,6 +216,13 @@ def GetTxs(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetTxsV2(self, request, context): + """GetTxs returns transactions based upon the request params + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def GetTxByTxHash(self, request, context): """GetTxByTxHash returns certain transaction information by its tx hash. """ @@ -324,6 +348,11 @@ def add_InjectiveExplorerRPCServicer_to_server(servicer, server): request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksRequest.FromString, response_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksResponse.SerializeToString, ), + 'GetBlocksV2': grpc.unary_unary_rpc_method_handler( + servicer.GetBlocksV2, + request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Request.FromString, + response_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Response.SerializeToString, + ), 'GetBlock': grpc.unary_unary_rpc_method_handler( servicer.GetBlock, request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlockRequest.FromString, @@ -349,6 +378,11 @@ def add_InjectiveExplorerRPCServicer_to_server(servicer, server): request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsRequest.FromString, response_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsResponse.SerializeToString, ), + 'GetTxsV2': grpc.unary_unary_rpc_method_handler( + servicer.GetTxsV2, + request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Request.FromString, + response_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Response.SerializeToString, + ), 'GetTxByTxHash': grpc.unary_unary_rpc_method_handler( servicer.GetTxByTxHash, request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxByTxHashRequest.FromString, @@ -539,6 +573,33 @@ def GetBlocks(request, metadata, _registered_method=True) + @staticmethod + def GetBlocksV2(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_explorer_rpc.InjectiveExplorerRPC/GetBlocksV2', + exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Request.SerializeToString, + exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Response.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def GetBlock(request, target, @@ -674,6 +735,33 @@ def GetTxs(request, metadata, _registered_method=True) + @staticmethod + def GetTxsV2(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_explorer_rpc.InjectiveExplorerRPC/GetTxsV2', + exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Request.SerializeToString, + exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Response.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def GetTxByTxHash(request, target, diff --git a/pyinjective/proto/google/api/client_pb2.py b/pyinjective/proto/google/api/client_pb2.py index db55b0ba..aab7d140 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\"\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\"\xc5\x02\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\x1a\x90\x01\n\x14\x45xperimentalFeatures\x12\x31\n\x15rest_async_io_enabled\x18\x01 \x01(\x08R\x12restAsyncIoEnabled\x12\x45\n\x1fprotobuf_pythonic_types_enabled\x18\x02 \x01(\x08R\x1cprotobufPythonicTypesEnabled\"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\"\xe4\x01\n\nGoSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x12V\n\x10renamed_services\x18\x02 \x03(\x0b\x32+.google.api.GoSettings.RenamedServicesEntryR\x0frenamedServices\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\"\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') +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\"\x87\x03\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\x1a\xd2\x01\n\x14\x45xperimentalFeatures\x12\x31\n\x15rest_async_io_enabled\x18\x01 \x01(\x08R\x12restAsyncIoEnabled\x12\x45\n\x1fprotobuf_pythonic_types_enabled\x18\x02 \x01(\x08R\x1cprotobufPythonicTypesEnabled\x12@\n\x1cunversioned_package_disabled\x18\x03 \x01(\x08R\x1aunversionedPackageDisabled\"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\"\xe4\x01\n\nGoSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x12V\n\x10renamed_services\x18\x02 \x03(\x0b\x32+.google.api.GoSettings.RenamedServicesEntryR\x0frenamedServices\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\"\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\"u\n\x18SelectiveGapicGeneration\x12\x18\n\x07methods\x18\x01 \x03(\tR\x07methods\x12?\n\x1cgenerate_omitted_as_internal\x18\x02 \x01(\x08R\x19generateOmittedAsInternal*\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) @@ -35,10 +35,10 @@ _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_options = b'8\001' _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._loaded_options = None _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_options = b'8\001' - _globals['_CLIENTLIBRARYORGANIZATION']._serialized_start=3895 - _globals['_CLIENTLIBRARYORGANIZATION']._serialized_end=4058 - _globals['_CLIENTLIBRARYDESTINATION']._serialized_start=4060 - _globals['_CLIENTLIBRARYDESTINATION']._serialized_end=4163 + _globals['_CLIENTLIBRARYORGANIZATION']._serialized_start=4026 + _globals['_CLIENTLIBRARYORGANIZATION']._serialized_end=4189 + _globals['_CLIENTLIBRARYDESTINATION']._serialized_start=4191 + _globals['_CLIENTLIBRARYDESTINATION']._serialized_end=4294 _globals['_COMMONLANGUAGESETTINGS']._serialized_start=137 _globals['_COMMONLANGUAGESETTINGS']._serialized_end=385 _globals['_CLIENTLIBRARYSETTINGS']._serialized_start=388 @@ -54,27 +54,27 @@ _globals['_PHPSETTINGS']._serialized_start=2040 _globals['_PHPSETTINGS']._serialized_end=2113 _globals['_PYTHONSETTINGS']._serialized_start=2116 - _globals['_PYTHONSETTINGS']._serialized_end=2441 + _globals['_PYTHONSETTINGS']._serialized_end=2507 _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_start=2297 - _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_end=2441 - _globals['_NODESETTINGS']._serialized_start=2443 - _globals['_NODESETTINGS']._serialized_end=2517 - _globals['_DOTNETSETTINGS']._serialized_start=2520 - _globals['_DOTNETSETTINGS']._serialized_end=3078 - _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=2943 - _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=3009 - _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_start=3011 - _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_end=3078 - _globals['_RUBYSETTINGS']._serialized_start=3080 - _globals['_RUBYSETTINGS']._serialized_end=3154 - _globals['_GOSETTINGS']._serialized_start=3157 - _globals['_GOSETTINGS']._serialized_end=3385 - _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=2943 - _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=3009 - _globals['_METHODSETTINGS']._serialized_start=3388 - _globals['_METHODSETTINGS']._serialized_end=3838 - _globals['_METHODSETTINGS_LONGRUNNING']._serialized_start=3562 - _globals['_METHODSETTINGS_LONGRUNNING']._serialized_end=3838 - _globals['_SELECTIVEGAPICGENERATION']._serialized_start=3840 - _globals['_SELECTIVEGAPICGENERATION']._serialized_end=3892 + _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_end=2507 + _globals['_NODESETTINGS']._serialized_start=2509 + _globals['_NODESETTINGS']._serialized_end=2583 + _globals['_DOTNETSETTINGS']._serialized_start=2586 + _globals['_DOTNETSETTINGS']._serialized_end=3144 + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=3009 + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=3075 + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_start=3077 + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_end=3144 + _globals['_RUBYSETTINGS']._serialized_start=3146 + _globals['_RUBYSETTINGS']._serialized_end=3220 + _globals['_GOSETTINGS']._serialized_start=3223 + _globals['_GOSETTINGS']._serialized_end=3451 + _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=3009 + _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=3075 + _globals['_METHODSETTINGS']._serialized_start=3454 + _globals['_METHODSETTINGS']._serialized_end=3904 + _globals['_METHODSETTINGS_LONGRUNNING']._serialized_start=3628 + _globals['_METHODSETTINGS_LONGRUNNING']._serialized_end=3904 + _globals['_SELECTIVEGAPICGENERATION']._serialized_start=3906 + _globals['_SELECTIVEGAPICGENERATION']._serialized_end=4023 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/google/api/http_pb2.py b/pyinjective/proto/google/api/http_pb2.py index a2003b27..a0dc8f5f 100644 --- a/pyinjective/proto/google/api/http_pb2.py +++ b/pyinjective/proto/google/api/http_pb2.py @@ -14,14 +14,14 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15google/api/http.proto\x12\ngoogle.api\"y\n\x04Http\x12*\n\x05rules\x18\x01 \x03(\x0b\x32\x14.google.api.HttpRuleR\x05rules\x12\x45\n\x1f\x66ully_decode_reserved_expansion\x18\x02 \x01(\x08R\x1c\x66ullyDecodeReservedExpansion\"\xda\x02\n\x08HttpRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12\x12\n\x03get\x18\x02 \x01(\tH\x00R\x03get\x12\x12\n\x03put\x18\x03 \x01(\tH\x00R\x03put\x12\x14\n\x04post\x18\x04 \x01(\tH\x00R\x04post\x12\x18\n\x06\x64\x65lete\x18\x05 \x01(\tH\x00R\x06\x64\x65lete\x12\x16\n\x05patch\x18\x06 \x01(\tH\x00R\x05patch\x12\x37\n\x06\x63ustom\x18\x08 \x01(\x0b\x32\x1d.google.api.CustomHttpPatternH\x00R\x06\x63ustom\x12\x12\n\x04\x62ody\x18\x07 \x01(\tR\x04\x62ody\x12#\n\rresponse_body\x18\x0c \x01(\tR\x0cresponseBody\x12\x45\n\x13\x61\x64\x64itional_bindings\x18\x0b \x03(\x0b\x32\x14.google.api.HttpRuleR\x12\x61\x64\x64itionalBindingsB\t\n\x07pattern\";\n\x11\x43ustomHttpPattern\x12\x12\n\x04kind\x18\x01 \x01(\tR\x04kind\x12\x12\n\x04path\x18\x02 \x01(\tR\x04pathB\xaa\x01\n\x0e\x63om.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xf8\x01\x01\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\x15google/api/http.proto\x12\ngoogle.api\"y\n\x04Http\x12*\n\x05rules\x18\x01 \x03(\x0b\x32\x14.google.api.HttpRuleR\x05rules\x12\x45\n\x1f\x66ully_decode_reserved_expansion\x18\x02 \x01(\x08R\x1c\x66ullyDecodeReservedExpansion\"\xda\x02\n\x08HttpRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12\x12\n\x03get\x18\x02 \x01(\tH\x00R\x03get\x12\x12\n\x03put\x18\x03 \x01(\tH\x00R\x03put\x12\x14\n\x04post\x18\x04 \x01(\tH\x00R\x04post\x12\x18\n\x06\x64\x65lete\x18\x05 \x01(\tH\x00R\x06\x64\x65lete\x12\x16\n\x05patch\x18\x06 \x01(\tH\x00R\x05patch\x12\x37\n\x06\x63ustom\x18\x08 \x01(\x0b\x32\x1d.google.api.CustomHttpPatternH\x00R\x06\x63ustom\x12\x12\n\x04\x62ody\x18\x07 \x01(\tR\x04\x62ody\x12#\n\rresponse_body\x18\x0c \x01(\tR\x0cresponseBody\x12\x45\n\x13\x61\x64\x64itional_bindings\x18\x0b \x03(\x0b\x32\x14.google.api.HttpRuleR\x12\x61\x64\x64itionalBindingsB\t\n\x07pattern\";\n\x11\x43ustomHttpPattern\x12\x12\n\x04kind\x18\x01 \x01(\tR\x04kind\x12\x12\n\x04path\x18\x02 \x01(\tR\x04pathB\xa7\x01\n\x0e\x63om.google.apiB\tHttpProtoP\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) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.http_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\tHttpProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\370\001\001\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' + _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\tHttpProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' _globals['_HTTP']._serialized_start=37 _globals['_HTTP']._serialized_end=158 _globals['_HTTPRULE']._serialized_start=161 diff --git a/pyinjective/proto/google/api/resource_pb2.py b/pyinjective/proto/google/api/resource_pb2.py index c7f27cc2..b7cc3692 100644 --- a/pyinjective/proto/google/api/resource_pb2.py +++ b/pyinjective/proto/google/api/resource_pb2.py @@ -15,14 +15,14 @@ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19google/api/resource.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\"\xaa\x03\n\x12ResourceDescriptor\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07pattern\x18\x02 \x03(\tR\x07pattern\x12\x1d\n\nname_field\x18\x03 \x01(\tR\tnameField\x12@\n\x07history\x18\x04 \x01(\x0e\x32&.google.api.ResourceDescriptor.HistoryR\x07history\x12\x16\n\x06plural\x18\x05 \x01(\tR\x06plural\x12\x1a\n\x08singular\x18\x06 \x01(\tR\x08singular\x12:\n\x05style\x18\n \x03(\x0e\x32$.google.api.ResourceDescriptor.StyleR\x05style\"[\n\x07History\x12\x17\n\x13HISTORY_UNSPECIFIED\x10\x00\x12\x1d\n\x19ORIGINALLY_SINGLE_PATTERN\x10\x01\x12\x18\n\x14\x46UTURE_MULTI_PATTERN\x10\x02\"8\n\x05Style\x12\x15\n\x11STYLE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x44\x45\x43LARATIVE_FRIENDLY\x10\x01\"F\n\x11ResourceReference\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x1d\n\nchild_type\x18\x02 \x01(\tR\tchildType:l\n\x12resource_reference\x12\x1d.google.protobuf.FieldOptions\x18\x9f\x08 \x01(\x0b\x32\x1d.google.api.ResourceReferenceR\x11resourceReference:n\n\x13resource_definition\x12\x1c.google.protobuf.FileOptions\x18\x9d\x08 \x03(\x0b\x32\x1e.google.api.ResourceDescriptorR\x12resourceDefinition:\\\n\x08resource\x12\x1f.google.protobuf.MessageOptions\x18\x9d\x08 \x01(\x0b\x32\x1e.google.api.ResourceDescriptorR\x08resourceB\xae\x01\n\x0e\x63om.google.apiB\rResourceProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xf8\x01\x01\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\x19google/api/resource.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\"\xaa\x03\n\x12ResourceDescriptor\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07pattern\x18\x02 \x03(\tR\x07pattern\x12\x1d\n\nname_field\x18\x03 \x01(\tR\tnameField\x12@\n\x07history\x18\x04 \x01(\x0e\x32&.google.api.ResourceDescriptor.HistoryR\x07history\x12\x16\n\x06plural\x18\x05 \x01(\tR\x06plural\x12\x1a\n\x08singular\x18\x06 \x01(\tR\x08singular\x12:\n\x05style\x18\n \x03(\x0e\x32$.google.api.ResourceDescriptor.StyleR\x05style\"[\n\x07History\x12\x17\n\x13HISTORY_UNSPECIFIED\x10\x00\x12\x1d\n\x19ORIGINALLY_SINGLE_PATTERN\x10\x01\x12\x18\n\x14\x46UTURE_MULTI_PATTERN\x10\x02\"8\n\x05Style\x12\x15\n\x11STYLE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x44\x45\x43LARATIVE_FRIENDLY\x10\x01\"F\n\x11ResourceReference\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x1d\n\nchild_type\x18\x02 \x01(\tR\tchildType:l\n\x12resource_reference\x12\x1d.google.protobuf.FieldOptions\x18\x9f\x08 \x01(\x0b\x32\x1d.google.api.ResourceReferenceR\x11resourceReference:n\n\x13resource_definition\x12\x1c.google.protobuf.FileOptions\x18\x9d\x08 \x03(\x0b\x32\x1e.google.api.ResourceDescriptorR\x12resourceDefinition:\\\n\x08resource\x12\x1f.google.protobuf.MessageOptions\x18\x9d\x08 \x01(\x0b\x32\x1e.google.api.ResourceDescriptorR\x08resourceB\xab\x01\n\x0e\x63om.google.apiB\rResourceProtoP\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) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.resource_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\rResourceProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\370\001\001\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' + _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\rResourceProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' _globals['_RESOURCEDESCRIPTOR']._serialized_start=76 _globals['_RESOURCEDESCRIPTOR']._serialized_end=502 _globals['_RESOURCEDESCRIPTOR_HISTORY']._serialized_start=353 diff --git a/pyinjective/proto/google/api/visibility_pb2.py b/pyinjective/proto/google/api/visibility_pb2.py index 1e557b82..59d234e8 100644 --- a/pyinjective/proto/google/api/visibility_pb2.py +++ b/pyinjective/proto/google/api/visibility_pb2.py @@ -15,14 +15,14 @@ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bgoogle/api/visibility.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\">\n\nVisibility\x12\x30\n\x05rules\x18\x01 \x03(\x0b\x32\x1a.google.api.VisibilityRuleR\x05rules\"N\n\x0eVisibilityRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12 \n\x0brestriction\x18\x02 \x01(\tR\x0brestriction:d\n\x0f\x65num_visibility\x12\x1c.google.protobuf.EnumOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0e\x65numVisibility:k\n\x10value_visibility\x12!.google.protobuf.EnumValueOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0fvalueVisibility:g\n\x10\x66ield_visibility\x12\x1d.google.protobuf.FieldOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0f\x66ieldVisibility:m\n\x12message_visibility\x12\x1f.google.protobuf.MessageOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x11messageVisibility:j\n\x11method_visibility\x12\x1e.google.protobuf.MethodOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x10methodVisibility:e\n\x0e\x61pi_visibility\x12\x1f.google.protobuf.ServiceOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\rapiVisibilityB\xae\x01\n\x0e\x63om.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\xf8\x01\x01\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\x1bgoogle/api/visibility.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\">\n\nVisibility\x12\x30\n\x05rules\x18\x01 \x03(\x0b\x32\x1a.google.api.VisibilityRuleR\x05rules\"N\n\x0eVisibilityRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12 \n\x0brestriction\x18\x02 \x01(\tR\x0brestriction:d\n\x0f\x65num_visibility\x12\x1c.google.protobuf.EnumOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0e\x65numVisibility:k\n\x10value_visibility\x12!.google.protobuf.EnumValueOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0fvalueVisibility:g\n\x10\x66ield_visibility\x12\x1d.google.protobuf.FieldOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0f\x66ieldVisibility:m\n\x12message_visibility\x12\x1f.google.protobuf.MessageOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x11messageVisibility:j\n\x11method_visibility\x12\x1e.google.protobuf.MethodOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x10methodVisibility:e\n\x0e\x61pi_visibility\x12\x1f.google.protobuf.ServiceOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\rapiVisibilityB\xab\x01\n\x0e\x63om.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\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) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.visibility_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\017VisibilityProtoP\001Z?google.golang.org/genproto/googleapis/api/visibility;visibility\370\001\001\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' + _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\017VisibilityProtoP\001Z?google.golang.org/genproto/googleapis/api/visibility;visibility\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' _globals['_VISIBILITY']._serialized_start=77 _globals['_VISIBILITY']._serialized_end=139 _globals['_VISIBILITYRULE']._serialized_start=141 diff --git a/pyproject.toml b/pyproject.toml index ab868fe1..5b6cc95c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "injective-py" -version = "1.9.0-rc3" +version = "1.9.0" description = "Injective Python SDK, with Exchange API Client" authors = ["Injective Labs "] license = "Apache-2.0" From 65ce48edcbf165e17037342daabd24f063e979db Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 17 Feb 2025 10:04:31 -0300 Subject: [PATCH 02/13] fix: updated the oracle stream prices script to send the oracle type always in lowercase --- examples/exchange_client/oracle_rpc/1_StreamPrices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/exchange_client/oracle_rpc/1_StreamPrices.py b/examples/exchange_client/oracle_rpc/1_StreamPrices.py index 91465207..f4f98274 100644 --- a/examples/exchange_client/oracle_rpc/1_StreamPrices.py +++ b/examples/exchange_client/oracle_rpc/1_StreamPrices.py @@ -29,7 +29,7 @@ async def main() -> None: base_symbol = market.oracle_base quote_symbol = market.oracle_quote - oracle_type = market.oracle_type + oracle_type = market.oracle_type.lower() task = asyncio.get_event_loop().create_task( client.listen_oracle_prices_updates( From 7074685633704b1c56adc5fbe2b1c5a6c3912aa5 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 3 Mar 2025 12:00:48 -0300 Subject: [PATCH 03/13] fix: added quantization in the functions that convert notional values to chain format --- CHANGELOG.md | 4 ++++ pyinjective/core/market.py | 11 +++++++---- pyproject.toml | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd2471b9..136f7802 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. +## [1.9.1] - 2025-03-03 +### Fixed +- Added quantization in the functions that convert notional values to chain format + ## [1.9.0] - 2025-02-13 ### Added - Added support for all new queries and messages from the new Permissions module diff --git a/pyinjective/core/market.py b/pyinjective/core/market.py index 3824232f..01973dc8 100644 --- a/pyinjective/core/market.py +++ b/pyinjective/core/market.py @@ -1,5 +1,5 @@ from dataclasses import dataclass -from decimal import Decimal +from decimal import ROUND_UP, Decimal from typing import Optional from pyinjective.constant import ADDITIONAL_CHAIN_FORMAT_DECIMALS @@ -39,7 +39,8 @@ def price_to_chain_format(self, human_readable_value: Decimal) -> Decimal: def notional_to_chain_format(self, human_readable_value: Decimal) -> Decimal: decimals = self.quote_token.decimals chain_formatted_value = human_readable_value * Decimal(f"1e{decimals}") - extended_chain_formatted_value = chain_formatted_value * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + quantized_balue = chain_formatted_value.quantize(Decimal("1"), rounding=ROUND_UP) + extended_chain_formatted_value = quantized_balue * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") return extended_chain_formatted_value @@ -120,7 +121,8 @@ def calculate_margin_in_chain_format( def notional_to_chain_format(self, human_readable_value: Decimal) -> Decimal: decimals = self.quote_token.decimals chain_formatted_value = human_readable_value * Decimal(f"1e{decimals}") - extended_chain_formatted_value = chain_formatted_value * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + quantized_notional = chain_formatted_value.quantize(Decimal("1"), rounding=ROUND_UP) + extended_chain_formatted_value = quantized_notional * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") return extended_chain_formatted_value @@ -230,7 +232,8 @@ def calculate_margin_in_chain_format( def notional_to_chain_format(self, human_readable_value: Decimal) -> Decimal: decimals = self.quote_token.decimals chain_formatted_value = human_readable_value * Decimal(f"1e{decimals}") - extended_chain_formatted_value = chain_formatted_value * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") + quantized_value = chain_formatted_value.quantize(Decimal("1"), rounding=ROUND_UP) + extended_chain_formatted_value = quantized_value * Decimal(f"1e{ADDITIONAL_CHAIN_FORMAT_DECIMALS}") return extended_chain_formatted_value diff --git a/pyproject.toml b/pyproject.toml index 5b6cc95c..811c4747 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "injective-py" -version = "1.9.0" +version = "1.9.1" description = "Injective Python SDK, with Exchange API Client" authors = ["Injective Labs "] license = "Apache-2.0" From a054d148df6ec050d1332cc033ecf784dea2d942 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 17 Mar 2025 11:48:20 -0300 Subject: [PATCH 04/13] cp-235: updated the gas limit estimator logic to reflect the new logic for gas heuristics in exchange module (chain v1.15) --- pyinjective/core/broadcaster.py | 4 +- pyinjective/core/gas_limit_estimator.py | 320 ++++++++++++-- tests/core/test_gas_limit_estimator.py | 396 ++++++++++++++++-- ...essage_based_transaction_fee_calculator.py | 28 +- 4 files changed, 648 insertions(+), 100 deletions(-) diff --git a/pyinjective/core/broadcaster.py b/pyinjective/core/broadcaster.py index 778bc4c9..a93a8e85 100644 --- a/pyinjective/core/broadcaster.py +++ b/pyinjective/core/broadcaster.py @@ -280,7 +280,7 @@ async def configure_gas_fee_for_transaction( class MessageBasedTransactionFeeCalculator(TransactionFeeCalculator): - TRANSACTION_GAS_LIMIT = 60_000 + TRANSACTION_ANTE_GAS_LIMIT = 105_000 def __init__(self, client: AsyncClient, composer: Composer, gas_price: Optional[int] = None): self._client = client @@ -294,7 +294,7 @@ async def configure_gas_fee_for_transaction( public_key: PublicKey, ): messages_gas_limit = math.ceil(self._calculate_gas_limit(messages=transaction.msgs)) - transaction_gas_limit = messages_gas_limit + self.TRANSACTION_GAS_LIMIT + transaction_gas_limit = messages_gas_limit + self.TRANSACTION_ANTE_GAS_LIMIT fee = [ self._composer.coin( diff --git a/pyinjective/core/gas_limit_estimator.py b/pyinjective/core/gas_limit_estimator.py index 335af501..1730a322 100644 --- a/pyinjective/core/gas_limit_estimator.py +++ b/pyinjective/core/gas_limit_estimator.py @@ -12,13 +12,25 @@ tx_pb2 as injective_exchange_tx_pb, ) -SPOT_ORDER_CREATION_GAS_LIMIT = 52_000 -DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 84_000 -SPOT_ORDER_CANCELATION_GAS_LIMIT = 50_000 -DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT = 68_000 -# POST ONLY orders take around 50% more gas to create than normal orders due to the required validations -SPOT_POST_ONLY_ORDER_MULTIPLIER = 0.62 -DERIVATIVE_POST_ONLY_ORDER_MULTIPLIER = 0.35 +SPOT_ORDER_CREATION_GAS_LIMIT = 61_000 +SPOT_MARKET_ORDER_CREATION_GAS_LIMIT = 50_000 +POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT = 92_000 +DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 82_000 +DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT = 67_000 +POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 112_000 +BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT = DERIVATIVE_ORDER_CREATION_GAS_LIMIT +BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT = DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT +POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT +SPOT_ORDER_CANCELATION_GAS_LIMIT = 51_000 +DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT = 73_000 +BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + +DEPOSIT_GAS_LIMIT = 38_000 +WITHDRAW_GAS_LIMIT = 35_000 +SUBACCOUNT_TRANSFER_GAS_LIMIT = 15_000 +EXTERNAL_TRANSFER_GAS_LIMIT = 40_000 +INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT = 51_000 +DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT = 60_000 class GasLimitEstimator(ABC): @@ -96,6 +108,165 @@ def _message_class(self, message: any_pb2.Any): raise NotImplementedError +class CreateSpotLimitOrdersGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateSpotLimitOrder") + + def gas_limit(self) -> int: + if self._message.order.order_type in [ + injective_exchange_pb.OrderType.BUY_PO, + injective_exchange_pb.OrderType.SELL_PO, + ]: + total = POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT + else: + total = SPOT_ORDER_CREATION_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateSpotLimitOrder + + +class CreateSpotMarketOrdersGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateSpotMarketOrder") + + def gas_limit(self) -> int: + return SPOT_MARKET_ORDER_CREATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateSpotMarketOrder + + +class CancelSpotOrderGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCancelSpotOrder") + + def gas_limit(self) -> int: + return SPOT_ORDER_CANCELATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCancelSpotOrder + + +class CreateDerivativeLimitOrdersGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateDerivativeLimitOrder") + + def gas_limit(self) -> int: + if self._message.order.order_type in [ + injective_exchange_pb.OrderType.BUY_PO, + injective_exchange_pb.OrderType.SELL_PO, + ]: + total = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT + else: + total = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder + + +class CreateDerivativeMarketOrdersGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateDerivativeMarketOrder") + + def gas_limit(self) -> int: + return DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder + + +class CancelDerivativeOrderGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCancelDerivativeOrder") + + def gas_limit(self) -> int: + return DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCancelDerivativeOrder + + +class CreateBinaryOptionsLimitOrdersGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateBinaryOptionsLimitOrder") + + def gas_limit(self) -> int: + if self._message.order.order_type in [ + injective_exchange_pb.OrderType.BUY_PO, + injective_exchange_pb.OrderType.SELL_PO, + ]: + total = POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + else: + total = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrder + + +class CreateBinaryOptionsMarketOrdersGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateBinaryOptionsMarketOrder") + + def gas_limit(self) -> int: + return BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder + + +class CancelBinaryOptionsOrderGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCancelBinaryOptionsOrder") + + def gas_limit(self) -> int: + return BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder + + class BatchCreateSpotLimitOrdersGasLimitEstimator(GasLimitEstimator): def __init__(self, message: any_pb2.Any): self._message = self._parsed_message(message=message) @@ -108,9 +279,8 @@ def gas_limit(self) -> int: post_only_orders = self._select_post_only_orders(orders=self._message.orders) total = 0 - total += self.GENERAL_MESSAGE_GAS_LIMIT total += len(self._message.orders) * SPOT_ORDER_CREATION_GAS_LIMIT - total += math.ceil(len(post_only_orders) * SPOT_ORDER_CREATION_GAS_LIMIT * SPOT_POST_ONLY_ORDER_MULTIPLIER) + total += math.ceil(len(post_only_orders) * POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT) return total @@ -128,7 +298,6 @@ def applies_to(cls, message: any_pb2.Any): def gas_limit(self) -> int: total = 0 - total += self.GENERAL_MESSAGE_GAS_LIMIT total += len(self._message.data) * SPOT_ORDER_CANCELATION_GAS_LIMIT return total @@ -149,11 +318,8 @@ def gas_limit(self) -> int: post_only_orders = self._select_post_only_orders(orders=self._message.orders) total = 0 - total += self.GENERAL_MESSAGE_GAS_LIMIT total += len(self._message.orders) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT - total += math.ceil( - len(post_only_orders) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT * DERIVATIVE_POST_ONLY_ORDER_MULTIPLIER - ) + total += math.ceil(len(post_only_orders) * POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT) return total @@ -171,7 +337,6 @@ def applies_to(cls, message: any_pb2.Any): def gas_limit(self) -> int: total = 0 - total += self.GENERAL_MESSAGE_GAS_LIMIT total += len(self._message.data) * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT return total @@ -181,10 +346,6 @@ def _message_class(self, message: any_pb2.Any): class BatchUpdateOrdersGasLimitEstimator(GasLimitEstimator): - CANCEL_ALL_SPOT_MARKET_GAS_LIMIT = 40_000 - CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT = 50_000 - MESSAGE_GAS_LIMIT = 30_000 - AVERAGE_CANCEL_ALL_AFFECTED_ORDERS = 20 def __init__(self, message: any_pb2.Any): @@ -202,40 +363,31 @@ def gas_limit(self) -> int: ) total = 0 - total += self.MESSAGE_GAS_LIMIT total += len(self._message.spot_orders_to_create) * SPOT_ORDER_CREATION_GAS_LIMIT total += len(self._message.derivative_orders_to_create) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT - total += len(self._message.binary_options_orders_to_create) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT + total += len(self._message.binary_options_orders_to_create) * BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT - total += math.ceil(len(post_only_spot_orders) * SPOT_ORDER_CREATION_GAS_LIMIT * SPOT_POST_ONLY_ORDER_MULTIPLIER) - total += math.ceil( - len(post_only_derivative_orders) - * DERIVATIVE_ORDER_CREATION_GAS_LIMIT - * DERIVATIVE_POST_ONLY_ORDER_MULTIPLIER - ) - total += math.ceil( - len(post_only_binary_options_orders) - * DERIVATIVE_ORDER_CREATION_GAS_LIMIT - * DERIVATIVE_POST_ONLY_ORDER_MULTIPLIER - ) + total += math.ceil(len(post_only_spot_orders) * POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT) + total += math.ceil(len(post_only_derivative_orders) * POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT) + total += math.ceil(len(post_only_binary_options_orders) * POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT) total += len(self._message.spot_orders_to_cancel) * SPOT_ORDER_CANCELATION_GAS_LIMIT total += len(self._message.derivative_orders_to_cancel) * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT - total += len(self._message.binary_options_orders_to_cancel) * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + total += len(self._message.binary_options_orders_to_cancel) * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT total += ( len(self._message.spot_market_ids_to_cancel_all) - * self.CANCEL_ALL_SPOT_MARKET_GAS_LIMIT + * SPOT_ORDER_CANCELATION_GAS_LIMIT * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS ) total += ( len(self._message.derivative_market_ids_to_cancel_all) - * self.CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT + * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS ) total += ( len(self._message.binary_options_market_ids_to_cancel_all) - * self.CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT + * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS ) @@ -245,6 +397,102 @@ def _message_class(self, message: any_pb2.Any): return injective_exchange_tx_pb.MsgBatchUpdateOrders +class DepositGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgDeposit") + + def gas_limit(self) -> int: + return DEPOSIT_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgDeposit + + +class WithdrawGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgWithdraw") + + def gas_limit(self) -> int: + return WITHDRAW_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgWithdraw + + +class SubaccountTransferGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgSubaccountTransfer") + + def gas_limit(self) -> int: + return SUBACCOUNT_TRANSFER_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgSubaccountTransfer + + +class ExternalTransferGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgExternalTransfer") + + def gas_limit(self) -> int: + return EXTERNAL_TRANSFER_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgExternalTransfer + + +class IncreasePositionMarginGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgIncreasePositionMargin") + + def gas_limit(self) -> int: + return INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgIncreasePositionMargin + + +class DecreasePositionMarginGasLimitEstimator(GasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgDecreasePositionMargin") + + def gas_limit(self) -> int: + return DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgDecreasePositionMargin + + class ExecGasLimitEstimator(GasLimitEstimator): DEFAULT_GAS_LIMIT = 20_000 diff --git a/tests/core/test_gas_limit_estimator.py b/tests/core/test_gas_limit_estimator.py index fa336e64..8d74d555 100644 --- a/tests/core/test_gas_limit_estimator.py +++ b/tests/core/test_gas_limit_estimator.py @@ -4,14 +4,24 @@ from pyinjective.composer import Composer from pyinjective.core.gas_limit_estimator import ( + BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT, + BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT, + BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT, + DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT, + DEPOSIT_GAS_LIMIT, + DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT, DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT, DERIVATIVE_ORDER_CREATION_GAS_LIMIT, + EXTERNAL_TRANSFER_GAS_LIMIT, + INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT, + POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT, + POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT, + POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT, + SPOT_MARKET_ORDER_CREATION_GAS_LIMIT, SPOT_ORDER_CANCELATION_GAS_LIMIT, SPOT_ORDER_CREATION_GAS_LIMIT, - BatchCancelDerivativeOrdersGasLimitEstimator, - BatchCancelSpotOrdersGasLimitEstimator, - BatchCreateDerivativeLimitOrdersGasLimitEstimator, - BatchCreateSpotLimitOrdersGasLimitEstimator, + SUBACCOUNT_TRANSFER_GAS_LIMIT, + WITHDRAW_GAS_LIMIT, BatchUpdateOrdersGasLimitEstimator, ExecGasLimitEstimator, GasLimitEstimator, @@ -79,9 +89,8 @@ def test_estimation_for_batch_create_spot_limit_orders(self, basic_composer): 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() + assert (expected_order_gas_limit * 2) == estimator.gas_limit() def test_estimation_for_batch_cancel_spot_orders(self): spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" @@ -107,9 +116,8 @@ def test_estimation_for_batch_cancel_spot_orders(self): 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() + assert (expected_order_gas_limit * 3) == estimator.gas_limit() def test_estimation_for_batch_create_derivative_limit_orders(self, basic_composer): market_id = list(basic_composer.derivative_markets.keys())[0] @@ -137,9 +145,8 @@ def test_estimation_for_batch_create_derivative_limit_orders(self, basic_compose 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() + assert (expected_order_gas_limit * 2) == estimator.gas_limit() def test_estimation_for_batch_cancel_derivative_orders(self): spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" @@ -165,9 +172,8 @@ def test_estimation_for_batch_cancel_derivative_orders(self): 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() + assert (expected_order_gas_limit * 3) == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_create_spot_orders(self, basic_composer): market_id = list(basic_composer.spot_markets.keys())[0] @@ -199,9 +205,8 @@ def test_estimation_for_batch_update_orders_to_create_spot_orders(self, basic_co estimator = GasLimitEstimator.for_message(message=message) expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT - expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() + assert (expected_order_gas_limit * 2) == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_create_derivative_orders(self, basic_composer): market_id = list(basic_composer.derivative_markets.keys())[0] @@ -235,9 +240,8 @@ def test_estimation_for_batch_update_orders_to_create_derivative_orders(self, ba estimator = GasLimitEstimator.for_message(message=message) expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT - expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() + assert (expected_order_gas_limit * 2) == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_token): market_id = "0x230dcce315364ff6360097838701b14713e2f4007d704df20ed3d81d09eec957" @@ -291,10 +295,9 @@ def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_t ) estimator = GasLimitEstimator.for_message(message=message) - expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT - expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + expected_order_gas_limit = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT - assert (expected_order_gas_limit * 2) + expected_message_gas_limit == estimator.gas_limit() + assert (expected_order_gas_limit * 2) == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self): market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" @@ -326,9 +329,8 @@ def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self): 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() + assert (expected_order_gas_limit * 3) == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self): market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" @@ -360,9 +362,8 @@ def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self): 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() + assert (expected_order_gas_limit * 3) == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_cancel_binary_orders(self): market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" @@ -394,10 +395,9 @@ def test_estimation_for_batch_update_orders_to_cancel_binary_orders(self): ) estimator = GasLimitEstimator.for_message(message=message) - expected_order_gas_limit = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT - expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT + expected_order_gas_limit = BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT - assert (expected_order_gas_limit * 3) + expected_message_gas_limit == estimator.gas_limit() + assert (expected_order_gas_limit * 3) == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_cancel_all_for_spot_market(self): market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" @@ -414,10 +414,11 @@ def test_estimation_for_batch_update_orders_to_cancel_all_for_spot_market(self): ) 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 + expected_gas_limit = ( + BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS * SPOT_ORDER_CANCELATION_GAS_LIMIT + ) - assert expected_gas_limit + expected_message_gas_limit == estimator.gas_limit() + assert expected_gas_limit == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_cancel_all_for_derivative_market(self): market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" @@ -434,10 +435,12 @@ def test_estimation_for_batch_update_orders_to_cancel_all_for_derivative_market( ) 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 + expected_gas_limit = ( + BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS + * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + ) - assert expected_gas_limit + expected_message_gas_limit == estimator.gas_limit() + assert expected_gas_limit == estimator.gas_limit() def test_estimation_for_batch_update_orders_to_cancel_all_for_binary_options_market(self): market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" @@ -454,10 +457,319 @@ def test_estimation_for_batch_update_orders_to_cancel_all_for_binary_options_mar ) 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 + expected_gas_limit = ( + BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS + * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + ) + + assert expected_gas_limit == estimator.gas_limit() + + def test_estimation_for_create_spot_limit_order(self, basic_composer, inj_usdt_spot_market): + composer = basic_composer + market_id = inj_usdt_spot_market.id + + message = composer.msg_create_spot_limit_order( + market_id=market_id, + sender="senders", + 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_cost = SPOT_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + po_order_message = composer.msg_create_spot_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + order_type="BUY_PO", + ) + estimator = GasLimitEstimator.for_message(message=po_order_message) + + expected_gas_cost = POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_spot_market_order(self, basic_composer, inj_usdt_spot_market): + composer = basic_composer + market_id = inj_usdt_spot_market.id + + message = composer.msg_create_spot_market_order( + market_id=market_id, + sender="senders", + 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_cost = SPOT_MARKET_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_cancel_spot_order(self, basic_composer, inj_usdt_spot_market): + composer = basic_composer + market_id = inj_usdt_spot_market.id + + message = composer.msg_cancel_spot_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + cid="cid", + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = SPOT_ORDER_CANCELATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_derivative_limit_order(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + market_id = btc_usdt_perp_market.id + + message = composer.msg_create_derivative_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + margin=Decimal("7.523") * Decimal("0.01"), + order_type="BUY", + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + po_order_message = composer.msg_create_derivative_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + margin=Decimal("7.523") * Decimal("0.01"), + order_type="BUY_PO", + ) + estimator = GasLimitEstimator.for_message(message=po_order_message) + + expected_gas_cost = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_derivative_market_order(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + market_id = btc_usdt_perp_market.id + + message = composer.msg_create_derivative_market_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + margin=Decimal("7.523") * Decimal("0.01"), + order_type="BUY", + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_cancel_derivative_order(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + market_id = btc_usdt_perp_market.id + + message = composer.msg_cancel_derivative_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + cid="cid", + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_binary_options_limit_order(self, basic_composer, first_match_bet_market): + composer = basic_composer + market_id = first_match_bet_market.id + + message = composer.msg_create_binary_options_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("0.5"), + quantity=Decimal("10"), + margin=Decimal("0.5") * Decimal("10"), + order_type="BUY", + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + po_order_message = composer.msg_create_binary_options_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("0.5"), + quantity=Decimal("10"), + margin=Decimal("0.5") * Decimal("10"), + order_type="BUY_PO", + ) + estimator = GasLimitEstimator.for_message(message=po_order_message) + + expected_gas_cost = POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_binary_options_market_order(self, basic_composer, first_match_bet_market): + composer = basic_composer + market_id = first_match_bet_market.id + + message = composer.msg_create_binary_options_market_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("0.5"), + quantity=Decimal("10"), + margin=Decimal("0.5") * Decimal("10"), + order_type="BUY", + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_cancel_binary_options_order(self, basic_composer, first_match_bet_market): + composer = basic_composer + market_id = first_match_bet_market.id + + message = composer.msg_cancel_binary_options_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + cid="cid", + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_deposit(self, basic_composer): + composer = basic_composer + + message = composer.msg_deposit( + sender="senders", + subaccount_id="subaccount_id", + amount=Decimal("10"), + denom=list(composer.tokens.keys())[0], + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = DEPOSIT_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_withdraw(self, basic_composer): + composer = basic_composer + + message = composer.msg_withdraw( + sender="senders", + subaccount_id="subaccount_id", + amount=Decimal("10"), + denom=list(composer.tokens.keys())[0], + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = WITHDRAW_GAS_LIMIT - assert expected_gas_limit + expected_message_gas_limit == estimator.gas_limit() + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_subaccount_transfer(self, basic_composer): + composer = basic_composer + + message = composer.msg_subaccount_transfer( + sender="senders", + source_subaccount_id="subaccount_id", + destination_subaccount_id="destination_subaccount_id", + amount=Decimal("10"), + denom=list(composer.tokens.keys())[0], + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = SUBACCOUNT_TRANSFER_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_external_transfer(self, basic_composer): + composer = basic_composer + + message = composer.msg_external_transfer( + sender="senders", + source_subaccount_id="subaccount_id", + destination_subaccount_id="destination_subaccount_id", + amount=Decimal("10"), + denom=list(composer.tokens.keys())[0], + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = EXTERNAL_TRANSFER_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_increase_position_margin(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + + message = composer.msg_increase_position_margin( + sender="senders", + source_subaccount_id="subaccount_id", + destination_subaccount_id="destination_subaccount_id", + market_id=btc_usdt_perp_market.id, + amount=Decimal("10"), + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_decrease_position_margin(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + + message = composer.msg_decrease_position_margin( + sender="senders", + source_subaccount_id="subaccount_id", + destination_subaccount_id="destination_subaccount_id", + market_id=btc_usdt_perp_market.id, + amount=Decimal("10"), + ) + estimator = GasLimitEstimator.for_message(message=message) + + expected_gas_cost = DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() def test_estimation_for_exec_message(self, basic_composer): market_id = list(basic_composer.spot_markets.keys())[0] @@ -483,13 +795,9 @@ def test_estimation_for_exec_message(self, basic_composer): 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() - ) + assert expected_order_gas_limit + expected_exec_message_gas_limit == estimator.gas_limit() def test_estimation_for_privileged_execute_contract_message(self): message = injective_exchange_tx_pb.MsgPrivilegedExecuteContract() @@ -529,15 +837,11 @@ def test_estimation_for_governance_message(self): assert expected_gas_limit == estimator.gas_limit() 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( + market_id = list(basic_composer.derivative_markets.keys())[0] + message = basic_composer.msg_liquidate_position( sender="sender", market_id=market_id, 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) diff --git a/tests/core/test_message_based_transaction_fee_calculator.py b/tests/core/test_message_based_transaction_fee_calculator.py index 303aa1c9..f6b8b9d0 100644 --- a/tests/core/test_message_based_transaction_fee_calculator.py +++ b/tests/core/test_message_based_transaction_fee_calculator.py @@ -8,9 +8,9 @@ from pyinjective.composer import Composer from pyinjective.core.broadcaster import MessageBasedTransactionFeeCalculator from pyinjective.core.gas_limit_estimator import ( + SPOT_ORDER_CREATION_GAS_LIMIT, DefaultGasLimitEstimator, ExecGasLimitEstimator, - GenericExchangeGasLimitEstimator, PrivilegedExecuteContractGasLimitEstimator, ) from pyinjective.core.network import Network @@ -59,7 +59,7 @@ async def test_gas_fee_for_privileged_execute_contract_message(self): await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) - expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_GAS_LIMIT + expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT expected_gas_limit = math.ceil( PrivilegedExecuteContractGasLimitEstimator.BASIC_REFERENCE_GAS_LIMIT * 6 + expected_transaction_gas_limit ) @@ -87,7 +87,7 @@ async def test_gas_fee_for_execute_contract_message(self): await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) - expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_GAS_LIMIT + expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT expected_gas_limit = math.ceil(Decimal(2.5) * 150_000 + expected_transaction_gas_limit) assert expected_gas_limit == transaction.fee.gas_limit assert str(expected_gas_limit * 5_000_000) == transaction.fee.amount[0].amount @@ -109,7 +109,7 @@ async def test_gas_fee_for_wasm_message(self): await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) - expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_GAS_LIMIT + expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT expected_gas_limit = math.ceil(Decimal(1.5) * 150_000 + expected_transaction_gas_limit) assert expected_gas_limit == transaction.fee.gas_limit assert str(expected_gas_limit * 5_000_000) == transaction.fee.amount[0].amount @@ -131,7 +131,7 @@ async def test_gas_fee_for_governance_message(self): await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) - expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_GAS_LIMIT + expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT expected_gas_limit = math.ceil(Decimal(15) * 150_000 + expected_transaction_gas_limit) assert expected_gas_limit == transaction.fee.gas_limit assert str(expected_gas_limit * 5_000_000) == transaction.fee.amount[0].amount @@ -148,21 +148,17 @@ async def test_gas_fee_for_exchange_message(self, basic_composer): market_id = list(basic_composer.spot_markets.keys())[0] - message = basic_composer.msg_create_spot_limit_order( + message = basic_composer.msg_liquidate_position( sender="sender", - market_id=market_id, subaccount_id="subaccount_id", - fee_recipient="fee_recipient", - price=Decimal("7.523"), - quantity=Decimal("0.01"), - order_type="BUY", + market_id=market_id, ) transaction = Transaction() transaction.with_messages(message) await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) - expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_GAS_LIMIT + expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT expected_gas_limit = math.ceil(Decimal(1) * 120_000 + expected_transaction_gas_limit) assert expected_gas_limit == transaction.fee.gas_limit assert str(expected_gas_limit * 5_000_000) == transaction.fee.amount[0].amount @@ -194,8 +190,8 @@ async def test_gas_fee_for_msg_exec_message(self, basic_composer): await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) - expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_GAS_LIMIT - expected_inner_message_gas_limit = GenericExchangeGasLimitEstimator.BASIC_REFERENCE_GAS_LIMIT + expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT + expected_inner_message_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT expected_exec_message_gas_limit = ExecGasLimitEstimator.DEFAULT_GAS_LIMIT expected_gas_limit = math.ceil( expected_exec_message_gas_limit + expected_inner_message_gas_limit + expected_transaction_gas_limit @@ -233,8 +229,8 @@ async def test_gas_fee_for_two_messages_in_one_transaction(self, basic_composer) await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) - expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_GAS_LIMIT - expected_inner_message_gas_limit = GenericExchangeGasLimitEstimator.BASIC_REFERENCE_GAS_LIMIT + expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT + expected_inner_message_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT expected_exec_message_gas_limit = ExecGasLimitEstimator.DEFAULT_GAS_LIMIT expected_send_message_gas_limit = DefaultGasLimitEstimator.DEFAULT_GAS_LIMIT expected_gas_limit = math.ceil( From 41dda82adabc9f00994ef54548e378bf83c5d3aa Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 17 Mar 2025 15:08:30 -0300 Subject: [PATCH 05/13] cp-235: updated all proto definitions with the candidate indexer and chain core versions for v1.15 chain upgrade --- CHANGELOG.md | 4 + Makefile | 2 +- buf.gen.yaml | 10 +- .../portfolio_rpc/1_AccountPortfolio.py | 2 +- pyinjective/async_client.py | 8 +- .../grpc/indexer_grpc_portfolio_api.py | 8 +- .../exchange/injective_accounts_rpc_pb2.py | 142 +++++----- .../exchange/injective_archiver_rpc_pb2.py | 28 +- .../exchange/injective_auction_rpc_pb2.py | 36 +-- .../exchange/injective_campaign_rpc_pb2.py | 72 ++--- .../proto/exchange/injective_chart_rpc_pb2.py | 34 ++- .../exchange/injective_chart_rpc_pb2_grpc.py | 178 ++++++++++++ .../exchange/injective_explorer_rpc_pb2.py | 262 +++++++++--------- .../injective_explorer_rpc_pb2_grpc.py | 88 ++++++ .../exchange/injective_portfolio_rpc_pb2.py | 44 +-- .../exchange/injective_referral_rpc_pb2.py | 41 +++ .../injective_referral_rpc_pb2_grpc.py | 170 ++++++++++++ .../injective_spot_exchange_rpc_pb2.py | 8 +- pyinjective/proto/google/api/client_pb2.py | 54 ++-- pyinjective/proto/google/api/http_pb2.py | 4 +- pyinjective/proto/google/api/resource_pb2.py | 4 +- .../proto/google/api/visibility_pb2.py | 4 +- .../proto/ibc/core/connection/v1/tx_pb2.py | 56 ++-- .../exchange/v1beta1/exchange_pb2.py | 228 +++++++-------- .../permissions/v1beta1/query_pb2_grpc.py | 24 +- pyproject.toml | 2 +- .../grpc/test_chain_grpc_exchange_api.py | 2 + .../grpc/test_indexer_grpc_account_api.py | 10 + .../grpc/test_indexer_grpc_auction_api.py | 4 + .../grpc/test_indexer_grpc_explorer_api.py | 8 + .../grpc/test_indexer_grpc_portfolio_api.py | 16 +- .../grpc/test_indexer_grpc_spot_api.py | 22 +- .../test_indexer_grpc_account_stream.py | 4 + .../test_indexer_grpc_explorer_stream.py | 2 + 34 files changed, 1088 insertions(+), 493 deletions(-) create mode 100644 pyinjective/proto/exchange/injective_referral_rpc_pb2.py create mode 100644 pyinjective/proto/exchange/injective_referral_rpc_pb2_grpc.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 322c61d2..2b7d2037 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. +## [1.10.0] - 9999-99-99 +### Changed +- Update in the implementation of the gas limit estimator to use the same values as the chain for the fixed gas messages + ## [1.9.0] - 9999-99-99 ### Added - Added support for all new queries and messages from the new Permissions module diff --git a/Makefile b/Makefile index ca05f4cc..360dc288 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ clean-all: $(call clean_repos) clone-injective-indexer: - git clone https://github.com/InjectiveLabs/injective-indexer.git -b v1.13.117_RC1 --depth 1 --single-branch + git clone https://github.com/InjectiveLabs/injective-indexer.git -b v1.14.25 --depth 1 --single-branch clone-all: clone-injective-indexer diff --git a/buf.gen.yaml b/buf.gen.yaml index 580c2310..1421c939 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.9-inj-2 + tag: v0.50.9-inj-4 - git_repo: https://github.com/InjectiveLabs/ibc-go - tag: v8.3.2-inj-0 + tag: v8.6.1-inj - git_repo: https://github.com/InjectiveLabs/wasmd - tag: v0.53.2-inj-1 + tag: v0.53.2-inj.2 # - 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 +# tag: v1.15.0-alpha # subdir: proto - git_repo: https://github.com/InjectiveLabs/injective-core - branch: testnet + branch: master subdir: proto - directory: proto diff --git a/examples/exchange_client/portfolio_rpc/1_AccountPortfolio.py b/examples/exchange_client/portfolio_rpc/1_AccountPortfolio.py index ea6ef020..f1cf0739 100644 --- a/examples/exchange_client/portfolio_rpc/1_AccountPortfolio.py +++ b/examples/exchange_client/portfolio_rpc/1_AccountPortfolio.py @@ -9,7 +9,7 @@ async def main() -> None: network = Network.testnet() client = AsyncClient(network) account_address = "inj1clw20s2uxeyxtam6f7m84vgae92s9eh7vygagt" - portfolio = await client.fetch_account_portfolio_balances(account_address=account_address) + portfolio = await client.fetch_account_portfolio_balances(account_address=account_address, usd=False) print(portfolio) diff --git a/pyinjective/async_client.py b/pyinjective/async_client.py index 5327c6f3..68b6e3c9 100644 --- a/pyinjective/async_client.py +++ b/pyinjective/async_client.py @@ -2037,8 +2037,12 @@ 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 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 fetch_account_portfolio_balances( + self, account_address: str, usd: Optional[bool] = None + ) -> Dict[str, Any]: + return await self.exchange_portfolio_api.fetch_account_portfolio_balances( + account_address=account_address, usd=usd + ) async def listen_account_portfolio_updates( self, diff --git a/pyinjective/client/indexer/grpc/indexer_grpc_portfolio_api.py b/pyinjective/client/indexer/grpc/indexer_grpc_portfolio_api.py index d9d7460c..4a5cab86 100644 --- a/pyinjective/client/indexer/grpc/indexer_grpc_portfolio_api.py +++ b/pyinjective/client/indexer/grpc/indexer_grpc_portfolio_api.py @@ -1,4 +1,4 @@ -from typing import Any, Callable, Dict +from typing import Any, Callable, Dict, Optional from grpc.aio import Channel @@ -21,8 +21,10 @@ async def fetch_account_portfolio(self, account_address: str) -> Dict[str, Any]: return response - async def fetch_account_portfolio_balances(self, account_address: str) -> Dict[str, Any]: - request = exchange_portfolio_pb.AccountPortfolioBalancesRequest(account_address=account_address) + async def fetch_account_portfolio_balances( + self, account_address: str, usd: Optional[bool] = None + ) -> Dict[str, Any]: + request = exchange_portfolio_pb.AccountPortfolioBalancesRequest(account_address=account_address, usd=usd) response = await self._execute_call(call=self._stub.AccountPortfolioBalances, request=request) return response diff --git a/pyinjective/proto/exchange/injective_accounts_rpc_pb2.py b/pyinjective/proto/exchange/injective_accounts_rpc_pb2.py index c393e7af..232fb9bd 100644 --- a/pyinjective/proto/exchange/injective_accounts_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_accounts_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_accounts_rpc.proto\x12\x16injective_accounts_rpc\";\n\x10PortfolioRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\"[\n\x11PortfolioResponse\x12\x46\n\tportfolio\x18\x01 \x01(\x0b\x32(.injective_accounts_rpc.AccountPortfolioR\tportfolio\"\x85\x02\n\x10\x41\x63\x63ountPortfolio\x12\'\n\x0fportfolio_value\x18\x01 \x01(\tR\x0eportfolioValue\x12+\n\x11\x61vailable_balance\x18\x02 \x01(\tR\x10\x61vailableBalance\x12%\n\x0elocked_balance\x18\x03 \x01(\tR\rlockedBalance\x12%\n\x0eunrealized_pnl\x18\x04 \x01(\tR\runrealizedPnl\x12M\n\x0bsubaccounts\x18\x05 \x03(\x0b\x32+.injective_accounts_rpc.SubaccountPortfolioR\x0bsubaccounts\"\xb5\x01\n\x13SubaccountPortfolio\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12+\n\x11\x61vailable_balance\x18\x02 \x01(\tR\x10\x61vailableBalance\x12%\n\x0elocked_balance\x18\x03 \x01(\tR\rlockedBalance\x12%\n\x0eunrealized_pnl\x18\x04 \x01(\tR\runrealizedPnl\"x\n\x12OrderStatesRequest\x12*\n\x11spot_order_hashes\x18\x01 \x03(\tR\x0fspotOrderHashes\x12\x36\n\x17\x64\x65rivative_order_hashes\x18\x02 \x03(\tR\x15\x64\x65rivativeOrderHashes\"\xcd\x01\n\x13OrderStatesResponse\x12T\n\x11spot_order_states\x18\x01 \x03(\x0b\x32(.injective_accounts_rpc.OrderStateRecordR\x0fspotOrderStates\x12`\n\x17\x64\x65rivative_order_states\x18\x02 \x03(\x0b\x32(.injective_accounts_rpc.OrderStateRecordR\x15\x64\x65rivativeOrderStates\"\x8b\x03\n\x10OrderStateRecord\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x1d\n\norder_type\x18\x04 \x01(\tR\torderType\x12\x1d\n\norder_side\x18\x05 \x01(\tR\torderSide\x12\x14\n\x05state\x18\x06 \x01(\tR\x05state\x12\'\n\x0fquantity_filled\x18\x07 \x01(\tR\x0equantityFilled\x12-\n\x12quantity_remaining\x18\x08 \x01(\tR\x11quantityRemaining\x12\x1d\n\ncreated_at\x18\t \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\n \x01(\x12R\tupdatedAt\x12\x14\n\x05price\x18\x0b \x01(\tR\x05price\x12\x16\n\x06margin\x18\x0c \x01(\tR\x06margin\"A\n\x16SubaccountsListRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\";\n\x17SubaccountsListResponse\x12 \n\x0bsubaccounts\x18\x01 \x03(\tR\x0bsubaccounts\"\\\n\x1dSubaccountBalancesListRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x16\n\x06\x64\x65noms\x18\x02 \x03(\tR\x06\x64\x65noms\"g\n\x1eSubaccountBalancesListResponse\x12\x45\n\x08\x62\x61lances\x18\x01 \x03(\x0b\x32).injective_accounts_rpc.SubaccountBalanceR\x08\x62\x61lances\"\xbc\x01\n\x11SubaccountBalance\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x14\n\x05\x64\x65nom\x18\x03 \x01(\tR\x05\x64\x65nom\x12\x43\n\x07\x64\x65posit\x18\x04 \x01(\x0b\x32).injective_accounts_rpc.SubaccountDepositR\x07\x64\x65posit\"e\n\x11SubaccountDeposit\x12#\n\rtotal_balance\x18\x01 \x01(\tR\x0ctotalBalance\x12+\n\x11\x61vailable_balance\x18\x02 \x01(\tR\x10\x61vailableBalance\"]\n SubaccountBalanceEndpointRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\"h\n!SubaccountBalanceEndpointResponse\x12\x43\n\x07\x62\x61lance\x18\x01 \x01(\x0b\x32).injective_accounts_rpc.SubaccountBalanceR\x07\x62\x61lance\"]\n\x1eStreamSubaccountBalanceRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x16\n\x06\x64\x65noms\x18\x02 \x03(\tR\x06\x64\x65noms\"\x84\x01\n\x1fStreamSubaccountBalanceResponse\x12\x43\n\x07\x62\x61lance\x18\x01 \x01(\x0b\x32).injective_accounts_rpc.SubaccountBalanceR\x07\x62\x61lance\x12\x1c\n\ttimestamp\x18\x02 \x01(\x12R\ttimestamp\"\xc1\x01\n\x18SubaccountHistoryRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12%\n\x0etransfer_types\x18\x03 \x03(\tR\rtransferTypes\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x19\n\x08\x65nd_time\x18\x06 \x01(\x12R\x07\x65ndTime\"\xa4\x01\n\x19SubaccountHistoryResponse\x12O\n\ttransfers\x18\x01 \x03(\x0b\x32\x31.injective_accounts_rpc.SubaccountBalanceTransferR\ttransfers\x12\x36\n\x06paging\x18\x02 \x01(\x0b\x32\x1e.injective_accounts_rpc.PagingR\x06paging\"\xd5\x02\n\x19SubaccountBalanceTransfer\x12#\n\rtransfer_type\x18\x01 \x01(\tR\x0ctransferType\x12*\n\x11src_subaccount_id\x18\x02 \x01(\tR\x0fsrcSubaccountId\x12.\n\x13src_account_address\x18\x03 \x01(\tR\x11srcAccountAddress\x12*\n\x11\x64st_subaccount_id\x18\x04 \x01(\tR\x0f\x64stSubaccountId\x12.\n\x13\x64st_account_address\x18\x05 \x01(\tR\x11\x64stAccountAddress\x12:\n\x06\x61mount\x18\x06 \x01(\x0b\x32\".injective_accounts_rpc.CosmosCoinR\x06\x61mount\x12\x1f\n\x0b\x65xecuted_at\x18\x07 \x01(\x12R\nexecutedAt\":\n\nCosmosCoin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\x8a\x01\n\x1dSubaccountOrderSummaryRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\'\n\x0forder_direction\x18\x03 \x01(\tR\x0eorderDirection\"\x84\x01\n\x1eSubaccountOrderSummaryResponse\x12*\n\x11spot_orders_total\x18\x01 \x01(\x12R\x0fspotOrdersTotal\x12\x36\n\x17\x64\x65rivative_orders_total\x18\x02 \x01(\x12R\x15\x64\x65rivativeOrdersTotal\"O\n\x0eRewardsRequest\x12\x14\n\x05\x65poch\x18\x01 \x01(\x12R\x05\x65poch\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\"K\n\x0fRewardsResponse\x12\x38\n\x07rewards\x18\x01 \x03(\x0b\x32\x1e.injective_accounts_rpc.RewardR\x07rewards\"\x90\x01\n\x06Reward\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x36\n\x07rewards\x18\x02 \x03(\x0b\x32\x1c.injective_accounts_rpc.CoinR\x07rewards\x12%\n\x0e\x64istributed_at\x18\x03 \x01(\x12R\rdistributedAt\"4\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"C\n\x18StreamAccountDataRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\"\xde\x03\n\x19StreamAccountDataResponse\x12^\n\x12subaccount_balance\x18\x01 \x01(\x0b\x32/.injective_accounts_rpc.SubaccountBalanceResultR\x11subaccountBalance\x12\x43\n\x08position\x18\x02 \x01(\x0b\x32\'.injective_accounts_rpc.PositionsResultR\x08position\x12\x39\n\x05trade\x18\x03 \x01(\x0b\x32#.injective_accounts_rpc.TradeResultR\x05trade\x12\x39\n\x05order\x18\x04 \x01(\x0b\x32#.injective_accounts_rpc.OrderResultR\x05order\x12O\n\rorder_history\x18\x05 \x01(\x0b\x32*.injective_accounts_rpc.OrderHistoryResultR\x0corderHistory\x12U\n\x0f\x66unding_payment\x18\x06 \x01(\x0b\x32,.injective_accounts_rpc.FundingPaymentResultR\x0e\x66undingPayment\"|\n\x17SubaccountBalanceResult\x12\x43\n\x07\x62\x61lance\x18\x01 \x01(\x0b\x32).injective_accounts_rpc.SubaccountBalanceR\x07\x62\x61lance\x12\x1c\n\ttimestamp\x18\x02 \x01(\x12R\ttimestamp\"m\n\x0fPositionsResult\x12<\n\x08position\x18\x01 \x01(\x0b\x32 .injective_accounts_rpc.PositionR\x08position\x12\x1c\n\ttimestamp\x18\x02 \x01(\x12R\ttimestamp\"\xe1\x02\n\x08Position\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1c\n\tdirection\x18\x04 \x01(\tR\tdirection\x12\x1a\n\x08quantity\x18\x05 \x01(\tR\x08quantity\x12\x1f\n\x0b\x65ntry_price\x18\x06 \x01(\tR\nentryPrice\x12\x16\n\x06margin\x18\x07 \x01(\tR\x06margin\x12+\n\x11liquidation_price\x18\x08 \x01(\tR\x10liquidationPrice\x12\x1d\n\nmark_price\x18\t \x01(\tR\tmarkPrice\x12\x1d\n\nupdated_at\x18\n \x01(\x12R\tupdatedAt\x12\x1d\n\ncreated_at\x18\x0b \x01(\x12R\tcreatedAt\"\xf5\x01\n\x0bTradeResult\x12\x42\n\nspot_trade\x18\x01 \x01(\x0b\x32!.injective_accounts_rpc.SpotTradeH\x00R\tspotTrade\x12T\n\x10\x64\x65rivative_trade\x18\x02 \x01(\x0b\x32\'.injective_accounts_rpc.DerivativeTradeH\x00R\x0f\x64\x65rivativeTrade\x12%\n\x0eoperation_type\x18\x03 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestampB\x07\n\x05trade\"\xad\x03\n\tSpotTrade\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x30\n\x14trade_execution_type\x18\x04 \x01(\tR\x12tradeExecutionType\x12\'\n\x0ftrade_direction\x18\x05 \x01(\tR\x0etradeDirection\x12\x38\n\x05price\x18\x06 \x01(\x0b\x32\".injective_accounts_rpc.PriceLevelR\x05price\x12\x10\n\x03\x66\x65\x65\x18\x07 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\x08 \x01(\x12R\nexecutedAt\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12\x19\n\x08trade_id\x18\n \x01(\tR\x07tradeId\x12%\n\x0e\x65xecution_side\x18\x0b \x01(\tR\rexecutionSide\x12\x10\n\x03\x63id\x18\x0c \x01(\tR\x03\x63id\"\\\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\xdd\x03\n\x0f\x44\x65rivativeTrade\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x30\n\x14trade_execution_type\x18\x04 \x01(\tR\x12tradeExecutionType\x12%\n\x0eis_liquidation\x18\x05 \x01(\x08R\risLiquidation\x12L\n\x0eposition_delta\x18\x06 \x01(\x0b\x32%.injective_accounts_rpc.PositionDeltaR\rpositionDelta\x12\x16\n\x06payout\x18\x07 \x01(\tR\x06payout\x12\x10\n\x03\x66\x65\x65\x18\x08 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\t \x01(\x12R\nexecutedAt\x12#\n\rfee_recipient\x18\n \x01(\tR\x0c\x66\x65\x65Recipient\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\x12%\n\x0e\x65xecution_side\x18\x0c \x01(\tR\rexecutionSide\x12\x10\n\x03\x63id\x18\r \x01(\tR\x03\x63id\"\xbb\x01\n\rPositionDelta\x12\'\n\x0ftrade_direction\x18\x01 \x01(\tR\x0etradeDirection\x12\'\n\x0f\x65xecution_price\x18\x02 \x01(\tR\x0e\x65xecutionPrice\x12-\n\x12\x65xecution_quantity\x18\x03 \x01(\tR\x11\x65xecutionQuantity\x12)\n\x10\x65xecution_margin\x18\x04 \x01(\tR\x0f\x65xecutionMargin\"\xff\x01\n\x0bOrderResult\x12G\n\nspot_order\x18\x01 \x01(\x0b\x32&.injective_accounts_rpc.SpotLimitOrderH\x00R\tspotOrder\x12Y\n\x10\x64\x65rivative_order\x18\x02 \x01(\x0b\x32,.injective_accounts_rpc.DerivativeLimitOrderH\x00R\x0f\x64\x65rivativeOrder\x12%\n\x0eoperation_type\x18\x03 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestampB\x07\n\x05order\"\xb8\x03\n\x0eSpotLimitOrder\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x14\n\x05price\x18\x05 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x06 \x01(\tR\x08quantity\x12+\n\x11unfilled_quantity\x18\x07 \x01(\tR\x10unfilledQuantity\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12\x14\n\x05state\x18\n \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0b \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0c \x01(\x12R\tupdatedAt\x12\x17\n\x07tx_hash\x18\r \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\"\xd7\x05\n\x14\x44\x65rivativeLimitOrder\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12$\n\x0eis_reduce_only\x18\x05 \x01(\x08R\x0cisReduceOnly\x12\x16\n\x06margin\x18\x06 \x01(\tR\x06margin\x12\x14\n\x05price\x18\x07 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x08 \x01(\tR\x08quantity\x12+\n\x11unfilled_quantity\x18\t \x01(\tR\x10unfilledQuantity\x12#\n\rtrigger_price\x18\n \x01(\tR\x0ctriggerPrice\x12#\n\rfee_recipient\x18\x0b \x01(\tR\x0c\x66\x65\x65Recipient\x12\x14\n\x05state\x18\x0c \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\r \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0e \x01(\x12R\tupdatedAt\x12!\n\x0corder_number\x18\x0f \x01(\x12R\x0borderNumber\x12\x1d\n\norder_type\x18\x10 \x01(\tR\torderType\x12%\n\x0eis_conditional\x18\x11 \x01(\x08R\risConditional\x12\x1d\n\ntrigger_at\x18\x12 \x01(\x04R\ttriggerAt\x12*\n\x11placed_order_hash\x18\x13 \x01(\tR\x0fplacedOrderHash\x12%\n\x0e\x65xecution_type\x18\x14 \x01(\tR\rexecutionType\x12\x17\n\x07tx_hash\x18\x15 \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x16 \x01(\tR\x03\x63id\"\xb0\x02\n\x12OrderHistoryResult\x12X\n\x12spot_order_history\x18\x01 \x01(\x0b\x32(.injective_accounts_rpc.SpotOrderHistoryH\x00R\x10spotOrderHistory\x12j\n\x18\x64\x65rivative_order_history\x18\x02 \x01(\x0b\x32..injective_accounts_rpc.DerivativeOrderHistoryH\x00R\x16\x64\x65rivativeOrderHistory\x12%\n\x0eoperation_type\x18\x03 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestampB\x0f\n\rorder_history\"\xf3\x03\n\x10SpotOrderHistory\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1b\n\tis_active\x18\x03 \x01(\x08R\x08isActive\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12%\n\x0e\x65xecution_type\x18\x05 \x01(\tR\rexecutionType\x12\x1d\n\norder_type\x18\x06 \x01(\tR\torderType\x12\x14\n\x05price\x18\x07 \x01(\tR\x05price\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12\x1a\n\x08quantity\x18\t \x01(\tR\x08quantity\x12\'\n\x0f\x66illed_quantity\x18\n \x01(\tR\x0e\x66illedQuantity\x12\x14\n\x05state\x18\x0b \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0c \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\r \x01(\x12R\tupdatedAt\x12\x1c\n\tdirection\x18\x0e \x01(\tR\tdirection\x12\x17\n\x07tx_hash\x18\x0f \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x10 \x01(\tR\x03\x63id\"\xa9\x05\n\x16\x44\x65rivativeOrderHistory\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1b\n\tis_active\x18\x03 \x01(\x08R\x08isActive\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12%\n\x0e\x65xecution_type\x18\x05 \x01(\tR\rexecutionType\x12\x1d\n\norder_type\x18\x06 \x01(\tR\torderType\x12\x14\n\x05price\x18\x07 \x01(\tR\x05price\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12\x1a\n\x08quantity\x18\t \x01(\tR\x08quantity\x12\'\n\x0f\x66illed_quantity\x18\n \x01(\tR\x0e\x66illedQuantity\x12\x14\n\x05state\x18\x0b \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0c \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\r \x01(\x12R\tupdatedAt\x12$\n\x0eis_reduce_only\x18\x0e \x01(\x08R\x0cisReduceOnly\x12\x1c\n\tdirection\x18\x0f \x01(\tR\tdirection\x12%\n\x0eis_conditional\x18\x10 \x01(\x08R\risConditional\x12\x1d\n\ntrigger_at\x18\x11 \x01(\x04R\ttriggerAt\x12*\n\x11placed_order_hash\x18\x12 \x01(\tR\x0fplacedOrderHash\x12\x16\n\x06margin\x18\x13 \x01(\tR\x06margin\x12\x17\n\x07tx_hash\x18\x14 \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x15 \x01(\tR\x03\x63id\"\xae\x01\n\x14\x46undingPaymentResult\x12Q\n\x10\x66unding_payments\x18\x01 \x01(\x0b\x32&.injective_accounts_rpc.FundingPaymentR\x0f\x66undingPayments\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp\"\x88\x01\n\x0e\x46undingPayment\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp2\xdc\t\n\x14InjectiveAccountsRPC\x12`\n\tPortfolio\x12(.injective_accounts_rpc.PortfolioRequest\x1a).injective_accounts_rpc.PortfolioResponse\x12\x66\n\x0bOrderStates\x12*.injective_accounts_rpc.OrderStatesRequest\x1a+.injective_accounts_rpc.OrderStatesResponse\x12r\n\x0fSubaccountsList\x12..injective_accounts_rpc.SubaccountsListRequest\x1a/.injective_accounts_rpc.SubaccountsListResponse\x12\x87\x01\n\x16SubaccountBalancesList\x12\x35.injective_accounts_rpc.SubaccountBalancesListRequest\x1a\x36.injective_accounts_rpc.SubaccountBalancesListResponse\x12\x90\x01\n\x19SubaccountBalanceEndpoint\x12\x38.injective_accounts_rpc.SubaccountBalanceEndpointRequest\x1a\x39.injective_accounts_rpc.SubaccountBalanceEndpointResponse\x12\x8c\x01\n\x17StreamSubaccountBalance\x12\x36.injective_accounts_rpc.StreamSubaccountBalanceRequest\x1a\x37.injective_accounts_rpc.StreamSubaccountBalanceResponse0\x01\x12x\n\x11SubaccountHistory\x12\x30.injective_accounts_rpc.SubaccountHistoryRequest\x1a\x31.injective_accounts_rpc.SubaccountHistoryResponse\x12\x87\x01\n\x16SubaccountOrderSummary\x12\x35.injective_accounts_rpc.SubaccountOrderSummaryRequest\x1a\x36.injective_accounts_rpc.SubaccountOrderSummaryResponse\x12Z\n\x07Rewards\x12&.injective_accounts_rpc.RewardsRequest\x1a\'.injective_accounts_rpc.RewardsResponse\x12z\n\x11StreamAccountData\x12\x30.injective_accounts_rpc.StreamAccountDataRequest\x1a\x31.injective_accounts_rpc.StreamAccountDataResponse0\x01\x42\xc2\x01\n\x1a\x63om.injective_accounts_rpcB\x19InjectiveAccountsRpcProtoP\x01Z\x19/injective_accounts_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveAccountsRpc\xca\x02\x14InjectiveAccountsRpc\xe2\x02 InjectiveAccountsRpc\\GPBMetadata\xea\x02\x14InjectiveAccountsRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_accounts_rpc.proto\x12\x16injective_accounts_rpc\";\n\x10PortfolioRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\"[\n\x11PortfolioResponse\x12\x46\n\tportfolio\x18\x01 \x01(\x0b\x32(.injective_accounts_rpc.AccountPortfolioR\tportfolio\"\x85\x02\n\x10\x41\x63\x63ountPortfolio\x12\'\n\x0fportfolio_value\x18\x01 \x01(\tR\x0eportfolioValue\x12+\n\x11\x61vailable_balance\x18\x02 \x01(\tR\x10\x61vailableBalance\x12%\n\x0elocked_balance\x18\x03 \x01(\tR\rlockedBalance\x12%\n\x0eunrealized_pnl\x18\x04 \x01(\tR\runrealizedPnl\x12M\n\x0bsubaccounts\x18\x05 \x03(\x0b\x32+.injective_accounts_rpc.SubaccountPortfolioR\x0bsubaccounts\"\xb5\x01\n\x13SubaccountPortfolio\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12+\n\x11\x61vailable_balance\x18\x02 \x01(\tR\x10\x61vailableBalance\x12%\n\x0elocked_balance\x18\x03 \x01(\tR\rlockedBalance\x12%\n\x0eunrealized_pnl\x18\x04 \x01(\tR\runrealizedPnl\"x\n\x12OrderStatesRequest\x12*\n\x11spot_order_hashes\x18\x01 \x03(\tR\x0fspotOrderHashes\x12\x36\n\x17\x64\x65rivative_order_hashes\x18\x02 \x03(\tR\x15\x64\x65rivativeOrderHashes\"\xcd\x01\n\x13OrderStatesResponse\x12T\n\x11spot_order_states\x18\x01 \x03(\x0b\x32(.injective_accounts_rpc.OrderStateRecordR\x0fspotOrderStates\x12`\n\x17\x64\x65rivative_order_states\x18\x02 \x03(\x0b\x32(.injective_accounts_rpc.OrderStateRecordR\x15\x64\x65rivativeOrderStates\"\x8b\x03\n\x10OrderStateRecord\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x1d\n\norder_type\x18\x04 \x01(\tR\torderType\x12\x1d\n\norder_side\x18\x05 \x01(\tR\torderSide\x12\x14\n\x05state\x18\x06 \x01(\tR\x05state\x12\'\n\x0fquantity_filled\x18\x07 \x01(\tR\x0equantityFilled\x12-\n\x12quantity_remaining\x18\x08 \x01(\tR\x11quantityRemaining\x12\x1d\n\ncreated_at\x18\t \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\n \x01(\x12R\tupdatedAt\x12\x14\n\x05price\x18\x0b \x01(\tR\x05price\x12\x16\n\x06margin\x18\x0c \x01(\tR\x06margin\"A\n\x16SubaccountsListRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\";\n\x17SubaccountsListResponse\x12 \n\x0bsubaccounts\x18\x01 \x03(\tR\x0bsubaccounts\"\\\n\x1dSubaccountBalancesListRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x16\n\x06\x64\x65noms\x18\x02 \x03(\tR\x06\x64\x65noms\"g\n\x1eSubaccountBalancesListResponse\x12\x45\n\x08\x62\x61lances\x18\x01 \x03(\x0b\x32).injective_accounts_rpc.SubaccountBalanceR\x08\x62\x61lances\"\xbc\x01\n\x11SubaccountBalance\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x14\n\x05\x64\x65nom\x18\x03 \x01(\tR\x05\x64\x65nom\x12\x43\n\x07\x64\x65posit\x18\x04 \x01(\x0b\x32).injective_accounts_rpc.SubaccountDepositR\x07\x64\x65posit\"\xc5\x01\n\x11SubaccountDeposit\x12#\n\rtotal_balance\x18\x01 \x01(\tR\x0ctotalBalance\x12+\n\x11\x61vailable_balance\x18\x02 \x01(\tR\x10\x61vailableBalance\x12*\n\x11total_balance_usd\x18\x03 \x01(\tR\x0ftotalBalanceUsd\x12\x32\n\x15\x61vailable_balance_usd\x18\x04 \x01(\tR\x13\x61vailableBalanceUsd\"]\n SubaccountBalanceEndpointRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\"h\n!SubaccountBalanceEndpointResponse\x12\x43\n\x07\x62\x61lance\x18\x01 \x01(\x0b\x32).injective_accounts_rpc.SubaccountBalanceR\x07\x62\x61lance\"]\n\x1eStreamSubaccountBalanceRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x16\n\x06\x64\x65noms\x18\x02 \x03(\tR\x06\x64\x65noms\"\x84\x01\n\x1fStreamSubaccountBalanceResponse\x12\x43\n\x07\x62\x61lance\x18\x01 \x01(\x0b\x32).injective_accounts_rpc.SubaccountBalanceR\x07\x62\x61lance\x12\x1c\n\ttimestamp\x18\x02 \x01(\x12R\ttimestamp\"\xc1\x01\n\x18SubaccountHistoryRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12%\n\x0etransfer_types\x18\x03 \x03(\tR\rtransferTypes\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x19\n\x08\x65nd_time\x18\x06 \x01(\x12R\x07\x65ndTime\"\xa4\x01\n\x19SubaccountHistoryResponse\x12O\n\ttransfers\x18\x01 \x03(\x0b\x32\x31.injective_accounts_rpc.SubaccountBalanceTransferR\ttransfers\x12\x36\n\x06paging\x18\x02 \x01(\x0b\x32\x1e.injective_accounts_rpc.PagingR\x06paging\"\xd5\x02\n\x19SubaccountBalanceTransfer\x12#\n\rtransfer_type\x18\x01 \x01(\tR\x0ctransferType\x12*\n\x11src_subaccount_id\x18\x02 \x01(\tR\x0fsrcSubaccountId\x12.\n\x13src_account_address\x18\x03 \x01(\tR\x11srcAccountAddress\x12*\n\x11\x64st_subaccount_id\x18\x04 \x01(\tR\x0f\x64stSubaccountId\x12.\n\x13\x64st_account_address\x18\x05 \x01(\tR\x11\x64stAccountAddress\x12:\n\x06\x61mount\x18\x06 \x01(\x0b\x32\".injective_accounts_rpc.CosmosCoinR\x06\x61mount\x12\x1f\n\x0b\x65xecuted_at\x18\x07 \x01(\x12R\nexecutedAt\":\n\nCosmosCoin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\x8a\x01\n\x1dSubaccountOrderSummaryRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\'\n\x0forder_direction\x18\x03 \x01(\tR\x0eorderDirection\"\x84\x01\n\x1eSubaccountOrderSummaryResponse\x12*\n\x11spot_orders_total\x18\x01 \x01(\x12R\x0fspotOrdersTotal\x12\x36\n\x17\x64\x65rivative_orders_total\x18\x02 \x01(\x12R\x15\x64\x65rivativeOrdersTotal\"O\n\x0eRewardsRequest\x12\x14\n\x05\x65poch\x18\x01 \x01(\x12R\x05\x65poch\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\"K\n\x0fRewardsResponse\x12\x38\n\x07rewards\x18\x01 \x03(\x0b\x32\x1e.injective_accounts_rpc.RewardR\x07rewards\"\x90\x01\n\x06Reward\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x36\n\x07rewards\x18\x02 \x03(\x0b\x32\x1c.injective_accounts_rpc.CoinR\x07rewards\x12%\n\x0e\x64istributed_at\x18\x03 \x01(\x12R\rdistributedAt\"Q\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x1b\n\tusd_value\x18\x03 \x01(\tR\x08usdValue\"C\n\x18StreamAccountDataRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\"\xde\x03\n\x19StreamAccountDataResponse\x12^\n\x12subaccount_balance\x18\x01 \x01(\x0b\x32/.injective_accounts_rpc.SubaccountBalanceResultR\x11subaccountBalance\x12\x43\n\x08position\x18\x02 \x01(\x0b\x32\'.injective_accounts_rpc.PositionsResultR\x08position\x12\x39\n\x05trade\x18\x03 \x01(\x0b\x32#.injective_accounts_rpc.TradeResultR\x05trade\x12\x39\n\x05order\x18\x04 \x01(\x0b\x32#.injective_accounts_rpc.OrderResultR\x05order\x12O\n\rorder_history\x18\x05 \x01(\x0b\x32*.injective_accounts_rpc.OrderHistoryResultR\x0corderHistory\x12U\n\x0f\x66unding_payment\x18\x06 \x01(\x0b\x32,.injective_accounts_rpc.FundingPaymentResultR\x0e\x66undingPayment\"|\n\x17SubaccountBalanceResult\x12\x43\n\x07\x62\x61lance\x18\x01 \x01(\x0b\x32).injective_accounts_rpc.SubaccountBalanceR\x07\x62\x61lance\x12\x1c\n\ttimestamp\x18\x02 \x01(\x12R\ttimestamp\"m\n\x0fPositionsResult\x12<\n\x08position\x18\x01 \x01(\x0b\x32 .injective_accounts_rpc.PositionR\x08position\x12\x1c\n\ttimestamp\x18\x02 \x01(\x12R\ttimestamp\"\xe1\x02\n\x08Position\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1c\n\tdirection\x18\x04 \x01(\tR\tdirection\x12\x1a\n\x08quantity\x18\x05 \x01(\tR\x08quantity\x12\x1f\n\x0b\x65ntry_price\x18\x06 \x01(\tR\nentryPrice\x12\x16\n\x06margin\x18\x07 \x01(\tR\x06margin\x12+\n\x11liquidation_price\x18\x08 \x01(\tR\x10liquidationPrice\x12\x1d\n\nmark_price\x18\t \x01(\tR\tmarkPrice\x12\x1d\n\nupdated_at\x18\n \x01(\x12R\tupdatedAt\x12\x1d\n\ncreated_at\x18\x0b \x01(\x12R\tcreatedAt\"\xf5\x01\n\x0bTradeResult\x12\x42\n\nspot_trade\x18\x01 \x01(\x0b\x32!.injective_accounts_rpc.SpotTradeH\x00R\tspotTrade\x12T\n\x10\x64\x65rivative_trade\x18\x02 \x01(\x0b\x32\'.injective_accounts_rpc.DerivativeTradeH\x00R\x0f\x64\x65rivativeTrade\x12%\n\x0eoperation_type\x18\x03 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestampB\x07\n\x05trade\"\xad\x03\n\tSpotTrade\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x30\n\x14trade_execution_type\x18\x04 \x01(\tR\x12tradeExecutionType\x12\'\n\x0ftrade_direction\x18\x05 \x01(\tR\x0etradeDirection\x12\x38\n\x05price\x18\x06 \x01(\x0b\x32\".injective_accounts_rpc.PriceLevelR\x05price\x12\x10\n\x03\x66\x65\x65\x18\x07 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\x08 \x01(\x12R\nexecutedAt\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12\x19\n\x08trade_id\x18\n \x01(\tR\x07tradeId\x12%\n\x0e\x65xecution_side\x18\x0b \x01(\tR\rexecutionSide\x12\x10\n\x03\x63id\x18\x0c \x01(\tR\x03\x63id\"\\\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\xdd\x03\n\x0f\x44\x65rivativeTrade\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x30\n\x14trade_execution_type\x18\x04 \x01(\tR\x12tradeExecutionType\x12%\n\x0eis_liquidation\x18\x05 \x01(\x08R\risLiquidation\x12L\n\x0eposition_delta\x18\x06 \x01(\x0b\x32%.injective_accounts_rpc.PositionDeltaR\rpositionDelta\x12\x16\n\x06payout\x18\x07 \x01(\tR\x06payout\x12\x10\n\x03\x66\x65\x65\x18\x08 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\t \x01(\x12R\nexecutedAt\x12#\n\rfee_recipient\x18\n \x01(\tR\x0c\x66\x65\x65Recipient\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\x12%\n\x0e\x65xecution_side\x18\x0c \x01(\tR\rexecutionSide\x12\x10\n\x03\x63id\x18\r \x01(\tR\x03\x63id\"\xbb\x01\n\rPositionDelta\x12\'\n\x0ftrade_direction\x18\x01 \x01(\tR\x0etradeDirection\x12\'\n\x0f\x65xecution_price\x18\x02 \x01(\tR\x0e\x65xecutionPrice\x12-\n\x12\x65xecution_quantity\x18\x03 \x01(\tR\x11\x65xecutionQuantity\x12)\n\x10\x65xecution_margin\x18\x04 \x01(\tR\x0f\x65xecutionMargin\"\xff\x01\n\x0bOrderResult\x12G\n\nspot_order\x18\x01 \x01(\x0b\x32&.injective_accounts_rpc.SpotLimitOrderH\x00R\tspotOrder\x12Y\n\x10\x64\x65rivative_order\x18\x02 \x01(\x0b\x32,.injective_accounts_rpc.DerivativeLimitOrderH\x00R\x0f\x64\x65rivativeOrder\x12%\n\x0eoperation_type\x18\x03 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestampB\x07\n\x05order\"\xb8\x03\n\x0eSpotLimitOrder\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x14\n\x05price\x18\x05 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x06 \x01(\tR\x08quantity\x12+\n\x11unfilled_quantity\x18\x07 \x01(\tR\x10unfilledQuantity\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12\x14\n\x05state\x18\n \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0b \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0c \x01(\x12R\tupdatedAt\x12\x17\n\x07tx_hash\x18\r \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\"\xd7\x05\n\x14\x44\x65rivativeLimitOrder\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12$\n\x0eis_reduce_only\x18\x05 \x01(\x08R\x0cisReduceOnly\x12\x16\n\x06margin\x18\x06 \x01(\tR\x06margin\x12\x14\n\x05price\x18\x07 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x08 \x01(\tR\x08quantity\x12+\n\x11unfilled_quantity\x18\t \x01(\tR\x10unfilledQuantity\x12#\n\rtrigger_price\x18\n \x01(\tR\x0ctriggerPrice\x12#\n\rfee_recipient\x18\x0b \x01(\tR\x0c\x66\x65\x65Recipient\x12\x14\n\x05state\x18\x0c \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\r \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0e \x01(\x12R\tupdatedAt\x12!\n\x0corder_number\x18\x0f \x01(\x12R\x0borderNumber\x12\x1d\n\norder_type\x18\x10 \x01(\tR\torderType\x12%\n\x0eis_conditional\x18\x11 \x01(\x08R\risConditional\x12\x1d\n\ntrigger_at\x18\x12 \x01(\x04R\ttriggerAt\x12*\n\x11placed_order_hash\x18\x13 \x01(\tR\x0fplacedOrderHash\x12%\n\x0e\x65xecution_type\x18\x14 \x01(\tR\rexecutionType\x12\x17\n\x07tx_hash\x18\x15 \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x16 \x01(\tR\x03\x63id\"\xb0\x02\n\x12OrderHistoryResult\x12X\n\x12spot_order_history\x18\x01 \x01(\x0b\x32(.injective_accounts_rpc.SpotOrderHistoryH\x00R\x10spotOrderHistory\x12j\n\x18\x64\x65rivative_order_history\x18\x02 \x01(\x0b\x32..injective_accounts_rpc.DerivativeOrderHistoryH\x00R\x16\x64\x65rivativeOrderHistory\x12%\n\x0eoperation_type\x18\x03 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestampB\x0f\n\rorder_history\"\xf3\x03\n\x10SpotOrderHistory\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1b\n\tis_active\x18\x03 \x01(\x08R\x08isActive\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12%\n\x0e\x65xecution_type\x18\x05 \x01(\tR\rexecutionType\x12\x1d\n\norder_type\x18\x06 \x01(\tR\torderType\x12\x14\n\x05price\x18\x07 \x01(\tR\x05price\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12\x1a\n\x08quantity\x18\t \x01(\tR\x08quantity\x12\'\n\x0f\x66illed_quantity\x18\n \x01(\tR\x0e\x66illedQuantity\x12\x14\n\x05state\x18\x0b \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0c \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\r \x01(\x12R\tupdatedAt\x12\x1c\n\tdirection\x18\x0e \x01(\tR\tdirection\x12\x17\n\x07tx_hash\x18\x0f \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x10 \x01(\tR\x03\x63id\"\xa9\x05\n\x16\x44\x65rivativeOrderHistory\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1b\n\tis_active\x18\x03 \x01(\x08R\x08isActive\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12%\n\x0e\x65xecution_type\x18\x05 \x01(\tR\rexecutionType\x12\x1d\n\norder_type\x18\x06 \x01(\tR\torderType\x12\x14\n\x05price\x18\x07 \x01(\tR\x05price\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12\x1a\n\x08quantity\x18\t \x01(\tR\x08quantity\x12\'\n\x0f\x66illed_quantity\x18\n \x01(\tR\x0e\x66illedQuantity\x12\x14\n\x05state\x18\x0b \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0c \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\r \x01(\x12R\tupdatedAt\x12$\n\x0eis_reduce_only\x18\x0e \x01(\x08R\x0cisReduceOnly\x12\x1c\n\tdirection\x18\x0f \x01(\tR\tdirection\x12%\n\x0eis_conditional\x18\x10 \x01(\x08R\risConditional\x12\x1d\n\ntrigger_at\x18\x11 \x01(\x04R\ttriggerAt\x12*\n\x11placed_order_hash\x18\x12 \x01(\tR\x0fplacedOrderHash\x12\x16\n\x06margin\x18\x13 \x01(\tR\x06margin\x12\x17\n\x07tx_hash\x18\x14 \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x15 \x01(\tR\x03\x63id\"\xae\x01\n\x14\x46undingPaymentResult\x12Q\n\x10\x66unding_payments\x18\x01 \x01(\x0b\x32&.injective_accounts_rpc.FundingPaymentR\x0f\x66undingPayments\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp\"\x88\x01\n\x0e\x46undingPayment\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp2\xdc\t\n\x14InjectiveAccountsRPC\x12`\n\tPortfolio\x12(.injective_accounts_rpc.PortfolioRequest\x1a).injective_accounts_rpc.PortfolioResponse\x12\x66\n\x0bOrderStates\x12*.injective_accounts_rpc.OrderStatesRequest\x1a+.injective_accounts_rpc.OrderStatesResponse\x12r\n\x0fSubaccountsList\x12..injective_accounts_rpc.SubaccountsListRequest\x1a/.injective_accounts_rpc.SubaccountsListResponse\x12\x87\x01\n\x16SubaccountBalancesList\x12\x35.injective_accounts_rpc.SubaccountBalancesListRequest\x1a\x36.injective_accounts_rpc.SubaccountBalancesListResponse\x12\x90\x01\n\x19SubaccountBalanceEndpoint\x12\x38.injective_accounts_rpc.SubaccountBalanceEndpointRequest\x1a\x39.injective_accounts_rpc.SubaccountBalanceEndpointResponse\x12\x8c\x01\n\x17StreamSubaccountBalance\x12\x36.injective_accounts_rpc.StreamSubaccountBalanceRequest\x1a\x37.injective_accounts_rpc.StreamSubaccountBalanceResponse0\x01\x12x\n\x11SubaccountHistory\x12\x30.injective_accounts_rpc.SubaccountHistoryRequest\x1a\x31.injective_accounts_rpc.SubaccountHistoryResponse\x12\x87\x01\n\x16SubaccountOrderSummary\x12\x35.injective_accounts_rpc.SubaccountOrderSummaryRequest\x1a\x36.injective_accounts_rpc.SubaccountOrderSummaryResponse\x12Z\n\x07Rewards\x12&.injective_accounts_rpc.RewardsRequest\x1a\'.injective_accounts_rpc.RewardsResponse\x12z\n\x11StreamAccountData\x12\x30.injective_accounts_rpc.StreamAccountDataRequest\x1a\x31.injective_accounts_rpc.StreamAccountDataResponse0\x01\x42\xc2\x01\n\x1a\x63om.injective_accounts_rpcB\x19InjectiveAccountsRpcProtoP\x01Z\x19/injective_accounts_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveAccountsRpc\xca\x02\x14InjectiveAccountsRpc\xe2\x02 InjectiveAccountsRpc\\GPBMetadata\xea\x02\x14InjectiveAccountsRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -46,74 +46,74 @@ _globals['_SUBACCOUNTBALANCESLISTRESPONSE']._serialized_end=1720 _globals['_SUBACCOUNTBALANCE']._serialized_start=1723 _globals['_SUBACCOUNTBALANCE']._serialized_end=1911 - _globals['_SUBACCOUNTDEPOSIT']._serialized_start=1913 - _globals['_SUBACCOUNTDEPOSIT']._serialized_end=2014 - _globals['_SUBACCOUNTBALANCEENDPOINTREQUEST']._serialized_start=2016 - _globals['_SUBACCOUNTBALANCEENDPOINTREQUEST']._serialized_end=2109 - _globals['_SUBACCOUNTBALANCEENDPOINTRESPONSE']._serialized_start=2111 - _globals['_SUBACCOUNTBALANCEENDPOINTRESPONSE']._serialized_end=2215 - _globals['_STREAMSUBACCOUNTBALANCEREQUEST']._serialized_start=2217 - _globals['_STREAMSUBACCOUNTBALANCEREQUEST']._serialized_end=2310 - _globals['_STREAMSUBACCOUNTBALANCERESPONSE']._serialized_start=2313 - _globals['_STREAMSUBACCOUNTBALANCERESPONSE']._serialized_end=2445 - _globals['_SUBACCOUNTHISTORYREQUEST']._serialized_start=2448 - _globals['_SUBACCOUNTHISTORYREQUEST']._serialized_end=2641 - _globals['_SUBACCOUNTHISTORYRESPONSE']._serialized_start=2644 - _globals['_SUBACCOUNTHISTORYRESPONSE']._serialized_end=2808 - _globals['_SUBACCOUNTBALANCETRANSFER']._serialized_start=2811 - _globals['_SUBACCOUNTBALANCETRANSFER']._serialized_end=3152 - _globals['_COSMOSCOIN']._serialized_start=3154 - _globals['_COSMOSCOIN']._serialized_end=3212 - _globals['_PAGING']._serialized_start=3215 - _globals['_PAGING']._serialized_end=3349 - _globals['_SUBACCOUNTORDERSUMMARYREQUEST']._serialized_start=3352 - _globals['_SUBACCOUNTORDERSUMMARYREQUEST']._serialized_end=3490 - _globals['_SUBACCOUNTORDERSUMMARYRESPONSE']._serialized_start=3493 - _globals['_SUBACCOUNTORDERSUMMARYRESPONSE']._serialized_end=3625 - _globals['_REWARDSREQUEST']._serialized_start=3627 - _globals['_REWARDSREQUEST']._serialized_end=3706 - _globals['_REWARDSRESPONSE']._serialized_start=3708 - _globals['_REWARDSRESPONSE']._serialized_end=3783 - _globals['_REWARD']._serialized_start=3786 - _globals['_REWARD']._serialized_end=3930 - _globals['_COIN']._serialized_start=3932 - _globals['_COIN']._serialized_end=3984 - _globals['_STREAMACCOUNTDATAREQUEST']._serialized_start=3986 - _globals['_STREAMACCOUNTDATAREQUEST']._serialized_end=4053 - _globals['_STREAMACCOUNTDATARESPONSE']._serialized_start=4056 - _globals['_STREAMACCOUNTDATARESPONSE']._serialized_end=4534 - _globals['_SUBACCOUNTBALANCERESULT']._serialized_start=4536 - _globals['_SUBACCOUNTBALANCERESULT']._serialized_end=4660 - _globals['_POSITIONSRESULT']._serialized_start=4662 - _globals['_POSITIONSRESULT']._serialized_end=4771 - _globals['_POSITION']._serialized_start=4774 - _globals['_POSITION']._serialized_end=5127 - _globals['_TRADERESULT']._serialized_start=5130 - _globals['_TRADERESULT']._serialized_end=5375 - _globals['_SPOTTRADE']._serialized_start=5378 - _globals['_SPOTTRADE']._serialized_end=5807 - _globals['_PRICELEVEL']._serialized_start=5809 - _globals['_PRICELEVEL']._serialized_end=5901 - _globals['_DERIVATIVETRADE']._serialized_start=5904 - _globals['_DERIVATIVETRADE']._serialized_end=6381 - _globals['_POSITIONDELTA']._serialized_start=6384 - _globals['_POSITIONDELTA']._serialized_end=6571 - _globals['_ORDERRESULT']._serialized_start=6574 - _globals['_ORDERRESULT']._serialized_end=6829 - _globals['_SPOTLIMITORDER']._serialized_start=6832 - _globals['_SPOTLIMITORDER']._serialized_end=7272 - _globals['_DERIVATIVELIMITORDER']._serialized_start=7275 - _globals['_DERIVATIVELIMITORDER']._serialized_end=8002 - _globals['_ORDERHISTORYRESULT']._serialized_start=8005 - _globals['_ORDERHISTORYRESULT']._serialized_end=8309 - _globals['_SPOTORDERHISTORY']._serialized_start=8312 - _globals['_SPOTORDERHISTORY']._serialized_end=8811 - _globals['_DERIVATIVEORDERHISTORY']._serialized_start=8814 - _globals['_DERIVATIVEORDERHISTORY']._serialized_end=9495 - _globals['_FUNDINGPAYMENTRESULT']._serialized_start=9498 - _globals['_FUNDINGPAYMENTRESULT']._serialized_end=9672 - _globals['_FUNDINGPAYMENT']._serialized_start=9675 - _globals['_FUNDINGPAYMENT']._serialized_end=9811 - _globals['_INJECTIVEACCOUNTSRPC']._serialized_start=9814 - _globals['_INJECTIVEACCOUNTSRPC']._serialized_end=11058 + _globals['_SUBACCOUNTDEPOSIT']._serialized_start=1914 + _globals['_SUBACCOUNTDEPOSIT']._serialized_end=2111 + _globals['_SUBACCOUNTBALANCEENDPOINTREQUEST']._serialized_start=2113 + _globals['_SUBACCOUNTBALANCEENDPOINTREQUEST']._serialized_end=2206 + _globals['_SUBACCOUNTBALANCEENDPOINTRESPONSE']._serialized_start=2208 + _globals['_SUBACCOUNTBALANCEENDPOINTRESPONSE']._serialized_end=2312 + _globals['_STREAMSUBACCOUNTBALANCEREQUEST']._serialized_start=2314 + _globals['_STREAMSUBACCOUNTBALANCEREQUEST']._serialized_end=2407 + _globals['_STREAMSUBACCOUNTBALANCERESPONSE']._serialized_start=2410 + _globals['_STREAMSUBACCOUNTBALANCERESPONSE']._serialized_end=2542 + _globals['_SUBACCOUNTHISTORYREQUEST']._serialized_start=2545 + _globals['_SUBACCOUNTHISTORYREQUEST']._serialized_end=2738 + _globals['_SUBACCOUNTHISTORYRESPONSE']._serialized_start=2741 + _globals['_SUBACCOUNTHISTORYRESPONSE']._serialized_end=2905 + _globals['_SUBACCOUNTBALANCETRANSFER']._serialized_start=2908 + _globals['_SUBACCOUNTBALANCETRANSFER']._serialized_end=3249 + _globals['_COSMOSCOIN']._serialized_start=3251 + _globals['_COSMOSCOIN']._serialized_end=3309 + _globals['_PAGING']._serialized_start=3312 + _globals['_PAGING']._serialized_end=3446 + _globals['_SUBACCOUNTORDERSUMMARYREQUEST']._serialized_start=3449 + _globals['_SUBACCOUNTORDERSUMMARYREQUEST']._serialized_end=3587 + _globals['_SUBACCOUNTORDERSUMMARYRESPONSE']._serialized_start=3590 + _globals['_SUBACCOUNTORDERSUMMARYRESPONSE']._serialized_end=3722 + _globals['_REWARDSREQUEST']._serialized_start=3724 + _globals['_REWARDSREQUEST']._serialized_end=3803 + _globals['_REWARDSRESPONSE']._serialized_start=3805 + _globals['_REWARDSRESPONSE']._serialized_end=3880 + _globals['_REWARD']._serialized_start=3883 + _globals['_REWARD']._serialized_end=4027 + _globals['_COIN']._serialized_start=4029 + _globals['_COIN']._serialized_end=4110 + _globals['_STREAMACCOUNTDATAREQUEST']._serialized_start=4112 + _globals['_STREAMACCOUNTDATAREQUEST']._serialized_end=4179 + _globals['_STREAMACCOUNTDATARESPONSE']._serialized_start=4182 + _globals['_STREAMACCOUNTDATARESPONSE']._serialized_end=4660 + _globals['_SUBACCOUNTBALANCERESULT']._serialized_start=4662 + _globals['_SUBACCOUNTBALANCERESULT']._serialized_end=4786 + _globals['_POSITIONSRESULT']._serialized_start=4788 + _globals['_POSITIONSRESULT']._serialized_end=4897 + _globals['_POSITION']._serialized_start=4900 + _globals['_POSITION']._serialized_end=5253 + _globals['_TRADERESULT']._serialized_start=5256 + _globals['_TRADERESULT']._serialized_end=5501 + _globals['_SPOTTRADE']._serialized_start=5504 + _globals['_SPOTTRADE']._serialized_end=5933 + _globals['_PRICELEVEL']._serialized_start=5935 + _globals['_PRICELEVEL']._serialized_end=6027 + _globals['_DERIVATIVETRADE']._serialized_start=6030 + _globals['_DERIVATIVETRADE']._serialized_end=6507 + _globals['_POSITIONDELTA']._serialized_start=6510 + _globals['_POSITIONDELTA']._serialized_end=6697 + _globals['_ORDERRESULT']._serialized_start=6700 + _globals['_ORDERRESULT']._serialized_end=6955 + _globals['_SPOTLIMITORDER']._serialized_start=6958 + _globals['_SPOTLIMITORDER']._serialized_end=7398 + _globals['_DERIVATIVELIMITORDER']._serialized_start=7401 + _globals['_DERIVATIVELIMITORDER']._serialized_end=8128 + _globals['_ORDERHISTORYRESULT']._serialized_start=8131 + _globals['_ORDERHISTORYRESULT']._serialized_end=8435 + _globals['_SPOTORDERHISTORY']._serialized_start=8438 + _globals['_SPOTORDERHISTORY']._serialized_end=8937 + _globals['_DERIVATIVEORDERHISTORY']._serialized_start=8940 + _globals['_DERIVATIVEORDERHISTORY']._serialized_end=9621 + _globals['_FUNDINGPAYMENTRESULT']._serialized_start=9624 + _globals['_FUNDINGPAYMENTRESULT']._serialized_end=9798 + _globals['_FUNDINGPAYMENT']._serialized_start=9801 + _globals['_FUNDINGPAYMENT']._serialized_end=9937 + _globals['_INJECTIVEACCOUNTSRPC']._serialized_start=9940 + _globals['_INJECTIVEACCOUNTSRPC']._serialized_end=11184 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_archiver_rpc_pb2.py b/pyinjective/proto/exchange/injective_archiver_rpc_pb2.py index e5b50906..8ddf1bb1 100644 --- a/pyinjective/proto/exchange/injective_archiver_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_archiver_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_archiver_rpc.proto\x12\x16injective_archiver_rpc\"J\n\x0e\x42\x61lanceRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"k\n\x0f\x42\x61lanceResponse\x12X\n\x12historical_balance\x18\x01 \x01(\x0b\x32).injective_archiver_rpc.HistoricalBalanceR\x11historicalBalance\"/\n\x11HistoricalBalance\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"G\n\x0bRpnlRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"_\n\x0cRpnlResponse\x12O\n\x0fhistorical_rpnl\x18\x01 \x01(\x0b\x32&.injective_archiver_rpc.HistoricalRPNLR\x0ehistoricalRpnl\",\n\x0eHistoricalRPNL\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"J\n\x0eVolumesRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"k\n\x0fVolumesResponse\x12X\n\x12historical_volumes\x18\x01 \x01(\x0b\x32).injective_archiver_rpc.HistoricalVolumesR\x11historicalVolumes\"/\n\x11HistoricalVolumes\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"\x81\x01\n\x15PnlLeaderboardRequest\x12\x1d\n\nstart_date\x18\x01 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x02 \x01(\x12R\x07\x65ndDate\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x04 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n\x16PnlLeaderboardResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"h\n\x0eLeaderboardRow\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x10\n\x03pnl\x18\x02 \x01(\x01R\x03pnl\x12\x16\n\x06volume\x18\x03 \x01(\x01R\x06volume\x12\x12\n\x04rank\x18\x04 \x01(\x11R\x04rank\"\x81\x01\n\x15VolLeaderboardRequest\x12\x1d\n\nstart_date\x18\x01 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x02 \x01(\x12R\x07\x65ndDate\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x04 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n\x16VolLeaderboardResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"v\n$PnlLeaderboardFixedResolutionRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\"\xee\x01\n%PnlLeaderboardFixedResolutionResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"v\n$VolLeaderboardFixedResolutionRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\"\xee\x01\n%VolLeaderboardFixedResolutionResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"W\n\x13\x44\x65nomHoldersRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\"d\n\x14\x44\x65nomHoldersResponse\x12\x38\n\x07holders\x18\x01 \x03(\x0b\x32\x1e.injective_archiver_rpc.HolderR\x07holders\x12\x12\n\x04next\x18\x02 \x03(\tR\x04next\"K\n\x06Holder\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance\"\xd8\x01\n\x17HistoricalTradesRequest\x12\x1d\n\nfrom_block\x18\x01 \x01(\x04R\tfromBlock\x12\x1b\n\tend_block\x18\x02 \x01(\x04R\x08\x65ndBlock\x12\x1b\n\tfrom_time\x18\x03 \x01(\x12R\x08\x66romTime\x12\x19\n\x08\x65nd_time\x18\x04 \x01(\x12R\x07\x65ndTime\x12\x19\n\x08per_page\x18\x05 \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\x06 \x01(\tR\x05token\x12\x18\n\x07\x61\x63\x63ount\x18\x07 \x01(\tR\x07\x61\x63\x63ount\"\xad\x01\n\x18HistoricalTradesResponse\x12?\n\x06trades\x18\x01 \x03(\x0b\x32\'.injective_archiver_rpc.HistoricalTradeR\x06trades\x12\x1f\n\x0blast_height\x18\x02 \x01(\x04R\nlastHeight\x12\x1b\n\tlast_time\x18\x03 \x01(\x12R\x08lastTime\x12\x12\n\x04next\x18\x04 \x03(\tR\x04next\"\xcc\x03\n\x0fHistoricalTrade\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\'\n\x0ftrade_direction\x18\x04 \x01(\tR\x0etradeDirection\x12\x38\n\x05price\x18\x05 \x01(\x0b\x32\".injective_archiver_rpc.PriceLevelR\x05price\x12\x10\n\x03\x66\x65\x65\x18\x06 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\x07 \x01(\x12R\nexecutedAt\x12\'\n\x0f\x65xecuted_height\x18\x08 \x01(\x04R\x0e\x65xecutedHeight\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12%\n\x0e\x65xecution_side\x18\n \x01(\tR\rexecutionSide\x12\x1b\n\tusd_value\x18\x0b \x01(\tR\x08usdValue\x12\x14\n\x05\x66lags\x18\x0c \x03(\tR\x05\x66lags\x12\x1f\n\x0bmarket_type\x18\r \x01(\tR\nmarketType\"\\\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp2\xa3\x08\n\x14InjectiveArchiverRPC\x12Z\n\x07\x42\x61lance\x12&.injective_archiver_rpc.BalanceRequest\x1a\'.injective_archiver_rpc.BalanceResponse\x12Q\n\x04Rpnl\x12#.injective_archiver_rpc.RpnlRequest\x1a$.injective_archiver_rpc.RpnlResponse\x12Z\n\x07Volumes\x12&.injective_archiver_rpc.VolumesRequest\x1a\'.injective_archiver_rpc.VolumesResponse\x12o\n\x0ePnlLeaderboard\x12-.injective_archiver_rpc.PnlLeaderboardRequest\x1a..injective_archiver_rpc.PnlLeaderboardResponse\x12o\n\x0eVolLeaderboard\x12-.injective_archiver_rpc.VolLeaderboardRequest\x1a..injective_archiver_rpc.VolLeaderboardResponse\x12\x9c\x01\n\x1dPnlLeaderboardFixedResolution\x12<.injective_archiver_rpc.PnlLeaderboardFixedResolutionRequest\x1a=.injective_archiver_rpc.PnlLeaderboardFixedResolutionResponse\x12\x9c\x01\n\x1dVolLeaderboardFixedResolution\x12<.injective_archiver_rpc.VolLeaderboardFixedResolutionRequest\x1a=.injective_archiver_rpc.VolLeaderboardFixedResolutionResponse\x12i\n\x0c\x44\x65nomHolders\x12+.injective_archiver_rpc.DenomHoldersRequest\x1a,.injective_archiver_rpc.DenomHoldersResponse\x12u\n\x10HistoricalTrades\x12/.injective_archiver_rpc.HistoricalTradesRequest\x1a\x30.injective_archiver_rpc.HistoricalTradesResponseB\xc2\x01\n\x1a\x63om.injective_archiver_rpcB\x19InjectiveArchiverRpcProtoP\x01Z\x19/injective_archiver_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveArchiverRpc\xca\x02\x14InjectiveArchiverRpc\xe2\x02 InjectiveArchiverRpc\\GPBMetadata\xea\x02\x14InjectiveArchiverRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_archiver_rpc.proto\x12\x16injective_archiver_rpc\"J\n\x0e\x42\x61lanceRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"k\n\x0f\x42\x61lanceResponse\x12X\n\x12historical_balance\x18\x01 \x01(\x0b\x32).injective_archiver_rpc.HistoricalBalanceR\x11historicalBalance\"/\n\x11HistoricalBalance\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"G\n\x0bRpnlRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"_\n\x0cRpnlResponse\x12O\n\x0fhistorical_rpnl\x18\x01 \x01(\x0b\x32&.injective_archiver_rpc.HistoricalRPNLR\x0ehistoricalRpnl\",\n\x0eHistoricalRPNL\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"J\n\x0eVolumesRequest\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"k\n\x0fVolumesResponse\x12X\n\x12historical_volumes\x18\x01 \x01(\x0b\x32).injective_archiver_rpc.HistoricalVolumesR\x11historicalVolumes\"/\n\x11HistoricalVolumes\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01v\x18\x02 \x03(\x01R\x01v\"\x81\x01\n\x15PnlLeaderboardRequest\x12\x1d\n\nstart_date\x18\x01 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x02 \x01(\x12R\x07\x65ndDate\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x04 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n\x16PnlLeaderboardResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"h\n\x0eLeaderboardRow\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12\x10\n\x03pnl\x18\x02 \x01(\x01R\x03pnl\x12\x16\n\x06volume\x18\x03 \x01(\x01R\x06volume\x12\x12\n\x04rank\x18\x04 \x01(\x11R\x04rank\"\x81\x01\n\x15VolLeaderboardRequest\x12\x1d\n\nstart_date\x18\x01 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x02 \x01(\x12R\x07\x65ndDate\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x04 \x01(\tR\x07\x61\x63\x63ount\"\xdf\x01\n\x16VolLeaderboardResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"v\n$PnlLeaderboardFixedResolutionRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\"\xee\x01\n%PnlLeaderboardFixedResolutionResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"v\n$VolLeaderboardFixedResolutionRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x18\n\x07\x61\x63\x63ount\x18\x03 \x01(\tR\x07\x61\x63\x63ount\"\xee\x01\n%VolLeaderboardFixedResolutionResponse\x12\x1d\n\nfirst_date\x18\x01 \x01(\tR\tfirstDate\x12\x1b\n\tlast_date\x18\x02 \x01(\tR\x08lastDate\x12@\n\x07leaders\x18\x03 \x03(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\x07leaders\x12G\n\x0b\x61\x63\x63ount_row\x18\x04 \x01(\x0b\x32&.injective_archiver_rpc.LeaderboardRowR\naccountRow\"W\n\x13\x44\x65nomHoldersRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\"z\n\x14\x44\x65nomHoldersResponse\x12\x38\n\x07holders\x18\x01 \x03(\x0b\x32\x1e.injective_archiver_rpc.HolderR\x07holders\x12\x12\n\x04next\x18\x02 \x03(\tR\x04next\x12\x14\n\x05total\x18\x03 \x01(\x11R\x05total\"K\n\x06Holder\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance\"\xd8\x01\n\x17HistoricalTradesRequest\x12\x1d\n\nfrom_block\x18\x01 \x01(\x04R\tfromBlock\x12\x1b\n\tend_block\x18\x02 \x01(\x04R\x08\x65ndBlock\x12\x1b\n\tfrom_time\x18\x03 \x01(\x12R\x08\x66romTime\x12\x19\n\x08\x65nd_time\x18\x04 \x01(\x12R\x07\x65ndTime\x12\x19\n\x08per_page\x18\x05 \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\x06 \x01(\tR\x05token\x12\x18\n\x07\x61\x63\x63ount\x18\x07 \x01(\tR\x07\x61\x63\x63ount\"\xad\x01\n\x18HistoricalTradesResponse\x12?\n\x06trades\x18\x01 \x03(\x0b\x32\'.injective_archiver_rpc.HistoricalTradeR\x06trades\x12\x1f\n\x0blast_height\x18\x02 \x01(\x04R\nlastHeight\x12\x1b\n\tlast_time\x18\x03 \x01(\x12R\x08lastTime\x12\x12\n\x04next\x18\x04 \x03(\tR\x04next\"\xe7\x03\n\x0fHistoricalTrade\x12\x18\n\x07\x61\x63\x63ount\x18\x01 \x01(\tR\x07\x61\x63\x63ount\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\'\n\x0ftrade_direction\x18\x04 \x01(\tR\x0etradeDirection\x12\x38\n\x05price\x18\x05 \x01(\x0b\x32\".injective_archiver_rpc.PriceLevelR\x05price\x12\x10\n\x03\x66\x65\x65\x18\x06 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\x07 \x01(\x12R\nexecutedAt\x12\'\n\x0f\x65xecuted_height\x18\x08 \x01(\x04R\x0e\x65xecutedHeight\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12%\n\x0e\x65xecution_side\x18\n \x01(\tR\rexecutionSide\x12\x1b\n\tusd_value\x18\x0b \x01(\tR\x08usdValue\x12\x14\n\x05\x66lags\x18\x0c \x03(\tR\x05\x66lags\x12\x1f\n\x0bmarket_type\x18\r \x01(\tR\nmarketType\x12\x19\n\x08trade_id\x18\x0e \x01(\tR\x07tradeId\"\\\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp2\xa3\x08\n\x14InjectiveArchiverRPC\x12Z\n\x07\x42\x61lance\x12&.injective_archiver_rpc.BalanceRequest\x1a\'.injective_archiver_rpc.BalanceResponse\x12Q\n\x04Rpnl\x12#.injective_archiver_rpc.RpnlRequest\x1a$.injective_archiver_rpc.RpnlResponse\x12Z\n\x07Volumes\x12&.injective_archiver_rpc.VolumesRequest\x1a\'.injective_archiver_rpc.VolumesResponse\x12o\n\x0ePnlLeaderboard\x12-.injective_archiver_rpc.PnlLeaderboardRequest\x1a..injective_archiver_rpc.PnlLeaderboardResponse\x12o\n\x0eVolLeaderboard\x12-.injective_archiver_rpc.VolLeaderboardRequest\x1a..injective_archiver_rpc.VolLeaderboardResponse\x12\x9c\x01\n\x1dPnlLeaderboardFixedResolution\x12<.injective_archiver_rpc.PnlLeaderboardFixedResolutionRequest\x1a=.injective_archiver_rpc.PnlLeaderboardFixedResolutionResponse\x12\x9c\x01\n\x1dVolLeaderboardFixedResolution\x12<.injective_archiver_rpc.VolLeaderboardFixedResolutionRequest\x1a=.injective_archiver_rpc.VolLeaderboardFixedResolutionResponse\x12i\n\x0c\x44\x65nomHolders\x12+.injective_archiver_rpc.DenomHoldersRequest\x1a,.injective_archiver_rpc.DenomHoldersResponse\x12u\n\x10HistoricalTrades\x12/.injective_archiver_rpc.HistoricalTradesRequest\x1a\x30.injective_archiver_rpc.HistoricalTradesResponseB\xc2\x01\n\x1a\x63om.injective_archiver_rpcB\x19InjectiveArchiverRpcProtoP\x01Z\x19/injective_archiver_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveArchiverRpc\xca\x02\x14InjectiveArchiverRpc\xe2\x02 InjectiveArchiverRpc\\GPBMetadata\xea\x02\x14InjectiveArchiverRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -61,17 +61,17 @@ _globals['_DENOMHOLDERSREQUEST']._serialized_start=2293 _globals['_DENOMHOLDERSREQUEST']._serialized_end=2380 _globals['_DENOMHOLDERSRESPONSE']._serialized_start=2382 - _globals['_DENOMHOLDERSRESPONSE']._serialized_end=2482 - _globals['_HOLDER']._serialized_start=2484 - _globals['_HOLDER']._serialized_end=2559 - _globals['_HISTORICALTRADESREQUEST']._serialized_start=2562 - _globals['_HISTORICALTRADESREQUEST']._serialized_end=2778 - _globals['_HISTORICALTRADESRESPONSE']._serialized_start=2781 - _globals['_HISTORICALTRADESRESPONSE']._serialized_end=2954 - _globals['_HISTORICALTRADE']._serialized_start=2957 - _globals['_HISTORICALTRADE']._serialized_end=3417 - _globals['_PRICELEVEL']._serialized_start=3419 - _globals['_PRICELEVEL']._serialized_end=3511 - _globals['_INJECTIVEARCHIVERRPC']._serialized_start=3514 - _globals['_INJECTIVEARCHIVERRPC']._serialized_end=4573 + _globals['_DENOMHOLDERSRESPONSE']._serialized_end=2504 + _globals['_HOLDER']._serialized_start=2506 + _globals['_HOLDER']._serialized_end=2581 + _globals['_HISTORICALTRADESREQUEST']._serialized_start=2584 + _globals['_HISTORICALTRADESREQUEST']._serialized_end=2800 + _globals['_HISTORICALTRADESRESPONSE']._serialized_start=2803 + _globals['_HISTORICALTRADESRESPONSE']._serialized_end=2976 + _globals['_HISTORICALTRADE']._serialized_start=2979 + _globals['_HISTORICALTRADE']._serialized_end=3466 + _globals['_PRICELEVEL']._serialized_start=3468 + _globals['_PRICELEVEL']._serialized_end=3560 + _globals['_INJECTIVEARCHIVERRPC']._serialized_start=3563 + _globals['_INJECTIVEARCHIVERRPC']._serialized_end=4622 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_auction_rpc_pb2.py b/pyinjective/proto/exchange/injective_auction_rpc_pb2.py index 61c64b52..ca07f0bc 100644 --- a/pyinjective/proto/exchange/injective_auction_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_auction_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$exchange/injective_auction_rpc.proto\x12\x15injective_auction_rpc\".\n\x16\x41uctionEndpointRequest\x12\x14\n\x05round\x18\x01 \x01(\x12R\x05round\"\x83\x01\n\x17\x41uctionEndpointResponse\x12\x38\n\x07\x61uction\x18\x01 \x01(\x0b\x32\x1e.injective_auction_rpc.AuctionR\x07\x61uction\x12.\n\x04\x62ids\x18\x02 \x03(\x0b\x32\x1a.injective_auction_rpc.BidR\x04\x62ids\"\xde\x01\n\x07\x41uction\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12\x33\n\x06\x62\x61sket\x18\x02 \x03(\x0b\x32\x1b.injective_auction_rpc.CoinR\x06\x62\x61sket\x12,\n\x12winning_bid_amount\x18\x03 \x01(\tR\x10winningBidAmount\x12\x14\n\x05round\x18\x04 \x01(\x04R\x05round\x12#\n\rend_timestamp\x18\x05 \x01(\x12R\x0c\x65ndTimestamp\x12\x1d\n\nupdated_at\x18\x06 \x01(\x12R\tupdatedAt\"4\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"S\n\x03\x42id\x12\x16\n\x06\x62idder\x18\x01 \x01(\tR\x06\x62idder\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\x11\n\x0f\x41uctionsRequest\"N\n\x10\x41uctionsResponse\x12:\n\x08\x61uctions\x18\x01 \x03(\x0b\x32\x1e.injective_auction_rpc.AuctionR\x08\x61uctions\"\x13\n\x11StreamBidsRequest\"\x7f\n\x12StreamBidsResponse\x12\x16\n\x06\x62idder\x18\x01 \x01(\tR\x06\x62idder\x12\x1d\n\nbid_amount\x18\x02 \x01(\tR\tbidAmount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp\"\x19\n\x17InjBurntEndpointRequest\"B\n\x18InjBurntEndpointResponse\x12&\n\x0ftotal_inj_burnt\x18\x01 \x01(\tR\rtotalInjBurnt2\xbe\x03\n\x13InjectiveAuctionRPC\x12p\n\x0f\x41uctionEndpoint\x12-.injective_auction_rpc.AuctionEndpointRequest\x1a..injective_auction_rpc.AuctionEndpointResponse\x12[\n\x08\x41uctions\x12&.injective_auction_rpc.AuctionsRequest\x1a\'.injective_auction_rpc.AuctionsResponse\x12\x63\n\nStreamBids\x12(.injective_auction_rpc.StreamBidsRequest\x1a).injective_auction_rpc.StreamBidsResponse0\x01\x12s\n\x10InjBurntEndpoint\x12..injective_auction_rpc.InjBurntEndpointRequest\x1a/.injective_auction_rpc.InjBurntEndpointResponseB\xbb\x01\n\x19\x63om.injective_auction_rpcB\x18InjectiveAuctionRpcProtoP\x01Z\x18/injective_auction_rpcpb\xa2\x02\x03IXX\xaa\x02\x13InjectiveAuctionRpc\xca\x02\x13InjectiveAuctionRpc\xe2\x02\x1fInjectiveAuctionRpc\\GPBMetadata\xea\x02\x13InjectiveAuctionRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$exchange/injective_auction_rpc.proto\x12\x15injective_auction_rpc\".\n\x16\x41uctionEndpointRequest\x12\x14\n\x05round\x18\x01 \x01(\x12R\x05round\"\x83\x01\n\x17\x41uctionEndpointResponse\x12\x38\n\x07\x61uction\x18\x01 \x01(\x0b\x32\x1e.injective_auction_rpc.AuctionR\x07\x61uction\x12.\n\x04\x62ids\x18\x02 \x03(\x0b\x32\x1a.injective_auction_rpc.BidR\x04\x62ids\"\xde\x01\n\x07\x41uction\x12\x16\n\x06winner\x18\x01 \x01(\tR\x06winner\x12\x33\n\x06\x62\x61sket\x18\x02 \x03(\x0b\x32\x1b.injective_auction_rpc.CoinR\x06\x62\x61sket\x12,\n\x12winning_bid_amount\x18\x03 \x01(\tR\x10winningBidAmount\x12\x14\n\x05round\x18\x04 \x01(\x04R\x05round\x12#\n\rend_timestamp\x18\x05 \x01(\x12R\x0c\x65ndTimestamp\x12\x1d\n\nupdated_at\x18\x06 \x01(\x12R\tupdatedAt\"Q\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x1b\n\tusd_value\x18\x03 \x01(\tR\x08usdValue\"S\n\x03\x42id\x12\x16\n\x06\x62idder\x18\x01 \x01(\tR\x06\x62idder\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\x11\n\x0f\x41uctionsRequest\"N\n\x10\x41uctionsResponse\x12:\n\x08\x61uctions\x18\x01 \x03(\x0b\x32\x1e.injective_auction_rpc.AuctionR\x08\x61uctions\"\x13\n\x11StreamBidsRequest\"\x7f\n\x12StreamBidsResponse\x12\x16\n\x06\x62idder\x18\x01 \x01(\tR\x06\x62idder\x12\x1d\n\nbid_amount\x18\x02 \x01(\tR\tbidAmount\x12\x14\n\x05round\x18\x03 \x01(\x04R\x05round\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp\"\x19\n\x17InjBurntEndpointRequest\"B\n\x18InjBurntEndpointResponse\x12&\n\x0ftotal_inj_burnt\x18\x01 \x01(\tR\rtotalInjBurnt2\xbe\x03\n\x13InjectiveAuctionRPC\x12p\n\x0f\x41uctionEndpoint\x12-.injective_auction_rpc.AuctionEndpointRequest\x1a..injective_auction_rpc.AuctionEndpointResponse\x12[\n\x08\x41uctions\x12&.injective_auction_rpc.AuctionsRequest\x1a\'.injective_auction_rpc.AuctionsResponse\x12\x63\n\nStreamBids\x12(.injective_auction_rpc.StreamBidsRequest\x1a).injective_auction_rpc.StreamBidsResponse0\x01\x12s\n\x10InjBurntEndpoint\x12..injective_auction_rpc.InjBurntEndpointRequest\x1a/.injective_auction_rpc.InjBurntEndpointResponseB\xbb\x01\n\x19\x63om.injective_auction_rpcB\x18InjectiveAuctionRpcProtoP\x01Z\x18/injective_auction_rpcpb\xa2\x02\x03IXX\xaa\x02\x13InjectiveAuctionRpc\xca\x02\x13InjectiveAuctionRpc\xe2\x02\x1fInjectiveAuctionRpc\\GPBMetadata\xea\x02\x13InjectiveAuctionRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -29,21 +29,21 @@ _globals['_AUCTION']._serialized_start=246 _globals['_AUCTION']._serialized_end=468 _globals['_COIN']._serialized_start=470 - _globals['_COIN']._serialized_end=522 - _globals['_BID']._serialized_start=524 - _globals['_BID']._serialized_end=607 - _globals['_AUCTIONSREQUEST']._serialized_start=609 - _globals['_AUCTIONSREQUEST']._serialized_end=626 - _globals['_AUCTIONSRESPONSE']._serialized_start=628 - _globals['_AUCTIONSRESPONSE']._serialized_end=706 - _globals['_STREAMBIDSREQUEST']._serialized_start=708 - _globals['_STREAMBIDSREQUEST']._serialized_end=727 - _globals['_STREAMBIDSRESPONSE']._serialized_start=729 - _globals['_STREAMBIDSRESPONSE']._serialized_end=856 - _globals['_INJBURNTENDPOINTREQUEST']._serialized_start=858 - _globals['_INJBURNTENDPOINTREQUEST']._serialized_end=883 - _globals['_INJBURNTENDPOINTRESPONSE']._serialized_start=885 - _globals['_INJBURNTENDPOINTRESPONSE']._serialized_end=951 - _globals['_INJECTIVEAUCTIONRPC']._serialized_start=954 - _globals['_INJECTIVEAUCTIONRPC']._serialized_end=1400 + _globals['_COIN']._serialized_end=551 + _globals['_BID']._serialized_start=553 + _globals['_BID']._serialized_end=636 + _globals['_AUCTIONSREQUEST']._serialized_start=638 + _globals['_AUCTIONSREQUEST']._serialized_end=655 + _globals['_AUCTIONSRESPONSE']._serialized_start=657 + _globals['_AUCTIONSRESPONSE']._serialized_end=735 + _globals['_STREAMBIDSREQUEST']._serialized_start=737 + _globals['_STREAMBIDSREQUEST']._serialized_end=756 + _globals['_STREAMBIDSRESPONSE']._serialized_start=758 + _globals['_STREAMBIDSRESPONSE']._serialized_end=885 + _globals['_INJBURNTENDPOINTREQUEST']._serialized_start=887 + _globals['_INJBURNTENDPOINTREQUEST']._serialized_end=912 + _globals['_INJBURNTENDPOINTRESPONSE']._serialized_start=914 + _globals['_INJBURNTENDPOINTRESPONSE']._serialized_end=980 + _globals['_INJECTIVEAUCTIONRPC']._serialized_start=983 + _globals['_INJECTIVEAUCTIONRPC']._serialized_end=1429 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_campaign_rpc_pb2.py b/pyinjective/proto/exchange/injective_campaign_rpc_pb2.py index 1bea8314..db68a320 100644 --- a/pyinjective/proto/exchange/injective_campaign_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_campaign_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_campaign_rpc.proto\x12\x16injective_campaign_rpc\"\xcc\x01\n\x0eRankingRequest\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x03 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12)\n\x10\x63ontract_address\x18\x06 \x01(\tR\x0f\x63ontractAddress\"\xc3\x01\n\x0fRankingResponse\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32 .injective_campaign_rpc.CampaignR\x08\x63\x61mpaign\x12:\n\x05users\x18\x02 \x03(\x0b\x32$.injective_campaign_rpc.CampaignUserR\x05users\x12\x36\n\x06paging\x18\x03 \x01(\x0b\x32\x1e.injective_campaign_rpc.PagingR\x06paging\"\xb2\x04\n\x08\x43\x61mpaign\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1f\n\x0btotal_score\x18\x04 \x01(\tR\ntotalScore\x12!\n\x0clast_updated\x18\x05 \x01(\x12R\x0blastUpdated\x12\x1d\n\nstart_date\x18\x06 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x07 \x01(\x12R\x07\x65ndDate\x12!\n\x0cis_claimable\x18\x08 \x01(\x08R\x0bisClaimable\x12\x19\n\x08round_id\x18\t \x01(\x11R\x07roundId\x12)\n\x10manager_contract\x18\n \x01(\tR\x0fmanagerContract\x12\x36\n\x07rewards\x18\x0b \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\x07rewards\x12\x1d\n\nuser_score\x18\x0c \x01(\tR\tuserScore\x12!\n\x0cuser_claimed\x18\r \x01(\x08R\x0buserClaimed\x12\x30\n\x14subaccount_id_suffix\x18\x0e \x01(\tR\x12subaccountIdSuffix\x12\'\n\x0freward_contract\x18\x0f \x01(\tR\x0erewardContract\x12\x18\n\x07version\x18\x10 \x01(\tR\x07version\x12\x12\n\x04type\x18\x11 \x01(\tR\x04type\"4\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xef\x02\n\x0c\x43\x61mpaignUser\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x03 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x14\n\x05score\x18\x04 \x01(\tR\x05score\x12)\n\x10\x63ontract_updated\x18\x05 \x01(\x08R\x0f\x63ontractUpdated\x12!\n\x0c\x62lock_height\x18\x06 \x01(\x12R\x0b\x62lockHeight\x12\x1d\n\nblock_time\x18\x07 \x01(\x12R\tblockTime\x12)\n\x10purchased_amount\x18\x08 \x01(\tR\x0fpurchasedAmount\x12#\n\rgalxe_updated\x18\t \x01(\x08R\x0cgalxeUpdated\x12%\n\x0ereward_claimed\x18\n \x01(\x08R\rrewardClaimed\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\xb5\x01\n\x10\x43\x61mpaignsRequest\x12\x19\n\x08round_id\x18\x01 \x01(\x12R\x07roundId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x1e\n\x0bto_round_id\x18\x03 \x01(\x11R\ttoRoundId\x12)\n\x10\x63ontract_address\x18\x04 \x01(\tR\x0f\x63ontractAddress\x12\x12\n\x04type\x18\x05 \x01(\tR\x04type\"\xc5\x01\n\x11\x43\x61mpaignsResponse\x12>\n\tcampaigns\x18\x01 \x03(\x0b\x32 .injective_campaign_rpc.CampaignR\tcampaigns\x12M\n\x13\x61\x63\x63umulated_rewards\x18\x02 \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\x12\x61\x63\x63umulatedRewards\x12!\n\x0creward_count\x18\x03 \x01(\x11R\x0brewardCount\"\x96\x02\n\x12\x43\x61mpaignsV2Request\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x16\n\x06\x61\x63tive\x18\x02 \x01(\x08R\x06\x61\x63tive\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x16\n\x06\x63ursor\x18\x04 \x01(\tR\x06\x63ursor\x12&\n\x0f\x66rom_start_date\x18\x05 \x01(\x12R\rfromStartDate\x12\"\n\rto_start_date\x18\x06 \x01(\x12R\x0btoStartDate\x12\"\n\rfrom_end_date\x18\x07 \x01(\x12R\x0b\x66romEndDate\x12\x1e\n\x0bto_end_date\x18\x08 \x01(\x12R\ttoEndDate\x12\x16\n\x06status\x18\t \x01(\tR\x06status\"o\n\x13\x43\x61mpaignsV2Response\x12@\n\tcampaigns\x18\x01 \x03(\x0b\x32\".injective_campaign_rpc.CampaignV2R\tcampaigns\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor\"\xc3\x04\n\nCampaignV2\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1f\n\x0btotal_score\x18\x04 \x01(\tR\ntotalScore\x12\x1d\n\ncreated_at\x18\x05 \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x06 \x01(\x12R\tupdatedAt\x12\x1d\n\nstart_date\x18\x07 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x08 \x01(\x12R\x07\x65ndDate\x12!\n\x0cis_claimable\x18\t \x01(\x08R\x0bisClaimable\x12\x19\n\x08round_id\x18\n \x01(\x11R\x07roundId\x12)\n\x10manager_contract\x18\x0b \x01(\tR\x0fmanagerContract\x12\x36\n\x07rewards\x18\x0c \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\x07rewards\x12\x30\n\x14subaccount_id_suffix\x18\r \x01(\tR\x12subaccountIdSuffix\x12\'\n\x0freward_contract\x18\x0e \x01(\tR\x0erewardContract\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12\x18\n\x07version\x18\x10 \x01(\tR\x07version\x12\x12\n\x04name\x18\x11 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x12 \x01(\tR\x0b\x64\x65scription\"\x83\x01\n\x11ListGuildsRequest\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x03 \x01(\x11R\x04skip\x12\x17\n\x07sort_by\x18\x04 \x01(\tR\x06sortBy\"\xf6\x01\n\x12ListGuildsResponse\x12\x35\n\x06guilds\x18\x01 \x03(\x0b\x32\x1d.injective_campaign_rpc.GuildR\x06guilds\x12\x36\n\x06paging\x18\x02 \x01(\x0b\x32\x1e.injective_campaign_rpc.PagingR\x06paging\x12\x1d\n\nupdated_at\x18\x03 \x01(\x12R\tupdatedAt\x12R\n\x10\x63\x61mpaign_summary\x18\x04 \x01(\x0b\x32\'.injective_campaign_rpc.CampaignSummaryR\x0f\x63\x61mpaignSummary\"\xe5\x03\n\x05Guild\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x19\n\x08guild_id\x18\x02 \x01(\tR\x07guildId\x12%\n\x0emaster_address\x18\x03 \x01(\tR\rmasterAddress\x12\x1d\n\ncreated_at\x18\x04 \x01(\x12R\tcreatedAt\x12\x1b\n\ttvl_score\x18\x05 \x01(\tR\x08tvlScore\x12!\n\x0cvolume_score\x18\x06 \x01(\tR\x0bvolumeScore\x12$\n\x0erank_by_volume\x18\x07 \x01(\x11R\x0crankByVolume\x12\x1e\n\x0brank_by_tvl\x18\x08 \x01(\x11R\trankByTvl\x12\x12\n\x04logo\x18\t \x01(\tR\x04logo\x12\x1b\n\ttotal_tvl\x18\n \x01(\tR\x08totalTvl\x12\x1d\n\nupdated_at\x18\x0b \x01(\x12R\tupdatedAt\x12\x12\n\x04name\x18\x0e \x01(\tR\x04name\x12\x1b\n\tis_active\x18\r \x01(\x08R\x08isActive\x12%\n\x0emaster_balance\x18\x0f \x01(\tR\rmasterBalance\x12 \n\x0b\x64\x65scription\x18\x10 \x01(\tR\x0b\x64\x65scription\"\x82\x03\n\x0f\x43\x61mpaignSummary\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12+\n\x11\x63\x61mpaign_contract\x18\x02 \x01(\tR\x10\x63\x61mpaignContract\x12,\n\x12total_guilds_count\x18\x03 \x01(\x11R\x10totalGuildsCount\x12\x1b\n\ttotal_tvl\x18\x04 \x01(\tR\x08totalTvl\x12*\n\x11total_average_tvl\x18\x05 \x01(\tR\x0ftotalAverageTvl\x12!\n\x0ctotal_volume\x18\x06 \x01(\tR\x0btotalVolume\x12\x1d\n\nupdated_at\x18\x07 \x01(\x12R\tupdatedAt\x12.\n\x13total_members_count\x18\x08 \x01(\x11R\x11totalMembersCount\x12\x1d\n\nstart_time\x18\t \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\n \x01(\x12R\x07\x65ndTime\"\xd2\x01\n\x17ListGuildMembersRequest\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x19\n\x08guild_id\x18\x02 \x01(\tR\x07guildId\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x11R\x04skip\x12,\n\x12include_guild_info\x18\x05 \x01(\x08R\x10includeGuildInfo\x12\x17\n\x07sort_by\x18\x06 \x01(\tR\x06sortBy\"\xcf\x01\n\x18ListGuildMembersResponse\x12=\n\x07members\x18\x01 \x03(\x0b\x32#.injective_campaign_rpc.GuildMemberR\x07members\x12\x36\n\x06paging\x18\x02 \x01(\x0b\x32\x1e.injective_campaign_rpc.PagingR\x06paging\x12<\n\nguild_info\x18\x03 \x01(\x0b\x32\x1d.injective_campaign_rpc.GuildR\tguildInfo\"\xd3\x03\n\x0bGuildMember\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x19\n\x08guild_id\x18\x02 \x01(\tR\x07guildId\x12\x18\n\x07\x61\x64\x64ress\x18\x03 \x01(\tR\x07\x61\x64\x64ress\x12\x1b\n\tjoined_at\x18\x04 \x01(\x12R\x08joinedAt\x12\x1b\n\ttvl_score\x18\x05 \x01(\tR\x08tvlScore\x12!\n\x0cvolume_score\x18\x06 \x01(\tR\x0bvolumeScore\x12\x1b\n\ttotal_tvl\x18\x07 \x01(\tR\x08totalTvl\x12\x36\n\x17volume_score_percentage\x18\x08 \x01(\x01R\x15volumeScorePercentage\x12\x30\n\x14tvl_score_percentage\x18\t \x01(\x01R\x12tvlScorePercentage\x12;\n\ntvl_reward\x18\n \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\ttvlReward\x12\x41\n\rvolume_reward\x18\x0b \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\x0cvolumeReward\"^\n\x15GetGuildMemberRequest\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\"Q\n\x16GetGuildMemberResponse\x12\x37\n\x04info\x18\x01 \x01(\x0b\x32#.injective_campaign_rpc.GuildMemberR\x04info2\x89\x05\n\x14InjectiveCampaignRPC\x12Z\n\x07Ranking\x12&.injective_campaign_rpc.RankingRequest\x1a\'.injective_campaign_rpc.RankingResponse\x12`\n\tCampaigns\x12(.injective_campaign_rpc.CampaignsRequest\x1a).injective_campaign_rpc.CampaignsResponse\x12\x66\n\x0b\x43\x61mpaignsV2\x12*.injective_campaign_rpc.CampaignsV2Request\x1a+.injective_campaign_rpc.CampaignsV2Response\x12\x63\n\nListGuilds\x12).injective_campaign_rpc.ListGuildsRequest\x1a*.injective_campaign_rpc.ListGuildsResponse\x12u\n\x10ListGuildMembers\x12/.injective_campaign_rpc.ListGuildMembersRequest\x1a\x30.injective_campaign_rpc.ListGuildMembersResponse\x12o\n\x0eGetGuildMember\x12-.injective_campaign_rpc.GetGuildMemberRequest\x1a..injective_campaign_rpc.GetGuildMemberResponseB\xc2\x01\n\x1a\x63om.injective_campaign_rpcB\x19InjectiveCampaignRpcProtoP\x01Z\x19/injective_campaign_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveCampaignRpc\xca\x02\x14InjectiveCampaignRpc\xe2\x02 InjectiveCampaignRpc\\GPBMetadata\xea\x02\x14InjectiveCampaignRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_campaign_rpc.proto\x12\x16injective_campaign_rpc\"\xcc\x01\n\x0eRankingRequest\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x03 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12)\n\x10\x63ontract_address\x18\x06 \x01(\tR\x0f\x63ontractAddress\"\xc3\x01\n\x0fRankingResponse\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32 .injective_campaign_rpc.CampaignR\x08\x63\x61mpaign\x12:\n\x05users\x18\x02 \x03(\x0b\x32$.injective_campaign_rpc.CampaignUserR\x05users\x12\x36\n\x06paging\x18\x03 \x01(\x0b\x32\x1e.injective_campaign_rpc.PagingR\x06paging\"\xb2\x04\n\x08\x43\x61mpaign\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1f\n\x0btotal_score\x18\x04 \x01(\tR\ntotalScore\x12!\n\x0clast_updated\x18\x05 \x01(\x12R\x0blastUpdated\x12\x1d\n\nstart_date\x18\x06 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x07 \x01(\x12R\x07\x65ndDate\x12!\n\x0cis_claimable\x18\x08 \x01(\x08R\x0bisClaimable\x12\x19\n\x08round_id\x18\t \x01(\x11R\x07roundId\x12)\n\x10manager_contract\x18\n \x01(\tR\x0fmanagerContract\x12\x36\n\x07rewards\x18\x0b \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\x07rewards\x12\x1d\n\nuser_score\x18\x0c \x01(\tR\tuserScore\x12!\n\x0cuser_claimed\x18\r \x01(\x08R\x0buserClaimed\x12\x30\n\x14subaccount_id_suffix\x18\x0e \x01(\tR\x12subaccountIdSuffix\x12\'\n\x0freward_contract\x18\x0f \x01(\tR\x0erewardContract\x12\x18\n\x07version\x18\x10 \x01(\tR\x07version\x12\x12\n\x04type\x18\x11 \x01(\tR\x04type\"Q\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x1b\n\tusd_value\x18\x03 \x01(\tR\x08usdValue\"\xef\x02\n\x0c\x43\x61mpaignUser\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x03 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x14\n\x05score\x18\x04 \x01(\tR\x05score\x12)\n\x10\x63ontract_updated\x18\x05 \x01(\x08R\x0f\x63ontractUpdated\x12!\n\x0c\x62lock_height\x18\x06 \x01(\x12R\x0b\x62lockHeight\x12\x1d\n\nblock_time\x18\x07 \x01(\x12R\tblockTime\x12)\n\x10purchased_amount\x18\x08 \x01(\tR\x0fpurchasedAmount\x12#\n\rgalxe_updated\x18\t \x01(\x08R\x0cgalxeUpdated\x12%\n\x0ereward_claimed\x18\n \x01(\x08R\rrewardClaimed\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\xb5\x01\n\x10\x43\x61mpaignsRequest\x12\x19\n\x08round_id\x18\x01 \x01(\x12R\x07roundId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x02 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x1e\n\x0bto_round_id\x18\x03 \x01(\x11R\ttoRoundId\x12)\n\x10\x63ontract_address\x18\x04 \x01(\tR\x0f\x63ontractAddress\x12\x12\n\x04type\x18\x05 \x01(\tR\x04type\"\xc5\x01\n\x11\x43\x61mpaignsResponse\x12>\n\tcampaigns\x18\x01 \x03(\x0b\x32 .injective_campaign_rpc.CampaignR\tcampaigns\x12M\n\x13\x61\x63\x63umulated_rewards\x18\x02 \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\x12\x61\x63\x63umulatedRewards\x12!\n\x0creward_count\x18\x03 \x01(\x11R\x0brewardCount\"\x96\x02\n\x12\x43\x61mpaignsV2Request\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x16\n\x06\x61\x63tive\x18\x02 \x01(\x08R\x06\x61\x63tive\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x16\n\x06\x63ursor\x18\x04 \x01(\tR\x06\x63ursor\x12&\n\x0f\x66rom_start_date\x18\x05 \x01(\x12R\rfromStartDate\x12\"\n\rto_start_date\x18\x06 \x01(\x12R\x0btoStartDate\x12\"\n\rfrom_end_date\x18\x07 \x01(\x12R\x0b\x66romEndDate\x12\x1e\n\x0bto_end_date\x18\x08 \x01(\x12R\ttoEndDate\x12\x16\n\x06status\x18\t \x01(\tR\x06status\"o\n\x13\x43\x61mpaignsV2Response\x12@\n\tcampaigns\x18\x01 \x03(\x0b\x32\".injective_campaign_rpc.CampaignV2R\tcampaigns\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor\"\xc3\x04\n\nCampaignV2\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1f\n\x0btotal_score\x18\x04 \x01(\tR\ntotalScore\x12\x1d\n\ncreated_at\x18\x05 \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x06 \x01(\x12R\tupdatedAt\x12\x1d\n\nstart_date\x18\x07 \x01(\x12R\tstartDate\x12\x19\n\x08\x65nd_date\x18\x08 \x01(\x12R\x07\x65ndDate\x12!\n\x0cis_claimable\x18\t \x01(\x08R\x0bisClaimable\x12\x19\n\x08round_id\x18\n \x01(\x11R\x07roundId\x12)\n\x10manager_contract\x18\x0b \x01(\tR\x0fmanagerContract\x12\x36\n\x07rewards\x18\x0c \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\x07rewards\x12\x30\n\x14subaccount_id_suffix\x18\r \x01(\tR\x12subaccountIdSuffix\x12\'\n\x0freward_contract\x18\x0e \x01(\tR\x0erewardContract\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12\x18\n\x07version\x18\x10 \x01(\tR\x07version\x12\x12\n\x04name\x18\x11 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x12 \x01(\tR\x0b\x64\x65scription\"\x83\x01\n\x11ListGuildsRequest\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x03 \x01(\x11R\x04skip\x12\x17\n\x07sort_by\x18\x04 \x01(\tR\x06sortBy\"\xf6\x01\n\x12ListGuildsResponse\x12\x35\n\x06guilds\x18\x01 \x03(\x0b\x32\x1d.injective_campaign_rpc.GuildR\x06guilds\x12\x36\n\x06paging\x18\x02 \x01(\x0b\x32\x1e.injective_campaign_rpc.PagingR\x06paging\x12\x1d\n\nupdated_at\x18\x03 \x01(\x12R\tupdatedAt\x12R\n\x10\x63\x61mpaign_summary\x18\x04 \x01(\x0b\x32\'.injective_campaign_rpc.CampaignSummaryR\x0f\x63\x61mpaignSummary\"\xe5\x03\n\x05Guild\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x19\n\x08guild_id\x18\x02 \x01(\tR\x07guildId\x12%\n\x0emaster_address\x18\x03 \x01(\tR\rmasterAddress\x12\x1d\n\ncreated_at\x18\x04 \x01(\x12R\tcreatedAt\x12\x1b\n\ttvl_score\x18\x05 \x01(\tR\x08tvlScore\x12!\n\x0cvolume_score\x18\x06 \x01(\tR\x0bvolumeScore\x12$\n\x0erank_by_volume\x18\x07 \x01(\x11R\x0crankByVolume\x12\x1e\n\x0brank_by_tvl\x18\x08 \x01(\x11R\trankByTvl\x12\x12\n\x04logo\x18\t \x01(\tR\x04logo\x12\x1b\n\ttotal_tvl\x18\n \x01(\tR\x08totalTvl\x12\x1d\n\nupdated_at\x18\x0b \x01(\x12R\tupdatedAt\x12\x12\n\x04name\x18\x0e \x01(\tR\x04name\x12\x1b\n\tis_active\x18\r \x01(\x08R\x08isActive\x12%\n\x0emaster_balance\x18\x0f \x01(\tR\rmasterBalance\x12 \n\x0b\x64\x65scription\x18\x10 \x01(\tR\x0b\x64\x65scription\"\x82\x03\n\x0f\x43\x61mpaignSummary\x12\x1f\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tR\ncampaignId\x12+\n\x11\x63\x61mpaign_contract\x18\x02 \x01(\tR\x10\x63\x61mpaignContract\x12,\n\x12total_guilds_count\x18\x03 \x01(\x11R\x10totalGuildsCount\x12\x1b\n\ttotal_tvl\x18\x04 \x01(\tR\x08totalTvl\x12*\n\x11total_average_tvl\x18\x05 \x01(\tR\x0ftotalAverageTvl\x12!\n\x0ctotal_volume\x18\x06 \x01(\tR\x0btotalVolume\x12\x1d\n\nupdated_at\x18\x07 \x01(\x12R\tupdatedAt\x12.\n\x13total_members_count\x18\x08 \x01(\x11R\x11totalMembersCount\x12\x1d\n\nstart_time\x18\t \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\n \x01(\x12R\x07\x65ndTime\"\xd2\x01\n\x17ListGuildMembersRequest\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x19\n\x08guild_id\x18\x02 \x01(\tR\x07guildId\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x11R\x04skip\x12,\n\x12include_guild_info\x18\x05 \x01(\x08R\x10includeGuildInfo\x12\x17\n\x07sort_by\x18\x06 \x01(\tR\x06sortBy\"\xcf\x01\n\x18ListGuildMembersResponse\x12=\n\x07members\x18\x01 \x03(\x0b\x32#.injective_campaign_rpc.GuildMemberR\x07members\x12\x36\n\x06paging\x18\x02 \x01(\x0b\x32\x1e.injective_campaign_rpc.PagingR\x06paging\x12<\n\nguild_info\x18\x03 \x01(\x0b\x32\x1d.injective_campaign_rpc.GuildR\tguildInfo\"\xd3\x03\n\x0bGuildMember\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x19\n\x08guild_id\x18\x02 \x01(\tR\x07guildId\x12\x18\n\x07\x61\x64\x64ress\x18\x03 \x01(\tR\x07\x61\x64\x64ress\x12\x1b\n\tjoined_at\x18\x04 \x01(\x12R\x08joinedAt\x12\x1b\n\ttvl_score\x18\x05 \x01(\tR\x08tvlScore\x12!\n\x0cvolume_score\x18\x06 \x01(\tR\x0bvolumeScore\x12\x1b\n\ttotal_tvl\x18\x07 \x01(\tR\x08totalTvl\x12\x36\n\x17volume_score_percentage\x18\x08 \x01(\x01R\x15volumeScorePercentage\x12\x30\n\x14tvl_score_percentage\x18\t \x01(\x01R\x12tvlScorePercentage\x12;\n\ntvl_reward\x18\n \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\ttvlReward\x12\x41\n\rvolume_reward\x18\x0b \x03(\x0b\x32\x1c.injective_campaign_rpc.CoinR\x0cvolumeReward\"^\n\x15GetGuildMemberRequest\x12+\n\x11\x63\x61mpaign_contract\x18\x01 \x01(\tR\x10\x63\x61mpaignContract\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\"Q\n\x16GetGuildMemberResponse\x12\x37\n\x04info\x18\x01 \x01(\x0b\x32#.injective_campaign_rpc.GuildMemberR\x04info2\x89\x05\n\x14InjectiveCampaignRPC\x12Z\n\x07Ranking\x12&.injective_campaign_rpc.RankingRequest\x1a\'.injective_campaign_rpc.RankingResponse\x12`\n\tCampaigns\x12(.injective_campaign_rpc.CampaignsRequest\x1a).injective_campaign_rpc.CampaignsResponse\x12\x66\n\x0b\x43\x61mpaignsV2\x12*.injective_campaign_rpc.CampaignsV2Request\x1a+.injective_campaign_rpc.CampaignsV2Response\x12\x63\n\nListGuilds\x12).injective_campaign_rpc.ListGuildsRequest\x1a*.injective_campaign_rpc.ListGuildsResponse\x12u\n\x10ListGuildMembers\x12/.injective_campaign_rpc.ListGuildMembersRequest\x1a\x30.injective_campaign_rpc.ListGuildMembersResponse\x12o\n\x0eGetGuildMember\x12-.injective_campaign_rpc.GetGuildMemberRequest\x1a..injective_campaign_rpc.GetGuildMemberResponseB\xc2\x01\n\x1a\x63om.injective_campaign_rpcB\x19InjectiveCampaignRpcProtoP\x01Z\x19/injective_campaign_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveCampaignRpc\xca\x02\x14InjectiveCampaignRpc\xe2\x02 InjectiveCampaignRpc\\GPBMetadata\xea\x02\x14InjectiveCampaignRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -29,39 +29,39 @@ _globals['_CAMPAIGN']._serialized_start=471 _globals['_CAMPAIGN']._serialized_end=1033 _globals['_COIN']._serialized_start=1035 - _globals['_COIN']._serialized_end=1087 - _globals['_CAMPAIGNUSER']._serialized_start=1090 - _globals['_CAMPAIGNUSER']._serialized_end=1457 - _globals['_PAGING']._serialized_start=1460 - _globals['_PAGING']._serialized_end=1594 - _globals['_CAMPAIGNSREQUEST']._serialized_start=1597 - _globals['_CAMPAIGNSREQUEST']._serialized_end=1778 - _globals['_CAMPAIGNSRESPONSE']._serialized_start=1781 - _globals['_CAMPAIGNSRESPONSE']._serialized_end=1978 - _globals['_CAMPAIGNSV2REQUEST']._serialized_start=1981 - _globals['_CAMPAIGNSV2REQUEST']._serialized_end=2259 - _globals['_CAMPAIGNSV2RESPONSE']._serialized_start=2261 - _globals['_CAMPAIGNSV2RESPONSE']._serialized_end=2372 - _globals['_CAMPAIGNV2']._serialized_start=2375 - _globals['_CAMPAIGNV2']._serialized_end=2954 - _globals['_LISTGUILDSREQUEST']._serialized_start=2957 - _globals['_LISTGUILDSREQUEST']._serialized_end=3088 - _globals['_LISTGUILDSRESPONSE']._serialized_start=3091 - _globals['_LISTGUILDSRESPONSE']._serialized_end=3337 - _globals['_GUILD']._serialized_start=3340 - _globals['_GUILD']._serialized_end=3825 - _globals['_CAMPAIGNSUMMARY']._serialized_start=3828 - _globals['_CAMPAIGNSUMMARY']._serialized_end=4214 - _globals['_LISTGUILDMEMBERSREQUEST']._serialized_start=4217 - _globals['_LISTGUILDMEMBERSREQUEST']._serialized_end=4427 - _globals['_LISTGUILDMEMBERSRESPONSE']._serialized_start=4430 - _globals['_LISTGUILDMEMBERSRESPONSE']._serialized_end=4637 - _globals['_GUILDMEMBER']._serialized_start=4640 - _globals['_GUILDMEMBER']._serialized_end=5107 - _globals['_GETGUILDMEMBERREQUEST']._serialized_start=5109 - _globals['_GETGUILDMEMBERREQUEST']._serialized_end=5203 - _globals['_GETGUILDMEMBERRESPONSE']._serialized_start=5205 - _globals['_GETGUILDMEMBERRESPONSE']._serialized_end=5286 - _globals['_INJECTIVECAMPAIGNRPC']._serialized_start=5289 - _globals['_INJECTIVECAMPAIGNRPC']._serialized_end=5938 + _globals['_COIN']._serialized_end=1116 + _globals['_CAMPAIGNUSER']._serialized_start=1119 + _globals['_CAMPAIGNUSER']._serialized_end=1486 + _globals['_PAGING']._serialized_start=1489 + _globals['_PAGING']._serialized_end=1623 + _globals['_CAMPAIGNSREQUEST']._serialized_start=1626 + _globals['_CAMPAIGNSREQUEST']._serialized_end=1807 + _globals['_CAMPAIGNSRESPONSE']._serialized_start=1810 + _globals['_CAMPAIGNSRESPONSE']._serialized_end=2007 + _globals['_CAMPAIGNSV2REQUEST']._serialized_start=2010 + _globals['_CAMPAIGNSV2REQUEST']._serialized_end=2288 + _globals['_CAMPAIGNSV2RESPONSE']._serialized_start=2290 + _globals['_CAMPAIGNSV2RESPONSE']._serialized_end=2401 + _globals['_CAMPAIGNV2']._serialized_start=2404 + _globals['_CAMPAIGNV2']._serialized_end=2983 + _globals['_LISTGUILDSREQUEST']._serialized_start=2986 + _globals['_LISTGUILDSREQUEST']._serialized_end=3117 + _globals['_LISTGUILDSRESPONSE']._serialized_start=3120 + _globals['_LISTGUILDSRESPONSE']._serialized_end=3366 + _globals['_GUILD']._serialized_start=3369 + _globals['_GUILD']._serialized_end=3854 + _globals['_CAMPAIGNSUMMARY']._serialized_start=3857 + _globals['_CAMPAIGNSUMMARY']._serialized_end=4243 + _globals['_LISTGUILDMEMBERSREQUEST']._serialized_start=4246 + _globals['_LISTGUILDMEMBERSREQUEST']._serialized_end=4456 + _globals['_LISTGUILDMEMBERSRESPONSE']._serialized_start=4459 + _globals['_LISTGUILDMEMBERSRESPONSE']._serialized_end=4666 + _globals['_GUILDMEMBER']._serialized_start=4669 + _globals['_GUILDMEMBER']._serialized_end=5136 + _globals['_GETGUILDMEMBERREQUEST']._serialized_start=5138 + _globals['_GETGUILDMEMBERREQUEST']._serialized_end=5232 + _globals['_GETGUILDMEMBERRESPONSE']._serialized_start=5234 + _globals['_GETGUILDMEMBERRESPONSE']._serialized_end=5315 + _globals['_INJECTIVECAMPAIGNRPC']._serialized_start=5318 + _globals['_INJECTIVECAMPAIGNRPC']._serialized_end=5967 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_chart_rpc_pb2.py b/pyinjective/proto/exchange/injective_chart_rpc_pb2.py index dd17fc23..acf2edf7 100644 --- a/pyinjective/proto/exchange/injective_chart_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_chart_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"exchange/injective_chart_rpc.proto\x12\x13injective_chart_rpc\"\xb1\x01\n\x18SpotMarketHistoryRequest\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\x12\x12\n\x04\x66rom\x18\x04 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x11R\x02to\x12\x1c\n\tcountback\x18\x06 \x01(\x11R\tcountback\"o\n\x19SpotMarketHistoryResponse\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01o\x18\x02 \x03(\x01R\x01o\x12\x0c\n\x01h\x18\x03 \x03(\x01R\x01h\x12\x0c\n\x01l\x18\x04 \x03(\x01R\x01l\x12\x0c\n\x01\x63\x18\x05 \x03(\x01R\x01\x63\x12\x0c\n\x01v\x18\x06 \x03(\x01R\x01v\"\xb7\x01\n\x1e\x44\x65rivativeMarketHistoryRequest\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\x12\x12\n\x04\x66rom\x18\x04 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x11R\x02to\x12\x1c\n\tcountback\x18\x06 \x01(\x11R\tcountback\"u\n\x1f\x44\x65rivativeMarketHistoryResponse\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01o\x18\x02 \x03(\x01R\x01o\x12\x0c\n\x01h\x18\x03 \x03(\x01R\x01h\x12\x0c\n\x01l\x18\x04 \x03(\x01R\x01l\x12\x0c\n\x01\x63\x18\x05 \x03(\x01R\x01\x63\x12\x0c\n\x01v\x18\x06 \x03(\x01R\x01v2\x8e\x02\n\x11InjectiveChartRPC\x12r\n\x11SpotMarketHistory\x12-.injective_chart_rpc.SpotMarketHistoryRequest\x1a..injective_chart_rpc.SpotMarketHistoryResponse\x12\x84\x01\n\x17\x44\x65rivativeMarketHistory\x12\x33.injective_chart_rpc.DerivativeMarketHistoryRequest\x1a\x34.injective_chart_rpc.DerivativeMarketHistoryResponseB\xad\x01\n\x17\x63om.injective_chart_rpcB\x16InjectiveChartRpcProtoP\x01Z\x16/injective_chart_rpcpb\xa2\x02\x03IXX\xaa\x02\x11InjectiveChartRpc\xca\x02\x11InjectiveChartRpc\xe2\x02\x1dInjectiveChartRpc\\GPBMetadata\xea\x02\x11InjectiveChartRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"exchange/injective_chart_rpc.proto\x12\x13injective_chart_rpc\"\xb1\x01\n\x18SpotMarketHistoryRequest\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\x12\x12\n\x04\x66rom\x18\x04 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x11R\x02to\x12\x1c\n\tcountback\x18\x06 \x01(\x11R\tcountback\"}\n\x19SpotMarketHistoryResponse\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01o\x18\x02 \x03(\x01R\x01o\x12\x0c\n\x01h\x18\x03 \x03(\x01R\x01h\x12\x0c\n\x01l\x18\x04 \x03(\x01R\x01l\x12\x0c\n\x01\x63\x18\x05 \x03(\x01R\x01\x63\x12\x0c\n\x01v\x18\x06 \x03(\x01R\x01v\x12\x0c\n\x01s\x18\x07 \x01(\tR\x01s\"\xb7\x01\n\x1e\x44\x65rivativeMarketHistoryRequest\x12\x16\n\x06symbol\x18\x01 \x01(\tR\x06symbol\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\x12\x12\n\x04\x66rom\x18\x04 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x11R\x02to\x12\x1c\n\tcountback\x18\x06 \x01(\x11R\tcountback\"\x83\x01\n\x1f\x44\x65rivativeMarketHistoryResponse\x12\x0c\n\x01t\x18\x01 \x03(\x11R\x01t\x12\x0c\n\x01o\x18\x02 \x03(\x01R\x01o\x12\x0c\n\x01h\x18\x03 \x03(\x01R\x01h\x12\x0c\n\x01l\x18\x04 \x03(\x01R\x01l\x12\x0c\n\x01\x63\x18\x05 \x03(\x01R\x01\x63\x12\x0c\n\x01v\x18\x06 \x03(\x01R\x01v\x12\x0c\n\x01s\x18\x07 \x01(\tR\x01s\"W\n\x18SpotMarketSummaryRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1e\n\nresolution\x18\x02 \x01(\tR\nresolution\"\xb8\x01\n\x19SpotMarketSummaryResponse\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x12\n\x04open\x18\x02 \x01(\x01R\x04open\x12\x12\n\x04high\x18\x03 \x01(\x01R\x04high\x12\x10\n\x03low\x18\x04 \x01(\x01R\x03low\x12\x16\n\x06volume\x18\x05 \x01(\x01R\x06volume\x12\x14\n\x05price\x18\x06 \x01(\x01R\x05price\x12\x16\n\x06\x63hange\x18\x07 \x01(\x01R\x06\x63hange\"=\n\x1b\x41llSpotMarketSummaryRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\"\\\n\x1c\x41llSpotMarketSummaryResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_chart_rpc.MarketSummaryRespR\x05\x66ield\"\xb0\x01\n\x11MarketSummaryResp\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x12\n\x04open\x18\x02 \x01(\x01R\x04open\x12\x12\n\x04high\x18\x03 \x01(\x01R\x04high\x12\x10\n\x03low\x18\x04 \x01(\x01R\x03low\x12\x16\n\x06volume\x18\x05 \x01(\x01R\x06volume\x12\x14\n\x05price\x18\x06 \x01(\x01R\x05price\x12\x16\n\x06\x63hange\x18\x07 \x01(\x01R\x06\x63hange\"~\n\x1e\x44\x65rivativeMarketSummaryRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1f\n\x0bindex_price\x18\x02 \x01(\x08R\nindexPrice\x12\x1e\n\nresolution\x18\x03 \x01(\tR\nresolution\"\xbe\x01\n\x1f\x44\x65rivativeMarketSummaryResponse\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x12\n\x04open\x18\x02 \x01(\x01R\x04open\x12\x12\n\x04high\x18\x03 \x01(\x01R\x04high\x12\x10\n\x03low\x18\x04 \x01(\x01R\x03low\x12\x16\n\x06volume\x18\x05 \x01(\x01R\x06volume\x12\x14\n\x05price\x18\x06 \x01(\x01R\x05price\x12\x16\n\x06\x63hange\x18\x07 \x01(\x01R\x06\x63hange\"C\n!AllDerivativeMarketSummaryRequest\x12\x1e\n\nresolution\x18\x01 \x01(\tR\nresolution\"b\n\"AllDerivativeMarketSummaryResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_chart_rpc.MarketSummaryRespR\x05\x66ield2\x96\x06\n\x11InjectiveChartRPC\x12r\n\x11SpotMarketHistory\x12-.injective_chart_rpc.SpotMarketHistoryRequest\x1a..injective_chart_rpc.SpotMarketHistoryResponse\x12\x84\x01\n\x17\x44\x65rivativeMarketHistory\x12\x33.injective_chart_rpc.DerivativeMarketHistoryRequest\x1a\x34.injective_chart_rpc.DerivativeMarketHistoryResponse\x12r\n\x11SpotMarketSummary\x12-.injective_chart_rpc.SpotMarketSummaryRequest\x1a..injective_chart_rpc.SpotMarketSummaryResponse\x12{\n\x14\x41llSpotMarketSummary\x12\x30.injective_chart_rpc.AllSpotMarketSummaryRequest\x1a\x31.injective_chart_rpc.AllSpotMarketSummaryResponse\x12\x84\x01\n\x17\x44\x65rivativeMarketSummary\x12\x33.injective_chart_rpc.DerivativeMarketSummaryRequest\x1a\x34.injective_chart_rpc.DerivativeMarketSummaryResponse\x12\x8d\x01\n\x1a\x41llDerivativeMarketSummary\x12\x36.injective_chart_rpc.AllDerivativeMarketSummaryRequest\x1a\x37.injective_chart_rpc.AllDerivativeMarketSummaryResponseB\xad\x01\n\x17\x63om.injective_chart_rpcB\x16InjectiveChartRpcProtoP\x01Z\x16/injective_chart_rpcpb\xa2\x02\x03IXX\xaa\x02\x11InjectiveChartRpc\xca\x02\x11InjectiveChartRpc\xe2\x02\x1dInjectiveChartRpc\\GPBMetadata\xea\x02\x11InjectiveChartRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -25,11 +25,29 @@ _globals['_SPOTMARKETHISTORYREQUEST']._serialized_start=60 _globals['_SPOTMARKETHISTORYREQUEST']._serialized_end=237 _globals['_SPOTMARKETHISTORYRESPONSE']._serialized_start=239 - _globals['_SPOTMARKETHISTORYRESPONSE']._serialized_end=350 - _globals['_DERIVATIVEMARKETHISTORYREQUEST']._serialized_start=353 - _globals['_DERIVATIVEMARKETHISTORYREQUEST']._serialized_end=536 - _globals['_DERIVATIVEMARKETHISTORYRESPONSE']._serialized_start=538 - _globals['_DERIVATIVEMARKETHISTORYRESPONSE']._serialized_end=655 - _globals['_INJECTIVECHARTRPC']._serialized_start=658 - _globals['_INJECTIVECHARTRPC']._serialized_end=928 + _globals['_SPOTMARKETHISTORYRESPONSE']._serialized_end=364 + _globals['_DERIVATIVEMARKETHISTORYREQUEST']._serialized_start=367 + _globals['_DERIVATIVEMARKETHISTORYREQUEST']._serialized_end=550 + _globals['_DERIVATIVEMARKETHISTORYRESPONSE']._serialized_start=553 + _globals['_DERIVATIVEMARKETHISTORYRESPONSE']._serialized_end=684 + _globals['_SPOTMARKETSUMMARYREQUEST']._serialized_start=686 + _globals['_SPOTMARKETSUMMARYREQUEST']._serialized_end=773 + _globals['_SPOTMARKETSUMMARYRESPONSE']._serialized_start=776 + _globals['_SPOTMARKETSUMMARYRESPONSE']._serialized_end=960 + _globals['_ALLSPOTMARKETSUMMARYREQUEST']._serialized_start=962 + _globals['_ALLSPOTMARKETSUMMARYREQUEST']._serialized_end=1023 + _globals['_ALLSPOTMARKETSUMMARYRESPONSE']._serialized_start=1025 + _globals['_ALLSPOTMARKETSUMMARYRESPONSE']._serialized_end=1117 + _globals['_MARKETSUMMARYRESP']._serialized_start=1120 + _globals['_MARKETSUMMARYRESP']._serialized_end=1296 + _globals['_DERIVATIVEMARKETSUMMARYREQUEST']._serialized_start=1298 + _globals['_DERIVATIVEMARKETSUMMARYREQUEST']._serialized_end=1424 + _globals['_DERIVATIVEMARKETSUMMARYRESPONSE']._serialized_start=1427 + _globals['_DERIVATIVEMARKETSUMMARYRESPONSE']._serialized_end=1617 + _globals['_ALLDERIVATIVEMARKETSUMMARYREQUEST']._serialized_start=1619 + _globals['_ALLDERIVATIVEMARKETSUMMARYREQUEST']._serialized_end=1686 + _globals['_ALLDERIVATIVEMARKETSUMMARYRESPONSE']._serialized_start=1688 + _globals['_ALLDERIVATIVEMARKETSUMMARYRESPONSE']._serialized_end=1786 + _globals['_INJECTIVECHARTRPC']._serialized_start=1789 + _globals['_INJECTIVECHARTRPC']._serialized_end=2579 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_chart_rpc_pb2_grpc.py b/pyinjective/proto/exchange/injective_chart_rpc_pb2_grpc.py index 76acb524..f99e2f75 100644 --- a/pyinjective/proto/exchange/injective_chart_rpc_pb2_grpc.py +++ b/pyinjective/proto/exchange/injective_chart_rpc_pb2_grpc.py @@ -25,6 +25,26 @@ def __init__(self, channel): request_serializer=exchange_dot_injective__chart__rpc__pb2.DerivativeMarketHistoryRequest.SerializeToString, response_deserializer=exchange_dot_injective__chart__rpc__pb2.DerivativeMarketHistoryResponse.FromString, _registered_method=True) + self.SpotMarketSummary = channel.unary_unary( + '/injective_chart_rpc.InjectiveChartRPC/SpotMarketSummary', + request_serializer=exchange_dot_injective__chart__rpc__pb2.SpotMarketSummaryRequest.SerializeToString, + response_deserializer=exchange_dot_injective__chart__rpc__pb2.SpotMarketSummaryResponse.FromString, + _registered_method=True) + self.AllSpotMarketSummary = channel.unary_unary( + '/injective_chart_rpc.InjectiveChartRPC/AllSpotMarketSummary', + request_serializer=exchange_dot_injective__chart__rpc__pb2.AllSpotMarketSummaryRequest.SerializeToString, + response_deserializer=exchange_dot_injective__chart__rpc__pb2.AllSpotMarketSummaryResponse.FromString, + _registered_method=True) + self.DerivativeMarketSummary = channel.unary_unary( + '/injective_chart_rpc.InjectiveChartRPC/DerivativeMarketSummary', + request_serializer=exchange_dot_injective__chart__rpc__pb2.DerivativeMarketSummaryRequest.SerializeToString, + response_deserializer=exchange_dot_injective__chart__rpc__pb2.DerivativeMarketSummaryResponse.FromString, + _registered_method=True) + self.AllDerivativeMarketSummary = channel.unary_unary( + '/injective_chart_rpc.InjectiveChartRPC/AllDerivativeMarketSummary', + request_serializer=exchange_dot_injective__chart__rpc__pb2.AllDerivativeMarketSummaryRequest.SerializeToString, + response_deserializer=exchange_dot_injective__chart__rpc__pb2.AllDerivativeMarketSummaryResponse.FromString, + _registered_method=True) class InjectiveChartRPCServicer(object): @@ -45,6 +65,36 @@ def DerivativeMarketHistory(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def SpotMarketSummary(self, request, context): + """Gets spot market summary for the latest interval (hour, day, month) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AllSpotMarketSummary(self, request, context): + """Gets batch summary for all active markets, for the latest interval (hour, + day, month) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DerivativeMarketSummary(self, request, context): + """Gets derivative market summary for the latest interval (hour, day, month) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def AllDerivativeMarketSummary(self, request, context): + """Gets batch summary for all active markets, for the latest interval (hour, + day, month) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_InjectiveChartRPCServicer_to_server(servicer, server): rpc_method_handlers = { @@ -58,6 +108,26 @@ def add_InjectiveChartRPCServicer_to_server(servicer, server): request_deserializer=exchange_dot_injective__chart__rpc__pb2.DerivativeMarketHistoryRequest.FromString, response_serializer=exchange_dot_injective__chart__rpc__pb2.DerivativeMarketHistoryResponse.SerializeToString, ), + 'SpotMarketSummary': grpc.unary_unary_rpc_method_handler( + servicer.SpotMarketSummary, + request_deserializer=exchange_dot_injective__chart__rpc__pb2.SpotMarketSummaryRequest.FromString, + response_serializer=exchange_dot_injective__chart__rpc__pb2.SpotMarketSummaryResponse.SerializeToString, + ), + 'AllSpotMarketSummary': grpc.unary_unary_rpc_method_handler( + servicer.AllSpotMarketSummary, + request_deserializer=exchange_dot_injective__chart__rpc__pb2.AllSpotMarketSummaryRequest.FromString, + response_serializer=exchange_dot_injective__chart__rpc__pb2.AllSpotMarketSummaryResponse.SerializeToString, + ), + 'DerivativeMarketSummary': grpc.unary_unary_rpc_method_handler( + servicer.DerivativeMarketSummary, + request_deserializer=exchange_dot_injective__chart__rpc__pb2.DerivativeMarketSummaryRequest.FromString, + response_serializer=exchange_dot_injective__chart__rpc__pb2.DerivativeMarketSummaryResponse.SerializeToString, + ), + 'AllDerivativeMarketSummary': grpc.unary_unary_rpc_method_handler( + servicer.AllDerivativeMarketSummary, + request_deserializer=exchange_dot_injective__chart__rpc__pb2.AllDerivativeMarketSummaryRequest.FromString, + response_serializer=exchange_dot_injective__chart__rpc__pb2.AllDerivativeMarketSummaryResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'injective_chart_rpc.InjectiveChartRPC', rpc_method_handlers) @@ -123,3 +193,111 @@ def DerivativeMarketHistory(request, timeout, metadata, _registered_method=True) + + @staticmethod + def SpotMarketSummary(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_chart_rpc.InjectiveChartRPC/SpotMarketSummary', + exchange_dot_injective__chart__rpc__pb2.SpotMarketSummaryRequest.SerializeToString, + exchange_dot_injective__chart__rpc__pb2.SpotMarketSummaryResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AllSpotMarketSummary(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_chart_rpc.InjectiveChartRPC/AllSpotMarketSummary', + exchange_dot_injective__chart__rpc__pb2.AllSpotMarketSummaryRequest.SerializeToString, + exchange_dot_injective__chart__rpc__pb2.AllSpotMarketSummaryResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def DerivativeMarketSummary(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_chart_rpc.InjectiveChartRPC/DerivativeMarketSummary', + exchange_dot_injective__chart__rpc__pb2.DerivativeMarketSummaryRequest.SerializeToString, + exchange_dot_injective__chart__rpc__pb2.DerivativeMarketSummaryResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def AllDerivativeMarketSummary(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_chart_rpc.InjectiveChartRPC/AllDerivativeMarketSummary', + exchange_dot_injective__chart__rpc__pb2.AllDerivativeMarketSummaryRequest.SerializeToString, + exchange_dot_injective__chart__rpc__pb2.AllDerivativeMarketSummaryResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/pyinjective/proto/exchange/injective_explorer_rpc_pb2.py b/pyinjective/proto/exchange/injective_explorer_rpc_pb2.py index fd21e15c..e98abec5 100644 --- a/pyinjective/proto/exchange/injective_explorer_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_explorer_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_explorer_rpc.proto\x12\x16injective_explorer_rpc\"\xc4\x02\n\x14GetAccountTxsRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06\x62\x65\x66ore\x18\x02 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x03 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x12\n\x04type\x18\x06 \x01(\tR\x04type\x12\x16\n\x06module\x18\x07 \x01(\tR\x06module\x12\x1f\n\x0b\x66rom_number\x18\x08 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\t \x01(\x12R\x08toNumber\x12\x1d\n\nstart_time\x18\n \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x0b \x01(\x12R\x07\x65ndTime\x12\x16\n\x06status\x18\x0c \x01(\tR\x06status\"\x89\x01\n\x15GetAccountTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\xab\x05\n\x0cTxDetailData\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x12\n\x04\x63ode\x18\x05 \x01(\rR\x04\x63ode\x12\x12\n\x04\x64\x61ta\x18\x06 \x01(\x0cR\x04\x64\x61ta\x12\x12\n\x04info\x18\x08 \x01(\tR\x04info\x12\x1d\n\ngas_wanted\x18\t \x01(\x12R\tgasWanted\x12\x19\n\x08gas_used\x18\n \x01(\x12R\x07gasUsed\x12\x37\n\x07gas_fee\x18\x0b \x01(\x0b\x32\x1e.injective_explorer_rpc.GasFeeR\x06gasFee\x12\x1c\n\tcodespace\x18\x0c \x01(\tR\tcodespace\x12\x35\n\x06\x65vents\x18\r \x03(\x0b\x32\x1d.injective_explorer_rpc.EventR\x06\x65vents\x12\x17\n\x07tx_type\x18\x0e \x01(\tR\x06txType\x12\x1a\n\x08messages\x18\x0f \x01(\x0cR\x08messages\x12\x41\n\nsignatures\x18\x10 \x03(\x0b\x32!.injective_explorer_rpc.SignatureR\nsignatures\x12\x12\n\x04memo\x18\x11 \x01(\tR\x04memo\x12\x1b\n\ttx_number\x18\x12 \x01(\x04R\x08txNumber\x12\x30\n\x14\x62lock_unix_timestamp\x18\x13 \x01(\x04R\x12\x62lockUnixTimestamp\x12\x1b\n\terror_log\x18\x14 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04logs\x18\x15 \x01(\x0cR\x04logs\x12\x1b\n\tclaim_ids\x18\x16 \x03(\x12R\x08\x63laimIds\"\x91\x01\n\x06GasFee\x12:\n\x06\x61mount\x18\x01 \x03(\x0b\x32\".injective_explorer_rpc.CosmosCoinR\x06\x61mount\x12\x1b\n\tgas_limit\x18\x02 \x01(\x04R\x08gasLimit\x12\x14\n\x05payer\x18\x03 \x01(\tR\x05payer\x12\x18\n\x07granter\x18\x04 \x01(\tR\x07granter\":\n\nCosmosCoin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xa9\x01\n\x05\x45vent\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12M\n\nattributes\x18\x02 \x03(\x0b\x32-.injective_explorer_rpc.Event.AttributesEntryR\nattributes\x1a=\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"w\n\tSignature\x12\x16\n\x06pubkey\x18\x01 \x01(\tR\x06pubkey\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x1a\n\x08sequence\x18\x03 \x01(\x04R\x08sequence\x12\x1c\n\tsignature\x18\x04 \x01(\tR\tsignature\"\x99\x01\n\x15GetContractTxsRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x03 \x01(\x04R\x04skip\x12\x1f\n\x0b\x66rom_number\x18\x04 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x05 \x01(\x12R\x08toNumber\"\x8a\x01\n\x16GetContractTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"\x9b\x01\n\x17GetContractTxsV2Request\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06height\x18\x02 \x01(\x04R\x06height\x12\x12\n\x04\x66rom\x18\x03 \x01(\x12R\x04\x66rom\x12\x0e\n\x02to\x18\x04 \x01(\x12R\x02to\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x14\n\x05token\x18\x06 \x01(\tR\x05token\"h\n\x18GetContractTxsV2Response\x12\x12\n\x04next\x18\x01 \x03(\tR\x04next\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"z\n\x10GetBlocksRequest\x12\x16\n\x06\x62\x65\x66ore\x18\x01 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x02 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04\x66rom\x18\x04 \x01(\x04R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x04R\x02to\"\x82\x01\n\x11GetBlocksResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x35\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32!.injective_explorer_rpc.BlockInfoR\x04\x64\x61ta\"\xad\x02\n\tBlockInfo\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x33\n\x03txs\x18\x08 \x03(\x0b\x32!.injective_explorer_rpc.TxDataRPCR\x03txs\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp\"\xa0\x02\n\tTxDataRPC\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\tR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12\x1b\n\tclaim_ids\x18\n \x03(\x12R\x08\x63laimIds\"!\n\x0fGetBlockRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\"u\n\x10GetBlockResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12;\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\'.injective_explorer_rpc.BlockDetailInfoR\x04\x64\x61ta\"\xcd\x02\n\x0f\x42lockDetailInfo\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x1b\n\ttotal_txs\x18\x08 \x01(\x12R\x08totalTxs\x12\x30\n\x03txs\x18\t \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x03txs\x12\x1c\n\ttimestamp\x18\n \x01(\tR\ttimestamp\"\x96\x03\n\x06TxData\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\x0cR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12 \n\x0ctx_msg_types\x18\n \x01(\x0cR\ntxMsgTypes\x12\x12\n\x04logs\x18\x0b \x01(\x0cR\x04logs\x12\x1b\n\tclaim_ids\x18\x0c \x03(\x12R\x08\x63laimIds\x12\x41\n\nsignatures\x18\r \x03(\x0b\x32!.injective_explorer_rpc.SignatureR\nsignatures\"\x16\n\x14GetValidatorsRequest\"t\n\x15GetValidatorsResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x35\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32!.injective_explorer_rpc.ValidatorR\x04\x64\x61ta\"\xb5\x07\n\tValidator\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07moniker\x18\x02 \x01(\tR\x07moniker\x12)\n\x10operator_address\x18\x03 \x01(\tR\x0foperatorAddress\x12+\n\x11\x63onsensus_address\x18\x04 \x01(\tR\x10\x63onsensusAddress\x12\x16\n\x06jailed\x18\x05 \x01(\x08R\x06jailed\x12\x16\n\x06status\x18\x06 \x01(\x11R\x06status\x12\x16\n\x06tokens\x18\x07 \x01(\tR\x06tokens\x12)\n\x10\x64\x65legator_shares\x18\x08 \x01(\tR\x0f\x64\x65legatorShares\x12N\n\x0b\x64\x65scription\x18\t \x01(\x0b\x32,.injective_explorer_rpc.ValidatorDescriptionR\x0b\x64\x65scription\x12)\n\x10unbonding_height\x18\n \x01(\x12R\x0funbondingHeight\x12%\n\x0eunbonding_time\x18\x0b \x01(\tR\runbondingTime\x12\'\n\x0f\x63ommission_rate\x18\x0c \x01(\tR\x0e\x63ommissionRate\x12.\n\x13\x63ommission_max_rate\x18\r \x01(\tR\x11\x63ommissionMaxRate\x12;\n\x1a\x63ommission_max_change_rate\x18\x0e \x01(\tR\x17\x63ommissionMaxChangeRate\x12\x34\n\x16\x63ommission_update_time\x18\x0f \x01(\tR\x14\x63ommissionUpdateTime\x12\x1a\n\x08proposed\x18\x10 \x01(\x04R\x08proposed\x12\x16\n\x06signed\x18\x11 \x01(\x04R\x06signed\x12\x16\n\x06missed\x18\x12 \x01(\x04R\x06missed\x12\x1c\n\ttimestamp\x18\x13 \x01(\tR\ttimestamp\x12\x41\n\x07uptimes\x18\x14 \x03(\x0b\x32\'.injective_explorer_rpc.ValidatorUptimeR\x07uptimes\x12N\n\x0fslashing_events\x18\x15 \x03(\x0b\x32%.injective_explorer_rpc.SlashingEventR\x0eslashingEvents\x12+\n\x11uptime_percentage\x18\x16 \x01(\x01R\x10uptimePercentage\x12\x1b\n\timage_url\x18\x17 \x01(\tR\x08imageUrl\"\xc8\x01\n\x14ValidatorDescription\x12\x18\n\x07moniker\x18\x01 \x01(\tR\x07moniker\x12\x1a\n\x08identity\x18\x02 \x01(\tR\x08identity\x12\x18\n\x07website\x18\x03 \x01(\tR\x07website\x12)\n\x10security_contact\x18\x04 \x01(\tR\x0fsecurityContact\x12\x18\n\x07\x64\x65tails\x18\x05 \x01(\tR\x07\x64\x65tails\x12\x1b\n\timage_url\x18\x06 \x01(\tR\x08imageUrl\"L\n\x0fValidatorUptime\x12!\n\x0c\x62lock_number\x18\x01 \x01(\x04R\x0b\x62lockNumber\x12\x16\n\x06status\x18\x02 \x01(\tR\x06status\"\xe0\x01\n\rSlashingEvent\x12!\n\x0c\x62lock_number\x18\x01 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x02 \x01(\tR\x0e\x62lockTimestamp\x12\x18\n\x07\x61\x64\x64ress\x18\x03 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05power\x18\x04 \x01(\x04R\x05power\x12\x16\n\x06reason\x18\x05 \x01(\tR\x06reason\x12\x16\n\x06jailed\x18\x06 \x01(\tR\x06jailed\x12#\n\rmissed_blocks\x18\x07 \x01(\x04R\x0cmissedBlocks\"/\n\x13GetValidatorRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\"s\n\x14GetValidatorResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x35\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32!.injective_explorer_rpc.ValidatorR\x04\x64\x61ta\"5\n\x19GetValidatorUptimeRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\"\x7f\n\x1aGetValidatorUptimeResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12;\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32\'.injective_explorer_rpc.ValidatorUptimeR\x04\x64\x61ta\"\xa3\x02\n\rGetTxsRequest\x12\x16\n\x06\x62\x65\x66ore\x18\x01 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x02 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x12\n\x04type\x18\x05 \x01(\tR\x04type\x12\x16\n\x06module\x18\x06 \x01(\tR\x06module\x12\x1f\n\x0b\x66rom_number\x18\x07 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x08 \x01(\x12R\x08toNumber\x12\x1d\n\nstart_time\x18\t \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\n \x01(\x12R\x07\x65ndTime\x12\x16\n\x06status\x18\x0b \x01(\tR\x06status\"|\n\x0eGetTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x32\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x04\x64\x61ta\"*\n\x14GetTxByTxHashRequest\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash\"w\n\x15GetTxByTxHashResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x38\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"y\n\x19GetPeggyDepositTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\"Z\n\x1aGetPeggyDepositTxsResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_explorer_rpc.PeggyDepositTxR\x05\x66ield\"\xf9\x02\n\x0ePeggyDepositTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0b\x65vent_nonce\x18\x03 \x01(\x04R\neventNonce\x12!\n\x0c\x65vent_height\x18\x04 \x01(\x04R\x0b\x65ventHeight\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x06 \x01(\tR\x05\x64\x65nom\x12\x31\n\x14orchestrator_address\x18\x07 \x01(\tR\x13orchestratorAddress\x12\x14\n\x05state\x18\x08 \x01(\tR\x05state\x12\x1d\n\nclaim_type\x18\t \x01(\x11R\tclaimType\x12\x1b\n\ttx_hashes\x18\n \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0b \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0c \x01(\tR\tupdatedAt\"|\n\x1cGetPeggyWithdrawalTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\"`\n\x1dGetPeggyWithdrawalTxsResponse\x12?\n\x05\x66ield\x18\x01 \x03(\x0b\x32).injective_explorer_rpc.PeggyWithdrawalTxR\x05\x66ield\"\x87\x04\n\x11PeggyWithdrawalTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x04 \x01(\tR\x05\x64\x65nom\x12\x1d\n\nbridge_fee\x18\x05 \x01(\tR\tbridgeFee\x12$\n\x0eoutgoing_tx_id\x18\x06 \x01(\x04R\x0coutgoingTxId\x12#\n\rbatch_timeout\x18\x07 \x01(\x04R\x0c\x62\x61tchTimeout\x12\x1f\n\x0b\x62\x61tch_nonce\x18\x08 \x01(\x04R\nbatchNonce\x12\x31\n\x14orchestrator_address\x18\t \x01(\tR\x13orchestratorAddress\x12\x1f\n\x0b\x65vent_nonce\x18\n \x01(\x04R\neventNonce\x12!\n\x0c\x65vent_height\x18\x0b \x01(\x04R\x0b\x65ventHeight\x12\x14\n\x05state\x18\x0c \x01(\tR\x05state\x12\x1d\n\nclaim_type\x18\r \x01(\x11R\tclaimType\x12\x1b\n\ttx_hashes\x18\x0e \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\tR\tupdatedAt\"\xf4\x01\n\x18GetIBCTransferTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0bsrc_channel\x18\x03 \x01(\tR\nsrcChannel\x12\x19\n\x08src_port\x18\x04 \x01(\tR\x07srcPort\x12!\n\x0c\x64\x65st_channel\x18\x05 \x01(\tR\x0b\x64\x65stChannel\x12\x1b\n\tdest_port\x18\x06 \x01(\tR\x08\x64\x65stPort\x12\x14\n\x05limit\x18\x07 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x08 \x01(\x04R\x04skip\"X\n\x19GetIBCTransferTxsResponse\x12;\n\x05\x66ield\x18\x01 \x03(\x0b\x32%.injective_explorer_rpc.IBCTransferTxR\x05\x66ield\"\x9e\x04\n\rIBCTransferTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0bsource_port\x18\x03 \x01(\tR\nsourcePort\x12%\n\x0esource_channel\x18\x04 \x01(\tR\rsourceChannel\x12)\n\x10\x64\x65stination_port\x18\x05 \x01(\tR\x0f\x64\x65stinationPort\x12/\n\x13\x64\x65stination_channel\x18\x06 \x01(\tR\x12\x64\x65stinationChannel\x12\x16\n\x06\x61mount\x18\x07 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x08 \x01(\tR\x05\x64\x65nom\x12%\n\x0etimeout_height\x18\t \x01(\tR\rtimeoutHeight\x12+\n\x11timeout_timestamp\x18\n \x01(\x04R\x10timeoutTimestamp\x12\'\n\x0fpacket_sequence\x18\x0b \x01(\x04R\x0epacketSequence\x12\x19\n\x08\x64\x61ta_hex\x18\x0c \x01(\x0cR\x07\x64\x61taHex\x12\x14\n\x05state\x18\r \x01(\tR\x05state\x12\x1b\n\ttx_hashes\x18\x0e \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\tR\tupdatedAt\"i\n\x13GetWasmCodesRequest\x12\x14\n\x05limit\x18\x01 \x01(\x11R\x05limit\x12\x1f\n\x0b\x66rom_number\x18\x02 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x03 \x01(\x12R\x08toNumber\"\x84\x01\n\x14GetWasmCodesResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x34\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32 .injective_explorer_rpc.WasmCodeR\x04\x64\x61ta\"\xe2\x03\n\x08WasmCode\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12<\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .injective_explorer_rpc.ChecksumR\x08\x63hecksum\x12\x1d\n\ncreated_at\x18\x04 \x01(\x04R\tcreatedAt\x12#\n\rcontract_type\x18\x05 \x01(\tR\x0c\x63ontractType\x12\x18\n\x07version\x18\x06 \x01(\tR\x07version\x12J\n\npermission\x18\x07 \x01(\x0b\x32*.injective_explorer_rpc.ContractPermissionR\npermission\x12\x1f\n\x0b\x63ode_schema\x18\x08 \x01(\tR\ncodeSchema\x12\x1b\n\tcode_view\x18\t \x01(\tR\x08\x63odeView\x12\"\n\x0cinstantiates\x18\n \x01(\x04R\x0cinstantiates\x12\x18\n\x07\x63reator\x18\x0b \x01(\tR\x07\x63reator\x12\x1f\n\x0b\x63ode_number\x18\x0c \x01(\x12R\ncodeNumber\x12\x1f\n\x0bproposal_id\x18\r \x01(\x12R\nproposalId\"<\n\x08\x43hecksum\x12\x1c\n\talgorithm\x18\x01 \x01(\tR\talgorithm\x12\x12\n\x04hash\x18\x02 \x01(\tR\x04hash\"O\n\x12\x43ontractPermission\x12\x1f\n\x0b\x61\x63\x63\x65ss_type\x18\x01 \x01(\x11R\naccessType\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\"1\n\x16GetWasmCodeByIDRequest\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x12R\x06\x63odeId\"\xf1\x03\n\x17GetWasmCodeByIDResponse\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12<\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .injective_explorer_rpc.ChecksumR\x08\x63hecksum\x12\x1d\n\ncreated_at\x18\x04 \x01(\x04R\tcreatedAt\x12#\n\rcontract_type\x18\x05 \x01(\tR\x0c\x63ontractType\x12\x18\n\x07version\x18\x06 \x01(\tR\x07version\x12J\n\npermission\x18\x07 \x01(\x0b\x32*.injective_explorer_rpc.ContractPermissionR\npermission\x12\x1f\n\x0b\x63ode_schema\x18\x08 \x01(\tR\ncodeSchema\x12\x1b\n\tcode_view\x18\t \x01(\tR\x08\x63odeView\x12\"\n\x0cinstantiates\x18\n \x01(\x04R\x0cinstantiates\x12\x18\n\x07\x63reator\x18\x0b \x01(\tR\x07\x63reator\x12\x1f\n\x0b\x63ode_number\x18\x0c \x01(\x12R\ncodeNumber\x12\x1f\n\x0bproposal_id\x18\r \x01(\x12R\nproposalId\"\xd1\x01\n\x17GetWasmContractsRequest\x12\x14\n\x05limit\x18\x01 \x01(\x11R\x05limit\x12\x17\n\x07\x63ode_id\x18\x02 \x01(\x12R\x06\x63odeId\x12\x1f\n\x0b\x66rom_number\x18\x03 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x04 \x01(\x12R\x08toNumber\x12\x1f\n\x0b\x61ssets_only\x18\x05 \x01(\x08R\nassetsOnly\x12\x12\n\x04skip\x18\x06 \x01(\x12R\x04skip\x12\x14\n\x05label\x18\x07 \x01(\tR\x05label\"\x8c\x01\n\x18GetWasmContractsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.WasmContractR\x04\x64\x61ta\"\xe9\x04\n\x0cWasmContract\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x17\n\x07tx_hash\x18\x03 \x01(\tR\x06txHash\x12\x18\n\x07\x63reator\x18\x04 \x01(\tR\x07\x63reator\x12\x1a\n\x08\x65xecutes\x18\x05 \x01(\x04R\x08\x65xecutes\x12\'\n\x0finstantiated_at\x18\x06 \x01(\x04R\x0einstantiatedAt\x12!\n\x0cinit_message\x18\x07 \x01(\tR\x0binitMessage\x12(\n\x10last_executed_at\x18\x08 \x01(\x04R\x0elastExecutedAt\x12:\n\x05\x66unds\x18\t \x03(\x0b\x32$.injective_explorer_rpc.ContractFundR\x05\x66unds\x12\x17\n\x07\x63ode_id\x18\n \x01(\x04R\x06\x63odeId\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x36\n\x17\x63urrent_migrate_message\x18\x0c \x01(\tR\x15\x63urrentMigrateMessage\x12\'\n\x0f\x63ontract_number\x18\r \x01(\x12R\x0e\x63ontractNumber\x12\x18\n\x07version\x18\x0e \x01(\tR\x07version\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12I\n\rcw20_metadata\x18\x10 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\x12\x1f\n\x0bproposal_id\x18\x11 \x01(\x12R\nproposalId\"<\n\x0c\x43ontractFund\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xa6\x01\n\x0c\x43w20Metadata\x12\x44\n\ntoken_info\x18\x01 \x01(\x0b\x32%.injective_explorer_rpc.Cw20TokenInfoR\ttokenInfo\x12P\n\x0emarketing_info\x18\x02 \x01(\x0b\x32).injective_explorer_rpc.Cw20MarketingInfoR\rmarketingInfo\"z\n\rCw20TokenInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n\x06symbol\x18\x02 \x01(\tR\x06symbol\x12\x1a\n\x08\x64\x65\x63imals\x18\x03 \x01(\x12R\x08\x64\x65\x63imals\x12!\n\x0ctotal_supply\x18\x04 \x01(\tR\x0btotalSupply\"\x81\x01\n\x11\x43w20MarketingInfo\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x12\n\x04logo\x18\x03 \x01(\tR\x04logo\x12\x1c\n\tmarketing\x18\x04 \x01(\x0cR\tmarketing\"L\n\x1fGetWasmContractByAddressRequest\x12)\n\x10\x63ontract_address\x18\x01 \x01(\tR\x0f\x63ontractAddress\"\xfd\x04\n GetWasmContractByAddressResponse\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x17\n\x07tx_hash\x18\x03 \x01(\tR\x06txHash\x12\x18\n\x07\x63reator\x18\x04 \x01(\tR\x07\x63reator\x12\x1a\n\x08\x65xecutes\x18\x05 \x01(\x04R\x08\x65xecutes\x12\'\n\x0finstantiated_at\x18\x06 \x01(\x04R\x0einstantiatedAt\x12!\n\x0cinit_message\x18\x07 \x01(\tR\x0binitMessage\x12(\n\x10last_executed_at\x18\x08 \x01(\x04R\x0elastExecutedAt\x12:\n\x05\x66unds\x18\t \x03(\x0b\x32$.injective_explorer_rpc.ContractFundR\x05\x66unds\x12\x17\n\x07\x63ode_id\x18\n \x01(\x04R\x06\x63odeId\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x36\n\x17\x63urrent_migrate_message\x18\x0c \x01(\tR\x15\x63urrentMigrateMessage\x12\'\n\x0f\x63ontract_number\x18\r \x01(\x12R\x0e\x63ontractNumber\x12\x18\n\x07version\x18\x0e \x01(\tR\x07version\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12I\n\rcw20_metadata\x18\x10 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\x12\x1f\n\x0bproposal_id\x18\x11 \x01(\x12R\nproposalId\"G\n\x15GetCw20BalanceRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\"W\n\x16GetCw20BalanceResponse\x12=\n\x05\x66ield\x18\x01 \x03(\x0b\x32\'.injective_explorer_rpc.WasmCw20BalanceR\x05\x66ield\"\xda\x01\n\x0fWasmCw20Balance\x12)\n\x10\x63ontract_address\x18\x01 \x01(\tR\x0f\x63ontractAddress\x12\x18\n\x07\x61\x63\x63ount\x18\x02 \x01(\tR\x07\x61\x63\x63ount\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x1d\n\nupdated_at\x18\x04 \x01(\x12R\tupdatedAt\x12I\n\rcw20_metadata\x18\x05 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\"1\n\x0fRelayersRequest\x12\x1e\n\x0bmarket_i_ds\x18\x01 \x03(\tR\tmarketIDs\"P\n\x10RelayersResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_explorer_rpc.RelayerMarketsR\x05\x66ield\"j\n\x0eRelayerMarkets\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12;\n\x08relayers\x18\x02 \x03(\x0b\x32\x1f.injective_explorer_rpc.RelayerR\x08relayers\"/\n\x07Relayer\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03\x63ta\x18\x02 \x01(\tR\x03\x63ta\"\xbd\x02\n\x17GetBankTransfersRequest\x12\x18\n\x07senders\x18\x01 \x03(\tR\x07senders\x12\x1e\n\nrecipients\x18\x02 \x03(\tR\nrecipients\x12\x39\n\x19is_community_pool_related\x18\x03 \x01(\x08R\x16isCommunityPoolRelated\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x18\n\x07\x61\x64\x64ress\x18\x08 \x03(\tR\x07\x61\x64\x64ress\x12\x19\n\x08per_page\x18\t \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\n \x01(\tR\x05token\"\x8c\x01\n\x18GetBankTransfersResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.BankTransferR\x04\x64\x61ta\"\xc8\x01\n\x0c\x42\x61nkTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1c\n\trecipient\x18\x02 \x01(\tR\trecipient\x12\x36\n\x07\x61mounts\x18\x03 \x03(\x0b\x32\x1c.injective_explorer_rpc.CoinR\x07\x61mounts\x12!\n\x0c\x62lock_number\x18\x04 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x05 \x01(\tR\x0e\x62lockTimestamp\"4\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\x12\n\x10StreamTxsRequest\"\xa8\x02\n\x11StreamTxsResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\tR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12\x1b\n\tclaim_ids\x18\n \x03(\x12R\x08\x63laimIds\"\x15\n\x13StreamBlocksRequest\"\xb8\x02\n\x14StreamBlocksResponse\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x33\n\x03txs\x18\x08 \x03(\x0b\x32!.injective_explorer_rpc.TxDataRPCR\x03txs\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp\"\x11\n\x0fGetStatsRequest\"\x9c\x02\n\x10GetStatsResponse\x12\x1c\n\taddresses\x18\x01 \x01(\x04R\taddresses\x12\x16\n\x06\x61ssets\x18\x02 \x01(\x04R\x06\x61ssets\x12\x1d\n\ninj_supply\x18\x03 \x01(\x04R\tinjSupply\x12\x1c\n\ntxs_ps24_h\x18\x04 \x01(\x04R\x08txsPs24H\x12\x1e\n\x0btxs_ps100_b\x18\x05 \x01(\x04R\ttxsPs100B\x12\x1b\n\ttxs_total\x18\x06 \x01(\x04R\x08txsTotal\x12\x17\n\x07txs24_h\x18\x07 \x01(\x04R\x06txs24H\x12\x17\n\x07txs30_d\x18\x08 \x01(\x04R\x06txs30D\x12&\n\x0f\x62lock_count24_h\x18\t \x01(\x04R\rblockCount24H2\xa5\x14\n\x14InjectiveExplorerRPC\x12l\n\rGetAccountTxs\x12,.injective_explorer_rpc.GetAccountTxsRequest\x1a-.injective_explorer_rpc.GetAccountTxsResponse\x12o\n\x0eGetContractTxs\x12-.injective_explorer_rpc.GetContractTxsRequest\x1a..injective_explorer_rpc.GetContractTxsResponse\x12u\n\x10GetContractTxsV2\x12/.injective_explorer_rpc.GetContractTxsV2Request\x1a\x30.injective_explorer_rpc.GetContractTxsV2Response\x12`\n\tGetBlocks\x12(.injective_explorer_rpc.GetBlocksRequest\x1a).injective_explorer_rpc.GetBlocksResponse\x12]\n\x08GetBlock\x12\'.injective_explorer_rpc.GetBlockRequest\x1a(.injective_explorer_rpc.GetBlockResponse\x12l\n\rGetValidators\x12,.injective_explorer_rpc.GetValidatorsRequest\x1a-.injective_explorer_rpc.GetValidatorsResponse\x12i\n\x0cGetValidator\x12+.injective_explorer_rpc.GetValidatorRequest\x1a,.injective_explorer_rpc.GetValidatorResponse\x12{\n\x12GetValidatorUptime\x12\x31.injective_explorer_rpc.GetValidatorUptimeRequest\x1a\x32.injective_explorer_rpc.GetValidatorUptimeResponse\x12W\n\x06GetTxs\x12%.injective_explorer_rpc.GetTxsRequest\x1a&.injective_explorer_rpc.GetTxsResponse\x12l\n\rGetTxByTxHash\x12,.injective_explorer_rpc.GetTxByTxHashRequest\x1a-.injective_explorer_rpc.GetTxByTxHashResponse\x12{\n\x12GetPeggyDepositTxs\x12\x31.injective_explorer_rpc.GetPeggyDepositTxsRequest\x1a\x32.injective_explorer_rpc.GetPeggyDepositTxsResponse\x12\x84\x01\n\x15GetPeggyWithdrawalTxs\x12\x34.injective_explorer_rpc.GetPeggyWithdrawalTxsRequest\x1a\x35.injective_explorer_rpc.GetPeggyWithdrawalTxsResponse\x12x\n\x11GetIBCTransferTxs\x12\x30.injective_explorer_rpc.GetIBCTransferTxsRequest\x1a\x31.injective_explorer_rpc.GetIBCTransferTxsResponse\x12i\n\x0cGetWasmCodes\x12+.injective_explorer_rpc.GetWasmCodesRequest\x1a,.injective_explorer_rpc.GetWasmCodesResponse\x12r\n\x0fGetWasmCodeByID\x12..injective_explorer_rpc.GetWasmCodeByIDRequest\x1a/.injective_explorer_rpc.GetWasmCodeByIDResponse\x12u\n\x10GetWasmContracts\x12/.injective_explorer_rpc.GetWasmContractsRequest\x1a\x30.injective_explorer_rpc.GetWasmContractsResponse\x12\x8d\x01\n\x18GetWasmContractByAddress\x12\x37.injective_explorer_rpc.GetWasmContractByAddressRequest\x1a\x38.injective_explorer_rpc.GetWasmContractByAddressResponse\x12o\n\x0eGetCw20Balance\x12-.injective_explorer_rpc.GetCw20BalanceRequest\x1a..injective_explorer_rpc.GetCw20BalanceResponse\x12]\n\x08Relayers\x12\'.injective_explorer_rpc.RelayersRequest\x1a(.injective_explorer_rpc.RelayersResponse\x12u\n\x10GetBankTransfers\x12/.injective_explorer_rpc.GetBankTransfersRequest\x1a\x30.injective_explorer_rpc.GetBankTransfersResponse\x12\x62\n\tStreamTxs\x12(.injective_explorer_rpc.StreamTxsRequest\x1a).injective_explorer_rpc.StreamTxsResponse0\x01\x12k\n\x0cStreamBlocks\x12+.injective_explorer_rpc.StreamBlocksRequest\x1a,.injective_explorer_rpc.StreamBlocksResponse0\x01\x12]\n\x08GetStats\x12\'.injective_explorer_rpc.GetStatsRequest\x1a(.injective_explorer_rpc.GetStatsResponseB\xc2\x01\n\x1a\x63om.injective_explorer_rpcB\x19InjectiveExplorerRpcProtoP\x01Z\x19/injective_explorer_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveExplorerRpc\xca\x02\x14InjectiveExplorerRpc\xe2\x02 InjectiveExplorerRpc\\GPBMetadata\xea\x02\x14InjectiveExplorerRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_explorer_rpc.proto\x12\x16injective_explorer_rpc\"\xc4\x02\n\x14GetAccountTxsRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06\x62\x65\x66ore\x18\x02 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x03 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x12\n\x04type\x18\x06 \x01(\tR\x04type\x12\x16\n\x06module\x18\x07 \x01(\tR\x06module\x12\x1f\n\x0b\x66rom_number\x18\x08 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\t \x01(\x12R\x08toNumber\x12\x1d\n\nstart_time\x18\n \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x0b \x01(\x12R\x07\x65ndTime\x12\x16\n\x06status\x18\x0c \x01(\tR\x06status\"\x89\x01\n\x15GetAccountTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\xab\x05\n\x0cTxDetailData\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x12\n\x04\x63ode\x18\x05 \x01(\rR\x04\x63ode\x12\x12\n\x04\x64\x61ta\x18\x06 \x01(\x0cR\x04\x64\x61ta\x12\x12\n\x04info\x18\x08 \x01(\tR\x04info\x12\x1d\n\ngas_wanted\x18\t \x01(\x12R\tgasWanted\x12\x19\n\x08gas_used\x18\n \x01(\x12R\x07gasUsed\x12\x37\n\x07gas_fee\x18\x0b \x01(\x0b\x32\x1e.injective_explorer_rpc.GasFeeR\x06gasFee\x12\x1c\n\tcodespace\x18\x0c \x01(\tR\tcodespace\x12\x35\n\x06\x65vents\x18\r \x03(\x0b\x32\x1d.injective_explorer_rpc.EventR\x06\x65vents\x12\x17\n\x07tx_type\x18\x0e \x01(\tR\x06txType\x12\x1a\n\x08messages\x18\x0f \x01(\x0cR\x08messages\x12\x41\n\nsignatures\x18\x10 \x03(\x0b\x32!.injective_explorer_rpc.SignatureR\nsignatures\x12\x12\n\x04memo\x18\x11 \x01(\tR\x04memo\x12\x1b\n\ttx_number\x18\x12 \x01(\x04R\x08txNumber\x12\x30\n\x14\x62lock_unix_timestamp\x18\x13 \x01(\x04R\x12\x62lockUnixTimestamp\x12\x1b\n\terror_log\x18\x14 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04logs\x18\x15 \x01(\x0cR\x04logs\x12\x1b\n\tclaim_ids\x18\x16 \x03(\x12R\x08\x63laimIds\"\x91\x01\n\x06GasFee\x12:\n\x06\x61mount\x18\x01 \x03(\x0b\x32\".injective_explorer_rpc.CosmosCoinR\x06\x61mount\x12\x1b\n\tgas_limit\x18\x02 \x01(\x04R\x08gasLimit\x12\x14\n\x05payer\x18\x03 \x01(\tR\x05payer\x12\x18\n\x07granter\x18\x04 \x01(\tR\x07granter\":\n\nCosmosCoin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xa9\x01\n\x05\x45vent\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12M\n\nattributes\x18\x02 \x03(\x0b\x32-.injective_explorer_rpc.Event.AttributesEntryR\nattributes\x1a=\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"w\n\tSignature\x12\x16\n\x06pubkey\x18\x01 \x01(\tR\x06pubkey\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x1a\n\x08sequence\x18\x03 \x01(\x04R\x08sequence\x12\x1c\n\tsignature\x18\x04 \x01(\tR\tsignature\"\x99\x01\n\x15GetContractTxsRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x03 \x01(\x04R\x04skip\x12\x1f\n\x0b\x66rom_number\x18\x04 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x05 \x01(\x12R\x08toNumber\"\x8a\x01\n\x16GetContractTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"\x9b\x01\n\x17GetContractTxsV2Request\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06height\x18\x02 \x01(\x04R\x06height\x12\x12\n\x04\x66rom\x18\x03 \x01(\x12R\x04\x66rom\x12\x0e\n\x02to\x18\x04 \x01(\x12R\x02to\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x14\n\x05token\x18\x06 \x01(\tR\x05token\"h\n\x18GetContractTxsV2Response\x12\x12\n\x04next\x18\x01 \x03(\tR\x04next\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"z\n\x10GetBlocksRequest\x12\x16\n\x06\x62\x65\x66ore\x18\x01 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x02 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04\x66rom\x18\x04 \x01(\x04R\x04\x66rom\x12\x0e\n\x02to\x18\x05 \x01(\x04R\x02to\"\x82\x01\n\x11GetBlocksResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x35\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32!.injective_explorer_rpc.BlockInfoR\x04\x64\x61ta\"\xdf\x02\n\tBlockInfo\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x33\n\x03txs\x18\x08 \x03(\x0b\x32!.injective_explorer_rpc.TxDataRPCR\x03txs\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp\x12\x30\n\x14\x62lock_unix_timestamp\x18\n \x01(\x04R\x12\x62lockUnixTimestamp\"\xa0\x02\n\tTxDataRPC\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\tR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12\x1b\n\tclaim_ids\x18\n \x03(\x12R\x08\x63laimIds\"E\n\x12GetBlocksV2Request\x12\x19\n\x08per_page\x18\x01 \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x84\x01\n\x13GetBlocksV2Response\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.CursorR\x06paging\x12\x35\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32!.injective_explorer_rpc.BlockInfoR\x04\x64\x61ta\"V\n\x06\x43ursor\x12\x12\n\x04\x66rom\x18\x01 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x02 \x01(\x11R\x02to\x12\x12\n\x04next\x18\x03 \x03(\tR\x04next\x12\x14\n\x05total\x18\x04 \x01(\x12R\x05total\"!\n\x0fGetBlockRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\"u\n\x10GetBlockResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12;\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\'.injective_explorer_rpc.BlockDetailInfoR\x04\x64\x61ta\"\xcd\x02\n\x0f\x42lockDetailInfo\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x1b\n\ttotal_txs\x18\x08 \x01(\x12R\x08totalTxs\x12\x30\n\x03txs\x18\t \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x03txs\x12\x1c\n\ttimestamp\x18\n \x01(\tR\ttimestamp\"\xc8\x03\n\x06TxData\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\x0cR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12 \n\x0ctx_msg_types\x18\n \x01(\x0cR\ntxMsgTypes\x12\x12\n\x04logs\x18\x0b \x01(\x0cR\x04logs\x12\x1b\n\tclaim_ids\x18\x0c \x03(\x12R\x08\x63laimIds\x12\x41\n\nsignatures\x18\r \x03(\x0b\x32!.injective_explorer_rpc.SignatureR\nsignatures\x12\x30\n\x14\x62lock_unix_timestamp\x18\x0e \x01(\x04R\x12\x62lockUnixTimestamp\"\x16\n\x14GetValidatorsRequest\"t\n\x15GetValidatorsResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x35\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32!.injective_explorer_rpc.ValidatorR\x04\x64\x61ta\"\xb5\x07\n\tValidator\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n\x07moniker\x18\x02 \x01(\tR\x07moniker\x12)\n\x10operator_address\x18\x03 \x01(\tR\x0foperatorAddress\x12+\n\x11\x63onsensus_address\x18\x04 \x01(\tR\x10\x63onsensusAddress\x12\x16\n\x06jailed\x18\x05 \x01(\x08R\x06jailed\x12\x16\n\x06status\x18\x06 \x01(\x11R\x06status\x12\x16\n\x06tokens\x18\x07 \x01(\tR\x06tokens\x12)\n\x10\x64\x65legator_shares\x18\x08 \x01(\tR\x0f\x64\x65legatorShares\x12N\n\x0b\x64\x65scription\x18\t \x01(\x0b\x32,.injective_explorer_rpc.ValidatorDescriptionR\x0b\x64\x65scription\x12)\n\x10unbonding_height\x18\n \x01(\x12R\x0funbondingHeight\x12%\n\x0eunbonding_time\x18\x0b \x01(\tR\runbondingTime\x12\'\n\x0f\x63ommission_rate\x18\x0c \x01(\tR\x0e\x63ommissionRate\x12.\n\x13\x63ommission_max_rate\x18\r \x01(\tR\x11\x63ommissionMaxRate\x12;\n\x1a\x63ommission_max_change_rate\x18\x0e \x01(\tR\x17\x63ommissionMaxChangeRate\x12\x34\n\x16\x63ommission_update_time\x18\x0f \x01(\tR\x14\x63ommissionUpdateTime\x12\x1a\n\x08proposed\x18\x10 \x01(\x04R\x08proposed\x12\x16\n\x06signed\x18\x11 \x01(\x04R\x06signed\x12\x16\n\x06missed\x18\x12 \x01(\x04R\x06missed\x12\x1c\n\ttimestamp\x18\x13 \x01(\tR\ttimestamp\x12\x41\n\x07uptimes\x18\x14 \x03(\x0b\x32\'.injective_explorer_rpc.ValidatorUptimeR\x07uptimes\x12N\n\x0fslashing_events\x18\x15 \x03(\x0b\x32%.injective_explorer_rpc.SlashingEventR\x0eslashingEvents\x12+\n\x11uptime_percentage\x18\x16 \x01(\x01R\x10uptimePercentage\x12\x1b\n\timage_url\x18\x17 \x01(\tR\x08imageUrl\"\xc8\x01\n\x14ValidatorDescription\x12\x18\n\x07moniker\x18\x01 \x01(\tR\x07moniker\x12\x1a\n\x08identity\x18\x02 \x01(\tR\x08identity\x12\x18\n\x07website\x18\x03 \x01(\tR\x07website\x12)\n\x10security_contact\x18\x04 \x01(\tR\x0fsecurityContact\x12\x18\n\x07\x64\x65tails\x18\x05 \x01(\tR\x07\x64\x65tails\x12\x1b\n\timage_url\x18\x06 \x01(\tR\x08imageUrl\"L\n\x0fValidatorUptime\x12!\n\x0c\x62lock_number\x18\x01 \x01(\x04R\x0b\x62lockNumber\x12\x16\n\x06status\x18\x02 \x01(\tR\x06status\"\xe0\x01\n\rSlashingEvent\x12!\n\x0c\x62lock_number\x18\x01 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x02 \x01(\tR\x0e\x62lockTimestamp\x12\x18\n\x07\x61\x64\x64ress\x18\x03 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05power\x18\x04 \x01(\x04R\x05power\x12\x16\n\x06reason\x18\x05 \x01(\tR\x06reason\x12\x16\n\x06jailed\x18\x06 \x01(\tR\x06jailed\x12#\n\rmissed_blocks\x18\x07 \x01(\x04R\x0cmissedBlocks\"/\n\x13GetValidatorRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\"s\n\x14GetValidatorResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x35\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32!.injective_explorer_rpc.ValidatorR\x04\x64\x61ta\"5\n\x19GetValidatorUptimeRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\"\x7f\n\x1aGetValidatorUptimeResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12;\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32\'.injective_explorer_rpc.ValidatorUptimeR\x04\x64\x61ta\"\xa3\x02\n\rGetTxsRequest\x12\x16\n\x06\x62\x65\x66ore\x18\x01 \x01(\x04R\x06\x62\x65\x66ore\x12\x14\n\x05\x61\x66ter\x18\x02 \x01(\x04R\x05\x61\x66ter\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x12\n\x04type\x18\x05 \x01(\tR\x04type\x12\x16\n\x06module\x18\x06 \x01(\tR\x06module\x12\x1f\n\x0b\x66rom_number\x18\x07 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x08 \x01(\x12R\x08toNumber\x12\x1d\n\nstart_time\x18\t \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\n \x01(\x12R\x07\x65ndTime\x12\x16\n\x06status\x18\x0b \x01(\tR\x06status\"|\n\x0eGetTxsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x32\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x04\x64\x61ta\"\x90\x01\n\x0fGetTxsV2Request\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x1d\n\nstart_time\x18\x02 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x03 \x01(\x12R\x07\x65ndTime\x12\x19\n\x08per_page\x18\x04 \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\"~\n\x10GetTxsV2Response\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.CursorR\x06paging\x12\x32\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x1e.injective_explorer_rpc.TxDataR\x04\x64\x61ta\"*\n\x14GetTxByTxHashRequest\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash\"w\n\x15GetTxByTxHashResponse\x12\x0c\n\x01s\x18\x01 \x01(\tR\x01s\x12\x16\n\x06\x65rrmsg\x18\x02 \x01(\tR\x06\x65rrmsg\x12\x38\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32$.injective_explorer_rpc.TxDetailDataR\x04\x64\x61ta\"y\n\x19GetPeggyDepositTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\"Z\n\x1aGetPeggyDepositTxsResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_explorer_rpc.PeggyDepositTxR\x05\x66ield\"\xf9\x02\n\x0ePeggyDepositTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0b\x65vent_nonce\x18\x03 \x01(\x04R\neventNonce\x12!\n\x0c\x65vent_height\x18\x04 \x01(\x04R\x0b\x65ventHeight\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x06 \x01(\tR\x05\x64\x65nom\x12\x31\n\x14orchestrator_address\x18\x07 \x01(\tR\x13orchestratorAddress\x12\x14\n\x05state\x18\x08 \x01(\tR\x05state\x12\x1d\n\nclaim_type\x18\t \x01(\x11R\tclaimType\x12\x1b\n\ttx_hashes\x18\n \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0b \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0c \x01(\tR\tupdatedAt\"|\n\x1cGetPeggyWithdrawalTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\"`\n\x1dGetPeggyWithdrawalTxsResponse\x12?\n\x05\x66ield\x18\x01 \x03(\x0b\x32).injective_explorer_rpc.PeggyWithdrawalTxR\x05\x66ield\"\x87\x04\n\x11PeggyWithdrawalTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x04 \x01(\tR\x05\x64\x65nom\x12\x1d\n\nbridge_fee\x18\x05 \x01(\tR\tbridgeFee\x12$\n\x0eoutgoing_tx_id\x18\x06 \x01(\x04R\x0coutgoingTxId\x12#\n\rbatch_timeout\x18\x07 \x01(\x04R\x0c\x62\x61tchTimeout\x12\x1f\n\x0b\x62\x61tch_nonce\x18\x08 \x01(\x04R\nbatchNonce\x12\x31\n\x14orchestrator_address\x18\t \x01(\tR\x13orchestratorAddress\x12\x1f\n\x0b\x65vent_nonce\x18\n \x01(\x04R\neventNonce\x12!\n\x0c\x65vent_height\x18\x0b \x01(\x04R\x0b\x65ventHeight\x12\x14\n\x05state\x18\x0c \x01(\tR\x05state\x12\x1d\n\nclaim_type\x18\r \x01(\x11R\tclaimType\x12\x1b\n\ttx_hashes\x18\x0e \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\tR\tupdatedAt\"\xf4\x01\n\x18GetIBCTransferTxsRequest\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0bsrc_channel\x18\x03 \x01(\tR\nsrcChannel\x12\x19\n\x08src_port\x18\x04 \x01(\tR\x07srcPort\x12!\n\x0c\x64\x65st_channel\x18\x05 \x01(\tR\x0b\x64\x65stChannel\x12\x1b\n\tdest_port\x18\x06 \x01(\tR\x08\x64\x65stPort\x12\x14\n\x05limit\x18\x07 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x08 \x01(\x04R\x04skip\"X\n\x19GetIBCTransferTxsResponse\x12;\n\x05\x66ield\x18\x01 \x03(\x0b\x32%.injective_explorer_rpc.IBCTransferTxR\x05\x66ield\"\x9e\x04\n\rIBCTransferTx\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1a\n\x08receiver\x18\x02 \x01(\tR\x08receiver\x12\x1f\n\x0bsource_port\x18\x03 \x01(\tR\nsourcePort\x12%\n\x0esource_channel\x18\x04 \x01(\tR\rsourceChannel\x12)\n\x10\x64\x65stination_port\x18\x05 \x01(\tR\x0f\x64\x65stinationPort\x12/\n\x13\x64\x65stination_channel\x18\x06 \x01(\tR\x12\x64\x65stinationChannel\x12\x16\n\x06\x61mount\x18\x07 \x01(\tR\x06\x61mount\x12\x14\n\x05\x64\x65nom\x18\x08 \x01(\tR\x05\x64\x65nom\x12%\n\x0etimeout_height\x18\t \x01(\tR\rtimeoutHeight\x12+\n\x11timeout_timestamp\x18\n \x01(\x04R\x10timeoutTimestamp\x12\'\n\x0fpacket_sequence\x18\x0b \x01(\x04R\x0epacketSequence\x12\x19\n\x08\x64\x61ta_hex\x18\x0c \x01(\x0cR\x07\x64\x61taHex\x12\x14\n\x05state\x18\r \x01(\tR\x05state\x12\x1b\n\ttx_hashes\x18\x0e \x03(\tR\x08txHashes\x12\x1d\n\ncreated_at\x18\x0f \x01(\tR\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\tR\tupdatedAt\"i\n\x13GetWasmCodesRequest\x12\x14\n\x05limit\x18\x01 \x01(\x11R\x05limit\x12\x1f\n\x0b\x66rom_number\x18\x02 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x03 \x01(\x12R\x08toNumber\"\x84\x01\n\x14GetWasmCodesResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x34\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32 .injective_explorer_rpc.WasmCodeR\x04\x64\x61ta\"\xe2\x03\n\x08WasmCode\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12<\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .injective_explorer_rpc.ChecksumR\x08\x63hecksum\x12\x1d\n\ncreated_at\x18\x04 \x01(\x04R\tcreatedAt\x12#\n\rcontract_type\x18\x05 \x01(\tR\x0c\x63ontractType\x12\x18\n\x07version\x18\x06 \x01(\tR\x07version\x12J\n\npermission\x18\x07 \x01(\x0b\x32*.injective_explorer_rpc.ContractPermissionR\npermission\x12\x1f\n\x0b\x63ode_schema\x18\x08 \x01(\tR\ncodeSchema\x12\x1b\n\tcode_view\x18\t \x01(\tR\x08\x63odeView\x12\"\n\x0cinstantiates\x18\n \x01(\x04R\x0cinstantiates\x12\x18\n\x07\x63reator\x18\x0b \x01(\tR\x07\x63reator\x12\x1f\n\x0b\x63ode_number\x18\x0c \x01(\x12R\ncodeNumber\x12\x1f\n\x0bproposal_id\x18\r \x01(\x12R\nproposalId\"<\n\x08\x43hecksum\x12\x1c\n\talgorithm\x18\x01 \x01(\tR\talgorithm\x12\x12\n\x04hash\x18\x02 \x01(\tR\x04hash\"O\n\x12\x43ontractPermission\x12\x1f\n\x0b\x61\x63\x63\x65ss_type\x18\x01 \x01(\x11R\naccessType\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\"1\n\x16GetWasmCodeByIDRequest\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x12R\x06\x63odeId\"\xf1\x03\n\x17GetWasmCodeByIDResponse\x12\x17\n\x07\x63ode_id\x18\x01 \x01(\x04R\x06\x63odeId\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12<\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .injective_explorer_rpc.ChecksumR\x08\x63hecksum\x12\x1d\n\ncreated_at\x18\x04 \x01(\x04R\tcreatedAt\x12#\n\rcontract_type\x18\x05 \x01(\tR\x0c\x63ontractType\x12\x18\n\x07version\x18\x06 \x01(\tR\x07version\x12J\n\npermission\x18\x07 \x01(\x0b\x32*.injective_explorer_rpc.ContractPermissionR\npermission\x12\x1f\n\x0b\x63ode_schema\x18\x08 \x01(\tR\ncodeSchema\x12\x1b\n\tcode_view\x18\t \x01(\tR\x08\x63odeView\x12\"\n\x0cinstantiates\x18\n \x01(\x04R\x0cinstantiates\x12\x18\n\x07\x63reator\x18\x0b \x01(\tR\x07\x63reator\x12\x1f\n\x0b\x63ode_number\x18\x0c \x01(\x12R\ncodeNumber\x12\x1f\n\x0bproposal_id\x18\r \x01(\x12R\nproposalId\"\xd1\x01\n\x17GetWasmContractsRequest\x12\x14\n\x05limit\x18\x01 \x01(\x11R\x05limit\x12\x17\n\x07\x63ode_id\x18\x02 \x01(\x12R\x06\x63odeId\x12\x1f\n\x0b\x66rom_number\x18\x03 \x01(\x12R\nfromNumber\x12\x1b\n\tto_number\x18\x04 \x01(\x12R\x08toNumber\x12\x1f\n\x0b\x61ssets_only\x18\x05 \x01(\x08R\nassetsOnly\x12\x12\n\x04skip\x18\x06 \x01(\x12R\x04skip\x12\x14\n\x05label\x18\x07 \x01(\tR\x05label\"\x8c\x01\n\x18GetWasmContractsResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.WasmContractR\x04\x64\x61ta\"\xe9\x04\n\x0cWasmContract\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x17\n\x07tx_hash\x18\x03 \x01(\tR\x06txHash\x12\x18\n\x07\x63reator\x18\x04 \x01(\tR\x07\x63reator\x12\x1a\n\x08\x65xecutes\x18\x05 \x01(\x04R\x08\x65xecutes\x12\'\n\x0finstantiated_at\x18\x06 \x01(\x04R\x0einstantiatedAt\x12!\n\x0cinit_message\x18\x07 \x01(\tR\x0binitMessage\x12(\n\x10last_executed_at\x18\x08 \x01(\x04R\x0elastExecutedAt\x12:\n\x05\x66unds\x18\t \x03(\x0b\x32$.injective_explorer_rpc.ContractFundR\x05\x66unds\x12\x17\n\x07\x63ode_id\x18\n \x01(\x04R\x06\x63odeId\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x36\n\x17\x63urrent_migrate_message\x18\x0c \x01(\tR\x15\x63urrentMigrateMessage\x12\'\n\x0f\x63ontract_number\x18\r \x01(\x12R\x0e\x63ontractNumber\x12\x18\n\x07version\x18\x0e \x01(\tR\x07version\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12I\n\rcw20_metadata\x18\x10 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\x12\x1f\n\x0bproposal_id\x18\x11 \x01(\x12R\nproposalId\"<\n\x0c\x43ontractFund\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\xa6\x01\n\x0c\x43w20Metadata\x12\x44\n\ntoken_info\x18\x01 \x01(\x0b\x32%.injective_explorer_rpc.Cw20TokenInfoR\ttokenInfo\x12P\n\x0emarketing_info\x18\x02 \x01(\x0b\x32).injective_explorer_rpc.Cw20MarketingInfoR\rmarketingInfo\"z\n\rCw20TokenInfo\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n\x06symbol\x18\x02 \x01(\tR\x06symbol\x12\x1a\n\x08\x64\x65\x63imals\x18\x03 \x01(\x12R\x08\x64\x65\x63imals\x12!\n\x0ctotal_supply\x18\x04 \x01(\tR\x0btotalSupply\"\x81\x01\n\x11\x43w20MarketingInfo\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x12\n\x04logo\x18\x03 \x01(\tR\x04logo\x12\x1c\n\tmarketing\x18\x04 \x01(\x0cR\tmarketing\"L\n\x1fGetWasmContractByAddressRequest\x12)\n\x10\x63ontract_address\x18\x01 \x01(\tR\x0f\x63ontractAddress\"\xfd\x04\n GetWasmContractByAddressResponse\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x17\n\x07tx_hash\x18\x03 \x01(\tR\x06txHash\x12\x18\n\x07\x63reator\x18\x04 \x01(\tR\x07\x63reator\x12\x1a\n\x08\x65xecutes\x18\x05 \x01(\x04R\x08\x65xecutes\x12\'\n\x0finstantiated_at\x18\x06 \x01(\x04R\x0einstantiatedAt\x12!\n\x0cinit_message\x18\x07 \x01(\tR\x0binitMessage\x12(\n\x10last_executed_at\x18\x08 \x01(\x04R\x0elastExecutedAt\x12:\n\x05\x66unds\x18\t \x03(\x0b\x32$.injective_explorer_rpc.ContractFundR\x05\x66unds\x12\x17\n\x07\x63ode_id\x18\n \x01(\x04R\x06\x63odeId\x12\x14\n\x05\x61\x64min\x18\x0b \x01(\tR\x05\x61\x64min\x12\x36\n\x17\x63urrent_migrate_message\x18\x0c \x01(\tR\x15\x63urrentMigrateMessage\x12\'\n\x0f\x63ontract_number\x18\r \x01(\x12R\x0e\x63ontractNumber\x12\x18\n\x07version\x18\x0e \x01(\tR\x07version\x12\x12\n\x04type\x18\x0f \x01(\tR\x04type\x12I\n\rcw20_metadata\x18\x10 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\x12\x1f\n\x0bproposal_id\x18\x11 \x01(\x12R\nproposalId\"G\n\x15GetCw20BalanceRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x14\n\x05limit\x18\x02 \x01(\x11R\x05limit\"W\n\x16GetCw20BalanceResponse\x12=\n\x05\x66ield\x18\x01 \x03(\x0b\x32\'.injective_explorer_rpc.WasmCw20BalanceR\x05\x66ield\"\xda\x01\n\x0fWasmCw20Balance\x12)\n\x10\x63ontract_address\x18\x01 \x01(\tR\x0f\x63ontractAddress\x12\x18\n\x07\x61\x63\x63ount\x18\x02 \x01(\tR\x07\x61\x63\x63ount\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x1d\n\nupdated_at\x18\x04 \x01(\x12R\tupdatedAt\x12I\n\rcw20_metadata\x18\x05 \x01(\x0b\x32$.injective_explorer_rpc.Cw20MetadataR\x0c\x63w20Metadata\"1\n\x0fRelayersRequest\x12\x1e\n\x0bmarket_i_ds\x18\x01 \x03(\tR\tmarketIDs\"P\n\x10RelayersResponse\x12<\n\x05\x66ield\x18\x01 \x03(\x0b\x32&.injective_explorer_rpc.RelayerMarketsR\x05\x66ield\"j\n\x0eRelayerMarkets\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12;\n\x08relayers\x18\x02 \x03(\x0b\x32\x1f.injective_explorer_rpc.RelayerR\x08relayers\"/\n\x07Relayer\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n\x03\x63ta\x18\x02 \x01(\tR\x03\x63ta\"\xbd\x02\n\x17GetBankTransfersRequest\x12\x18\n\x07senders\x18\x01 \x03(\tR\x07senders\x12\x1e\n\nrecipients\x18\x02 \x03(\tR\nrecipients\x12\x39\n\x19is_community_pool_related\x18\x03 \x01(\x08R\x16isCommunityPoolRelated\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x18\n\x07\x61\x64\x64ress\x18\x08 \x03(\tR\x07\x61\x64\x64ress\x12\x19\n\x08per_page\x18\t \x01(\x11R\x07perPage\x12\x14\n\x05token\x18\n \x01(\tR\x05token\"\x8c\x01\n\x18GetBankTransfersResponse\x12\x36\n\x06paging\x18\x01 \x01(\x0b\x32\x1e.injective_explorer_rpc.PagingR\x06paging\x12\x38\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32$.injective_explorer_rpc.BankTransferR\x04\x64\x61ta\"\xc8\x01\n\x0c\x42\x61nkTransfer\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x1c\n\trecipient\x18\x02 \x01(\tR\trecipient\x12\x36\n\x07\x61mounts\x18\x03 \x03(\x0b\x32\x1c.injective_explorer_rpc.CoinR\x07\x61mounts\x12!\n\x0c\x62lock_number\x18\x04 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x05 \x01(\tR\x0e\x62lockTimestamp\"Q\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x1b\n\tusd_value\x18\x03 \x01(\tR\x08usdValue\"\x12\n\x10StreamTxsRequest\"\xa8\x02\n\x11StreamTxsResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0c\x62lock_number\x18\x02 \x01(\x04R\x0b\x62lockNumber\x12\'\n\x0f\x62lock_timestamp\x18\x03 \x01(\tR\x0e\x62lockTimestamp\x12\x12\n\x04hash\x18\x04 \x01(\tR\x04hash\x12\x1c\n\tcodespace\x18\x05 \x01(\tR\tcodespace\x12\x1a\n\x08messages\x18\x06 \x01(\tR\x08messages\x12\x1b\n\ttx_number\x18\x07 \x01(\x04R\x08txNumber\x12\x1b\n\terror_log\x18\x08 \x01(\tR\x08\x65rrorLog\x12\x12\n\x04\x63ode\x18\t \x01(\rR\x04\x63ode\x12\x1b\n\tclaim_ids\x18\n \x03(\x12R\x08\x63laimIds\"\x15\n\x13StreamBlocksRequest\"\xea\x02\n\x14StreamBlocksResponse\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer\x12\x18\n\x07moniker\x18\x03 \x01(\tR\x07moniker\x12\x1d\n\nblock_hash\x18\x04 \x01(\tR\tblockHash\x12\x1f\n\x0bparent_hash\x18\x05 \x01(\tR\nparentHash\x12&\n\x0fnum_pre_commits\x18\x06 \x01(\x12R\rnumPreCommits\x12\x17\n\x07num_txs\x18\x07 \x01(\x12R\x06numTxs\x12\x33\n\x03txs\x18\x08 \x03(\x0b\x32!.injective_explorer_rpc.TxDataRPCR\x03txs\x12\x1c\n\ttimestamp\x18\t \x01(\tR\ttimestamp\x12\x30\n\x14\x62lock_unix_timestamp\x18\n \x01(\x04R\x12\x62lockUnixTimestamp\"\x11\n\x0fGetStatsRequest\"\x9c\x02\n\x10GetStatsResponse\x12\x1c\n\taddresses\x18\x01 \x01(\x04R\taddresses\x12\x16\n\x06\x61ssets\x18\x02 \x01(\x04R\x06\x61ssets\x12\x1d\n\ninj_supply\x18\x03 \x01(\x04R\tinjSupply\x12\x1c\n\ntxs_ps24_h\x18\x04 \x01(\x04R\x08txsPs24H\x12\x1e\n\x0btxs_ps100_b\x18\x05 \x01(\x04R\ttxsPs100B\x12\x1b\n\ttxs_total\x18\x06 \x01(\x04R\x08txsTotal\x12\x17\n\x07txs24_h\x18\x07 \x01(\x04R\x06txs24H\x12\x17\n\x07txs30_d\x18\x08 \x01(\x04R\x06txs30D\x12&\n\x0f\x62lock_count24_h\x18\t \x01(\x04R\rblockCount24H2\xec\x15\n\x14InjectiveExplorerRPC\x12l\n\rGetAccountTxs\x12,.injective_explorer_rpc.GetAccountTxsRequest\x1a-.injective_explorer_rpc.GetAccountTxsResponse\x12o\n\x0eGetContractTxs\x12-.injective_explorer_rpc.GetContractTxsRequest\x1a..injective_explorer_rpc.GetContractTxsResponse\x12u\n\x10GetContractTxsV2\x12/.injective_explorer_rpc.GetContractTxsV2Request\x1a\x30.injective_explorer_rpc.GetContractTxsV2Response\x12`\n\tGetBlocks\x12(.injective_explorer_rpc.GetBlocksRequest\x1a).injective_explorer_rpc.GetBlocksResponse\x12\x66\n\x0bGetBlocksV2\x12*.injective_explorer_rpc.GetBlocksV2Request\x1a+.injective_explorer_rpc.GetBlocksV2Response\x12]\n\x08GetBlock\x12\'.injective_explorer_rpc.GetBlockRequest\x1a(.injective_explorer_rpc.GetBlockResponse\x12l\n\rGetValidators\x12,.injective_explorer_rpc.GetValidatorsRequest\x1a-.injective_explorer_rpc.GetValidatorsResponse\x12i\n\x0cGetValidator\x12+.injective_explorer_rpc.GetValidatorRequest\x1a,.injective_explorer_rpc.GetValidatorResponse\x12{\n\x12GetValidatorUptime\x12\x31.injective_explorer_rpc.GetValidatorUptimeRequest\x1a\x32.injective_explorer_rpc.GetValidatorUptimeResponse\x12W\n\x06GetTxs\x12%.injective_explorer_rpc.GetTxsRequest\x1a&.injective_explorer_rpc.GetTxsResponse\x12]\n\x08GetTxsV2\x12\'.injective_explorer_rpc.GetTxsV2Request\x1a(.injective_explorer_rpc.GetTxsV2Response\x12l\n\rGetTxByTxHash\x12,.injective_explorer_rpc.GetTxByTxHashRequest\x1a-.injective_explorer_rpc.GetTxByTxHashResponse\x12{\n\x12GetPeggyDepositTxs\x12\x31.injective_explorer_rpc.GetPeggyDepositTxsRequest\x1a\x32.injective_explorer_rpc.GetPeggyDepositTxsResponse\x12\x84\x01\n\x15GetPeggyWithdrawalTxs\x12\x34.injective_explorer_rpc.GetPeggyWithdrawalTxsRequest\x1a\x35.injective_explorer_rpc.GetPeggyWithdrawalTxsResponse\x12x\n\x11GetIBCTransferTxs\x12\x30.injective_explorer_rpc.GetIBCTransferTxsRequest\x1a\x31.injective_explorer_rpc.GetIBCTransferTxsResponse\x12i\n\x0cGetWasmCodes\x12+.injective_explorer_rpc.GetWasmCodesRequest\x1a,.injective_explorer_rpc.GetWasmCodesResponse\x12r\n\x0fGetWasmCodeByID\x12..injective_explorer_rpc.GetWasmCodeByIDRequest\x1a/.injective_explorer_rpc.GetWasmCodeByIDResponse\x12u\n\x10GetWasmContracts\x12/.injective_explorer_rpc.GetWasmContractsRequest\x1a\x30.injective_explorer_rpc.GetWasmContractsResponse\x12\x8d\x01\n\x18GetWasmContractByAddress\x12\x37.injective_explorer_rpc.GetWasmContractByAddressRequest\x1a\x38.injective_explorer_rpc.GetWasmContractByAddressResponse\x12o\n\x0eGetCw20Balance\x12-.injective_explorer_rpc.GetCw20BalanceRequest\x1a..injective_explorer_rpc.GetCw20BalanceResponse\x12]\n\x08Relayers\x12\'.injective_explorer_rpc.RelayersRequest\x1a(.injective_explorer_rpc.RelayersResponse\x12u\n\x10GetBankTransfers\x12/.injective_explorer_rpc.GetBankTransfersRequest\x1a\x30.injective_explorer_rpc.GetBankTransfersResponse\x12\x62\n\tStreamTxs\x12(.injective_explorer_rpc.StreamTxsRequest\x1a).injective_explorer_rpc.StreamTxsResponse0\x01\x12k\n\x0cStreamBlocks\x12+.injective_explorer_rpc.StreamBlocksRequest\x1a,.injective_explorer_rpc.StreamBlocksResponse0\x01\x12]\n\x08GetStats\x12\'.injective_explorer_rpc.GetStatsRequest\x1a(.injective_explorer_rpc.GetStatsResponseB\xc2\x01\n\x1a\x63om.injective_explorer_rpcB\x19InjectiveExplorerRpcProtoP\x01Z\x19/injective_explorer_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveExplorerRpc\xca\x02\x14InjectiveExplorerRpc\xe2\x02 InjectiveExplorerRpc\\GPBMetadata\xea\x02\x14InjectiveExplorerRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -55,129 +55,139 @@ _globals['_GETBLOCKSRESPONSE']._serialized_start=2542 _globals['_GETBLOCKSRESPONSE']._serialized_end=2672 _globals['_BLOCKINFO']._serialized_start=2675 - _globals['_BLOCKINFO']._serialized_end=2976 - _globals['_TXDATARPC']._serialized_start=2979 - _globals['_TXDATARPC']._serialized_end=3267 - _globals['_GETBLOCKREQUEST']._serialized_start=3269 - _globals['_GETBLOCKREQUEST']._serialized_end=3302 - _globals['_GETBLOCKRESPONSE']._serialized_start=3304 - _globals['_GETBLOCKRESPONSE']._serialized_end=3421 - _globals['_BLOCKDETAILINFO']._serialized_start=3424 - _globals['_BLOCKDETAILINFO']._serialized_end=3757 - _globals['_TXDATA']._serialized_start=3760 - _globals['_TXDATA']._serialized_end=4166 - _globals['_GETVALIDATORSREQUEST']._serialized_start=4168 - _globals['_GETVALIDATORSREQUEST']._serialized_end=4190 - _globals['_GETVALIDATORSRESPONSE']._serialized_start=4192 - _globals['_GETVALIDATORSRESPONSE']._serialized_end=4308 - _globals['_VALIDATOR']._serialized_start=4311 - _globals['_VALIDATOR']._serialized_end=5260 - _globals['_VALIDATORDESCRIPTION']._serialized_start=5263 - _globals['_VALIDATORDESCRIPTION']._serialized_end=5463 - _globals['_VALIDATORUPTIME']._serialized_start=5465 - _globals['_VALIDATORUPTIME']._serialized_end=5541 - _globals['_SLASHINGEVENT']._serialized_start=5544 - _globals['_SLASHINGEVENT']._serialized_end=5768 - _globals['_GETVALIDATORREQUEST']._serialized_start=5770 - _globals['_GETVALIDATORREQUEST']._serialized_end=5817 - _globals['_GETVALIDATORRESPONSE']._serialized_start=5819 - _globals['_GETVALIDATORRESPONSE']._serialized_end=5934 - _globals['_GETVALIDATORUPTIMEREQUEST']._serialized_start=5936 - _globals['_GETVALIDATORUPTIMEREQUEST']._serialized_end=5989 - _globals['_GETVALIDATORUPTIMERESPONSE']._serialized_start=5991 - _globals['_GETVALIDATORUPTIMERESPONSE']._serialized_end=6118 - _globals['_GETTXSREQUEST']._serialized_start=6121 - _globals['_GETTXSREQUEST']._serialized_end=6412 - _globals['_GETTXSRESPONSE']._serialized_start=6414 - _globals['_GETTXSRESPONSE']._serialized_end=6538 - _globals['_GETTXBYTXHASHREQUEST']._serialized_start=6540 - _globals['_GETTXBYTXHASHREQUEST']._serialized_end=6582 - _globals['_GETTXBYTXHASHRESPONSE']._serialized_start=6584 - _globals['_GETTXBYTXHASHRESPONSE']._serialized_end=6703 - _globals['_GETPEGGYDEPOSITTXSREQUEST']._serialized_start=6705 - _globals['_GETPEGGYDEPOSITTXSREQUEST']._serialized_end=6826 - _globals['_GETPEGGYDEPOSITTXSRESPONSE']._serialized_start=6828 - _globals['_GETPEGGYDEPOSITTXSRESPONSE']._serialized_end=6918 - _globals['_PEGGYDEPOSITTX']._serialized_start=6921 - _globals['_PEGGYDEPOSITTX']._serialized_end=7298 - _globals['_GETPEGGYWITHDRAWALTXSREQUEST']._serialized_start=7300 - _globals['_GETPEGGYWITHDRAWALTXSREQUEST']._serialized_end=7424 - _globals['_GETPEGGYWITHDRAWALTXSRESPONSE']._serialized_start=7426 - _globals['_GETPEGGYWITHDRAWALTXSRESPONSE']._serialized_end=7522 - _globals['_PEGGYWITHDRAWALTX']._serialized_start=7525 - _globals['_PEGGYWITHDRAWALTX']._serialized_end=8044 - _globals['_GETIBCTRANSFERTXSREQUEST']._serialized_start=8047 - _globals['_GETIBCTRANSFERTXSREQUEST']._serialized_end=8291 - _globals['_GETIBCTRANSFERTXSRESPONSE']._serialized_start=8293 - _globals['_GETIBCTRANSFERTXSRESPONSE']._serialized_end=8381 - _globals['_IBCTRANSFERTX']._serialized_start=8384 - _globals['_IBCTRANSFERTX']._serialized_end=8926 - _globals['_GETWASMCODESREQUEST']._serialized_start=8928 - _globals['_GETWASMCODESREQUEST']._serialized_end=9033 - _globals['_GETWASMCODESRESPONSE']._serialized_start=9036 - _globals['_GETWASMCODESRESPONSE']._serialized_end=9168 - _globals['_WASMCODE']._serialized_start=9171 - _globals['_WASMCODE']._serialized_end=9653 - _globals['_CHECKSUM']._serialized_start=9655 - _globals['_CHECKSUM']._serialized_end=9715 - _globals['_CONTRACTPERMISSION']._serialized_start=9717 - _globals['_CONTRACTPERMISSION']._serialized_end=9796 - _globals['_GETWASMCODEBYIDREQUEST']._serialized_start=9798 - _globals['_GETWASMCODEBYIDREQUEST']._serialized_end=9847 - _globals['_GETWASMCODEBYIDRESPONSE']._serialized_start=9850 - _globals['_GETWASMCODEBYIDRESPONSE']._serialized_end=10347 - _globals['_GETWASMCONTRACTSREQUEST']._serialized_start=10350 - _globals['_GETWASMCONTRACTSREQUEST']._serialized_end=10559 - _globals['_GETWASMCONTRACTSRESPONSE']._serialized_start=10562 - _globals['_GETWASMCONTRACTSRESPONSE']._serialized_end=10702 - _globals['_WASMCONTRACT']._serialized_start=10705 - _globals['_WASMCONTRACT']._serialized_end=11322 - _globals['_CONTRACTFUND']._serialized_start=11324 - _globals['_CONTRACTFUND']._serialized_end=11384 - _globals['_CW20METADATA']._serialized_start=11387 - _globals['_CW20METADATA']._serialized_end=11553 - _globals['_CW20TOKENINFO']._serialized_start=11555 - _globals['_CW20TOKENINFO']._serialized_end=11677 - _globals['_CW20MARKETINGINFO']._serialized_start=11680 - _globals['_CW20MARKETINGINFO']._serialized_end=11809 - _globals['_GETWASMCONTRACTBYADDRESSREQUEST']._serialized_start=11811 - _globals['_GETWASMCONTRACTBYADDRESSREQUEST']._serialized_end=11887 - _globals['_GETWASMCONTRACTBYADDRESSRESPONSE']._serialized_start=11890 - _globals['_GETWASMCONTRACTBYADDRESSRESPONSE']._serialized_end=12527 - _globals['_GETCW20BALANCEREQUEST']._serialized_start=12529 - _globals['_GETCW20BALANCEREQUEST']._serialized_end=12600 - _globals['_GETCW20BALANCERESPONSE']._serialized_start=12602 - _globals['_GETCW20BALANCERESPONSE']._serialized_end=12689 - _globals['_WASMCW20BALANCE']._serialized_start=12692 - _globals['_WASMCW20BALANCE']._serialized_end=12910 - _globals['_RELAYERSREQUEST']._serialized_start=12912 - _globals['_RELAYERSREQUEST']._serialized_end=12961 - _globals['_RELAYERSRESPONSE']._serialized_start=12963 - _globals['_RELAYERSRESPONSE']._serialized_end=13043 - _globals['_RELAYERMARKETS']._serialized_start=13045 - _globals['_RELAYERMARKETS']._serialized_end=13151 - _globals['_RELAYER']._serialized_start=13153 - _globals['_RELAYER']._serialized_end=13200 - _globals['_GETBANKTRANSFERSREQUEST']._serialized_start=13203 - _globals['_GETBANKTRANSFERSREQUEST']._serialized_end=13520 - _globals['_GETBANKTRANSFERSRESPONSE']._serialized_start=13523 - _globals['_GETBANKTRANSFERSRESPONSE']._serialized_end=13663 - _globals['_BANKTRANSFER']._serialized_start=13666 - _globals['_BANKTRANSFER']._serialized_end=13866 - _globals['_COIN']._serialized_start=13868 - _globals['_COIN']._serialized_end=13920 - _globals['_STREAMTXSREQUEST']._serialized_start=13922 - _globals['_STREAMTXSREQUEST']._serialized_end=13940 - _globals['_STREAMTXSRESPONSE']._serialized_start=13943 - _globals['_STREAMTXSRESPONSE']._serialized_end=14239 - _globals['_STREAMBLOCKSREQUEST']._serialized_start=14241 - _globals['_STREAMBLOCKSREQUEST']._serialized_end=14262 - _globals['_STREAMBLOCKSRESPONSE']._serialized_start=14265 - _globals['_STREAMBLOCKSRESPONSE']._serialized_end=14577 - _globals['_GETSTATSREQUEST']._serialized_start=14579 - _globals['_GETSTATSREQUEST']._serialized_end=14596 - _globals['_GETSTATSRESPONSE']._serialized_start=14599 - _globals['_GETSTATSRESPONSE']._serialized_end=14883 - _globals['_INJECTIVEEXPLORERRPC']._serialized_start=14886 - _globals['_INJECTIVEEXPLORERRPC']._serialized_end=17483 + _globals['_BLOCKINFO']._serialized_end=3026 + _globals['_TXDATARPC']._serialized_start=3029 + _globals['_TXDATARPC']._serialized_end=3317 + _globals['_GETBLOCKSV2REQUEST']._serialized_start=3319 + _globals['_GETBLOCKSV2REQUEST']._serialized_end=3388 + _globals['_GETBLOCKSV2RESPONSE']._serialized_start=3391 + _globals['_GETBLOCKSV2RESPONSE']._serialized_end=3523 + _globals['_CURSOR']._serialized_start=3525 + _globals['_CURSOR']._serialized_end=3611 + _globals['_GETBLOCKREQUEST']._serialized_start=3613 + _globals['_GETBLOCKREQUEST']._serialized_end=3646 + _globals['_GETBLOCKRESPONSE']._serialized_start=3648 + _globals['_GETBLOCKRESPONSE']._serialized_end=3765 + _globals['_BLOCKDETAILINFO']._serialized_start=3768 + _globals['_BLOCKDETAILINFO']._serialized_end=4101 + _globals['_TXDATA']._serialized_start=4104 + _globals['_TXDATA']._serialized_end=4560 + _globals['_GETVALIDATORSREQUEST']._serialized_start=4562 + _globals['_GETVALIDATORSREQUEST']._serialized_end=4584 + _globals['_GETVALIDATORSRESPONSE']._serialized_start=4586 + _globals['_GETVALIDATORSRESPONSE']._serialized_end=4702 + _globals['_VALIDATOR']._serialized_start=4705 + _globals['_VALIDATOR']._serialized_end=5654 + _globals['_VALIDATORDESCRIPTION']._serialized_start=5657 + _globals['_VALIDATORDESCRIPTION']._serialized_end=5857 + _globals['_VALIDATORUPTIME']._serialized_start=5859 + _globals['_VALIDATORUPTIME']._serialized_end=5935 + _globals['_SLASHINGEVENT']._serialized_start=5938 + _globals['_SLASHINGEVENT']._serialized_end=6162 + _globals['_GETVALIDATORREQUEST']._serialized_start=6164 + _globals['_GETVALIDATORREQUEST']._serialized_end=6211 + _globals['_GETVALIDATORRESPONSE']._serialized_start=6213 + _globals['_GETVALIDATORRESPONSE']._serialized_end=6328 + _globals['_GETVALIDATORUPTIMEREQUEST']._serialized_start=6330 + _globals['_GETVALIDATORUPTIMEREQUEST']._serialized_end=6383 + _globals['_GETVALIDATORUPTIMERESPONSE']._serialized_start=6385 + _globals['_GETVALIDATORUPTIMERESPONSE']._serialized_end=6512 + _globals['_GETTXSREQUEST']._serialized_start=6515 + _globals['_GETTXSREQUEST']._serialized_end=6806 + _globals['_GETTXSRESPONSE']._serialized_start=6808 + _globals['_GETTXSRESPONSE']._serialized_end=6932 + _globals['_GETTXSV2REQUEST']._serialized_start=6935 + _globals['_GETTXSV2REQUEST']._serialized_end=7079 + _globals['_GETTXSV2RESPONSE']._serialized_start=7081 + _globals['_GETTXSV2RESPONSE']._serialized_end=7207 + _globals['_GETTXBYTXHASHREQUEST']._serialized_start=7209 + _globals['_GETTXBYTXHASHREQUEST']._serialized_end=7251 + _globals['_GETTXBYTXHASHRESPONSE']._serialized_start=7253 + _globals['_GETTXBYTXHASHRESPONSE']._serialized_end=7372 + _globals['_GETPEGGYDEPOSITTXSREQUEST']._serialized_start=7374 + _globals['_GETPEGGYDEPOSITTXSREQUEST']._serialized_end=7495 + _globals['_GETPEGGYDEPOSITTXSRESPONSE']._serialized_start=7497 + _globals['_GETPEGGYDEPOSITTXSRESPONSE']._serialized_end=7587 + _globals['_PEGGYDEPOSITTX']._serialized_start=7590 + _globals['_PEGGYDEPOSITTX']._serialized_end=7967 + _globals['_GETPEGGYWITHDRAWALTXSREQUEST']._serialized_start=7969 + _globals['_GETPEGGYWITHDRAWALTXSREQUEST']._serialized_end=8093 + _globals['_GETPEGGYWITHDRAWALTXSRESPONSE']._serialized_start=8095 + _globals['_GETPEGGYWITHDRAWALTXSRESPONSE']._serialized_end=8191 + _globals['_PEGGYWITHDRAWALTX']._serialized_start=8194 + _globals['_PEGGYWITHDRAWALTX']._serialized_end=8713 + _globals['_GETIBCTRANSFERTXSREQUEST']._serialized_start=8716 + _globals['_GETIBCTRANSFERTXSREQUEST']._serialized_end=8960 + _globals['_GETIBCTRANSFERTXSRESPONSE']._serialized_start=8962 + _globals['_GETIBCTRANSFERTXSRESPONSE']._serialized_end=9050 + _globals['_IBCTRANSFERTX']._serialized_start=9053 + _globals['_IBCTRANSFERTX']._serialized_end=9595 + _globals['_GETWASMCODESREQUEST']._serialized_start=9597 + _globals['_GETWASMCODESREQUEST']._serialized_end=9702 + _globals['_GETWASMCODESRESPONSE']._serialized_start=9705 + _globals['_GETWASMCODESRESPONSE']._serialized_end=9837 + _globals['_WASMCODE']._serialized_start=9840 + _globals['_WASMCODE']._serialized_end=10322 + _globals['_CHECKSUM']._serialized_start=10324 + _globals['_CHECKSUM']._serialized_end=10384 + _globals['_CONTRACTPERMISSION']._serialized_start=10386 + _globals['_CONTRACTPERMISSION']._serialized_end=10465 + _globals['_GETWASMCODEBYIDREQUEST']._serialized_start=10467 + _globals['_GETWASMCODEBYIDREQUEST']._serialized_end=10516 + _globals['_GETWASMCODEBYIDRESPONSE']._serialized_start=10519 + _globals['_GETWASMCODEBYIDRESPONSE']._serialized_end=11016 + _globals['_GETWASMCONTRACTSREQUEST']._serialized_start=11019 + _globals['_GETWASMCONTRACTSREQUEST']._serialized_end=11228 + _globals['_GETWASMCONTRACTSRESPONSE']._serialized_start=11231 + _globals['_GETWASMCONTRACTSRESPONSE']._serialized_end=11371 + _globals['_WASMCONTRACT']._serialized_start=11374 + _globals['_WASMCONTRACT']._serialized_end=11991 + _globals['_CONTRACTFUND']._serialized_start=11993 + _globals['_CONTRACTFUND']._serialized_end=12053 + _globals['_CW20METADATA']._serialized_start=12056 + _globals['_CW20METADATA']._serialized_end=12222 + _globals['_CW20TOKENINFO']._serialized_start=12224 + _globals['_CW20TOKENINFO']._serialized_end=12346 + _globals['_CW20MARKETINGINFO']._serialized_start=12349 + _globals['_CW20MARKETINGINFO']._serialized_end=12478 + _globals['_GETWASMCONTRACTBYADDRESSREQUEST']._serialized_start=12480 + _globals['_GETWASMCONTRACTBYADDRESSREQUEST']._serialized_end=12556 + _globals['_GETWASMCONTRACTBYADDRESSRESPONSE']._serialized_start=12559 + _globals['_GETWASMCONTRACTBYADDRESSRESPONSE']._serialized_end=13196 + _globals['_GETCW20BALANCEREQUEST']._serialized_start=13198 + _globals['_GETCW20BALANCEREQUEST']._serialized_end=13269 + _globals['_GETCW20BALANCERESPONSE']._serialized_start=13271 + _globals['_GETCW20BALANCERESPONSE']._serialized_end=13358 + _globals['_WASMCW20BALANCE']._serialized_start=13361 + _globals['_WASMCW20BALANCE']._serialized_end=13579 + _globals['_RELAYERSREQUEST']._serialized_start=13581 + _globals['_RELAYERSREQUEST']._serialized_end=13630 + _globals['_RELAYERSRESPONSE']._serialized_start=13632 + _globals['_RELAYERSRESPONSE']._serialized_end=13712 + _globals['_RELAYERMARKETS']._serialized_start=13714 + _globals['_RELAYERMARKETS']._serialized_end=13820 + _globals['_RELAYER']._serialized_start=13822 + _globals['_RELAYER']._serialized_end=13869 + _globals['_GETBANKTRANSFERSREQUEST']._serialized_start=13872 + _globals['_GETBANKTRANSFERSREQUEST']._serialized_end=14189 + _globals['_GETBANKTRANSFERSRESPONSE']._serialized_start=14192 + _globals['_GETBANKTRANSFERSRESPONSE']._serialized_end=14332 + _globals['_BANKTRANSFER']._serialized_start=14335 + _globals['_BANKTRANSFER']._serialized_end=14535 + _globals['_COIN']._serialized_start=14537 + _globals['_COIN']._serialized_end=14618 + _globals['_STREAMTXSREQUEST']._serialized_start=14620 + _globals['_STREAMTXSREQUEST']._serialized_end=14638 + _globals['_STREAMTXSRESPONSE']._serialized_start=14641 + _globals['_STREAMTXSRESPONSE']._serialized_end=14937 + _globals['_STREAMBLOCKSREQUEST']._serialized_start=14939 + _globals['_STREAMBLOCKSREQUEST']._serialized_end=14960 + _globals['_STREAMBLOCKSRESPONSE']._serialized_start=14963 + _globals['_STREAMBLOCKSRESPONSE']._serialized_end=15325 + _globals['_GETSTATSREQUEST']._serialized_start=15327 + _globals['_GETSTATSREQUEST']._serialized_end=15344 + _globals['_GETSTATSRESPONSE']._serialized_start=15347 + _globals['_GETSTATSRESPONSE']._serialized_end=15631 + _globals['_INJECTIVEEXPLORERRPC']._serialized_start=15634 + _globals['_INJECTIVEEXPLORERRPC']._serialized_end=18430 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_explorer_rpc_pb2_grpc.py b/pyinjective/proto/exchange/injective_explorer_rpc_pb2_grpc.py index 948df135..b58490a8 100644 --- a/pyinjective/proto/exchange/injective_explorer_rpc_pb2_grpc.py +++ b/pyinjective/proto/exchange/injective_explorer_rpc_pb2_grpc.py @@ -35,6 +35,11 @@ def __init__(self, channel): request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksRequest.SerializeToString, response_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksResponse.FromString, _registered_method=True) + self.GetBlocksV2 = channel.unary_unary( + '/injective_explorer_rpc.InjectiveExplorerRPC/GetBlocksV2', + request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Request.SerializeToString, + response_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Response.FromString, + _registered_method=True) self.GetBlock = channel.unary_unary( '/injective_explorer_rpc.InjectiveExplorerRPC/GetBlock', request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlockRequest.SerializeToString, @@ -60,6 +65,11 @@ def __init__(self, channel): request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsRequest.SerializeToString, response_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsResponse.FromString, _registered_method=True) + self.GetTxsV2 = channel.unary_unary( + '/injective_explorer_rpc.InjectiveExplorerRPC/GetTxsV2', + request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Request.SerializeToString, + response_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Response.FromString, + _registered_method=True) self.GetTxByTxHash = channel.unary_unary( '/injective_explorer_rpc.InjectiveExplorerRPC/GetTxByTxHash', request_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxByTxHashRequest.SerializeToString, @@ -164,6 +174,13 @@ def GetBlocks(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetBlocksV2(self, request, context): + """GetBlocks returns blocks based upon the request params + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def GetBlock(self, request, context): """GetBlock returns block based upon the height or hash """ @@ -199,6 +216,13 @@ def GetTxs(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetTxsV2(self, request, context): + """GetTxs returns transactions based upon the request params + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def GetTxByTxHash(self, request, context): """GetTxByTxHash returns certain transaction information by its tx hash. """ @@ -324,6 +348,11 @@ def add_InjectiveExplorerRPCServicer_to_server(servicer, server): request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksRequest.FromString, response_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksResponse.SerializeToString, ), + 'GetBlocksV2': grpc.unary_unary_rpc_method_handler( + servicer.GetBlocksV2, + request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Request.FromString, + response_serializer=exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Response.SerializeToString, + ), 'GetBlock': grpc.unary_unary_rpc_method_handler( servicer.GetBlock, request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetBlockRequest.FromString, @@ -349,6 +378,11 @@ def add_InjectiveExplorerRPCServicer_to_server(servicer, server): request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsRequest.FromString, response_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsResponse.SerializeToString, ), + 'GetTxsV2': grpc.unary_unary_rpc_method_handler( + servicer.GetTxsV2, + request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Request.FromString, + response_serializer=exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Response.SerializeToString, + ), 'GetTxByTxHash': grpc.unary_unary_rpc_method_handler( servicer.GetTxByTxHash, request_deserializer=exchange_dot_injective__explorer__rpc__pb2.GetTxByTxHashRequest.FromString, @@ -539,6 +573,33 @@ def GetBlocks(request, metadata, _registered_method=True) + @staticmethod + def GetBlocksV2(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_explorer_rpc.InjectiveExplorerRPC/GetBlocksV2', + exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Request.SerializeToString, + exchange_dot_injective__explorer__rpc__pb2.GetBlocksV2Response.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def GetBlock(request, target, @@ -674,6 +735,33 @@ def GetTxs(request, metadata, _registered_method=True) + @staticmethod + def GetTxsV2(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_explorer_rpc.InjectiveExplorerRPC/GetTxsV2', + exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Request.SerializeToString, + exchange_dot_injective__explorer__rpc__pb2.GetTxsV2Response.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def GetTxByTxHash(request, target, diff --git a/pyinjective/proto/exchange/injective_portfolio_rpc_pb2.py b/pyinjective/proto/exchange/injective_portfolio_rpc_pb2.py index 37dcb8f9..9bdb1b30 100644 --- a/pyinjective/proto/exchange/injective_portfolio_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_portfolio_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&exchange/injective_portfolio_rpc.proto\x12\x17injective_portfolio_rpc\"Y\n\x13TokenHoldersRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\"t\n\x14TokenHoldersResponse\x12\x39\n\x07holders\x18\x01 \x03(\x0b\x32\x1f.injective_portfolio_rpc.HolderR\x07holders\x12!\n\x0cnext_cursors\x18\x02 \x03(\tR\x0bnextCursors\"K\n\x06Holder\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance\"B\n\x17\x41\x63\x63ountPortfolioRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\"\\\n\x18\x41\x63\x63ountPortfolioResponse\x12@\n\tportfolio\x18\x01 \x01(\x0b\x32\".injective_portfolio_rpc.PortfolioR\tportfolio\"\xa4\x02\n\tPortfolio\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x42\n\rbank_balances\x18\x02 \x03(\x0b\x32\x1d.injective_portfolio_rpc.CoinR\x0c\x62\x61nkBalances\x12N\n\x0bsubaccounts\x18\x03 \x03(\x0b\x32,.injective_portfolio_rpc.SubaccountBalanceV2R\x0bsubaccounts\x12Z\n\x13positions_with_upnl\x18\x04 \x03(\x0b\x32*.injective_portfolio_rpc.PositionsWithUPNLR\x11positionsWithUpnl\"4\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\"\x96\x01\n\x13SubaccountBalanceV2\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x44\n\x07\x64\x65posit\x18\x03 \x01(\x0b\x32*.injective_portfolio_rpc.SubaccountDepositR\x07\x64\x65posit\"e\n\x11SubaccountDeposit\x12#\n\rtotal_balance\x18\x01 \x01(\tR\x0ctotalBalance\x12+\n\x11\x61vailable_balance\x18\x02 \x01(\tR\x10\x61vailableBalance\"\x83\x01\n\x11PositionsWithUPNL\x12G\n\x08position\x18\x01 \x01(\x0b\x32+.injective_portfolio_rpc.DerivativePositionR\x08position\x12%\n\x0eunrealized_pnl\x18\x02 \x01(\tR\runrealizedPnl\"\xb0\x03\n\x12\x44\x65rivativePosition\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1c\n\tdirection\x18\x04 \x01(\tR\tdirection\x12\x1a\n\x08quantity\x18\x05 \x01(\tR\x08quantity\x12\x1f\n\x0b\x65ntry_price\x18\x06 \x01(\tR\nentryPrice\x12\x16\n\x06margin\x18\x07 \x01(\tR\x06margin\x12+\n\x11liquidation_price\x18\x08 \x01(\tR\x10liquidationPrice\x12\x1d\n\nmark_price\x18\t \x01(\tR\tmarkPrice\x12\x43\n\x1e\x61ggregate_reduce_only_quantity\x18\x0b \x01(\tR\x1b\x61ggregateReduceOnlyQuantity\x12\x1d\n\nupdated_at\x18\x0c \x01(\x12R\tupdatedAt\x12\x1d\n\ncreated_at\x18\r \x01(\x12R\tcreatedAt\"J\n\x1f\x41\x63\x63ountPortfolioBalancesRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\"l\n AccountPortfolioBalancesResponse\x12H\n\tportfolio\x18\x01 \x01(\x0b\x32*.injective_portfolio_rpc.PortfolioBalancesR\tportfolio\"\xd0\x01\n\x11PortfolioBalances\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x42\n\rbank_balances\x18\x02 \x03(\x0b\x32\x1d.injective_portfolio_rpc.CoinR\x0c\x62\x61nkBalances\x12N\n\x0bsubaccounts\x18\x03 \x03(\x0b\x32,.injective_portfolio_rpc.SubaccountBalanceV2R\x0bsubaccounts\"\x81\x01\n\x1dStreamAccountPortfolioRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\"\xa5\x01\n\x1eStreamAccountPortfolioResponse\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x1c\n\ttimestamp\x18\x05 \x01(\x12R\ttimestamp2\x9d\x04\n\x15InjectivePortfolioRPC\x12k\n\x0cTokenHolders\x12,.injective_portfolio_rpc.TokenHoldersRequest\x1a-.injective_portfolio_rpc.TokenHoldersResponse\x12w\n\x10\x41\x63\x63ountPortfolio\x12\x30.injective_portfolio_rpc.AccountPortfolioRequest\x1a\x31.injective_portfolio_rpc.AccountPortfolioResponse\x12\x8f\x01\n\x18\x41\x63\x63ountPortfolioBalances\x12\x38.injective_portfolio_rpc.AccountPortfolioBalancesRequest\x1a\x39.injective_portfolio_rpc.AccountPortfolioBalancesResponse\x12\x8b\x01\n\x16StreamAccountPortfolio\x12\x36.injective_portfolio_rpc.StreamAccountPortfolioRequest\x1a\x37.injective_portfolio_rpc.StreamAccountPortfolioResponse0\x01\x42\xc9\x01\n\x1b\x63om.injective_portfolio_rpcB\x1aInjectivePortfolioRpcProtoP\x01Z\x1a/injective_portfolio_rpcpb\xa2\x02\x03IXX\xaa\x02\x15InjectivePortfolioRpc\xca\x02\x15InjectivePortfolioRpc\xe2\x02!InjectivePortfolioRpc\\GPBMetadata\xea\x02\x15InjectivePortfolioRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&exchange/injective_portfolio_rpc.proto\x12\x17injective_portfolio_rpc\"Y\n\x13TokenHoldersRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor\x12\x14\n\x05limit\x18\x03 \x01(\x11R\x05limit\"t\n\x14TokenHoldersResponse\x12\x39\n\x07holders\x18\x01 \x03(\x0b\x32\x1f.injective_portfolio_rpc.HolderR\x07holders\x12!\n\x0cnext_cursors\x18\x02 \x03(\tR\x0bnextCursors\"K\n\x06Holder\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance\"B\n\x17\x41\x63\x63ountPortfolioRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\"\\\n\x18\x41\x63\x63ountPortfolioResponse\x12@\n\tportfolio\x18\x01 \x01(\x0b\x32\".injective_portfolio_rpc.PortfolioR\tportfolio\"\xa4\x02\n\tPortfolio\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x42\n\rbank_balances\x18\x02 \x03(\x0b\x32\x1d.injective_portfolio_rpc.CoinR\x0c\x62\x61nkBalances\x12N\n\x0bsubaccounts\x18\x03 \x03(\x0b\x32,.injective_portfolio_rpc.SubaccountBalanceV2R\x0bsubaccounts\x12Z\n\x13positions_with_upnl\x18\x04 \x03(\x0b\x32*.injective_portfolio_rpc.PositionsWithUPNLR\x11positionsWithUpnl\"Q\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x1b\n\tusd_value\x18\x03 \x01(\tR\x08usdValue\"\x96\x01\n\x13SubaccountBalanceV2\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x44\n\x07\x64\x65posit\x18\x03 \x01(\x0b\x32*.injective_portfolio_rpc.SubaccountDepositR\x07\x64\x65posit\"\xc5\x01\n\x11SubaccountDeposit\x12#\n\rtotal_balance\x18\x01 \x01(\tR\x0ctotalBalance\x12+\n\x11\x61vailable_balance\x18\x02 \x01(\tR\x10\x61vailableBalance\x12*\n\x11total_balance_usd\x18\x03 \x01(\tR\x0ftotalBalanceUsd\x12\x32\n\x15\x61vailable_balance_usd\x18\x04 \x01(\tR\x13\x61vailableBalanceUsd\"\x83\x01\n\x11PositionsWithUPNL\x12G\n\x08position\x18\x01 \x01(\x0b\x32+.injective_portfolio_rpc.DerivativePositionR\x08position\x12%\n\x0eunrealized_pnl\x18\x02 \x01(\tR\runrealizedPnl\"\xb0\x03\n\x12\x44\x65rivativePosition\x12\x16\n\x06ticker\x18\x01 \x01(\tR\x06ticker\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x1c\n\tdirection\x18\x04 \x01(\tR\tdirection\x12\x1a\n\x08quantity\x18\x05 \x01(\tR\x08quantity\x12\x1f\n\x0b\x65ntry_price\x18\x06 \x01(\tR\nentryPrice\x12\x16\n\x06margin\x18\x07 \x01(\tR\x06margin\x12+\n\x11liquidation_price\x18\x08 \x01(\tR\x10liquidationPrice\x12\x1d\n\nmark_price\x18\t \x01(\tR\tmarkPrice\x12\x43\n\x1e\x61ggregate_reduce_only_quantity\x18\x0b \x01(\tR\x1b\x61ggregateReduceOnlyQuantity\x12\x1d\n\nupdated_at\x18\x0c \x01(\x12R\tupdatedAt\x12\x1d\n\ncreated_at\x18\r \x01(\x12R\tcreatedAt\"\\\n\x1f\x41\x63\x63ountPortfolioBalancesRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03usd\x18\x02 \x01(\x08R\x03usd\"l\n AccountPortfolioBalancesResponse\x12H\n\tportfolio\x18\x01 \x01(\x0b\x32*.injective_portfolio_rpc.PortfolioBalancesR\tportfolio\"\xed\x01\n\x11PortfolioBalances\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x42\n\rbank_balances\x18\x02 \x03(\x0b\x32\x1d.injective_portfolio_rpc.CoinR\x0c\x62\x61nkBalances\x12N\n\x0bsubaccounts\x18\x03 \x03(\x0b\x32,.injective_portfolio_rpc.SubaccountBalanceV2R\x0bsubaccounts\x12\x1b\n\ttotal_usd\x18\x04 \x01(\tR\x08totalUsd\"\x81\x01\n\x1dStreamAccountPortfolioRequest\x12\'\n\x0f\x61\x63\x63ount_address\x18\x01 \x01(\tR\x0e\x61\x63\x63ountAddress\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x12\n\x04type\x18\x03 \x01(\tR\x04type\"\xa5\x01\n\x1eStreamAccountPortfolioResponse\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x14\n\x05\x64\x65nom\x18\x02 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x1c\n\ttimestamp\x18\x05 \x01(\x12R\ttimestamp2\x9d\x04\n\x15InjectivePortfolioRPC\x12k\n\x0cTokenHolders\x12,.injective_portfolio_rpc.TokenHoldersRequest\x1a-.injective_portfolio_rpc.TokenHoldersResponse\x12w\n\x10\x41\x63\x63ountPortfolio\x12\x30.injective_portfolio_rpc.AccountPortfolioRequest\x1a\x31.injective_portfolio_rpc.AccountPortfolioResponse\x12\x8f\x01\n\x18\x41\x63\x63ountPortfolioBalances\x12\x38.injective_portfolio_rpc.AccountPortfolioBalancesRequest\x1a\x39.injective_portfolio_rpc.AccountPortfolioBalancesResponse\x12\x8b\x01\n\x16StreamAccountPortfolio\x12\x36.injective_portfolio_rpc.StreamAccountPortfolioRequest\x1a\x37.injective_portfolio_rpc.StreamAccountPortfolioResponse0\x01\x42\xc9\x01\n\x1b\x63om.injective_portfolio_rpcB\x1aInjectivePortfolioRpcProtoP\x01Z\x1a/injective_portfolio_rpcpb\xa2\x02\x03IXX\xaa\x02\x15InjectivePortfolioRpc\xca\x02\x15InjectivePortfolioRpc\xe2\x02!InjectivePortfolioRpc\\GPBMetadata\xea\x02\x15InjectivePortfolioRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -35,25 +35,25 @@ _globals['_PORTFOLIO']._serialized_start=516 _globals['_PORTFOLIO']._serialized_end=808 _globals['_COIN']._serialized_start=810 - _globals['_COIN']._serialized_end=862 - _globals['_SUBACCOUNTBALANCEV2']._serialized_start=865 - _globals['_SUBACCOUNTBALANCEV2']._serialized_end=1015 - _globals['_SUBACCOUNTDEPOSIT']._serialized_start=1017 - _globals['_SUBACCOUNTDEPOSIT']._serialized_end=1118 - _globals['_POSITIONSWITHUPNL']._serialized_start=1121 - _globals['_POSITIONSWITHUPNL']._serialized_end=1252 - _globals['_DERIVATIVEPOSITION']._serialized_start=1255 - _globals['_DERIVATIVEPOSITION']._serialized_end=1687 - _globals['_ACCOUNTPORTFOLIOBALANCESREQUEST']._serialized_start=1689 - _globals['_ACCOUNTPORTFOLIOBALANCESREQUEST']._serialized_end=1763 - _globals['_ACCOUNTPORTFOLIOBALANCESRESPONSE']._serialized_start=1765 - _globals['_ACCOUNTPORTFOLIOBALANCESRESPONSE']._serialized_end=1873 - _globals['_PORTFOLIOBALANCES']._serialized_start=1876 - _globals['_PORTFOLIOBALANCES']._serialized_end=2084 - _globals['_STREAMACCOUNTPORTFOLIOREQUEST']._serialized_start=2087 - _globals['_STREAMACCOUNTPORTFOLIOREQUEST']._serialized_end=2216 - _globals['_STREAMACCOUNTPORTFOLIORESPONSE']._serialized_start=2219 - _globals['_STREAMACCOUNTPORTFOLIORESPONSE']._serialized_end=2384 - _globals['_INJECTIVEPORTFOLIORPC']._serialized_start=2387 - _globals['_INJECTIVEPORTFOLIORPC']._serialized_end=2928 + _globals['_COIN']._serialized_end=891 + _globals['_SUBACCOUNTBALANCEV2']._serialized_start=894 + _globals['_SUBACCOUNTBALANCEV2']._serialized_end=1044 + _globals['_SUBACCOUNTDEPOSIT']._serialized_start=1047 + _globals['_SUBACCOUNTDEPOSIT']._serialized_end=1244 + _globals['_POSITIONSWITHUPNL']._serialized_start=1247 + _globals['_POSITIONSWITHUPNL']._serialized_end=1378 + _globals['_DERIVATIVEPOSITION']._serialized_start=1381 + _globals['_DERIVATIVEPOSITION']._serialized_end=1813 + _globals['_ACCOUNTPORTFOLIOBALANCESREQUEST']._serialized_start=1815 + _globals['_ACCOUNTPORTFOLIOBALANCESREQUEST']._serialized_end=1907 + _globals['_ACCOUNTPORTFOLIOBALANCESRESPONSE']._serialized_start=1909 + _globals['_ACCOUNTPORTFOLIOBALANCESRESPONSE']._serialized_end=2017 + _globals['_PORTFOLIOBALANCES']._serialized_start=2020 + _globals['_PORTFOLIOBALANCES']._serialized_end=2257 + _globals['_STREAMACCOUNTPORTFOLIOREQUEST']._serialized_start=2260 + _globals['_STREAMACCOUNTPORTFOLIOREQUEST']._serialized_end=2389 + _globals['_STREAMACCOUNTPORTFOLIORESPONSE']._serialized_start=2392 + _globals['_STREAMACCOUNTPORTFOLIORESPONSE']._serialized_end=2557 + _globals['_INJECTIVEPORTFOLIORPC']._serialized_start=2560 + _globals['_INJECTIVEPORTFOLIORPC']._serialized_end=3101 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_referral_rpc_pb2.py b/pyinjective/proto/exchange/injective_referral_rpc_pb2.py new file mode 100644 index 00000000..189f038c --- /dev/null +++ b/pyinjective/proto/exchange/injective_referral_rpc_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: exchange/injective_referral_rpc.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() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%exchange/injective_referral_rpc.proto\x12\x16injective_referral_rpc\"F\n\x19GetReferrerDetailsRequest\x12)\n\x10referrer_address\x18\x01 \x01(\tR\x0freferrerAddress\"\xe3\x01\n\x1aGetReferrerDetailsResponse\x12\x43\n\x08invitees\x18\x01 \x03(\x0b\x32\'.injective_referral_rpc.ReferralInviteeR\x08invitees\x12)\n\x10total_commission\x18\x02 \x01(\tR\x0ftotalCommission\x12\x30\n\x14total_trading_volume\x18\x03 \x01(\tR\x12totalTradingVolume\x12#\n\rreferrer_code\x18\x04 \x01(\tR\x0creferrerCode\"\x8f\x01\n\x0fReferralInvitee\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x1e\n\ncommission\x18\x02 \x01(\tR\ncommission\x12%\n\x0etrading_volume\x18\x03 \x01(\tR\rtradingVolume\x12\x1b\n\tjoin_date\x18\x04 \x01(\tR\x08joinDate\"C\n\x18GetInviteeDetailsRequest\x12\'\n\x0finvitee_address\x18\x01 \x01(\tR\x0einviteeAddress\"\xb0\x01\n\x19GetInviteeDetailsResponse\x12\x1a\n\x08referrer\x18\x01 \x01(\tR\x08referrer\x12\x1b\n\tused_code\x18\x02 \x01(\tR\x08usedCode\x12%\n\x0etrading_volume\x18\x03 \x01(\tR\rtradingVolume\x12\x1b\n\tjoined_at\x18\x04 \x01(\tR\x08joinedAt\x12\x16\n\x06\x61\x63tive\x18\x05 \x01(\x08R\x06\x61\x63tive\"?\n\x18GetReferrerByCodeRequest\x12#\n\rreferral_code\x18\x01 \x01(\tR\x0creferralCode\"F\n\x19GetReferrerByCodeResponse\x12)\n\x10referrer_address\x18\x01 \x01(\tR\x0freferrerAddress2\x87\x03\n\x14InjectiveReferralRPC\x12{\n\x12GetReferrerDetails\x12\x31.injective_referral_rpc.GetReferrerDetailsRequest\x1a\x32.injective_referral_rpc.GetReferrerDetailsResponse\x12x\n\x11GetInviteeDetails\x12\x30.injective_referral_rpc.GetInviteeDetailsRequest\x1a\x31.injective_referral_rpc.GetInviteeDetailsResponse\x12x\n\x11GetReferrerByCode\x12\x30.injective_referral_rpc.GetReferrerByCodeRequest\x1a\x31.injective_referral_rpc.GetReferrerByCodeResponseB\xc2\x01\n\x1a\x63om.injective_referral_rpcB\x19InjectiveReferralRpcProtoP\x01Z\x19/injective_referral_rpcpb\xa2\x02\x03IXX\xaa\x02\x14InjectiveReferralRpc\xca\x02\x14InjectiveReferralRpc\xe2\x02 InjectiveReferralRpc\\GPBMetadata\xea\x02\x14InjectiveReferralRpcb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'exchange.injective_referral_rpc_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\032com.injective_referral_rpcB\031InjectiveReferralRpcProtoP\001Z\031/injective_referral_rpcpb\242\002\003IXX\252\002\024InjectiveReferralRpc\312\002\024InjectiveReferralRpc\342\002 InjectiveReferralRpc\\GPBMetadata\352\002\024InjectiveReferralRpc' + _globals['_GETREFERRERDETAILSREQUEST']._serialized_start=65 + _globals['_GETREFERRERDETAILSREQUEST']._serialized_end=135 + _globals['_GETREFERRERDETAILSRESPONSE']._serialized_start=138 + _globals['_GETREFERRERDETAILSRESPONSE']._serialized_end=365 + _globals['_REFERRALINVITEE']._serialized_start=368 + _globals['_REFERRALINVITEE']._serialized_end=511 + _globals['_GETINVITEEDETAILSREQUEST']._serialized_start=513 + _globals['_GETINVITEEDETAILSREQUEST']._serialized_end=580 + _globals['_GETINVITEEDETAILSRESPONSE']._serialized_start=583 + _globals['_GETINVITEEDETAILSRESPONSE']._serialized_end=759 + _globals['_GETREFERRERBYCODEREQUEST']._serialized_start=761 + _globals['_GETREFERRERBYCODEREQUEST']._serialized_end=824 + _globals['_GETREFERRERBYCODERESPONSE']._serialized_start=826 + _globals['_GETREFERRERBYCODERESPONSE']._serialized_end=896 + _globals['_INJECTIVEREFERRALRPC']._serialized_start=899 + _globals['_INJECTIVEREFERRALRPC']._serialized_end=1290 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/exchange/injective_referral_rpc_pb2_grpc.py b/pyinjective/proto/exchange/injective_referral_rpc_pb2_grpc.py new file mode 100644 index 00000000..64f0ae10 --- /dev/null +++ b/pyinjective/proto/exchange/injective_referral_rpc_pb2_grpc.py @@ -0,0 +1,170 @@ +# 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.exchange import injective_referral_rpc_pb2 as exchange_dot_injective__referral__rpc__pb2 + + +class InjectiveReferralRPCStub(object): + """InjectiveReferralRPC defines gRPC API for referral system + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetReferrerDetails = channel.unary_unary( + '/injective_referral_rpc.InjectiveReferralRPC/GetReferrerDetails', + request_serializer=exchange_dot_injective__referral__rpc__pb2.GetReferrerDetailsRequest.SerializeToString, + response_deserializer=exchange_dot_injective__referral__rpc__pb2.GetReferrerDetailsResponse.FromString, + _registered_method=True) + self.GetInviteeDetails = channel.unary_unary( + '/injective_referral_rpc.InjectiveReferralRPC/GetInviteeDetails', + request_serializer=exchange_dot_injective__referral__rpc__pb2.GetInviteeDetailsRequest.SerializeToString, + response_deserializer=exchange_dot_injective__referral__rpc__pb2.GetInviteeDetailsResponse.FromString, + _registered_method=True) + self.GetReferrerByCode = channel.unary_unary( + '/injective_referral_rpc.InjectiveReferralRPC/GetReferrerByCode', + request_serializer=exchange_dot_injective__referral__rpc__pb2.GetReferrerByCodeRequest.SerializeToString, + response_deserializer=exchange_dot_injective__referral__rpc__pb2.GetReferrerByCodeResponse.FromString, + _registered_method=True) + + +class InjectiveReferralRPCServicer(object): + """InjectiveReferralRPC defines gRPC API for referral system + """ + + def GetReferrerDetails(self, request, context): + """Get referrer details including their invitees, commissions and trading + volumes + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetInviteeDetails(self, request, context): + """Get invitee details including their referrer, trading volume and join date + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetReferrerByCode(self, request, context): + """Get referrer details by their referral code + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_InjectiveReferralRPCServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetReferrerDetails': grpc.unary_unary_rpc_method_handler( + servicer.GetReferrerDetails, + request_deserializer=exchange_dot_injective__referral__rpc__pb2.GetReferrerDetailsRequest.FromString, + response_serializer=exchange_dot_injective__referral__rpc__pb2.GetReferrerDetailsResponse.SerializeToString, + ), + 'GetInviteeDetails': grpc.unary_unary_rpc_method_handler( + servicer.GetInviteeDetails, + request_deserializer=exchange_dot_injective__referral__rpc__pb2.GetInviteeDetailsRequest.FromString, + response_serializer=exchange_dot_injective__referral__rpc__pb2.GetInviteeDetailsResponse.SerializeToString, + ), + 'GetReferrerByCode': grpc.unary_unary_rpc_method_handler( + servicer.GetReferrerByCode, + request_deserializer=exchange_dot_injective__referral__rpc__pb2.GetReferrerByCodeRequest.FromString, + response_serializer=exchange_dot_injective__referral__rpc__pb2.GetReferrerByCodeResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'injective_referral_rpc.InjectiveReferralRPC', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('injective_referral_rpc.InjectiveReferralRPC', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class InjectiveReferralRPC(object): + """InjectiveReferralRPC defines gRPC API for referral system + """ + + @staticmethod + def GetReferrerDetails(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_referral_rpc.InjectiveReferralRPC/GetReferrerDetails', + exchange_dot_injective__referral__rpc__pb2.GetReferrerDetailsRequest.SerializeToString, + exchange_dot_injective__referral__rpc__pb2.GetReferrerDetailsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetInviteeDetails(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_referral_rpc.InjectiveReferralRPC/GetInviteeDetails', + exchange_dot_injective__referral__rpc__pb2.GetInviteeDetailsRequest.SerializeToString, + exchange_dot_injective__referral__rpc__pb2.GetInviteeDetailsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetReferrerByCode(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_referral_rpc.InjectiveReferralRPC/GetReferrerByCode', + exchange_dot_injective__referral__rpc__pb2.GetReferrerByCodeRequest.SerializeToString, + exchange_dot_injective__referral__rpc__pb2.GetReferrerByCodeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/pyinjective/proto/exchange/injective_spot_exchange_rpc_pb2.py b/pyinjective/proto/exchange/injective_spot_exchange_rpc_pb2.py index b585b272..4babfd85 100644 --- a/pyinjective/proto/exchange/injective_spot_exchange_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_spot_exchange_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*exchange/injective_spot_exchange_rpc.proto\x12\x1binjective_spot_exchange_rpc\"\x9e\x01\n\x0eMarketsRequest\x12#\n\rmarket_status\x18\x01 \x01(\tR\x0cmarketStatus\x12\x1d\n\nbase_denom\x18\x02 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12\'\n\x0fmarket_statuses\x18\x04 \x03(\tR\x0emarketStatuses\"X\n\x0fMarketsResponse\x12\x45\n\x07markets\x18\x01 \x03(\x0b\x32+.injective_spot_exchange_rpc.SpotMarketInfoR\x07markets\"\xd1\x04\n\x0eSpotMarketInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rmarket_status\x18\x02 \x01(\tR\x0cmarketStatus\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x04 \x01(\tR\tbaseDenom\x12N\n\x0f\x62\x61se_token_meta\x18\x05 \x01(\x0b\x32&.injective_spot_exchange_rpc.TokenMetaR\rbaseTokenMeta\x12\x1f\n\x0bquote_denom\x18\x06 \x01(\tR\nquoteDenom\x12P\n\x10quote_token_meta\x18\x07 \x01(\x0b\x32&.injective_spot_exchange_rpc.TokenMetaR\x0equoteTokenMeta\x12$\n\x0emaker_fee_rate\x18\x08 \x01(\tR\x0cmakerFeeRate\x12$\n\x0etaker_fee_rate\x18\t \x01(\tR\x0ctakerFeeRate\x12\x30\n\x14service_provider_fee\x18\n \x01(\tR\x12serviceProviderFee\x12-\n\x13min_price_tick_size\x18\x0b \x01(\tR\x10minPriceTickSize\x12\x33\n\x16min_quantity_tick_size\x18\x0c \x01(\tR\x13minQuantityTickSize\x12!\n\x0cmin_notional\x18\r \x01(\tR\x0bminNotional\"\xa0\x01\n\tTokenMeta\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06symbol\x18\x03 \x01(\tR\x06symbol\x12\x12\n\x04logo\x18\x04 \x01(\tR\x04logo\x12\x1a\n\x08\x64\x65\x63imals\x18\x05 \x01(\x11R\x08\x64\x65\x63imals\x12\x1d\n\nupdated_at\x18\x06 \x01(\x12R\tupdatedAt\",\n\rMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"U\n\x0eMarketResponse\x12\x43\n\x06market\x18\x01 \x01(\x0b\x32+.injective_spot_exchange_rpc.SpotMarketInfoR\x06market\"5\n\x14StreamMarketsRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"\xa1\x01\n\x15StreamMarketsResponse\x12\x43\n\x06market\x18\x01 \x01(\x0b\x32+.injective_spot_exchange_rpc.SpotMarketInfoR\x06market\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"1\n\x12OrderbookV2Request\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"f\n\x13OrderbookV2Response\x12O\n\torderbook\x18\x01 \x01(\x0b\x32\x31.injective_spot_exchange_rpc.SpotLimitOrderbookV2R\torderbook\"\xcc\x01\n\x14SpotLimitOrderbookV2\x12;\n\x04\x62uys\x18\x01 \x03(\x0b\x32\'.injective_spot_exchange_rpc.PriceLevelR\x04\x62uys\x12=\n\x05sells\x18\x02 \x03(\x0b\x32\'.injective_spot_exchange_rpc.PriceLevelR\x05sells\x12\x1a\n\x08sequence\x18\x03 \x01(\x04R\x08sequence\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp\"\\\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"4\n\x13OrderbooksV2Request\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"o\n\x14OrderbooksV2Response\x12W\n\norderbooks\x18\x01 \x03(\x0b\x32\x37.injective_spot_exchange_rpc.SingleSpotLimitOrderbookV2R\norderbooks\"\x8a\x01\n\x1aSingleSpotLimitOrderbookV2\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12O\n\torderbook\x18\x02 \x01(\x0b\x32\x31.injective_spot_exchange_rpc.SpotLimitOrderbookV2R\torderbook\"9\n\x18StreamOrderbookV2Request\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"\xce\x01\n\x19StreamOrderbookV2Response\x12O\n\torderbook\x18\x01 \x01(\x0b\x32\x31.injective_spot_exchange_rpc.SpotLimitOrderbookV2R\torderbook\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\"=\n\x1cStreamOrderbookUpdateRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"\xed\x01\n\x1dStreamOrderbookUpdateResponse\x12j\n\x17orderbook_level_updates\x18\x01 \x01(\x0b\x32\x32.injective_spot_exchange_rpc.OrderbookLevelUpdatesR\x15orderbookLevelUpdates\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\"\xf7\x01\n\x15OrderbookLevelUpdates\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1a\n\x08sequence\x18\x02 \x01(\x04R\x08sequence\x12\x41\n\x04\x62uys\x18\x03 \x03(\x0b\x32-.injective_spot_exchange_rpc.PriceLevelUpdateR\x04\x62uys\x12\x43\n\x05sells\x18\x04 \x03(\x0b\x32-.injective_spot_exchange_rpc.PriceLevelUpdateR\x05sells\x12\x1d\n\nupdated_at\x18\x05 \x01(\x12R\tupdatedAt\"\x7f\n\x10PriceLevelUpdate\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1b\n\tis_active\x18\x03 \x01(\x08R\x08isActive\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp\"\x83\x03\n\rOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\x08 \x03(\tR\tmarketIds\x12)\n\x10include_inactive\x18\t \x01(\x08R\x0fincludeInactive\x12\x36\n\x17subaccount_total_orders\x18\n \x01(\x08R\x15subaccountTotalOrders\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\x12\x10\n\x03\x63id\x18\x0c \x01(\tR\x03\x63id\"\x92\x01\n\x0eOrdersResponse\x12\x43\n\x06orders\x18\x01 \x03(\x0b\x32+.injective_spot_exchange_rpc.SpotLimitOrderR\x06orders\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xb8\x03\n\x0eSpotLimitOrder\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x14\n\x05price\x18\x05 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x06 \x01(\tR\x08quantity\x12+\n\x11unfilled_quantity\x18\x07 \x01(\tR\x10unfilledQuantity\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12\x14\n\x05state\x18\n \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0b \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0c \x01(\x12R\tupdatedAt\x12\x17\n\x07tx_hash\x18\r \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\x89\x03\n\x13StreamOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\x08 \x03(\tR\tmarketIds\x12)\n\x10include_inactive\x18\t \x01(\x08R\x0fincludeInactive\x12\x36\n\x17subaccount_total_orders\x18\n \x01(\x08R\x15subaccountTotalOrders\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\x12\x10\n\x03\x63id\x18\x0c \x01(\tR\x03\x63id\"\x9e\x01\n\x14StreamOrdersResponse\x12\x41\n\x05order\x18\x01 \x01(\x0b\x32+.injective_spot_exchange_rpc.SpotLimitOrderR\x05order\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\xe4\x03\n\rTradesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_side\x18\x02 \x01(\tR\rexecutionSide\x12\x1c\n\tdirection\x18\x03 \x01(\tR\tdirection\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\t \x03(\tR\tmarketIds\x12%\n\x0esubaccount_ids\x18\n \x03(\tR\rsubaccountIds\x12\'\n\x0f\x65xecution_types\x18\x0b \x03(\tR\x0e\x65xecutionTypes\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12\'\n\x0f\x61\x63\x63ount_address\x18\r \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\x12#\n\rfee_recipient\x18\x0f \x01(\tR\x0c\x66\x65\x65Recipient\"\x8d\x01\n\x0eTradesResponse\x12>\n\x06trades\x18\x01 \x03(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x06trades\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xb2\x03\n\tSpotTrade\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x30\n\x14trade_execution_type\x18\x04 \x01(\tR\x12tradeExecutionType\x12\'\n\x0ftrade_direction\x18\x05 \x01(\tR\x0etradeDirection\x12=\n\x05price\x18\x06 \x01(\x0b\x32\'.injective_spot_exchange_rpc.PriceLevelR\x05price\x12\x10\n\x03\x66\x65\x65\x18\x07 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\x08 \x01(\x12R\nexecutedAt\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12\x19\n\x08trade_id\x18\n \x01(\tR\x07tradeId\x12%\n\x0e\x65xecution_side\x18\x0b \x01(\tR\rexecutionSide\x12\x10\n\x03\x63id\x18\x0c \x01(\tR\x03\x63id\"\xea\x03\n\x13StreamTradesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_side\x18\x02 \x01(\tR\rexecutionSide\x12\x1c\n\tdirection\x18\x03 \x01(\tR\tdirection\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\t \x03(\tR\tmarketIds\x12%\n\x0esubaccount_ids\x18\n \x03(\tR\rsubaccountIds\x12\'\n\x0f\x65xecution_types\x18\x0b \x03(\tR\x0e\x65xecutionTypes\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12\'\n\x0f\x61\x63\x63ount_address\x18\r \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\x12#\n\rfee_recipient\x18\x0f \x01(\tR\x0c\x66\x65\x65Recipient\"\x99\x01\n\x14StreamTradesResponse\x12<\n\x05trade\x18\x01 \x01(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x05trade\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\xe6\x03\n\x0fTradesV2Request\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_side\x18\x02 \x01(\tR\rexecutionSide\x12\x1c\n\tdirection\x18\x03 \x01(\tR\tdirection\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\t \x03(\tR\tmarketIds\x12%\n\x0esubaccount_ids\x18\n \x03(\tR\rsubaccountIds\x12\'\n\x0f\x65xecution_types\x18\x0b \x03(\tR\x0e\x65xecutionTypes\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12\'\n\x0f\x61\x63\x63ount_address\x18\r \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\x12#\n\rfee_recipient\x18\x0f \x01(\tR\x0c\x66\x65\x65Recipient\"\x8f\x01\n\x10TradesV2Response\x12>\n\x06trades\x18\x01 \x03(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x06trades\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xec\x03\n\x15StreamTradesV2Request\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_side\x18\x02 \x01(\tR\rexecutionSide\x12\x1c\n\tdirection\x18\x03 \x01(\tR\tdirection\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\t \x03(\tR\tmarketIds\x12%\n\x0esubaccount_ids\x18\n \x03(\tR\rsubaccountIds\x12\'\n\x0f\x65xecution_types\x18\x0b \x03(\tR\x0e\x65xecutionTypes\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12\'\n\x0f\x61\x63\x63ount_address\x18\r \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\x12#\n\rfee_recipient\x18\x0f \x01(\tR\x0c\x66\x65\x65Recipient\"\x9b\x01\n\x16StreamTradesV2Response\x12<\n\x05trade\x18\x01 \x01(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x05trade\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\x89\x01\n\x1bSubaccountOrdersListRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x12\n\x04skip\x18\x03 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\"\xa0\x01\n\x1cSubaccountOrdersListResponse\x12\x43\n\x06orders\x18\x01 \x03(\x0b\x32+.injective_spot_exchange_rpc.SpotLimitOrderR\x06orders\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xce\x01\n\x1bSubaccountTradesListRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_type\x18\x03 \x01(\tR\rexecutionType\x12\x1c\n\tdirection\x18\x04 \x01(\tR\tdirection\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\"^\n\x1cSubaccountTradesListResponse\x12>\n\x06trades\x18\x01 \x03(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x06trades\"\xb6\x03\n\x14OrdersHistoryRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x12\n\x04skip\x18\x03 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x1f\n\x0border_types\x18\x05 \x03(\tR\norderTypes\x12\x1c\n\tdirection\x18\x06 \x01(\tR\tdirection\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x14\n\x05state\x18\t \x01(\tR\x05state\x12\'\n\x0f\x65xecution_types\x18\n \x03(\tR\x0e\x65xecutionTypes\x12\x1d\n\nmarket_ids\x18\x0b \x03(\tR\tmarketIds\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12.\n\x13\x61\x63tive_markets_only\x18\r \x01(\x08R\x11\x61\x63tiveMarketsOnly\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\"\x9b\x01\n\x15OrdersHistoryResponse\x12\x45\n\x06orders\x18\x01 \x03(\x0b\x32-.injective_spot_exchange_rpc.SpotOrderHistoryR\x06orders\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xf3\x03\n\x10SpotOrderHistory\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1b\n\tis_active\x18\x03 \x01(\x08R\x08isActive\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12%\n\x0e\x65xecution_type\x18\x05 \x01(\tR\rexecutionType\x12\x1d\n\norder_type\x18\x06 \x01(\tR\torderType\x12\x14\n\x05price\x18\x07 \x01(\tR\x05price\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12\x1a\n\x08quantity\x18\t \x01(\tR\x08quantity\x12\'\n\x0f\x66illed_quantity\x18\n \x01(\tR\x0e\x66illedQuantity\x12\x14\n\x05state\x18\x0b \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0c \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\r \x01(\x12R\tupdatedAt\x12\x1c\n\tdirection\x18\x0e \x01(\tR\tdirection\x12\x17\n\x07tx_hash\x18\x0f \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x10 \x01(\tR\x03\x63id\"\xdc\x01\n\x1aStreamOrdersHistoryRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1f\n\x0border_types\x18\x03 \x03(\tR\norderTypes\x12\x1c\n\tdirection\x18\x04 \x01(\tR\tdirection\x12\x14\n\x05state\x18\x05 \x01(\tR\x05state\x12\'\n\x0f\x65xecution_types\x18\x06 \x03(\tR\x0e\x65xecutionTypes\"\xa7\x01\n\x1bStreamOrdersHistoryResponse\x12\x43\n\x05order\x18\x01 \x01(\x0b\x32-.injective_spot_exchange_rpc.SpotOrderHistoryR\x05order\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\xc7\x01\n\x18\x41tomicSwapHistoryRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12)\n\x10\x63ontract_address\x18\x02 \x01(\tR\x0f\x63ontractAddress\x12\x12\n\x04skip\x18\x03 \x01(\x11R\x04skip\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x1f\n\x0b\x66rom_number\x18\x05 \x01(\x11R\nfromNumber\x12\x1b\n\tto_number\x18\x06 \x01(\x11R\x08toNumber\"\x95\x01\n\x19\x41tomicSwapHistoryResponse\x12;\n\x06paging\x18\x01 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\x12;\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\'.injective_spot_exchange_rpc.AtomicSwapR\x04\x64\x61ta\"\xe0\x03\n\nAtomicSwap\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x14\n\x05route\x18\x02 \x01(\tR\x05route\x12\x42\n\x0bsource_coin\x18\x03 \x01(\x0b\x32!.injective_spot_exchange_rpc.CoinR\nsourceCoin\x12>\n\tdest_coin\x18\x04 \x01(\x0b\x32!.injective_spot_exchange_rpc.CoinR\x08\x64\x65stCoin\x12\x35\n\x04\x66\x65\x65s\x18\x05 \x03(\x0b\x32!.injective_spot_exchange_rpc.CoinR\x04\x66\x65\x65s\x12)\n\x10\x63ontract_address\x18\x06 \x01(\tR\x0f\x63ontractAddress\x12&\n\x0findex_by_sender\x18\x07 \x01(\x11R\rindexBySender\x12\x37\n\x18index_by_sender_contract\x18\x08 \x01(\x11R\x15indexBySenderContract\x12\x17\n\x07tx_hash\x18\t \x01(\tR\x06txHash\x12\x1f\n\x0b\x65xecuted_at\x18\n \x01(\x12R\nexecutedAt\x12#\n\rrefund_amount\x18\x0b \x01(\tR\x0crefundAmount\"4\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount2\x9e\x11\n\x18InjectiveSpotExchangeRPC\x12\x64\n\x07Markets\x12+.injective_spot_exchange_rpc.MarketsRequest\x1a,.injective_spot_exchange_rpc.MarketsResponse\x12\x61\n\x06Market\x12*.injective_spot_exchange_rpc.MarketRequest\x1a+.injective_spot_exchange_rpc.MarketResponse\x12x\n\rStreamMarkets\x12\x31.injective_spot_exchange_rpc.StreamMarketsRequest\x1a\x32.injective_spot_exchange_rpc.StreamMarketsResponse0\x01\x12p\n\x0bOrderbookV2\x12/.injective_spot_exchange_rpc.OrderbookV2Request\x1a\x30.injective_spot_exchange_rpc.OrderbookV2Response\x12s\n\x0cOrderbooksV2\x12\x30.injective_spot_exchange_rpc.OrderbooksV2Request\x1a\x31.injective_spot_exchange_rpc.OrderbooksV2Response\x12\x84\x01\n\x11StreamOrderbookV2\x12\x35.injective_spot_exchange_rpc.StreamOrderbookV2Request\x1a\x36.injective_spot_exchange_rpc.StreamOrderbookV2Response0\x01\x12\x90\x01\n\x15StreamOrderbookUpdate\x12\x39.injective_spot_exchange_rpc.StreamOrderbookUpdateRequest\x1a:.injective_spot_exchange_rpc.StreamOrderbookUpdateResponse0\x01\x12\x61\n\x06Orders\x12*.injective_spot_exchange_rpc.OrdersRequest\x1a+.injective_spot_exchange_rpc.OrdersResponse\x12u\n\x0cStreamOrders\x12\x30.injective_spot_exchange_rpc.StreamOrdersRequest\x1a\x31.injective_spot_exchange_rpc.StreamOrdersResponse0\x01\x12\x61\n\x06Trades\x12*.injective_spot_exchange_rpc.TradesRequest\x1a+.injective_spot_exchange_rpc.TradesResponse\x12u\n\x0cStreamTrades\x12\x30.injective_spot_exchange_rpc.StreamTradesRequest\x1a\x31.injective_spot_exchange_rpc.StreamTradesResponse0\x01\x12g\n\x08TradesV2\x12,.injective_spot_exchange_rpc.TradesV2Request\x1a-.injective_spot_exchange_rpc.TradesV2Response\x12{\n\x0eStreamTradesV2\x12\x32.injective_spot_exchange_rpc.StreamTradesV2Request\x1a\x33.injective_spot_exchange_rpc.StreamTradesV2Response0\x01\x12\x8b\x01\n\x14SubaccountOrdersList\x12\x38.injective_spot_exchange_rpc.SubaccountOrdersListRequest\x1a\x39.injective_spot_exchange_rpc.SubaccountOrdersListResponse\x12\x8b\x01\n\x14SubaccountTradesList\x12\x38.injective_spot_exchange_rpc.SubaccountTradesListRequest\x1a\x39.injective_spot_exchange_rpc.SubaccountTradesListResponse\x12v\n\rOrdersHistory\x12\x31.injective_spot_exchange_rpc.OrdersHistoryRequest\x1a\x32.injective_spot_exchange_rpc.OrdersHistoryResponse\x12\x8a\x01\n\x13StreamOrdersHistory\x12\x37.injective_spot_exchange_rpc.StreamOrdersHistoryRequest\x1a\x38.injective_spot_exchange_rpc.StreamOrdersHistoryResponse0\x01\x12\x82\x01\n\x11\x41tomicSwapHistory\x12\x35.injective_spot_exchange_rpc.AtomicSwapHistoryRequest\x1a\x36.injective_spot_exchange_rpc.AtomicSwapHistoryResponseB\xe0\x01\n\x1f\x63om.injective_spot_exchange_rpcB\x1dInjectiveSpotExchangeRpcProtoP\x01Z\x1e/injective_spot_exchange_rpcpb\xa2\x02\x03IXX\xaa\x02\x18InjectiveSpotExchangeRpc\xca\x02\x18InjectiveSpotExchangeRpc\xe2\x02$InjectiveSpotExchangeRpc\\GPBMetadata\xea\x02\x18InjectiveSpotExchangeRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*exchange/injective_spot_exchange_rpc.proto\x12\x1binjective_spot_exchange_rpc\"\x9e\x01\n\x0eMarketsRequest\x12#\n\rmarket_status\x18\x01 \x01(\tR\x0cmarketStatus\x12\x1d\n\nbase_denom\x18\x02 \x01(\tR\tbaseDenom\x12\x1f\n\x0bquote_denom\x18\x03 \x01(\tR\nquoteDenom\x12\'\n\x0fmarket_statuses\x18\x04 \x03(\tR\x0emarketStatuses\"X\n\x0fMarketsResponse\x12\x45\n\x07markets\x18\x01 \x03(\x0b\x32+.injective_spot_exchange_rpc.SpotMarketInfoR\x07markets\"\xd1\x04\n\x0eSpotMarketInfo\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12#\n\rmarket_status\x18\x02 \x01(\tR\x0cmarketStatus\x12\x16\n\x06ticker\x18\x03 \x01(\tR\x06ticker\x12\x1d\n\nbase_denom\x18\x04 \x01(\tR\tbaseDenom\x12N\n\x0f\x62\x61se_token_meta\x18\x05 \x01(\x0b\x32&.injective_spot_exchange_rpc.TokenMetaR\rbaseTokenMeta\x12\x1f\n\x0bquote_denom\x18\x06 \x01(\tR\nquoteDenom\x12P\n\x10quote_token_meta\x18\x07 \x01(\x0b\x32&.injective_spot_exchange_rpc.TokenMetaR\x0equoteTokenMeta\x12$\n\x0emaker_fee_rate\x18\x08 \x01(\tR\x0cmakerFeeRate\x12$\n\x0etaker_fee_rate\x18\t \x01(\tR\x0ctakerFeeRate\x12\x30\n\x14service_provider_fee\x18\n \x01(\tR\x12serviceProviderFee\x12-\n\x13min_price_tick_size\x18\x0b \x01(\tR\x10minPriceTickSize\x12\x33\n\x16min_quantity_tick_size\x18\x0c \x01(\tR\x13minQuantityTickSize\x12!\n\x0cmin_notional\x18\r \x01(\tR\x0bminNotional\"\xa0\x01\n\tTokenMeta\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tR\x07\x61\x64\x64ress\x12\x16\n\x06symbol\x18\x03 \x01(\tR\x06symbol\x12\x12\n\x04logo\x18\x04 \x01(\tR\x04logo\x12\x1a\n\x08\x64\x65\x63imals\x18\x05 \x01(\x11R\x08\x64\x65\x63imals\x12\x1d\n\nupdated_at\x18\x06 \x01(\x12R\tupdatedAt\",\n\rMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"U\n\x0eMarketResponse\x12\x43\n\x06market\x18\x01 \x01(\x0b\x32+.injective_spot_exchange_rpc.SpotMarketInfoR\x06market\"5\n\x14StreamMarketsRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"\xa1\x01\n\x15StreamMarketsResponse\x12\x43\n\x06market\x18\x01 \x01(\x0b\x32+.injective_spot_exchange_rpc.SpotMarketInfoR\x06market\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"1\n\x12OrderbookV2Request\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"f\n\x13OrderbookV2Response\x12O\n\torderbook\x18\x01 \x01(\x0b\x32\x31.injective_spot_exchange_rpc.SpotLimitOrderbookV2R\torderbook\"\xcc\x01\n\x14SpotLimitOrderbookV2\x12;\n\x04\x62uys\x18\x01 \x03(\x0b\x32\'.injective_spot_exchange_rpc.PriceLevelR\x04\x62uys\x12=\n\x05sells\x18\x02 \x03(\x0b\x32\'.injective_spot_exchange_rpc.PriceLevelR\x05sells\x12\x1a\n\x08sequence\x18\x03 \x01(\x04R\x08sequence\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp\"\\\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"4\n\x13OrderbooksV2Request\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"o\n\x14OrderbooksV2Response\x12W\n\norderbooks\x18\x01 \x03(\x0b\x32\x37.injective_spot_exchange_rpc.SingleSpotLimitOrderbookV2R\norderbooks\"\x8a\x01\n\x1aSingleSpotLimitOrderbookV2\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12O\n\torderbook\x18\x02 \x01(\x0b\x32\x31.injective_spot_exchange_rpc.SpotLimitOrderbookV2R\torderbook\"9\n\x18StreamOrderbookV2Request\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"\xce\x01\n\x19StreamOrderbookV2Response\x12O\n\torderbook\x18\x01 \x01(\x0b\x32\x31.injective_spot_exchange_rpc.SpotLimitOrderbookV2R\torderbook\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\"=\n\x1cStreamOrderbookUpdateRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds\"\xed\x01\n\x1dStreamOrderbookUpdateResponse\x12j\n\x17orderbook_level_updates\x18\x01 \x01(\x0b\x32\x32.injective_spot_exchange_rpc.OrderbookLevelUpdatesR\x15orderbookLevelUpdates\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\x12\x1b\n\tmarket_id\x18\x04 \x01(\tR\x08marketId\"\xf7\x01\n\x15OrderbookLevelUpdates\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1a\n\x08sequence\x18\x02 \x01(\x04R\x08sequence\x12\x41\n\x04\x62uys\x18\x03 \x03(\x0b\x32-.injective_spot_exchange_rpc.PriceLevelUpdateR\x04\x62uys\x12\x43\n\x05sells\x18\x04 \x03(\x0b\x32-.injective_spot_exchange_rpc.PriceLevelUpdateR\x05sells\x12\x1d\n\nupdated_at\x18\x05 \x01(\x12R\tupdatedAt\"\x7f\n\x10PriceLevelUpdate\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x02 \x01(\tR\x08quantity\x12\x1b\n\tis_active\x18\x03 \x01(\x08R\x08isActive\x12\x1c\n\ttimestamp\x18\x04 \x01(\x12R\ttimestamp\"\x83\x03\n\rOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\x08 \x03(\tR\tmarketIds\x12)\n\x10include_inactive\x18\t \x01(\x08R\x0fincludeInactive\x12\x36\n\x17subaccount_total_orders\x18\n \x01(\x08R\x15subaccountTotalOrders\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\x12\x10\n\x03\x63id\x18\x0c \x01(\tR\x03\x63id\"\x92\x01\n\x0eOrdersResponse\x12\x43\n\x06orders\x18\x01 \x03(\x0b\x32+.injective_spot_exchange_rpc.SpotLimitOrderR\x06orders\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xb8\x03\n\x0eSpotLimitOrder\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x14\n\x05price\x18\x05 \x01(\tR\x05price\x12\x1a\n\x08quantity\x18\x06 \x01(\tR\x08quantity\x12+\n\x11unfilled_quantity\x18\x07 \x01(\tR\x10unfilledQuantity\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12\x14\n\x05state\x18\n \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0b \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x0c \x01(\x12R\tupdatedAt\x12\x17\n\x07tx_hash\x18\r \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\x89\x03\n\x13StreamOrdersRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1d\n\norder_side\x18\x02 \x01(\tR\torderSide\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x04 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x05 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\x08 \x03(\tR\tmarketIds\x12)\n\x10include_inactive\x18\t \x01(\x08R\x0fincludeInactive\x12\x36\n\x17subaccount_total_orders\x18\n \x01(\x08R\x15subaccountTotalOrders\x12\x19\n\x08trade_id\x18\x0b \x01(\tR\x07tradeId\x12\x10\n\x03\x63id\x18\x0c \x01(\tR\x03\x63id\"\x9e\x01\n\x14StreamOrdersResponse\x12\x41\n\x05order\x18\x01 \x01(\x0b\x32+.injective_spot_exchange_rpc.SpotLimitOrderR\x05order\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\xe4\x03\n\rTradesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_side\x18\x02 \x01(\tR\rexecutionSide\x12\x1c\n\tdirection\x18\x03 \x01(\tR\tdirection\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\t \x03(\tR\tmarketIds\x12%\n\x0esubaccount_ids\x18\n \x03(\tR\rsubaccountIds\x12\'\n\x0f\x65xecution_types\x18\x0b \x03(\tR\x0e\x65xecutionTypes\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12\'\n\x0f\x61\x63\x63ount_address\x18\r \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\x12#\n\rfee_recipient\x18\x0f \x01(\tR\x0c\x66\x65\x65Recipient\"\x8d\x01\n\x0eTradesResponse\x12>\n\x06trades\x18\x01 \x03(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x06trades\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xb2\x03\n\tSpotTrade\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12#\n\rsubaccount_id\x18\x02 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x30\n\x14trade_execution_type\x18\x04 \x01(\tR\x12tradeExecutionType\x12\'\n\x0ftrade_direction\x18\x05 \x01(\tR\x0etradeDirection\x12=\n\x05price\x18\x06 \x01(\x0b\x32\'.injective_spot_exchange_rpc.PriceLevelR\x05price\x12\x10\n\x03\x66\x65\x65\x18\x07 \x01(\tR\x03\x66\x65\x65\x12\x1f\n\x0b\x65xecuted_at\x18\x08 \x01(\x12R\nexecutedAt\x12#\n\rfee_recipient\x18\t \x01(\tR\x0c\x66\x65\x65Recipient\x12\x19\n\x08trade_id\x18\n \x01(\tR\x07tradeId\x12%\n\x0e\x65xecution_side\x18\x0b \x01(\tR\rexecutionSide\x12\x10\n\x03\x63id\x18\x0c \x01(\tR\x03\x63id\"\xea\x03\n\x13StreamTradesRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_side\x18\x02 \x01(\tR\rexecutionSide\x12\x1c\n\tdirection\x18\x03 \x01(\tR\tdirection\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\t \x03(\tR\tmarketIds\x12%\n\x0esubaccount_ids\x18\n \x03(\tR\rsubaccountIds\x12\'\n\x0f\x65xecution_types\x18\x0b \x03(\tR\x0e\x65xecutionTypes\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12\'\n\x0f\x61\x63\x63ount_address\x18\r \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\x12#\n\rfee_recipient\x18\x0f \x01(\tR\x0c\x66\x65\x65Recipient\"\x99\x01\n\x14StreamTradesResponse\x12<\n\x05trade\x18\x01 \x01(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x05trade\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\xe6\x03\n\x0fTradesV2Request\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_side\x18\x02 \x01(\tR\rexecutionSide\x12\x1c\n\tdirection\x18\x03 \x01(\tR\tdirection\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\t \x03(\tR\tmarketIds\x12%\n\x0esubaccount_ids\x18\n \x03(\tR\rsubaccountIds\x12\'\n\x0f\x65xecution_types\x18\x0b \x03(\tR\x0e\x65xecutionTypes\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12\'\n\x0f\x61\x63\x63ount_address\x18\r \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\x12#\n\rfee_recipient\x18\x0f \x01(\tR\x0c\x66\x65\x65Recipient\"\x8f\x01\n\x10TradesV2Response\x12>\n\x06trades\x18\x01 \x03(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x06trades\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xec\x03\n\x15StreamTradesV2Request\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_side\x18\x02 \x01(\tR\rexecutionSide\x12\x1c\n\tdirection\x18\x03 \x01(\tR\tdirection\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x1d\n\nmarket_ids\x18\t \x03(\tR\tmarketIds\x12%\n\x0esubaccount_ids\x18\n \x03(\tR\rsubaccountIds\x12\'\n\x0f\x65xecution_types\x18\x0b \x03(\tR\x0e\x65xecutionTypes\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12\'\n\x0f\x61\x63\x63ount_address\x18\r \x01(\tR\x0e\x61\x63\x63ountAddress\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\x12#\n\rfee_recipient\x18\x0f \x01(\tR\x0c\x66\x65\x65Recipient\"\x9b\x01\n\x16StreamTradesV2Response\x12<\n\x05trade\x18\x01 \x01(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x05trade\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\x89\x01\n\x1bSubaccountOrdersListRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x12\n\x04skip\x18\x03 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\"\xa0\x01\n\x1cSubaccountOrdersListResponse\x12\x43\n\x06orders\x18\x01 \x03(\x0b\x32+.injective_spot_exchange_rpc.SpotLimitOrderR\x06orders\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xce\x01\n\x1bSubaccountTradesListRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12%\n\x0e\x65xecution_type\x18\x03 \x01(\tR\rexecutionType\x12\x1c\n\tdirection\x18\x04 \x01(\tR\tdirection\x12\x12\n\x04skip\x18\x05 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x06 \x01(\x11R\x05limit\"^\n\x1cSubaccountTradesListResponse\x12>\n\x06trades\x18\x01 \x03(\x0b\x32&.injective_spot_exchange_rpc.SpotTradeR\x06trades\"\xb6\x03\n\x14OrdersHistoryRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x12\n\x04skip\x18\x03 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x1f\n\x0border_types\x18\x05 \x03(\tR\norderTypes\x12\x1c\n\tdirection\x18\x06 \x01(\tR\tdirection\x12\x1d\n\nstart_time\x18\x07 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x08 \x01(\x12R\x07\x65ndTime\x12\x14\n\x05state\x18\t \x01(\tR\x05state\x12\'\n\x0f\x65xecution_types\x18\n \x03(\tR\x0e\x65xecutionTypes\x12\x1d\n\nmarket_ids\x18\x0b \x03(\tR\tmarketIds\x12\x19\n\x08trade_id\x18\x0c \x01(\tR\x07tradeId\x12.\n\x13\x61\x63tive_markets_only\x18\r \x01(\x08R\x11\x61\x63tiveMarketsOnly\x12\x10\n\x03\x63id\x18\x0e \x01(\tR\x03\x63id\"\x9b\x01\n\x15OrdersHistoryResponse\x12\x45\n\x06orders\x18\x01 \x03(\x0b\x32-.injective_spot_exchange_rpc.SpotOrderHistoryR\x06orders\x12;\n\x06paging\x18\x02 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\"\xf3\x03\n\x10SpotOrderHistory\x12\x1d\n\norder_hash\x18\x01 \x01(\tR\torderHash\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1b\n\tis_active\x18\x03 \x01(\x08R\x08isActive\x12#\n\rsubaccount_id\x18\x04 \x01(\tR\x0csubaccountId\x12%\n\x0e\x65xecution_type\x18\x05 \x01(\tR\rexecutionType\x12\x1d\n\norder_type\x18\x06 \x01(\tR\torderType\x12\x14\n\x05price\x18\x07 \x01(\tR\x05price\x12#\n\rtrigger_price\x18\x08 \x01(\tR\x0ctriggerPrice\x12\x1a\n\x08quantity\x18\t \x01(\tR\x08quantity\x12\'\n\x0f\x66illed_quantity\x18\n \x01(\tR\x0e\x66illedQuantity\x12\x14\n\x05state\x18\x0b \x01(\tR\x05state\x12\x1d\n\ncreated_at\x18\x0c \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\r \x01(\x12R\tupdatedAt\x12\x1c\n\tdirection\x18\x0e \x01(\tR\tdirection\x12\x17\n\x07tx_hash\x18\x0f \x01(\tR\x06txHash\x12\x10\n\x03\x63id\x18\x10 \x01(\tR\x03\x63id\"\xdc\x01\n\x1aStreamOrdersHistoryRequest\x12#\n\rsubaccount_id\x18\x01 \x01(\tR\x0csubaccountId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x1f\n\x0border_types\x18\x03 \x03(\tR\norderTypes\x12\x1c\n\tdirection\x18\x04 \x01(\tR\tdirection\x12\x14\n\x05state\x18\x05 \x01(\tR\x05state\x12\'\n\x0f\x65xecution_types\x18\x06 \x03(\tR\x0e\x65xecutionTypes\"\xa7\x01\n\x1bStreamOrdersHistoryResponse\x12\x43\n\x05order\x18\x01 \x01(\x0b\x32-.injective_spot_exchange_rpc.SpotOrderHistoryR\x05order\x12%\n\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12\x1c\n\ttimestamp\x18\x03 \x01(\x12R\ttimestamp\"\xc7\x01\n\x18\x41tomicSwapHistoryRequest\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12)\n\x10\x63ontract_address\x18\x02 \x01(\tR\x0f\x63ontractAddress\x12\x12\n\x04skip\x18\x03 \x01(\x11R\x04skip\x12\x14\n\x05limit\x18\x04 \x01(\x11R\x05limit\x12\x1f\n\x0b\x66rom_number\x18\x05 \x01(\x11R\nfromNumber\x12\x1b\n\tto_number\x18\x06 \x01(\x11R\x08toNumber\"\x95\x01\n\x19\x41tomicSwapHistoryResponse\x12;\n\x06paging\x18\x01 \x01(\x0b\x32#.injective_spot_exchange_rpc.PagingR\x06paging\x12;\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\'.injective_spot_exchange_rpc.AtomicSwapR\x04\x64\x61ta\"\xe0\x03\n\nAtomicSwap\x12\x16\n\x06sender\x18\x01 \x01(\tR\x06sender\x12\x14\n\x05route\x18\x02 \x01(\tR\x05route\x12\x42\n\x0bsource_coin\x18\x03 \x01(\x0b\x32!.injective_spot_exchange_rpc.CoinR\nsourceCoin\x12>\n\tdest_coin\x18\x04 \x01(\x0b\x32!.injective_spot_exchange_rpc.CoinR\x08\x64\x65stCoin\x12\x35\n\x04\x66\x65\x65s\x18\x05 \x03(\x0b\x32!.injective_spot_exchange_rpc.CoinR\x04\x66\x65\x65s\x12)\n\x10\x63ontract_address\x18\x06 \x01(\tR\x0f\x63ontractAddress\x12&\n\x0findex_by_sender\x18\x07 \x01(\x11R\rindexBySender\x12\x37\n\x18index_by_sender_contract\x18\x08 \x01(\x11R\x15indexBySenderContract\x12\x17\n\x07tx_hash\x18\t \x01(\tR\x06txHash\x12\x1f\n\x0b\x65xecuted_at\x18\n \x01(\x12R\nexecutedAt\x12#\n\rrefund_amount\x18\x0b \x01(\tR\x0crefundAmount\"Q\n\x04\x43oin\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x1b\n\tusd_value\x18\x03 \x01(\tR\x08usdValue2\x9e\x11\n\x18InjectiveSpotExchangeRPC\x12\x64\n\x07Markets\x12+.injective_spot_exchange_rpc.MarketsRequest\x1a,.injective_spot_exchange_rpc.MarketsResponse\x12\x61\n\x06Market\x12*.injective_spot_exchange_rpc.MarketRequest\x1a+.injective_spot_exchange_rpc.MarketResponse\x12x\n\rStreamMarkets\x12\x31.injective_spot_exchange_rpc.StreamMarketsRequest\x1a\x32.injective_spot_exchange_rpc.StreamMarketsResponse0\x01\x12p\n\x0bOrderbookV2\x12/.injective_spot_exchange_rpc.OrderbookV2Request\x1a\x30.injective_spot_exchange_rpc.OrderbookV2Response\x12s\n\x0cOrderbooksV2\x12\x30.injective_spot_exchange_rpc.OrderbooksV2Request\x1a\x31.injective_spot_exchange_rpc.OrderbooksV2Response\x12\x84\x01\n\x11StreamOrderbookV2\x12\x35.injective_spot_exchange_rpc.StreamOrderbookV2Request\x1a\x36.injective_spot_exchange_rpc.StreamOrderbookV2Response0\x01\x12\x90\x01\n\x15StreamOrderbookUpdate\x12\x39.injective_spot_exchange_rpc.StreamOrderbookUpdateRequest\x1a:.injective_spot_exchange_rpc.StreamOrderbookUpdateResponse0\x01\x12\x61\n\x06Orders\x12*.injective_spot_exchange_rpc.OrdersRequest\x1a+.injective_spot_exchange_rpc.OrdersResponse\x12u\n\x0cStreamOrders\x12\x30.injective_spot_exchange_rpc.StreamOrdersRequest\x1a\x31.injective_spot_exchange_rpc.StreamOrdersResponse0\x01\x12\x61\n\x06Trades\x12*.injective_spot_exchange_rpc.TradesRequest\x1a+.injective_spot_exchange_rpc.TradesResponse\x12u\n\x0cStreamTrades\x12\x30.injective_spot_exchange_rpc.StreamTradesRequest\x1a\x31.injective_spot_exchange_rpc.StreamTradesResponse0\x01\x12g\n\x08TradesV2\x12,.injective_spot_exchange_rpc.TradesV2Request\x1a-.injective_spot_exchange_rpc.TradesV2Response\x12{\n\x0eStreamTradesV2\x12\x32.injective_spot_exchange_rpc.StreamTradesV2Request\x1a\x33.injective_spot_exchange_rpc.StreamTradesV2Response0\x01\x12\x8b\x01\n\x14SubaccountOrdersList\x12\x38.injective_spot_exchange_rpc.SubaccountOrdersListRequest\x1a\x39.injective_spot_exchange_rpc.SubaccountOrdersListResponse\x12\x8b\x01\n\x14SubaccountTradesList\x12\x38.injective_spot_exchange_rpc.SubaccountTradesListRequest\x1a\x39.injective_spot_exchange_rpc.SubaccountTradesListResponse\x12v\n\rOrdersHistory\x12\x31.injective_spot_exchange_rpc.OrdersHistoryRequest\x1a\x32.injective_spot_exchange_rpc.OrdersHistoryResponse\x12\x8a\x01\n\x13StreamOrdersHistory\x12\x37.injective_spot_exchange_rpc.StreamOrdersHistoryRequest\x1a\x38.injective_spot_exchange_rpc.StreamOrdersHistoryResponse0\x01\x12\x82\x01\n\x11\x41tomicSwapHistory\x12\x35.injective_spot_exchange_rpc.AtomicSwapHistoryRequest\x1a\x36.injective_spot_exchange_rpc.AtomicSwapHistoryResponseB\xe0\x01\n\x1f\x63om.injective_spot_exchange_rpcB\x1dInjectiveSpotExchangeRpcProtoP\x01Z\x1e/injective_spot_exchange_rpcpb\xa2\x02\x03IXX\xaa\x02\x18InjectiveSpotExchangeRpc\xca\x02\x18InjectiveSpotExchangeRpc\xe2\x02$InjectiveSpotExchangeRpc\\GPBMetadata\xea\x02\x18InjectiveSpotExchangeRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -119,7 +119,7 @@ _globals['_ATOMICSWAP']._serialized_start=10289 _globals['_ATOMICSWAP']._serialized_end=10769 _globals['_COIN']._serialized_start=10771 - _globals['_COIN']._serialized_end=10823 - _globals['_INJECTIVESPOTEXCHANGERPC']._serialized_start=10826 - _globals['_INJECTIVESPOTEXCHANGERPC']._serialized_end=13032 + _globals['_COIN']._serialized_end=10852 + _globals['_INJECTIVESPOTEXCHANGERPC']._serialized_start=10855 + _globals['_INJECTIVESPOTEXCHANGERPC']._serialized_end=13061 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/google/api/client_pb2.py b/pyinjective/proto/google/api/client_pb2.py index db55b0ba..aab7d140 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\"\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\"\xc5\x02\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\x1a\x90\x01\n\x14\x45xperimentalFeatures\x12\x31\n\x15rest_async_io_enabled\x18\x01 \x01(\x08R\x12restAsyncIoEnabled\x12\x45\n\x1fprotobuf_pythonic_types_enabled\x18\x02 \x01(\x08R\x1cprotobufPythonicTypesEnabled\"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\"\xe4\x01\n\nGoSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x12V\n\x10renamed_services\x18\x02 \x03(\x0b\x32+.google.api.GoSettings.RenamedServicesEntryR\x0frenamedServices\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\"\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') +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\"\x87\x03\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\x1a\xd2\x01\n\x14\x45xperimentalFeatures\x12\x31\n\x15rest_async_io_enabled\x18\x01 \x01(\x08R\x12restAsyncIoEnabled\x12\x45\n\x1fprotobuf_pythonic_types_enabled\x18\x02 \x01(\x08R\x1cprotobufPythonicTypesEnabled\x12@\n\x1cunversioned_package_disabled\x18\x03 \x01(\x08R\x1aunversionedPackageDisabled\"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\"\xe4\x01\n\nGoSettings\x12:\n\x06\x63ommon\x18\x01 \x01(\x0b\x32\".google.api.CommonLanguageSettingsR\x06\x63ommon\x12V\n\x10renamed_services\x18\x02 \x03(\x0b\x32+.google.api.GoSettings.RenamedServicesEntryR\x0frenamedServices\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\"\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\"u\n\x18SelectiveGapicGeneration\x12\x18\n\x07methods\x18\x01 \x03(\tR\x07methods\x12?\n\x1cgenerate_omitted_as_internal\x18\x02 \x01(\x08R\x19generateOmittedAsInternal*\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) @@ -35,10 +35,10 @@ _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_options = b'8\001' _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._loaded_options = None _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_options = b'8\001' - _globals['_CLIENTLIBRARYORGANIZATION']._serialized_start=3895 - _globals['_CLIENTLIBRARYORGANIZATION']._serialized_end=4058 - _globals['_CLIENTLIBRARYDESTINATION']._serialized_start=4060 - _globals['_CLIENTLIBRARYDESTINATION']._serialized_end=4163 + _globals['_CLIENTLIBRARYORGANIZATION']._serialized_start=4026 + _globals['_CLIENTLIBRARYORGANIZATION']._serialized_end=4189 + _globals['_CLIENTLIBRARYDESTINATION']._serialized_start=4191 + _globals['_CLIENTLIBRARYDESTINATION']._serialized_end=4294 _globals['_COMMONLANGUAGESETTINGS']._serialized_start=137 _globals['_COMMONLANGUAGESETTINGS']._serialized_end=385 _globals['_CLIENTLIBRARYSETTINGS']._serialized_start=388 @@ -54,27 +54,27 @@ _globals['_PHPSETTINGS']._serialized_start=2040 _globals['_PHPSETTINGS']._serialized_end=2113 _globals['_PYTHONSETTINGS']._serialized_start=2116 - _globals['_PYTHONSETTINGS']._serialized_end=2441 + _globals['_PYTHONSETTINGS']._serialized_end=2507 _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_start=2297 - _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_end=2441 - _globals['_NODESETTINGS']._serialized_start=2443 - _globals['_NODESETTINGS']._serialized_end=2517 - _globals['_DOTNETSETTINGS']._serialized_start=2520 - _globals['_DOTNETSETTINGS']._serialized_end=3078 - _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=2943 - _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=3009 - _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_start=3011 - _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_end=3078 - _globals['_RUBYSETTINGS']._serialized_start=3080 - _globals['_RUBYSETTINGS']._serialized_end=3154 - _globals['_GOSETTINGS']._serialized_start=3157 - _globals['_GOSETTINGS']._serialized_end=3385 - _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=2943 - _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=3009 - _globals['_METHODSETTINGS']._serialized_start=3388 - _globals['_METHODSETTINGS']._serialized_end=3838 - _globals['_METHODSETTINGS_LONGRUNNING']._serialized_start=3562 - _globals['_METHODSETTINGS_LONGRUNNING']._serialized_end=3838 - _globals['_SELECTIVEGAPICGENERATION']._serialized_start=3840 - _globals['_SELECTIVEGAPICGENERATION']._serialized_end=3892 + _globals['_PYTHONSETTINGS_EXPERIMENTALFEATURES']._serialized_end=2507 + _globals['_NODESETTINGS']._serialized_start=2509 + _globals['_NODESETTINGS']._serialized_end=2583 + _globals['_DOTNETSETTINGS']._serialized_start=2586 + _globals['_DOTNETSETTINGS']._serialized_end=3144 + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=3009 + _globals['_DOTNETSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=3075 + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_start=3077 + _globals['_DOTNETSETTINGS_RENAMEDRESOURCESENTRY']._serialized_end=3144 + _globals['_RUBYSETTINGS']._serialized_start=3146 + _globals['_RUBYSETTINGS']._serialized_end=3220 + _globals['_GOSETTINGS']._serialized_start=3223 + _globals['_GOSETTINGS']._serialized_end=3451 + _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_start=3009 + _globals['_GOSETTINGS_RENAMEDSERVICESENTRY']._serialized_end=3075 + _globals['_METHODSETTINGS']._serialized_start=3454 + _globals['_METHODSETTINGS']._serialized_end=3904 + _globals['_METHODSETTINGS_LONGRUNNING']._serialized_start=3628 + _globals['_METHODSETTINGS_LONGRUNNING']._serialized_end=3904 + _globals['_SELECTIVEGAPICGENERATION']._serialized_start=3906 + _globals['_SELECTIVEGAPICGENERATION']._serialized_end=4023 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/google/api/http_pb2.py b/pyinjective/proto/google/api/http_pb2.py index a2003b27..a0dc8f5f 100644 --- a/pyinjective/proto/google/api/http_pb2.py +++ b/pyinjective/proto/google/api/http_pb2.py @@ -14,14 +14,14 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15google/api/http.proto\x12\ngoogle.api\"y\n\x04Http\x12*\n\x05rules\x18\x01 \x03(\x0b\x32\x14.google.api.HttpRuleR\x05rules\x12\x45\n\x1f\x66ully_decode_reserved_expansion\x18\x02 \x01(\x08R\x1c\x66ullyDecodeReservedExpansion\"\xda\x02\n\x08HttpRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12\x12\n\x03get\x18\x02 \x01(\tH\x00R\x03get\x12\x12\n\x03put\x18\x03 \x01(\tH\x00R\x03put\x12\x14\n\x04post\x18\x04 \x01(\tH\x00R\x04post\x12\x18\n\x06\x64\x65lete\x18\x05 \x01(\tH\x00R\x06\x64\x65lete\x12\x16\n\x05patch\x18\x06 \x01(\tH\x00R\x05patch\x12\x37\n\x06\x63ustom\x18\x08 \x01(\x0b\x32\x1d.google.api.CustomHttpPatternH\x00R\x06\x63ustom\x12\x12\n\x04\x62ody\x18\x07 \x01(\tR\x04\x62ody\x12#\n\rresponse_body\x18\x0c \x01(\tR\x0cresponseBody\x12\x45\n\x13\x61\x64\x64itional_bindings\x18\x0b \x03(\x0b\x32\x14.google.api.HttpRuleR\x12\x61\x64\x64itionalBindingsB\t\n\x07pattern\";\n\x11\x43ustomHttpPattern\x12\x12\n\x04kind\x18\x01 \x01(\tR\x04kind\x12\x12\n\x04path\x18\x02 \x01(\tR\x04pathB\xaa\x01\n\x0e\x63om.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xf8\x01\x01\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\x15google/api/http.proto\x12\ngoogle.api\"y\n\x04Http\x12*\n\x05rules\x18\x01 \x03(\x0b\x32\x14.google.api.HttpRuleR\x05rules\x12\x45\n\x1f\x66ully_decode_reserved_expansion\x18\x02 \x01(\x08R\x1c\x66ullyDecodeReservedExpansion\"\xda\x02\n\x08HttpRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12\x12\n\x03get\x18\x02 \x01(\tH\x00R\x03get\x12\x12\n\x03put\x18\x03 \x01(\tH\x00R\x03put\x12\x14\n\x04post\x18\x04 \x01(\tH\x00R\x04post\x12\x18\n\x06\x64\x65lete\x18\x05 \x01(\tH\x00R\x06\x64\x65lete\x12\x16\n\x05patch\x18\x06 \x01(\tH\x00R\x05patch\x12\x37\n\x06\x63ustom\x18\x08 \x01(\x0b\x32\x1d.google.api.CustomHttpPatternH\x00R\x06\x63ustom\x12\x12\n\x04\x62ody\x18\x07 \x01(\tR\x04\x62ody\x12#\n\rresponse_body\x18\x0c \x01(\tR\x0cresponseBody\x12\x45\n\x13\x61\x64\x64itional_bindings\x18\x0b \x03(\x0b\x32\x14.google.api.HttpRuleR\x12\x61\x64\x64itionalBindingsB\t\n\x07pattern\";\n\x11\x43ustomHttpPattern\x12\x12\n\x04kind\x18\x01 \x01(\tR\x04kind\x12\x12\n\x04path\x18\x02 \x01(\tR\x04pathB\xa7\x01\n\x0e\x63om.google.apiB\tHttpProtoP\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) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.http_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\tHttpProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\370\001\001\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' + _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\tHttpProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' _globals['_HTTP']._serialized_start=37 _globals['_HTTP']._serialized_end=158 _globals['_HTTPRULE']._serialized_start=161 diff --git a/pyinjective/proto/google/api/resource_pb2.py b/pyinjective/proto/google/api/resource_pb2.py index c7f27cc2..b7cc3692 100644 --- a/pyinjective/proto/google/api/resource_pb2.py +++ b/pyinjective/proto/google/api/resource_pb2.py @@ -15,14 +15,14 @@ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19google/api/resource.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\"\xaa\x03\n\x12ResourceDescriptor\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07pattern\x18\x02 \x03(\tR\x07pattern\x12\x1d\n\nname_field\x18\x03 \x01(\tR\tnameField\x12@\n\x07history\x18\x04 \x01(\x0e\x32&.google.api.ResourceDescriptor.HistoryR\x07history\x12\x16\n\x06plural\x18\x05 \x01(\tR\x06plural\x12\x1a\n\x08singular\x18\x06 \x01(\tR\x08singular\x12:\n\x05style\x18\n \x03(\x0e\x32$.google.api.ResourceDescriptor.StyleR\x05style\"[\n\x07History\x12\x17\n\x13HISTORY_UNSPECIFIED\x10\x00\x12\x1d\n\x19ORIGINALLY_SINGLE_PATTERN\x10\x01\x12\x18\n\x14\x46UTURE_MULTI_PATTERN\x10\x02\"8\n\x05Style\x12\x15\n\x11STYLE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x44\x45\x43LARATIVE_FRIENDLY\x10\x01\"F\n\x11ResourceReference\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x1d\n\nchild_type\x18\x02 \x01(\tR\tchildType:l\n\x12resource_reference\x12\x1d.google.protobuf.FieldOptions\x18\x9f\x08 \x01(\x0b\x32\x1d.google.api.ResourceReferenceR\x11resourceReference:n\n\x13resource_definition\x12\x1c.google.protobuf.FileOptions\x18\x9d\x08 \x03(\x0b\x32\x1e.google.api.ResourceDescriptorR\x12resourceDefinition:\\\n\x08resource\x12\x1f.google.protobuf.MessageOptions\x18\x9d\x08 \x01(\x0b\x32\x1e.google.api.ResourceDescriptorR\x08resourceB\xae\x01\n\x0e\x63om.google.apiB\rResourceProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xf8\x01\x01\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\x19google/api/resource.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\"\xaa\x03\n\x12ResourceDescriptor\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n\x07pattern\x18\x02 \x03(\tR\x07pattern\x12\x1d\n\nname_field\x18\x03 \x01(\tR\tnameField\x12@\n\x07history\x18\x04 \x01(\x0e\x32&.google.api.ResourceDescriptor.HistoryR\x07history\x12\x16\n\x06plural\x18\x05 \x01(\tR\x06plural\x12\x1a\n\x08singular\x18\x06 \x01(\tR\x08singular\x12:\n\x05style\x18\n \x03(\x0e\x32$.google.api.ResourceDescriptor.StyleR\x05style\"[\n\x07History\x12\x17\n\x13HISTORY_UNSPECIFIED\x10\x00\x12\x1d\n\x19ORIGINALLY_SINGLE_PATTERN\x10\x01\x12\x18\n\x14\x46UTURE_MULTI_PATTERN\x10\x02\"8\n\x05Style\x12\x15\n\x11STYLE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x44\x45\x43LARATIVE_FRIENDLY\x10\x01\"F\n\x11ResourceReference\x12\x12\n\x04type\x18\x01 \x01(\tR\x04type\x12\x1d\n\nchild_type\x18\x02 \x01(\tR\tchildType:l\n\x12resource_reference\x12\x1d.google.protobuf.FieldOptions\x18\x9f\x08 \x01(\x0b\x32\x1d.google.api.ResourceReferenceR\x11resourceReference:n\n\x13resource_definition\x12\x1c.google.protobuf.FileOptions\x18\x9d\x08 \x03(\x0b\x32\x1e.google.api.ResourceDescriptorR\x12resourceDefinition:\\\n\x08resource\x12\x1f.google.protobuf.MessageOptions\x18\x9d\x08 \x01(\x0b\x32\x1e.google.api.ResourceDescriptorR\x08resourceB\xab\x01\n\x0e\x63om.google.apiB\rResourceProtoP\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) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.resource_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\rResourceProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\370\001\001\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' + _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\rResourceProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' _globals['_RESOURCEDESCRIPTOR']._serialized_start=76 _globals['_RESOURCEDESCRIPTOR']._serialized_end=502 _globals['_RESOURCEDESCRIPTOR_HISTORY']._serialized_start=353 diff --git a/pyinjective/proto/google/api/visibility_pb2.py b/pyinjective/proto/google/api/visibility_pb2.py index 1e557b82..59d234e8 100644 --- a/pyinjective/proto/google/api/visibility_pb2.py +++ b/pyinjective/proto/google/api/visibility_pb2.py @@ -15,14 +15,14 @@ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bgoogle/api/visibility.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\">\n\nVisibility\x12\x30\n\x05rules\x18\x01 \x03(\x0b\x32\x1a.google.api.VisibilityRuleR\x05rules\"N\n\x0eVisibilityRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12 \n\x0brestriction\x18\x02 \x01(\tR\x0brestriction:d\n\x0f\x65num_visibility\x12\x1c.google.protobuf.EnumOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0e\x65numVisibility:k\n\x10value_visibility\x12!.google.protobuf.EnumValueOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0fvalueVisibility:g\n\x10\x66ield_visibility\x12\x1d.google.protobuf.FieldOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0f\x66ieldVisibility:m\n\x12message_visibility\x12\x1f.google.protobuf.MessageOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x11messageVisibility:j\n\x11method_visibility\x12\x1e.google.protobuf.MethodOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x10methodVisibility:e\n\x0e\x61pi_visibility\x12\x1f.google.protobuf.ServiceOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\rapiVisibilityB\xae\x01\n\x0e\x63om.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\xf8\x01\x01\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\x1bgoogle/api/visibility.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\">\n\nVisibility\x12\x30\n\x05rules\x18\x01 \x03(\x0b\x32\x1a.google.api.VisibilityRuleR\x05rules\"N\n\x0eVisibilityRule\x12\x1a\n\x08selector\x18\x01 \x01(\tR\x08selector\x12 \n\x0brestriction\x18\x02 \x01(\tR\x0brestriction:d\n\x0f\x65num_visibility\x12\x1c.google.protobuf.EnumOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0e\x65numVisibility:k\n\x10value_visibility\x12!.google.protobuf.EnumValueOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0fvalueVisibility:g\n\x10\x66ield_visibility\x12\x1d.google.protobuf.FieldOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x0f\x66ieldVisibility:m\n\x12message_visibility\x12\x1f.google.protobuf.MessageOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x11messageVisibility:j\n\x11method_visibility\x12\x1e.google.protobuf.MethodOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\x10methodVisibility:e\n\x0e\x61pi_visibility\x12\x1f.google.protobuf.ServiceOptions\x18\xaf\xca\xbc\" \x01(\x0b\x32\x1a.google.api.VisibilityRuleR\rapiVisibilityB\xab\x01\n\x0e\x63om.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\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) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'google.api.visibility_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\017VisibilityProtoP\001Z?google.golang.org/genproto/googleapis/api/visibility;visibility\370\001\001\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' + _globals['DESCRIPTOR']._serialized_options = b'\n\016com.google.apiB\017VisibilityProtoP\001Z?google.golang.org/genproto/googleapis/api/visibility;visibility\242\002\003GAX\252\002\nGoogle.Api\312\002\nGoogle\\Api\342\002\026Google\\Api\\GPBMetadata\352\002\013Google::Api' _globals['_VISIBILITY']._serialized_start=77 _globals['_VISIBILITY']._serialized_end=139 _globals['_VISIBILITYRULE']._serialized_start=141 diff --git a/pyinjective/proto/ibc/core/connection/v1/tx_pb2.py b/pyinjective/proto/ibc/core/connection/v1/tx_pb2.py index 4f263d64..0d9cb6d9 100644 --- a/pyinjective/proto/ibc/core/connection/v1/tx_pb2.py +++ b/pyinjective/proto/ibc/core/connection/v1/tx_pb2.py @@ -19,7 +19,7 @@ from pyinjective.proto.ibc.core.connection.v1 import connection_pb2 as ibc_dot_core_dot_connection_dot_v1_dot_connection__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fibc/core/connection/v1/tx.proto\x12\x16ibc.core.connection.v1\x1a\x14gogoproto/gogo.proto\x1a\x17\x63osmos/msg/v1/msg.proto\x1a\x19google/protobuf/any.proto\x1a\x1fibc/core/client/v1/client.proto\x1a\'ibc/core/connection/v1/connection.proto\"\x8b\x02\n\x15MsgConnectionOpenInit\x12\x1b\n\tclient_id\x18\x01 \x01(\tR\x08\x63lientId\x12N\n\x0c\x63ounterparty\x18\x02 \x01(\x0b\x32$.ibc.core.connection.v1.CounterpartyB\x04\xc8\xde\x1f\x00R\x0c\x63ounterparty\x12\x39\n\x07version\x18\x03 \x01(\x0b\x32\x1f.ibc.core.connection.v1.VersionR\x07version\x12!\n\x0c\x64\x65lay_period\x18\x04 \x01(\x04R\x0b\x64\x65layPeriod\x12\x16\n\x06signer\x18\x05 \x01(\tR\x06signer:\x0f\x88\xa0\x1f\x00\x82\xe7\xb0*\x06signer\"\x1f\n\x1dMsgConnectionOpenInitResponse\"\xd2\x05\n\x14MsgConnectionOpenTry\x12\x1b\n\tclient_id\x18\x01 \x01(\tR\x08\x63lientId\x12\x38\n\x16previous_connection_id\x18\x02 \x01(\tB\x02\x18\x01R\x14previousConnectionId\x12\x37\n\x0c\x63lient_state\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyR\x0b\x63lientState\x12N\n\x0c\x63ounterparty\x18\x04 \x01(\x0b\x32$.ibc.core.connection.v1.CounterpartyB\x04\xc8\xde\x1f\x00R\x0c\x63ounterparty\x12!\n\x0c\x64\x65lay_period\x18\x05 \x01(\x04R\x0b\x64\x65layPeriod\x12T\n\x15\x63ounterparty_versions\x18\x06 \x03(\x0b\x32\x1f.ibc.core.connection.v1.VersionR\x14\x63ounterpartyVersions\x12\x43\n\x0cproof_height\x18\x07 \x01(\x0b\x32\x1a.ibc.core.client.v1.HeightB\x04\xc8\xde\x1f\x00R\x0bproofHeight\x12\x1d\n\nproof_init\x18\x08 \x01(\x0cR\tproofInit\x12!\n\x0cproof_client\x18\t \x01(\x0cR\x0bproofClient\x12\'\n\x0fproof_consensus\x18\n \x01(\x0cR\x0eproofConsensus\x12K\n\x10\x63onsensus_height\x18\x0b \x01(\x0b\x32\x1a.ibc.core.client.v1.HeightB\x04\xc8\xde\x1f\x00R\x0f\x63onsensusHeight\x12\x16\n\x06signer\x18\x0c \x01(\tR\x06signer\x12;\n\x1ahost_consensus_state_proof\x18\r \x01(\x0cR\x17hostConsensusStateProof:\x0f\x88\xa0\x1f\x00\x82\xe7\xb0*\x06signer\"\x1e\n\x1cMsgConnectionOpenTryResponse\"\xce\x04\n\x14MsgConnectionOpenAck\x12#\n\rconnection_id\x18\x01 \x01(\tR\x0c\x63onnectionId\x12<\n\x1a\x63ounterparty_connection_id\x18\x02 \x01(\tR\x18\x63ounterpartyConnectionId\x12\x39\n\x07version\x18\x03 \x01(\x0b\x32\x1f.ibc.core.connection.v1.VersionR\x07version\x12\x37\n\x0c\x63lient_state\x18\x04 \x01(\x0b\x32\x14.google.protobuf.AnyR\x0b\x63lientState\x12\x43\n\x0cproof_height\x18\x05 \x01(\x0b\x32\x1a.ibc.core.client.v1.HeightB\x04\xc8\xde\x1f\x00R\x0bproofHeight\x12\x1b\n\tproof_try\x18\x06 \x01(\x0cR\x08proofTry\x12!\n\x0cproof_client\x18\x07 \x01(\x0cR\x0bproofClient\x12\'\n\x0fproof_consensus\x18\x08 \x01(\x0cR\x0eproofConsensus\x12K\n\x10\x63onsensus_height\x18\t \x01(\x0b\x32\x1a.ibc.core.client.v1.HeightB\x04\xc8\xde\x1f\x00R\x0f\x63onsensusHeight\x12\x16\n\x06signer\x18\n \x01(\tR\x06signer\x12;\n\x1ahost_consensus_state_proof\x18\x0b \x01(\x0cR\x17hostConsensusStateProof:\x0f\x88\xa0\x1f\x00\x82\xe7\xb0*\x06signer\"\x1e\n\x1cMsgConnectionOpenAckResponse\"\xca\x01\n\x18MsgConnectionOpenConfirm\x12#\n\rconnection_id\x18\x01 \x01(\tR\x0c\x63onnectionId\x12\x1b\n\tproof_ack\x18\x02 \x01(\x0cR\x08proofAck\x12\x43\n\x0cproof_height\x18\x03 \x01(\x0b\x32\x1a.ibc.core.client.v1.HeightB\x04\xc8\xde\x1f\x00R\x0bproofHeight\x12\x16\n\x06signer\x18\x04 \x01(\tR\x06signer:\x0f\x88\xa0\x1f\x00\x82\xe7\xb0*\x06signer\"\"\n MsgConnectionOpenConfirmResponse\"x\n\x0fMsgUpdateParams\x12\x16\n\x06signer\x18\x01 \x01(\tR\x06signer\x12<\n\x06params\x18\x02 \x01(\x0b\x32\x1e.ibc.core.connection.v1.ParamsB\x04\xc8\xde\x1f\x00R\x06params:\x0f\x88\xa0\x1f\x00\x82\xe7\xb0*\x06signer\"\x19\n\x17MsgUpdateParamsResponse2\xf4\x04\n\x03Msg\x12z\n\x12\x43onnectionOpenInit\x12-.ibc.core.connection.v1.MsgConnectionOpenInit\x1a\x35.ibc.core.connection.v1.MsgConnectionOpenInitResponse\x12w\n\x11\x43onnectionOpenTry\x12,.ibc.core.connection.v1.MsgConnectionOpenTry\x1a\x34.ibc.core.connection.v1.MsgConnectionOpenTryResponse\x12w\n\x11\x43onnectionOpenAck\x12,.ibc.core.connection.v1.MsgConnectionOpenAck\x1a\x34.ibc.core.connection.v1.MsgConnectionOpenAckResponse\x12\x83\x01\n\x15\x43onnectionOpenConfirm\x12\x30.ibc.core.connection.v1.MsgConnectionOpenConfirm\x1a\x38.ibc.core.connection.v1.MsgConnectionOpenConfirmResponse\x12r\n\x16UpdateConnectionParams\x12\'.ibc.core.connection.v1.MsgUpdateParams\x1a/.ibc.core.connection.v1.MsgUpdateParamsResponse\x1a\x05\x80\xe7\xb0*\x01\x42\xde\x01\n\x1a\x63om.ibc.core.connection.v1B\x07TxProtoP\x01Z"] license = "Apache-2.0" 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 c594650e..fbab995c 100644 --- a/tests/client/chain/grpc/test_chain_grpc_exchange_api.py +++ b/tests/client/chain/grpc/test_chain_grpc_exchange_api.py @@ -60,6 +60,7 @@ async def test_fetch_exchange_params( margin_decrease_price_timestamp_threshold_seconds=10, exchange_admins=[admin], inj_auction_max_cap="1000000000000000000000", + fixed_gas_enabled=True, ) exchange_servicer.exchange_params.append(exchange_query_pb.QueryExchangeParamsResponse(params=params)) @@ -109,6 +110,7 @@ async def test_fetch_exchange_params( ), "exchangeAdmins": [admin], "injAuctionMaxCap": params.inj_auction_max_cap, + "fixedGasEnabled": params.fixed_gas_enabled, } } diff --git a/tests/client/indexer/grpc/test_indexer_grpc_account_api.py b/tests/client/indexer/grpc/test_indexer_grpc_account_api.py index 85443837..e3e2df71 100644 --- a/tests/client/indexer/grpc/test_indexer_grpc_account_api.py +++ b/tests/client/indexer/grpc/test_indexer_grpc_account_api.py @@ -133,6 +133,8 @@ async def test_subaccount_balances_list( deposit = exchange_accounts_pb.SubaccountDeposit( total_balance="20", available_balance="10", + total_balance_usd="100", + available_balance_usd="50", ) balance = exchange_accounts_pb.SubaccountBalance( subaccount_id="0xaf79152ac5df276d9a8e1e2e22822f9713474902000000000000000000000000", @@ -158,6 +160,8 @@ async def test_subaccount_balances_list( "deposit": { "totalBalance": deposit.total_balance, "availableBalance": deposit.available_balance, + "totalBalanceUsd": deposit.total_balance_usd, + "availableBalanceUsd": deposit.available_balance_usd, }, }, ] @@ -173,6 +177,8 @@ async def test_subaccount_balance( deposit = exchange_accounts_pb.SubaccountDeposit( total_balance="20", available_balance="10", + total_balance_usd="100", + available_balance_usd="50", ) balance = exchange_accounts_pb.SubaccountBalance( subaccount_id="0xaf79152ac5df276d9a8e1e2e22822f9713474902000000000000000000000000", @@ -198,6 +204,8 @@ async def test_subaccount_balance( "deposit": { "totalBalance": deposit.total_balance, "availableBalance": deposit.available_balance, + "totalBalanceUsd": deposit.total_balance_usd, + "availableBalanceUsd": deposit.available_balance_usd, }, }, } @@ -330,6 +338,7 @@ async def test_fetch_rewards( single_reward = exchange_accounts_pb.Coin( denom="inj", amount="2000000000000000000", + usd_value="3000000000000000000", ) reward = exchange_accounts_pb.Reward( @@ -351,6 +360,7 @@ async def test_fetch_rewards( { "denom": single_reward.denom, "amount": single_reward.amount, + "usdValue": single_reward.usd_value, } ], "distributedAt": str(reward.distributed_at), diff --git a/tests/client/indexer/grpc/test_indexer_grpc_auction_api.py b/tests/client/indexer/grpc/test_indexer_grpc_auction_api.py index 9553491a..346a503d 100644 --- a/tests/client/indexer/grpc/test_indexer_grpc_auction_api.py +++ b/tests/client/indexer/grpc/test_indexer_grpc_auction_api.py @@ -21,6 +21,7 @@ async def test_fetch_auction( coin = exchange_auction_pb.Coin( denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", amount="2322098", + usd_value="1000000000000000000", ) auction = exchange_auction_pb.Auction( winner="inj1uyk56r3xdcf60jwrmn7p9rgla9dc4gam56ajrq", @@ -54,6 +55,7 @@ async def test_fetch_auction( { "denom": coin.denom, "amount": coin.amount, + "usdValue": coin.usd_value, } ], "winningBidAmount": auction.winning_bid_amount, @@ -74,6 +76,7 @@ async def test_fetch_auctions( coin = exchange_auction_pb.Coin( denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", amount="2322098", + usd_value="1000000000000000000", ) auction = exchange_auction_pb.Auction( winner="inj1uyk56r3xdcf60jwrmn7p9rgla9dc4gam56ajrq", @@ -97,6 +100,7 @@ async def test_fetch_auctions( { "denom": coin.denom, "amount": coin.amount, + "usdValue": coin.usd_value, } ], "winningBidAmount": auction.winning_bid_amount, diff --git a/tests/client/indexer/grpc/test_indexer_grpc_explorer_api.py b/tests/client/indexer/grpc/test_indexer_grpc_explorer_api.py index ead944df..c7e2ec93 100644 --- a/tests/client/indexer/grpc/test_indexer_grpc_explorer_api.py +++ b/tests/client/indexer/grpc/test_indexer_grpc_explorer_api.py @@ -461,6 +461,7 @@ async def test_fetch_blocks( num_pre_commits=20, num_txs=4, timestamp="2023-11-29 20:23:33.842 +0000 UTC", + block_unix_timestamp=1699744939364, ) paging = exchange_explorer_pb.Paging(total=5, to=5, count_by_subaccount=10, next=["next1", "next2"]) @@ -494,6 +495,7 @@ async def test_fetch_blocks( "numTxs": str(block_info.num_txs), "txs": [], "timestamp": block_info.timestamp, + "blockUnixTimestamp": str(block_info.block_unix_timestamp), }, ], "paging": { @@ -527,6 +529,7 @@ async def test_fetch_block( tx_number=994979, tx_msg_types=b'["/injective.exchange.v1beta1.MsgCreateBinaryOptionsLimitOrder"]', signatures=[signature], + block_unix_timestamp=1699744939364, ) block_info = exchange_explorer_pb.BlockDetailInfo( height=19034578, @@ -586,6 +589,7 @@ async def test_fetch_block( "signature": signature.signature, } ], + "blockUnixTimestamp": str(tx_data.block_unix_timestamp), } ], "timestamp": block_info.timestamp, @@ -834,6 +838,7 @@ async def test_fetch_txs( b'{"key":"sender","value":"inj1phd706jqzd9wznkk5hgsfkrc8jqxv0kmlj0kex"}]}]}]', claim_ids=[claim_id], signatures=[signature], + block_unix_timestamp=1699744939364, ) paging = exchange_explorer_pb.Paging(total=5, to=5, count_by_subaccount=10, next=["next1", "next2"]) @@ -886,6 +891,7 @@ async def test_fetch_txs( "signature": signature.signature, } ], + "blockUnixTimestamp": str(tx_data.block_unix_timestamp), }, ], "paging": { @@ -1610,6 +1616,7 @@ async def test_fetch_bank_transfers( coin = exchange_explorer_pb.Coin( denom="inj", amount="200000000000000", + usd_value="300000000000000", ) bank_transfer = exchange_explorer_pb.BankTransfer( sender="inj17xpfvakm2amg962yls6f84z3kell8c5l6s5ye9", @@ -1651,6 +1658,7 @@ async def test_fetch_bank_transfers( { "denom": coin.denom, "amount": coin.amount, + "usdValue": coin.usd_value, } ], "blockNumber": str(bank_transfer.block_number), diff --git a/tests/client/indexer/grpc/test_indexer_grpc_portfolio_api.py b/tests/client/indexer/grpc/test_indexer_grpc_portfolio_api.py index 45d5ea62..c2db343d 100644 --- a/tests/client/indexer/grpc/test_indexer_grpc_portfolio_api.py +++ b/tests/client/indexer/grpc/test_indexer_grpc_portfolio_api.py @@ -21,10 +21,13 @@ async def test_fetch_account_portfolio( coin = exchange_portfolio_pb.Coin( denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", amount="2322098", + usd_value="1000000000000000000", ) subaccount_deposit = exchange_portfolio_pb.SubaccountDeposit( total_balance="0.170858923182467801", available_balance="0.170858923182467801", + total_balance_usd="200.000000000000000000", + available_balance_usd="112.000000000000000000", ) subaccount_balance = exchange_portfolio_pb.SubaccountBalanceV2( subaccount_id="0xc7dca7c15c364865f77a4fb67ab11dc95502e6fe000000000000000000000000", @@ -73,6 +76,7 @@ async def test_fetch_account_portfolio( { "denom": coin.denom, "amount": coin.amount, + "usdValue": coin.usd_value, } ], "subaccounts": [ @@ -82,6 +86,8 @@ async def test_fetch_account_portfolio( "deposit": { "totalBalance": subaccount_deposit.total_balance, "availableBalance": subaccount_deposit.available_balance, + "totalBalanceUsd": subaccount_deposit.total_balance_usd, + "availableBalanceUsd": subaccount_deposit.available_balance_usd, }, } ], @@ -117,10 +123,13 @@ async def test_fetch_account_portfolio_balances( coin = exchange_portfolio_pb.Coin( denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", amount="2322098", + usd_value="120.000000000000000000", ) subaccount_deposit = exchange_portfolio_pb.SubaccountDeposit( total_balance="0.170858923182467801", available_balance="0.170858923182467801", + total_balance_usd="120.000000000000000000", + available_balance_usd="120.000000000000000000", ) subaccount_balance = exchange_portfolio_pb.SubaccountBalanceV2( subaccount_id="0xc7dca7c15c364865f77a4fb67ab11dc95502e6fe000000000000000000000000", @@ -132,6 +141,7 @@ async def test_fetch_account_portfolio_balances( account_address="inj1clw20s2uxeyxtam6f7m84vgae92s9eh7vygagt", bank_balances=[coin], subaccounts=[subaccount_balance], + total_usd="300.000000000000000000", ) portfolio_servicer.account_portfolio_balances_responses.append( @@ -142,7 +152,7 @@ async def test_fetch_account_portfolio_balances( api = self._api_instance(servicer=portfolio_servicer) - result_auction = await api.fetch_account_portfolio_balances(account_address=portfolio.account_address) + result_auction = await api.fetch_account_portfolio_balances(account_address=portfolio.account_address, usd=True) expected_auction = { "portfolio": { "accountAddress": portfolio.account_address, @@ -150,6 +160,7 @@ async def test_fetch_account_portfolio_balances( { "denom": coin.denom, "amount": coin.amount, + "usdValue": coin.usd_value, } ], "subaccounts": [ @@ -159,9 +170,12 @@ async def test_fetch_account_portfolio_balances( "deposit": { "totalBalance": subaccount_deposit.total_balance, "availableBalance": subaccount_deposit.available_balance, + "totalBalanceUsd": subaccount_deposit.total_balance_usd, + "availableBalanceUsd": subaccount_deposit.available_balance_usd, }, } ], + "totalUsd": portfolio.total_usd, } } diff --git a/tests/client/indexer/grpc/test_indexer_grpc_spot_api.py b/tests/client/indexer/grpc/test_indexer_grpc_spot_api.py index 923af7dc..fe891743 100644 --- a/tests/client/indexer/grpc/test_indexer_grpc_spot_api.py +++ b/tests/client/indexer/grpc/test_indexer_grpc_spot_api.py @@ -701,8 +701,16 @@ async def test_fetch_atomic_swap_history( self, spot_servicer, ): - source_coin = exchange_spot_pb.Coin(denom="inj", amount="988987297011197594664") - dest_coin = exchange_spot_pb.Coin(denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", amount="54497408") + source_coin = exchange_spot_pb.Coin( + denom="inj", + amount="988987297011197594664", + usd_value="1000000000000000000000", + ) + dest_coin = exchange_spot_pb.Coin( + denom="peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", + amount="54497408", + usd_value="200000000000000000", + ) fee = exchange_spot_pb.Coin(denom="inj", amount="100000") atomic_swap = exchange_spot_pb.AtomicSwap( @@ -744,15 +752,19 @@ async def test_fetch_atomic_swap_history( "data": [ { "contractAddress": atomic_swap.contract_address, - "destCoin": {"amount": dest_coin.amount, "denom": dest_coin.denom}, + "destCoin": {"amount": dest_coin.amount, "denom": dest_coin.denom, "usdValue": dest_coin.usd_value}, "executedAt": str(atomic_swap.executed_at), - "fees": [{"amount": fee.amount, "denom": fee.denom}], + "fees": [{"amount": fee.amount, "denom": fee.denom, "usdValue": fee.usd_value}], "indexBySender": atomic_swap.index_by_sender, "indexBySenderContract": atomic_swap.index_by_sender_contract, "refundAmount": atomic_swap.refund_amount, "route": atomic_swap.route, "sender": atomic_swap.sender, - "sourceCoin": {"amount": source_coin.amount, "denom": source_coin.denom}, + "sourceCoin": { + "amount": source_coin.amount, + "denom": source_coin.denom, + "usdValue": source_coin.usd_value, + }, "txHash": atomic_swap.tx_hash, } ], diff --git a/tests/client/indexer/stream_grpc/test_indexer_grpc_account_stream.py b/tests/client/indexer/stream_grpc/test_indexer_grpc_account_stream.py index 925e85c8..9aca1a8e 100644 --- a/tests/client/indexer/stream_grpc/test_indexer_grpc_account_stream.py +++ b/tests/client/indexer/stream_grpc/test_indexer_grpc_account_stream.py @@ -23,6 +23,8 @@ async def test_fetch_portfolio( deposit = exchange_accounts_pb.SubaccountDeposit( total_balance="20", available_balance="10", + total_balance_usd="1000000000000000000", + available_balance_usd="500000000000000000", ) balance = exchange_accounts_pb.SubaccountBalance( subaccount_id="0xaf79152ac5df276d9a8e1e2e22822f9713474902000000000000000000000000", @@ -59,6 +61,8 @@ async def test_fetch_portfolio( "deposit": { "availableBalance": balance.deposit.available_balance, "totalBalance": balance.deposit.total_balance, + "totalBalanceUsd": balance.deposit.total_balance_usd, + "availableBalanceUsd": balance.deposit.available_balance_usd, }, "subaccountId": balance.subaccount_id, }, diff --git a/tests/client/indexer/stream_grpc/test_indexer_grpc_explorer_stream.py b/tests/client/indexer/stream_grpc/test_indexer_grpc_explorer_stream.py index b960076a..59fe9f2d 100644 --- a/tests/client/indexer/stream_grpc/test_indexer_grpc_explorer_stream.py +++ b/tests/client/indexer/stream_grpc/test_indexer_grpc_explorer_stream.py @@ -89,6 +89,7 @@ async def test_stream_blocks( num_pre_commits=20, num_txs=4, timestamp="2023-11-29 20:23:33.842 +0000 UTC", + block_unix_timestamp=1699744939364, ) explorer_servicer.stream_blocks_responses.append(block_info) @@ -119,6 +120,7 @@ async def test_stream_blocks( "numTxs": str(block_info.num_txs), "txs": [], "timestamp": block_info.timestamp, + "blockUnixTimestamp": str(block_info.block_unix_timestamp), } first_update = await asyncio.wait_for(blocks_updates.get(), timeout=1) From 45b98d29f687d4966a771f275a7351f271214235 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:09:45 -0300 Subject: [PATCH 06/13] feat: added a new message based fee calculator supporting the Exchange module gas heuristics --- examples/chain_client/1_LocalOrderHash.py | 20 +- examples/chain_client/3_MessageBroadcaster.py | 21 +- .../4_MessageBroadcasterWithGranteeAccount.py | 18 +- .../5_MessageBroadcasterWithoutSimulation.py | 24 +- ...sterWithGranteeAccountWithoutSimulation.py | 23 +- examples/chain_client/auction/1_MsgBid.py | 7 +- examples/chain_client/authz/1_MsgGrant.py | 7 +- examples/chain_client/authz/2_MsgExec.py | 7 +- examples/chain_client/authz/3_MsgRevoke.py | 7 +- examples/chain_client/bank/1_MsgSend.py | 7 +- .../distribution/1_SetWithdrawAddress.py | 13 +- .../distribution/2_WithdrawDelegatorReward.py | 13 +- .../3_WithdrawValidatorCommission.py | 13 +- .../distribution/4_FundCommunityPool.py | 13 +- .../10_MsgCreateDerivativeLimitOrder.py | 7 +- .../11_MsgCreateDerivativeMarketOrder.py | 7 +- .../exchange/12_MsgCancelDerivativeOrder.py | 7 +- .../13_MsgInstantBinaryOptionsMarketLaunch.py | 16 +- .../14_MsgCreateBinaryOptionsLimitOrder.py | 7 +- .../15_MsgCreateBinaryOptionsMarketOrder.py | 7 +- .../16_MsgCancelBinaryOptionsOrder.py | 7 +- .../exchange/17_MsgSubaccountTransfer.py | 7 +- .../exchange/18_MsgExternalTransfer.py | 7 +- .../exchange/19_MsgLiquidatePosition.py | 7 +- .../chain_client/exchange/1_MsgDeposit.py | 7 +- .../exchange/20_MsgIncreasePositionMargin.py | 7 +- .../exchange/21_MsgRewardsOptOut.py | 7 +- .../22_MsgAdminUpdateBinaryOptionsMarket.py | 7 +- .../exchange/23_MsgDecreasePositionMargin.py | 16 +- .../exchange/24_MsgUpdateSpotMarket.py | 16 +- .../exchange/25_MsgUpdateDerivativeMarket.py | 16 +- .../exchange/26_MsgAuthorizeStakeGrants.py | 16 +- .../exchange/27_MsgActivateStakeGrant.py | 16 +- .../chain_client/exchange/2_MsgWithdraw.py | 7 +- .../exchange/3_MsgInstantSpotMarketLaunch.py | 16 +- .../4_MsgInstantPerpetualMarketLaunch.py | 16 +- .../5_MsgInstantExpiryFuturesMarketLaunch.py | 16 +- .../exchange/6_MsgCreateSpotLimitOrder.py | 7 +- .../exchange/7_MsgCreateSpotMarketOrder.py | 7 +- .../exchange/8_MsgCancelSpotOrder.py | 7 +- .../exchange/9_MsgBatchUpdateOrders.py | 7 +- .../ibc/transfer/1_MsgTransfer.py | 13 +- .../insurance/1_MsgCreateInsuranceFund.py | 7 +- .../chain_client/insurance/2_MsgUnderwrite.py | 7 +- .../insurance/3_MsgRequestRedemption.py | 7 +- .../oracle/1_MsgRelayPriceFeedPrice.py | 7 +- .../oracle/2_MsgRelayProviderPrices.py | 7 +- examples/chain_client/peggy/1_MsgSendToEth.py | 7 +- .../permissions/1_MsgCreateNamespace.py | 20 +- .../permissions/2_MsgUpdateNamespace.py | 21 +- .../permissions/3_MsgUpdateActorRoles.py | 21 +- .../permissions/4_MsgClaimVoucher.py | 21 +- .../chain_client/staking/1_MsgDelegate.py | 7 +- .../tokenfactory/1_CreateDenom.py | 21 +- .../chain_client/tokenfactory/2_MsgMint.py | 21 +- .../chain_client/tokenfactory/3_MsgBurn.py | 21 +- .../tokenfactory/4_MsgChangeAdmin.py | 21 +- .../tokenfactory/5_MsgSetDenomMetadata.py | 21 +- .../txfees/query/1_GetEipBaseFee.py | 16 + .../chain_client/wasm/1_MsgExecuteContract.py | 7 +- .../wasmx/1_MsgExecuteContractCompat.py | 7 +- pyinjective/async_client.py | 27 + .../grpc/chain_grpc_token_factory_api.py | 2 - .../chain/grpc/chain_grpc_txfees_api.py | 28 + pyinjective/core/broadcaster.py | 200 ++++- .../gas_heuristics_gas_limit_estimator.py | 502 +++++++++++ pyinjective/core/gas_limit_estimator.py | 320 +------ .../injective/exchange/v1beta1/query_pb2.py | 46 +- .../injective/txfees/v1beta1/genesis_pb2.py | 31 + .../txfees/v1beta1/genesis_pb2_grpc.py | 4 + .../injective/txfees/v1beta1/query_pb2.py | 48 + .../txfees/v1beta1/query_pb2_grpc.py | 123 +++ .../proto/injective/txfees/v1beta1/tx_pb2.py | 44 + .../injective/txfees/v1beta1/tx_pb2_grpc.py | 80 ++ .../injective/txfees/v1beta1/txfees_pb2.py | 58 ++ .../txfees/v1beta1/txfees_pb2_grpc.py | 4 + .../proto/osmosis/txfees/v1beta1/query_pb2.py | 38 + .../osmosis/txfees/v1beta1/query_pb2_grpc.py | 78 ++ .../configurable_txfees_query_servicer.py | 16 + .../grpc/test_chain_grpc_exchange_api.py | 14 +- .../chain/grpc/test_chain_grpc_txfees_api.py | 85 ++ ...test_gas_heuristics_gas_limit_estimator.py | 850 ++++++++++++++++++ tests/core/test_gas_limit_estimator.py | 396 +------- ...essage_based_transaction_fee_calculator.py | 14 +- 84 files changed, 2941 insertions(+), 810 deletions(-) create mode 100644 examples/chain_client/txfees/query/1_GetEipBaseFee.py create mode 100644 pyinjective/client/chain/grpc/chain_grpc_txfees_api.py create mode 100644 pyinjective/core/gas_heuristics_gas_limit_estimator.py create mode 100644 pyinjective/proto/injective/txfees/v1beta1/genesis_pb2.py create mode 100644 pyinjective/proto/injective/txfees/v1beta1/genesis_pb2_grpc.py create mode 100644 pyinjective/proto/injective/txfees/v1beta1/query_pb2.py create mode 100644 pyinjective/proto/injective/txfees/v1beta1/query_pb2_grpc.py create mode 100644 pyinjective/proto/injective/txfees/v1beta1/tx_pb2.py create mode 100644 pyinjective/proto/injective/txfees/v1beta1/tx_pb2_grpc.py create mode 100644 pyinjective/proto/injective/txfees/v1beta1/txfees_pb2.py create mode 100644 pyinjective/proto/injective/txfees/v1beta1/txfees_pb2_grpc.py create mode 100644 pyinjective/proto/osmosis/txfees/v1beta1/query_pb2.py create mode 100644 pyinjective/proto/osmosis/txfees/v1beta1/query_pb2_grpc.py create mode 100644 tests/client/chain/grpc/configurable_txfees_query_servicer.py create mode 100644 tests/client/chain/grpc/test_chain_grpc_txfees_api.py create mode 100644 tests/core/test_gas_heuristics_gas_limit_estimator.py diff --git a/examples/chain_client/1_LocalOrderHash.py b/examples/chain_client/1_LocalOrderHash.py index fbec8988..ec47bf63 100644 --- a/examples/chain_client/1_LocalOrderHash.py +++ b/examples/chain_client/1_LocalOrderHash.py @@ -6,7 +6,7 @@ import dotenv from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.orderhash import OrderHashManager from pyinjective.transaction import Transaction @@ -111,7 +111,11 @@ async def main() -> None: .with_account_num(client.get_number()) .with_chain_id(network.chain_id) ) - gas_price = GAS_PRICE + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + base_gas = 85000 gas_limit = base_gas + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") @@ -148,7 +152,11 @@ async def main() -> None: .with_account_num(client.get_number()) .with_chain_id(network.chain_id) ) - gas_price = GAS_PRICE + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + base_gas = 85000 gas_limit = base_gas + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") @@ -240,7 +248,11 @@ async def main() -> None: .with_account_num(client.get_number()) .with_chain_id(network.chain_id) ) - gas_price = GAS_PRICE + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + base_gas = 85000 gas_limit = base_gas + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") diff --git a/examples/chain_client/3_MessageBroadcaster.py b/examples/chain_client/3_MessageBroadcaster.py index 735b92e3..0415a932 100644 --- a/examples/chain_client/3_MessageBroadcaster.py +++ b/examples/chain_client/3_MessageBroadcaster.py @@ -1,11 +1,12 @@ import asyncio +import json import os import uuid from decimal import Decimal import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -17,11 +18,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -64,7 +74,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([msg]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/4_MessageBroadcasterWithGranteeAccount.py b/examples/chain_client/4_MessageBroadcasterWithGranteeAccount.py index 4e08397b..4a4a11ab 100644 --- a/examples/chain_client/4_MessageBroadcasterWithGranteeAccount.py +++ b/examples/chain_client/4_MessageBroadcasterWithGranteeAccount.py @@ -1,4 +1,5 @@ import asyncio +import json import os import uuid from decimal import Decimal @@ -6,7 +7,6 @@ import dotenv from pyinjective.async_client import AsyncClient -from pyinjective.composer import Composer as ProtoMsgComposer from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import Address, PrivateKey @@ -19,10 +19,10 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) # initialize grpc client client = AsyncClient(network) + composer = await client.composer() await client.sync_timeout_height() # load account @@ -30,9 +30,16 @@ async def main() -> None: pub_key = priv_key.to_public_key() address = pub_key.to_address() + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster = MsgBroadcasterWithPk.new_for_grantee_account_using_simulation( network=network, grantee_private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) # prepare tx msg @@ -55,7 +62,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([msg]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py b/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py index 8c4f685f..8e55700b 100644 --- a/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py +++ b/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py @@ -1,11 +1,12 @@ import asyncio +import json import os import uuid from decimal import Decimal import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -17,11 +18,21 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) - message_broadcaster = MsgBroadcasterWithPk.new_without_simulation( + client = AsyncClient(network) + composer = await client.composer() + await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + + message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -64,7 +75,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([msg]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py b/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py index 4b7fbd2e..57ad19c8 100644 --- a/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py +++ b/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py @@ -1,4 +1,5 @@ import asyncio +import json import os import uuid from decimal import Decimal @@ -6,7 +7,6 @@ import dotenv from pyinjective.async_client import AsyncClient -from pyinjective.composer import Composer as ProtoMsgComposer from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import Address, PrivateKey @@ -19,20 +19,26 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) # initialize grpc client client = AsyncClient(network) - await client.sync_timeout_height() + composer = await client.composer() # load account priv_key = PrivateKey.from_hex(private_key_in_hexa) pub_key = priv_key.to_public_key() address = pub_key.to_address() - message_broadcaster = MsgBroadcasterWithPk.new_for_grantee_account_without_simulation( + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + + message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, - grantee_private_key=private_key_in_hexa, + private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) # prepare tx msg @@ -54,7 +60,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([msg]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/auction/1_MsgBid.py b/examples/chain_client/auction/1_MsgBid.py index 1efaa3e3..858195e6 100644 --- a/examples/chain_client/auction/1_MsgBid.py +++ b/examples/chain_client/auction/1_MsgBid.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -52,7 +52,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/authz/1_MsgGrant.py b/examples/chain_client/authz/1_MsgGrant.py index 111a050c..ed6ef08c 100644 --- a/examples/chain_client/authz/1_MsgGrant.py +++ b/examples/chain_client/authz/1_MsgGrant.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -72,7 +72,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/authz/2_MsgExec.py b/examples/chain_client/authz/2_MsgExec.py index 8d9891a5..a2eae9d7 100644 --- a/examples/chain_client/authz/2_MsgExec.py +++ b/examples/chain_client/authz/2_MsgExec.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import Address, PrivateKey @@ -79,7 +79,10 @@ async def main() -> None: print(unpacked_msg_res) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/authz/3_MsgRevoke.py b/examples/chain_client/authz/3_MsgRevoke.py index 91bb192d..86a659cf 100644 --- a/examples/chain_client/authz/3_MsgRevoke.py +++ b/examples/chain_client/authz/3_MsgRevoke.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -57,7 +57,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/bank/1_MsgSend.py b/examples/chain_client/bank/1_MsgSend.py index 1d926898..a08a9d37 100644 --- a/examples/chain_client/bank/1_MsgSend.py +++ b/examples/chain_client/bank/1_MsgSend.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -57,7 +57,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/distribution/1_SetWithdrawAddress.py b/examples/chain_client/distribution/1_SetWithdrawAddress.py index b317a998..a8dd3973 100644 --- a/examples/chain_client/distribution/1_SetWithdrawAddress.py +++ b/examples/chain_client/distribution/1_SetWithdrawAddress.py @@ -1,4 +1,5 @@ import asyncio +import json import os import dotenv @@ -17,9 +18,14 @@ async def main() -> None: client = AsyncClient(network) composer = await client.composer() + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster = MsgBroadcasterWithPk.new_without_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, client=client, composer=composer, ) @@ -39,7 +45,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/distribution/2_WithdrawDelegatorReward.py b/examples/chain_client/distribution/2_WithdrawDelegatorReward.py index 02facdc7..d560556c 100644 --- a/examples/chain_client/distribution/2_WithdrawDelegatorReward.py +++ b/examples/chain_client/distribution/2_WithdrawDelegatorReward.py @@ -1,4 +1,5 @@ import asyncio +import json import os import dotenv @@ -18,9 +19,14 @@ async def main() -> None: client = AsyncClient(network) composer = await client.composer() + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster = MsgBroadcasterWithPk.new_without_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, client=client, composer=composer, ) @@ -40,7 +46,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/distribution/3_WithdrawValidatorCommission.py b/examples/chain_client/distribution/3_WithdrawValidatorCommission.py index cd351d1f..c0c86bbc 100644 --- a/examples/chain_client/distribution/3_WithdrawValidatorCommission.py +++ b/examples/chain_client/distribution/3_WithdrawValidatorCommission.py @@ -1,4 +1,5 @@ import asyncio +import json import os import dotenv @@ -18,9 +19,14 @@ async def main() -> None: client = AsyncClient(network) composer = await client.composer() + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster = MsgBroadcasterWithPk.new_without_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, client=client, composer=composer, ) @@ -38,7 +44,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/distribution/4_FundCommunityPool.py b/examples/chain_client/distribution/4_FundCommunityPool.py index c60475c8..2b78af9a 100644 --- a/examples/chain_client/distribution/4_FundCommunityPool.py +++ b/examples/chain_client/distribution/4_FundCommunityPool.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -18,9 +19,14 @@ async def main() -> None: client = AsyncClient(network) composer = await client.composer() + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster = MsgBroadcasterWithPk.new_without_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, client=client, composer=composer, ) @@ -40,7 +46,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/10_MsgCreateDerivativeLimitOrder.py b/examples/chain_client/exchange/10_MsgCreateDerivativeLimitOrder.py index 4e0ff327..3e5f44f2 100644 --- a/examples/chain_client/exchange/10_MsgCreateDerivativeLimitOrder.py +++ b/examples/chain_client/exchange/10_MsgCreateDerivativeLimitOrder.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -75,7 +75,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/11_MsgCreateDerivativeMarketOrder.py b/examples/chain_client/exchange/11_MsgCreateDerivativeMarketOrder.py index 7b561970..6db44951 100644 --- a/examples/chain_client/exchange/11_MsgCreateDerivativeMarketOrder.py +++ b/examples/chain_client/exchange/11_MsgCreateDerivativeMarketOrder.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -75,7 +75,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/12_MsgCancelDerivativeOrder.py b/examples/chain_client/exchange/12_MsgCancelDerivativeOrder.py index 20be2bd0..f0215781 100644 --- a/examples/chain_client/exchange/12_MsgCancelDerivativeOrder.py +++ b/examples/chain_client/exchange/12_MsgCancelDerivativeOrder.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -59,7 +59,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/13_MsgInstantBinaryOptionsMarketLaunch.py b/examples/chain_client/exchange/13_MsgInstantBinaryOptionsMarketLaunch.py index c5786e8a..69f06e63 100644 --- a/examples/chain_client/exchange/13_MsgInstantBinaryOptionsMarketLaunch.py +++ b/examples/chain_client/exchange/13_MsgInstantBinaryOptionsMarketLaunch.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -20,11 +21,17 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -55,7 +62,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/14_MsgCreateBinaryOptionsLimitOrder.py b/examples/chain_client/exchange/14_MsgCreateBinaryOptionsLimitOrder.py index c15711b2..f628bf02 100644 --- a/examples/chain_client/exchange/14_MsgCreateBinaryOptionsLimitOrder.py +++ b/examples/chain_client/exchange/14_MsgCreateBinaryOptionsLimitOrder.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.utils.denom import Denom @@ -85,7 +85,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/15_MsgCreateBinaryOptionsMarketOrder.py b/examples/chain_client/exchange/15_MsgCreateBinaryOptionsMarketOrder.py index 9b68bc85..247c6883 100644 --- a/examples/chain_client/exchange/15_MsgCreateBinaryOptionsMarketOrder.py +++ b/examples/chain_client/exchange/15_MsgCreateBinaryOptionsMarketOrder.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -73,7 +73,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/16_MsgCancelBinaryOptionsOrder.py b/examples/chain_client/exchange/16_MsgCancelBinaryOptionsOrder.py index 582c6dc6..54b00845 100644 --- a/examples/chain_client/exchange/16_MsgCancelBinaryOptionsOrder.py +++ b/examples/chain_client/exchange/16_MsgCancelBinaryOptionsOrder.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -62,7 +62,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/17_MsgSubaccountTransfer.py b/examples/chain_client/exchange/17_MsgSubaccountTransfer.py index a50fc0cf..a77959e1 100644 --- a/examples/chain_client/exchange/17_MsgSubaccountTransfer.py +++ b/examples/chain_client/exchange/17_MsgSubaccountTransfer.py @@ -6,7 +6,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -61,7 +61,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/18_MsgExternalTransfer.py b/examples/chain_client/exchange/18_MsgExternalTransfer.py index 2bcc86a1..e1abfc19 100644 --- a/examples/chain_client/exchange/18_MsgExternalTransfer.py +++ b/examples/chain_client/exchange/18_MsgExternalTransfer.py @@ -6,7 +6,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -61,7 +61,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/19_MsgLiquidatePosition.py b/examples/chain_client/exchange/19_MsgLiquidatePosition.py index 9788b865..bac9f90e 100644 --- a/examples/chain_client/exchange/19_MsgLiquidatePosition.py +++ b/examples/chain_client/exchange/19_MsgLiquidatePosition.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -82,7 +82,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/1_MsgDeposit.py b/examples/chain_client/exchange/1_MsgDeposit.py index bbf64710..2af750e8 100644 --- a/examples/chain_client/exchange/1_MsgDeposit.py +++ b/examples/chain_client/exchange/1_MsgDeposit.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -55,7 +55,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/20_MsgIncreasePositionMargin.py b/examples/chain_client/exchange/20_MsgIncreasePositionMargin.py index 276276e7..dd89e7b6 100644 --- a/examples/chain_client/exchange/20_MsgIncreasePositionMargin.py +++ b/examples/chain_client/exchange/20_MsgIncreasePositionMargin.py @@ -6,7 +6,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -63,7 +63,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/21_MsgRewardsOptOut.py b/examples/chain_client/exchange/21_MsgRewardsOptOut.py index 2306b541..0730fe76 100644 --- a/examples/chain_client/exchange/21_MsgRewardsOptOut.py +++ b/examples/chain_client/exchange/21_MsgRewardsOptOut.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -52,7 +52,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/22_MsgAdminUpdateBinaryOptionsMarket.py b/examples/chain_client/exchange/22_MsgAdminUpdateBinaryOptionsMarket.py index b638b28a..7114fb6a 100644 --- a/examples/chain_client/exchange/22_MsgAdminUpdateBinaryOptionsMarket.py +++ b/examples/chain_client/exchange/22_MsgAdminUpdateBinaryOptionsMarket.py @@ -6,7 +6,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -71,7 +71,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/23_MsgDecreasePositionMargin.py b/examples/chain_client/exchange/23_MsgDecreasePositionMargin.py index 5914063d..06f02e1f 100644 --- a/examples/chain_client/exchange/23_MsgDecreasePositionMargin.py +++ b/examples/chain_client/exchange/23_MsgDecreasePositionMargin.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -20,11 +21,17 @@ async def main() -> None: # initialize grpc client client = AsyncClient(network) composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -49,7 +56,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([msg]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/24_MsgUpdateSpotMarket.py b/examples/chain_client/exchange/24_MsgUpdateSpotMarket.py index 67d73a4d..1d303ad0 100644 --- a/examples/chain_client/exchange/24_MsgUpdateSpotMarket.py +++ b/examples/chain_client/exchange/24_MsgUpdateSpotMarket.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -21,11 +22,17 @@ async def main() -> None: client = AsyncClient(network) await client.initialize_tokens_from_chain_denoms() composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -47,7 +54,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/25_MsgUpdateDerivativeMarket.py b/examples/chain_client/exchange/25_MsgUpdateDerivativeMarket.py index da2aa593..e5ec3697 100644 --- a/examples/chain_client/exchange/25_MsgUpdateDerivativeMarket.py +++ b/examples/chain_client/exchange/25_MsgUpdateDerivativeMarket.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -21,11 +22,17 @@ async def main() -> None: client = AsyncClient(network) await client.initialize_tokens_from_chain_denoms() composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -49,7 +56,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/26_MsgAuthorizeStakeGrants.py b/examples/chain_client/exchange/26_MsgAuthorizeStakeGrants.py index 91d52808..d84f0629 100644 --- a/examples/chain_client/exchange/26_MsgAuthorizeStakeGrants.py +++ b/examples/chain_client/exchange/26_MsgAuthorizeStakeGrants.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -21,11 +22,17 @@ async def main() -> None: client = AsyncClient(network) await client.initialize_tokens_from_chain_denoms() composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -44,7 +51,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/27_MsgActivateStakeGrant.py b/examples/chain_client/exchange/27_MsgActivateStakeGrant.py index c0ca5d3b..1a799231 100644 --- a/examples/chain_client/exchange/27_MsgActivateStakeGrant.py +++ b/examples/chain_client/exchange/27_MsgActivateStakeGrant.py @@ -1,4 +1,5 @@ import asyncio +import json import os import dotenv @@ -20,11 +21,17 @@ async def main() -> None: client = AsyncClient(network) await client.initialize_tokens_from_chain_denoms() composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -41,7 +48,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/2_MsgWithdraw.py b/examples/chain_client/exchange/2_MsgWithdraw.py index 1070d28c..c542172d 100644 --- a/examples/chain_client/exchange/2_MsgWithdraw.py +++ b/examples/chain_client/exchange/2_MsgWithdraw.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -53,7 +53,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py b/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py index 53459eeb..a1a50606 100644 --- a/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py +++ b/examples/chain_client/exchange/3_MsgInstantSpotMarketLaunch.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -21,11 +22,17 @@ async def main() -> None: client = AsyncClient(network) await client.initialize_tokens_from_chain_denoms() composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -50,7 +57,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/4_MsgInstantPerpetualMarketLaunch.py b/examples/chain_client/exchange/4_MsgInstantPerpetualMarketLaunch.py index 1cda2f20..9b71269f 100644 --- a/examples/chain_client/exchange/4_MsgInstantPerpetualMarketLaunch.py +++ b/examples/chain_client/exchange/4_MsgInstantPerpetualMarketLaunch.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -21,11 +22,17 @@ async def main() -> None: client = AsyncClient(network) await client.initialize_tokens_from_chain_denoms() composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -55,7 +62,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/5_MsgInstantExpiryFuturesMarketLaunch.py b/examples/chain_client/exchange/5_MsgInstantExpiryFuturesMarketLaunch.py index 78d25d6c..c4c3a083 100644 --- a/examples/chain_client/exchange/5_MsgInstantExpiryFuturesMarketLaunch.py +++ b/examples/chain_client/exchange/5_MsgInstantExpiryFuturesMarketLaunch.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -21,11 +22,17 @@ async def main() -> None: client = AsyncClient(network) await client.initialize_tokens_from_chain_denoms() composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=configured_private_key, + gas_price=gas_price, + client=client, + composer=composer, ) # load account @@ -56,7 +63,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/exchange/6_MsgCreateSpotLimitOrder.py b/examples/chain_client/exchange/6_MsgCreateSpotLimitOrder.py index 5b3b966a..9b7827dc 100644 --- a/examples/chain_client/exchange/6_MsgCreateSpotLimitOrder.py +++ b/examples/chain_client/exchange/6_MsgCreateSpotLimitOrder.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -73,7 +73,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/7_MsgCreateSpotMarketOrder.py b/examples/chain_client/exchange/7_MsgCreateSpotMarketOrder.py index 36ea27de..57ea2409 100644 --- a/examples/chain_client/exchange/7_MsgCreateSpotMarketOrder.py +++ b/examples/chain_client/exchange/7_MsgCreateSpotMarketOrder.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -72,7 +72,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/8_MsgCancelSpotOrder.py b/examples/chain_client/exchange/8_MsgCancelSpotOrder.py index 4bcedda8..3f927097 100644 --- a/examples/chain_client/exchange/8_MsgCancelSpotOrder.py +++ b/examples/chain_client/exchange/8_MsgCancelSpotOrder.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -59,7 +59,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/exchange/9_MsgBatchUpdateOrders.py b/examples/chain_client/exchange/9_MsgBatchUpdateOrders.py index ac490216..1e3216c6 100644 --- a/examples/chain_client/exchange/9_MsgBatchUpdateOrders.py +++ b/examples/chain_client/exchange/9_MsgBatchUpdateOrders.py @@ -7,7 +7,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -150,7 +150,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/ibc/transfer/1_MsgTransfer.py b/examples/chain_client/ibc/transfer/1_MsgTransfer.py index 604ece6e..346961c7 100644 --- a/examples/chain_client/ibc/transfer/1_MsgTransfer.py +++ b/examples/chain_client/ibc/transfer/1_MsgTransfer.py @@ -1,4 +1,5 @@ import asyncio +import json import os from decimal import Decimal @@ -21,7 +22,10 @@ async def main() -> None: client = AsyncClient(network) await client.initialize_tokens_from_chain_denoms() composer = await client.composer() - await client.sync_timeout_height() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, @@ -54,7 +58,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/insurance/1_MsgCreateInsuranceFund.py b/examples/chain_client/insurance/1_MsgCreateInsuranceFund.py index 99c10fc0..1bed1031 100644 --- a/examples/chain_client/insurance/1_MsgCreateInsuranceFund.py +++ b/examples/chain_client/insurance/1_MsgCreateInsuranceFund.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -61,7 +61,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/insurance/2_MsgUnderwrite.py b/examples/chain_client/insurance/2_MsgUnderwrite.py index 16b75e70..01cff5e9 100644 --- a/examples/chain_client/insurance/2_MsgUnderwrite.py +++ b/examples/chain_client/insurance/2_MsgUnderwrite.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -57,7 +57,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/insurance/3_MsgRequestRedemption.py b/examples/chain_client/insurance/3_MsgRequestRedemption.py index ecc2793c..b1cc3762 100644 --- a/examples/chain_client/insurance/3_MsgRequestRedemption.py +++ b/examples/chain_client/insurance/3_MsgRequestRedemption.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -57,7 +57,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/oracle/1_MsgRelayPriceFeedPrice.py b/examples/chain_client/oracle/1_MsgRelayPriceFeedPrice.py index b59b34a3..6a0de597 100644 --- a/examples/chain_client/oracle/1_MsgRelayPriceFeedPrice.py +++ b/examples/chain_client/oracle/1_MsgRelayPriceFeedPrice.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -57,7 +57,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/oracle/2_MsgRelayProviderPrices.py b/examples/chain_client/oracle/2_MsgRelayProviderPrices.py index 1e3b9c8f..74400ec7 100644 --- a/examples/chain_client/oracle/2_MsgRelayProviderPrices.py +++ b/examples/chain_client/oracle/2_MsgRelayProviderPrices.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -62,7 +62,10 @@ async def main() -> None: print(sim_res_msg) # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/peggy/1_MsgSendToEth.py b/examples/chain_client/peggy/1_MsgSendToEth.py index 06e2d78c..5a8550d2 100644 --- a/examples/chain_client/peggy/1_MsgSendToEth.py +++ b/examples/chain_client/peggy/1_MsgSendToEth.py @@ -6,7 +6,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -66,7 +66,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/permissions/1_MsgCreateNamespace.py b/examples/chain_client/permissions/1_MsgCreateNamespace.py index 25dca4e3..f7f071a9 100644 --- a/examples/chain_client/permissions/1_MsgCreateNamespace.py +++ b/examples/chain_client/permissions/1_MsgCreateNamespace.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,19 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.devnet() - composer = ProtoMsgComposer(network=network.string()) + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -93,7 +102,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/permissions/2_MsgUpdateNamespace.py b/examples/chain_client/permissions/2_MsgUpdateNamespace.py index aefc13d4..688413ba 100644 --- a/examples/chain_client/permissions/2_MsgUpdateNamespace.py +++ b/examples/chain_client/permissions/2_MsgUpdateNamespace.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.devnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -75,7 +85,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/permissions/3_MsgUpdateActorRoles.py b/examples/chain_client/permissions/3_MsgUpdateActorRoles.py index 7ab3e86a..af69f4b5 100644 --- a/examples/chain_client/permissions/3_MsgUpdateActorRoles.py +++ b/examples/chain_client/permissions/3_MsgUpdateActorRoles.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.devnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -55,7 +65,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/permissions/4_MsgClaimVoucher.py b/examples/chain_client/permissions/4_MsgClaimVoucher.py index 6e480e5a..90b10180 100644 --- a/examples/chain_client/permissions/4_MsgClaimVoucher.py +++ b/examples/chain_client/permissions/4_MsgClaimVoucher.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.devnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -36,7 +46,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/staking/1_MsgDelegate.py b/examples/chain_client/staking/1_MsgDelegate.py index e32f6691..c532a1d6 100644 --- a/examples/chain_client/staking/1_MsgDelegate.py +++ b/examples/chain_client/staking/1_MsgDelegate.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -57,7 +57,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/tokenfactory/1_CreateDenom.py b/examples/chain_client/tokenfactory/1_CreateDenom.py index a4bd2ef3..870e68b7 100644 --- a/examples/chain_client/tokenfactory/1_CreateDenom.py +++ b/examples/chain_client/tokenfactory/1_CreateDenom.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -38,7 +48,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/tokenfactory/2_MsgMint.py b/examples/chain_client/tokenfactory/2_MsgMint.py index 4534ad1c..78b79a74 100644 --- a/examples/chain_client/tokenfactory/2_MsgMint.py +++ b/examples/chain_client/tokenfactory/2_MsgMint.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -37,7 +47,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/tokenfactory/3_MsgBurn.py b/examples/chain_client/tokenfactory/3_MsgBurn.py index 790bfbf3..e65c0f5f 100644 --- a/examples/chain_client/tokenfactory/3_MsgBurn.py +++ b/examples/chain_client/tokenfactory/3_MsgBurn.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -37,7 +47,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/tokenfactory/4_MsgChangeAdmin.py b/examples/chain_client/tokenfactory/4_MsgChangeAdmin.py index d1a1ba46..f2939c78 100644 --- a/examples/chain_client/tokenfactory/4_MsgChangeAdmin.py +++ b/examples/chain_client/tokenfactory/4_MsgChangeAdmin.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_without_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -35,7 +45,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/tokenfactory/5_MsgSetDenomMetadata.py b/examples/chain_client/tokenfactory/5_MsgSetDenomMetadata.py index 367649e0..a0cba885 100644 --- a/examples/chain_client/tokenfactory/5_MsgSetDenomMetadata.py +++ b/examples/chain_client/tokenfactory/5_MsgSetDenomMetadata.py @@ -1,9 +1,10 @@ import asyncio +import json import os import dotenv -from pyinjective.composer import Composer as ProtoMsgComposer +from pyinjective.async_client import AsyncClient from pyinjective.core.broadcaster import MsgBroadcasterWithPk from pyinjective.core.network import Network from pyinjective.wallet import PrivateKey @@ -15,11 +16,20 @@ async def main() -> None: # select network: local, testnet, mainnet network = Network.testnet() - composer = ProtoMsgComposer(network=network.string()) + + client = AsyncClient(network) + composer = await client.composer() + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) message_broadcaster = MsgBroadcasterWithPk.new_without_simulation( network=network, private_key=private_key_in_hexa, + gas_price=gas_price, + client=client, + composer=composer, ) priv_key = PrivateKey.from_hex(private_key_in_hexa) @@ -51,7 +61,12 @@ async def main() -> None: # broadcast the transaction result = await message_broadcaster.broadcast([message]) print("---Transaction Response---") - print(result) + print(json.dumps(result, indent=2)) + + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + message_broadcaster.update_gas_price(gas_price=gas_price) if __name__ == "__main__": diff --git a/examples/chain_client/txfees/query/1_GetEipBaseFee.py b/examples/chain_client/txfees/query/1_GetEipBaseFee.py new file mode 100644 index 00000000..4d3cc2eb --- /dev/null +++ b/examples/chain_client/txfees/query/1_GetEipBaseFee.py @@ -0,0 +1,16 @@ +import asyncio +import json + +from pyinjective.async_client import AsyncClient +from pyinjective.core.network import Network + + +async def main() -> None: + network = Network.testnet() + client = AsyncClient(network) + metadata = await client.fetch_eip_base_fee() + print(json.dumps(metadata, indent=2)) + + +if __name__ == "__main__": + asyncio.get_event_loop().run_until_complete(main()) diff --git a/examples/chain_client/wasm/1_MsgExecuteContract.py b/examples/chain_client/wasm/1_MsgExecuteContract.py index d18c6398..a711f1b8 100644 --- a/examples/chain_client/wasm/1_MsgExecuteContract.py +++ b/examples/chain_client/wasm/1_MsgExecuteContract.py @@ -5,7 +5,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -67,7 +67,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/examples/chain_client/wasmx/1_MsgExecuteContractCompat.py b/examples/chain_client/wasmx/1_MsgExecuteContractCompat.py index a195c7c4..1b271961 100644 --- a/examples/chain_client/wasmx/1_MsgExecuteContractCompat.py +++ b/examples/chain_client/wasmx/1_MsgExecuteContractCompat.py @@ -6,7 +6,7 @@ from grpc import RpcError from pyinjective.async_client import AsyncClient -from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT, GAS_PRICE +from pyinjective.constant import GAS_FEE_BUFFER_AMOUNT from pyinjective.core.network import Network from pyinjective.transaction import Transaction from pyinjective.wallet import PrivateKey @@ -64,7 +64,10 @@ async def main() -> None: return # build tx - gas_price = GAS_PRICE + gas_price = await client.current_chain_gas_price() + # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted + gas_price = int(gas_price * 1.1) + gas_limit = int(sim_res["gasInfo"]["gasUsed"]) + GAS_FEE_BUFFER_AMOUNT # add buffer for gas fee computation gas_fee = "{:.18f}".format((gas_price * gas_limit) / pow(10, 18)).rstrip("0") fee = [ diff --git a/pyinjective/async_client.py b/pyinjective/async_client.py index 68b6e3c9..2d4df23c 100644 --- a/pyinjective/async_client.py +++ b/pyinjective/async_client.py @@ -13,6 +13,7 @@ from pyinjective.client.chain.grpc.chain_grpc_exchange_api import ChainGrpcExchangeApi 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_txfees_api import ChainGrpcTxfeesApi from pyinjective.client.chain.grpc.chain_grpc_wasm_api import ChainGrpcWasmApi from pyinjective.client.chain.grpc_stream.chain_grpc_chain_stream import ChainGrpcChainStream from pyinjective.client.indexer.grpc.indexer_grpc_account_api import IndexerGrpcAccountApi @@ -34,6 +35,7 @@ from pyinjective.client.indexer.grpc_stream.indexer_grpc_spot_stream import IndexerGrpcSpotStream from pyinjective.client.model.pagination import PaginationOption from pyinjective.composer import Composer +from pyinjective.constant import GAS_PRICE from pyinjective.core.ibc.channel.grpc.ibc_channel_grpc_api import IBCChannelGrpcApi from pyinjective.core.ibc.client.grpc.ibc_client_grpc_api import IBCClientGrpcApi from pyinjective.core.ibc.connection.grpc.ibc_connection_grpc_api import IBCConnectionGrpcApi @@ -183,6 +185,10 @@ def __init__( channel=self.chain_channel, cookie_assistant=network.chain_cookie_assistant, ) + self.txfees_api = ChainGrpcTxfeesApi( + channel=self.chain_channel, + cookie_assistant=network.chain_cookie_assistant, + ) self.wasm_api = ChainGrpcWasmApi( channel=self.chain_channel, cookie_assistant=network.chain_cookie_assistant, @@ -2314,6 +2320,13 @@ async def fetch_permissions_module_state(self) -> Dict[str, Any]: # endregion + # ------------------------- + # region IBC Channel module + async def fetch_eip_base_fee(self) -> Dict[str, Any]: + return await self.txfees_api.fetch_eip_base_fee() + + # endregion + async def composer(self): return Composer( network=self.network.string(), @@ -2323,6 +2336,20 @@ async def composer(self): tokens=await self.all_tokens(), ) + async def current_chain_gas_price(self) -> int: + gas_price = GAS_PRICE + try: + eip_base_fee_response = await self.fetch_eip_base_fee() + gas_price = int( + Token.convert_value_from_extended_decimal_format(Decimal(eip_base_fee_response["baseFee"]["baseFee"])) + ) + except Exception as e: + logger = LoggerProvider().logger_for_class(logging_class=self.__class__) + logger.error("an error occurred when querying the gas price from the chain, using the default gas price") + logger.debug(f"error querying the gas price from chain {e}") + + return gas_price + async def initialize_tokens_from_chain_denoms(self): # force initialization of markets and tokens await self.all_tokens() diff --git a/pyinjective/client/chain/grpc/chain_grpc_token_factory_api.py b/pyinjective/client/chain/grpc/chain_grpc_token_factory_api.py index 457f6f1b..60cc8e0a 100644 --- a/pyinjective/client/chain/grpc/chain_grpc_token_factory_api.py +++ b/pyinjective/client/chain/grpc/chain_grpc_token_factory_api.py @@ -6,7 +6,6 @@ from pyinjective.proto.injective.tokenfactory.v1beta1 import ( query_pb2 as token_factory_query_pb, query_pb2_grpc as token_factory_query_grpc, - tx_pb2_grpc as token_factory_tx_grpc, ) from pyinjective.utils.grpc_api_request_assistant import GrpcApiRequestAssistant @@ -14,7 +13,6 @@ class ChainGrpcTokenFactoryApi: def __init__(self, channel: Channel, cookie_assistant: CookieAssistant): self._query_stub = token_factory_query_grpc.QueryStub(channel) - self._tx_stub = token_factory_tx_grpc.MsgStub(channel) self._assistant = GrpcApiRequestAssistant(cookie_assistant=cookie_assistant) async def fetch_module_params(self) -> Dict[str, Any]: diff --git a/pyinjective/client/chain/grpc/chain_grpc_txfees_api.py b/pyinjective/client/chain/grpc/chain_grpc_txfees_api.py new file mode 100644 index 00000000..3a020311 --- /dev/null +++ b/pyinjective/client/chain/grpc/chain_grpc_txfees_api.py @@ -0,0 +1,28 @@ +from typing import Any, Callable, Dict + +from grpc.aio import Channel + +from pyinjective.core.network import CookieAssistant +from pyinjective.proto.injective.txfees.v1beta1 import query_pb2 as txfees_query_pb, query_pb2_grpc as txfees_query_grpc +from pyinjective.utils.grpc_api_request_assistant import GrpcApiRequestAssistant + + +class ChainGrpcTxfeesApi: + def __init__(self, channel: Channel, cookie_assistant: CookieAssistant): + self._query_stub = txfees_query_grpc.QueryStub(channel) + self._assistant = GrpcApiRequestAssistant(cookie_assistant=cookie_assistant) + + async def fetch_module_params(self) -> Dict[str, Any]: + request = txfees_query_pb.QueryParamsRequest() + response = await self._execute_call(call=self._query_stub.Params, request=request) + + return response + + async def fetch_eip_base_fee(self) -> Dict[str, Any]: + request = txfees_query_pb.QueryEipBaseFeeRequest() + response = await self._execute_call(call=self._query_stub.GetEipBaseFee, 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/core/broadcaster.py b/pyinjective/core/broadcaster.py index a93a8e85..de025e61 100644 --- a/pyinjective/core/broadcaster.py +++ b/pyinjective/core/broadcaster.py @@ -1,7 +1,7 @@ import math from abc import ABC, abstractmethod from decimal import Decimal -from typing import List, Optional +from typing import List, Optional, Type from google.protobuf import any_pb2 from grpc import RpcError @@ -10,6 +10,7 @@ from pyinjective.async_client import AsyncClient from pyinjective.composer import Composer from pyinjective.constant import GAS_PRICE +from pyinjective.core.gas_heuristics_gas_limit_estimator import GasHeuristicsGasLimitEstimator from pyinjective.core.gas_limit_estimator import GasLimitEstimator from pyinjective.core.network import Network from pyinjective.ofac import OfacChecker @@ -48,6 +49,15 @@ async def configure_gas_fee_for_transaction( ): ... + @abstractmethod + def update_gas_price(self, gas_price: int): + """Updates the gas price used for transaction fee calculation. + + Args: + gas_price (int): The new gas price value in chain format (e.g. 500000000000000000 for 0.5 INJ) + """ + ... + class MsgBroadcasterWithPk: def __init__( @@ -73,13 +83,27 @@ def new_using_simulation( cls, network: Network, private_key: str, + gas_price: Optional[int] = None, client: Optional[AsyncClient] = None, composer: Optional[Composer] = None, ): + """Creates a new broadcaster instance that uses transaction simulation for gas estimation. + + Args: + network (Network): The network configuration to use (mainnet, testnet, etc.) + private_key (str): The private key in hex format for signing transactions + gas_price (Optional[int]): Custom gas price in chain format (e.g. 500000000000000000 for 0.5 INJ). + Defaults to None + client (Optional[AsyncClient]): Custom AsyncClient instance. Defaults to None + composer (Optional[Composer]): Custom Composer instance. Defaults to None + + Returns: + MsgBroadcasterWithPk: A configured broadcaster instance using simulation-based fee calculation + """ client = client or AsyncClient(network=network) composer = composer or Composer(network=client.network.string()) account_config = StandardAccountBroadcasterConfig(private_key=private_key) - fee_calculator = SimulatedTransactionFeeCalculator(client=client, composer=composer) + fee_calculator = SimulatedTransactionFeeCalculator(client=client, composer=composer, gas_price=gas_price) instance = cls( network=network, account_config=account_config, @@ -94,13 +118,66 @@ def new_without_simulation( cls, network: Network, private_key: str, + gas_price: Optional[int] = None, client: Optional[AsyncClient] = None, composer: Optional[Composer] = None, ): + """Creates a new broadcaster instance that uses message-based gas estimation without simulation. + + Args: + network (Network): The network configuration to use (mainnet, testnet, etc.) + private_key (str): The private key in hex format for signing transactions + gas_price (Optional[int]): Custom gas price in chain format (e.g. 500000000000000000 for 0.5 INJ). + Defaults to None + client (Optional[AsyncClient]): Custom AsyncClient instance. Defaults to None + composer (Optional[Composer]): Custom Composer instance. Defaults to None + + Returns: + MsgBroadcasterWithPk: A configured broadcaster instance using message-based fee calculation + """ client = client or AsyncClient(network=network) composer = composer or Composer(network=client.network.string()) account_config = StandardAccountBroadcasterConfig(private_key=private_key) - fee_calculator = MessageBasedTransactionFeeCalculator(client=client, composer=composer) + fee_calculator = MessageBasedTransactionFeeCalculator(client=client, composer=composer, gas_price=gas_price) + instance = cls( + network=network, + account_config=account_config, + client=client, + composer=composer, + fee_calculator=fee_calculator, + ) + return instance + + @classmethod + def new_using_gas_heuristics( + cls, + network: Network, + private_key: str, + gas_price: Optional[int] = None, + client: Optional[AsyncClient] = None, + composer: Optional[Composer] = None, + ): + """Creates a new broadcaster instance that uses message-based gas estimation without simulation. + + Args: + network (Network): The network configuration to use (mainnet, testnet, etc.) + private_key (str): The private key in hex format for signing transactions + gas_price (Optional[int]): Custom gas price in chain format (e.g. 500000000000000000 for 0.5 INJ). + Defaults to None + client (Optional[AsyncClient]): Custom AsyncClient instance. Defaults to None + composer (Optional[Composer]): Custom Composer instance. Defaults to None + + Returns: + MsgBroadcasterWithPk: A configured broadcaster instance using message-based fee calculation + """ + client = client or AsyncClient(network=network) + composer = composer or Composer(network=client.network.string()) + account_config = StandardAccountBroadcasterConfig(private_key=private_key) + fee_calculator = MessageBasedTransactionFeeCalculator.new_using_gas_heuristics( + client=client, + composer=composer, + gas_price=gas_price, + ) instance = cls( network=network, account_config=account_config, @@ -115,13 +192,28 @@ def new_for_grantee_account_using_simulation( cls, network: Network, grantee_private_key: str, + gas_price: Optional[int] = None, client: Optional[AsyncClient] = None, composer: Optional[Composer] = None, ): + """Creates a new broadcaster instance for a grantee account that uses transaction simulation for gas estimation. + + Args: + network (Network): The network configuration to use (mainnet, testnet, etc.) + grantee_private_key (str): The grantee's private key in hex format for signing transactions + gas_price (Optional[int]): Custom gas price in chain format (e.g. 500000000000000000 for 0.5 INJ). + Defaults to None + client (Optional[AsyncClient]): Custom AsyncClient instance. Defaults to None + composer (Optional[Composer]): Custom Composer instance. Defaults to None + + Returns: + MsgBroadcasterWithPk: A configured broadcaster instance using simulation-based fee calculation for a grantee + account + """ client = client or AsyncClient(network=network) composer = composer or Composer(network=client.network.string()) account_config = GranteeAccountBroadcasterConfig(grantee_private_key=grantee_private_key, composer=composer) - fee_calculator = SimulatedTransactionFeeCalculator(client=client, composer=composer) + fee_calculator = SimulatedTransactionFeeCalculator(client=client, composer=composer, gas_price=gas_price) instance = cls( network=network, account_config=account_config, @@ -136,13 +228,70 @@ def new_for_grantee_account_without_simulation( cls, network: Network, grantee_private_key: str, + gas_price: Optional[int] = None, client: Optional[AsyncClient] = None, composer: Optional[Composer] = None, ): + """Creates a new broadcaster instance for a grantee account that uses message-based gas estimation without + simulation. + + Args: + network (Network): The network configuration to use (mainnet, testnet, etc.) + grantee_private_key (str): The grantee's private key in hex format for signing transactions + gas_price (Optional[int]): Custom gas price in chain format (e.g. 500000000000000000 for 0.5 INJ). + Defaults to None + client (Optional[AsyncClient]): Custom AsyncClient instance. Defaults to None + composer (Optional[Composer]): Custom Composer instance. Defaults to None + + Returns: + MsgBroadcasterWithPk: A configured broadcaster instance using message-based fee calculation for a grantee + account + """ client = client or AsyncClient(network=network) composer = composer or Composer(network=client.network.string()) account_config = GranteeAccountBroadcasterConfig(grantee_private_key=grantee_private_key, composer=composer) - fee_calculator = MessageBasedTransactionFeeCalculator(client=client, composer=composer) + fee_calculator = MessageBasedTransactionFeeCalculator(client=client, composer=composer, gas_price=gas_price) + instance = cls( + network=network, + account_config=account_config, + client=client, + composer=composer, + fee_calculator=fee_calculator, + ) + return instance + + @classmethod + def new_for_grantee_account_using_gas_heuristics( + cls, + network: Network, + grantee_private_key: str, + gas_price: Optional[int] = None, + client: Optional[AsyncClient] = None, + composer: Optional[Composer] = None, + ): + """Creates a new broadcaster instance for a grantee account that uses message-based gas estimation without + simulation. + + Args: + network (Network): The network configuration to use (mainnet, testnet, etc.) + grantee_private_key (str): The grantee's private key in hex format for signing transactions + gas_price (Optional[int]): Custom gas price in chain format (e.g. 500000000000000000 for 0.5 INJ). + Defaults to None + client (Optional[AsyncClient]): Custom AsyncClient instance. Defaults to None + composer (Optional[Composer]): Custom Composer instance. Defaults to None + + Returns: + MsgBroadcasterWithPk: A configured broadcaster instance using message-based fee calculation for a grantee + account + """ + client = client or AsyncClient(network=network) + composer = composer or Composer(network=client.network.string()) + account_config = GranteeAccountBroadcasterConfig(grantee_private_key=grantee_private_key, composer=composer) + fee_calculator = MessageBasedTransactionFeeCalculator.new_using_gas_heuristics( + client=client, + composer=composer, + gas_price=gas_price, + ) instance = cls( network=network, account_config=account_config, @@ -185,6 +334,14 @@ async def broadcast(self, messages: List[any_pb2.Any]): return transaction_result + def update_gas_price(self, gas_price: int): + """Updates the gas price used for transaction fee calculation. + + Args: + gas_price (int): The new gas price value in chain format (e.g. 500000000 for 0.5 INJ) + """ + self._fee_calculator.update_gas_price(gas_price=gas_price) + class StandardAccountBroadcasterConfig(BroadcasterAccountConfig): def __init__(self, private_key: str): @@ -278,14 +435,35 @@ async def configure_gas_fee_for_transaction( transaction.with_gas(gas=gas_limit) transaction.with_fee(fee=fee) + def update_gas_price(self, gas_price: int): + """Updates the gas price used for transaction fee calculation. + + Args: + gas_price (int): The new gas price value in chain format (e.g. 500000000 for 0.5 INJ) + """ + self._gas_price = gas_price + class MessageBasedTransactionFeeCalculator(TransactionFeeCalculator): TRANSACTION_ANTE_GAS_LIMIT = 105_000 - def __init__(self, client: AsyncClient, composer: Composer, gas_price: Optional[int] = None): + def __init__( + self, + client: AsyncClient, + composer: Composer, + gas_price: Optional[int] = None, + estimator_class: Optional[Type] = None, + ): self._client = client self._composer = composer self._gas_price = gas_price or self.DEFAULT_GAS_PRICE + self._estimator_class = estimator_class or GasLimitEstimator + + @classmethod + def new_using_gas_heuristics(cls, client: AsyncClient, composer: Composer, gas_price: Optional[int] = None): + return cls( + client=client, composer=composer, gas_price=gas_price, estimator_class=GasHeuristicsGasLimitEstimator + ) async def configure_gas_fee_for_transaction( self, @@ -317,7 +495,15 @@ def _calculate_gas_limit(self, messages: List[any_pb2.Any]) -> int: total_gas_limit = Decimal("0") for message in messages: - estimator = GasLimitEstimator.for_message(message=message) + estimator = self._estimator_class.for_message(message=message) total_gas_limit += estimator.gas_limit() return math.ceil(total_gas_limit) + + def update_gas_price(self, gas_price: int): + """Updates the gas price used for transaction fee calculation. + + Args: + gas_price (int): The new gas price value in chain format (e.g. 500000000 for 0.5 INJ) + """ + self._gas_price = gas_price diff --git a/pyinjective/core/gas_heuristics_gas_limit_estimator.py b/pyinjective/core/gas_heuristics_gas_limit_estimator.py new file mode 100644 index 00000000..22f9140b --- /dev/null +++ b/pyinjective/core/gas_heuristics_gas_limit_estimator.py @@ -0,0 +1,502 @@ +import math +from abc import ABC, abstractmethod +from typing import List, Union + +from google.protobuf import any_pb2 + +from pyinjective.core.gas_limit_estimator import GasLimitEstimator +from pyinjective.proto.cosmos.authz.v1beta1 import tx_pb2 as cosmos_authz_tx_pb +from pyinjective.proto.injective.exchange.v1beta1 import ( + exchange_pb2 as injective_exchange_pb, + tx_pb2 as injective_exchange_tx_pb, +) + +SPOT_ORDER_CREATION_GAS_LIMIT = 61_000 +SPOT_MARKET_ORDER_CREATION_GAS_LIMIT = 50_000 +POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT = 92_000 +DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 82_000 +DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT = 67_000 +POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 112_000 +BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT = DERIVATIVE_ORDER_CREATION_GAS_LIMIT +BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT = DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT +POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT +SPOT_ORDER_CANCELATION_GAS_LIMIT = 51_000 +DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT = 73_000 +BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + +DEPOSIT_GAS_LIMIT = 38_000 +WITHDRAW_GAS_LIMIT = 35_000 +SUBACCOUNT_TRANSFER_GAS_LIMIT = 15_000 +EXTERNAL_TRANSFER_GAS_LIMIT = 40_000 +INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT = 51_000 +DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT = 60_000 + + +class GasHeuristicsGasLimitEstimator(ABC): + GENERAL_MESSAGE_GAS_LIMIT = 25_000 + BASIC_REFERENCE_GAS_LIMIT = 150_000 + + @classmethod + @abstractmethod + def applies_to(cls, message: any_pb2.Any) -> bool: + ... + + @classmethod + def for_message(cls, message: any_pb2.Any): + estimator_class = next( + ( + estimator_subclass + for estimator_subclass in cls.__subclasses__() + if estimator_subclass.applies_to(message=message) + ), + None, + ) + if estimator_class is None: + estimator = GasLimitEstimator.for_message(message=message) + else: + estimator = estimator_class(message=message) + + return estimator + + @abstractmethod + def gas_limit(self) -> int: + ... + + @staticmethod + def message_type(message: any_pb2.Any) -> str: + if isinstance(message, any_pb2.Any): + message_type = message.type_url + else: + message_type = message.DESCRIPTOR.full_name + return message_type + + @abstractmethod + def _message_class(self, message: any_pb2.Any): + ... + + def _parsed_message(self, message: any_pb2.Any) -> any_pb2.Any: + if isinstance(message, any_pb2.Any): + parsed_message = self._message_class(message=message).FromString(message.value) + else: + parsed_message = message + return parsed_message + + def _select_post_only_orders( + self, + orders: List[Union[injective_exchange_pb.SpotOrder, injective_exchange_pb.DerivativeOrder]], + ) -> List[Union[injective_exchange_pb.SpotOrder, injective_exchange_pb.DerivativeOrder]]: + return [ + order + for order in orders + if order.order_type in [injective_exchange_pb.OrderType.BUY_PO, injective_exchange_pb.OrderType.SELL_PO] + ] + + +class CreateSpotLimitOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateSpotLimitOrder") + + def gas_limit(self) -> int: + if self._message.order.order_type in [ + injective_exchange_pb.OrderType.BUY_PO, + injective_exchange_pb.OrderType.SELL_PO, + ]: + total = POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT + else: + total = SPOT_ORDER_CREATION_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateSpotLimitOrder + + +class CreateSpotMarketOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateSpotMarketOrder") + + def gas_limit(self) -> int: + return SPOT_MARKET_ORDER_CREATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateSpotMarketOrder + + +class CancelSpotOrderGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCancelSpotOrder") + + def gas_limit(self) -> int: + return SPOT_ORDER_CANCELATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCancelSpotOrder + + +class CreateDerivativeLimitOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateDerivativeLimitOrder") + + def gas_limit(self) -> int: + if self._message.order.order_type in [ + injective_exchange_pb.OrderType.BUY_PO, + injective_exchange_pb.OrderType.SELL_PO, + ]: + total = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT + else: + total = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder + + +class CreateDerivativeMarketOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateDerivativeMarketOrder") + + def gas_limit(self) -> int: + return DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder + + +class CancelDerivativeOrderGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCancelDerivativeOrder") + + def gas_limit(self) -> int: + return DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCancelDerivativeOrder + + +class CreateBinaryOptionsLimitOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateBinaryOptionsLimitOrder") + + def gas_limit(self) -> int: + if self._message.order.order_type in [ + injective_exchange_pb.OrderType.BUY_PO, + injective_exchange_pb.OrderType.SELL_PO, + ]: + total = POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + else: + total = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrder + + +class CreateBinaryOptionsMarketOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCreateBinaryOptionsMarketOrder") + + def gas_limit(self) -> int: + return BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder + + +class CancelBinaryOptionsOrderGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgCancelBinaryOptionsOrder") + + def gas_limit(self) -> int: + return BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder + + +class BatchCreateSpotLimitOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgBatchCreateSpotLimitOrders") + + def gas_limit(self) -> int: + post_only_orders = self._select_post_only_orders(orders=self._message.orders) + + total = 0 + total += len(self._message.orders) * SPOT_ORDER_CREATION_GAS_LIMIT + total += math.ceil(len(post_only_orders) * POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT) + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders + + +class BatchCancelSpotOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgBatchCancelSpotOrders") + + def gas_limit(self) -> int: + total = 0 + total += len(self._message.data) * SPOT_ORDER_CANCELATION_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgBatchCancelSpotOrders + + +class BatchCreateDerivativeLimitOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgBatchCreateDerivativeLimitOrders") + + def gas_limit(self) -> int: + post_only_orders = self._select_post_only_orders(orders=self._message.orders) + + total = 0 + total += len(self._message.orders) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT + total += math.ceil(len(post_only_orders) * POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT) + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders + + +class BatchCancelDerivativeOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgBatchCancelDerivativeOrders") + + def gas_limit(self) -> int: + total = 0 + total += len(self._message.data) * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders + + +class BatchUpdateOrdersGasLimitEstimator(GasHeuristicsGasLimitEstimator): + AVERAGE_CANCEL_ALL_AFFECTED_ORDERS = 20 + + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + return cls.message_type(message=message).endswith("MsgBatchUpdateOrders") + + def gas_limit(self) -> int: + post_only_spot_orders = self._select_post_only_orders(orders=self._message.spot_orders_to_create) + post_only_derivative_orders = self._select_post_only_orders(orders=self._message.derivative_orders_to_create) + post_only_binary_options_orders = self._select_post_only_orders( + orders=self._message.binary_options_orders_to_create + ) + + total = 0 + total += len(self._message.spot_orders_to_create) * SPOT_ORDER_CREATION_GAS_LIMIT + total += len(self._message.derivative_orders_to_create) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT + total += len(self._message.binary_options_orders_to_create) * BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + + total += math.ceil(len(post_only_spot_orders) * POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT) + total += math.ceil(len(post_only_derivative_orders) * POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT) + total += math.ceil(len(post_only_binary_options_orders) * POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT) + + total += len(self._message.spot_orders_to_cancel) * SPOT_ORDER_CANCELATION_GAS_LIMIT + total += len(self._message.derivative_orders_to_cancel) * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + total += len(self._message.binary_options_orders_to_cancel) * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + + total += ( + len(self._message.spot_market_ids_to_cancel_all) + * SPOT_ORDER_CANCELATION_GAS_LIMIT + * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS + ) + total += ( + len(self._message.derivative_market_ids_to_cancel_all) + * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS + ) + total += ( + len(self._message.binary_options_market_ids_to_cancel_all) + * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS + ) + + return total + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgBatchUpdateOrders + + +class DepositGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgDeposit") + + def gas_limit(self) -> int: + return DEPOSIT_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgDeposit + + +class WithdrawGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgWithdraw") + + def gas_limit(self) -> int: + return WITHDRAW_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgWithdraw + + +class SubaccountTransferGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgSubaccountTransfer") + + def gas_limit(self) -> int: + return SUBACCOUNT_TRANSFER_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgSubaccountTransfer + + +class ExternalTransferGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgExternalTransfer") + + def gas_limit(self) -> int: + return EXTERNAL_TRANSFER_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgExternalTransfer + + +class IncreasePositionMarginGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgIncreasePositionMargin") + + def gas_limit(self) -> int: + return INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgIncreasePositionMargin + + +class DecreasePositionMarginGasLimitEstimator(GasHeuristicsGasLimitEstimator): + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any): + message_type = cls.message_type(message=message) + return ".exchange." in message_type and message_type.endswith("MsgDecreasePositionMargin") + + def gas_limit(self) -> int: + return DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT + + def _message_class(self, message: any_pb2.Any): + return injective_exchange_tx_pb.MsgDecreasePositionMargin + + +class ExecGasLimitEstimator(GasHeuristicsGasLimitEstimator): + DEFAULT_GAS_LIMIT = 20_000 + + def __init__(self, message: any_pb2.Any): + self._message = self._parsed_message(message=message) + + @classmethod + def applies_to(cls, message: any_pb2.Any) -> bool: + return cls.message_type(message=message).endswith("MsgExec") + + def gas_limit(self) -> int: + total = sum( + [ + GasHeuristicsGasLimitEstimator.for_message(message=inner_message).gas_limit() + for inner_message in self._message.msgs + ] + ) + total += self.DEFAULT_GAS_LIMIT + + return total + + def _message_class(self, message: any_pb2.Any): + return cosmos_authz_tx_pb.MsgExec diff --git a/pyinjective/core/gas_limit_estimator.py b/pyinjective/core/gas_limit_estimator.py index 1730a322..335af501 100644 --- a/pyinjective/core/gas_limit_estimator.py +++ b/pyinjective/core/gas_limit_estimator.py @@ -12,25 +12,13 @@ tx_pb2 as injective_exchange_tx_pb, ) -SPOT_ORDER_CREATION_GAS_LIMIT = 61_000 -SPOT_MARKET_ORDER_CREATION_GAS_LIMIT = 50_000 -POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT = 92_000 -DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 82_000 -DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT = 67_000 -POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 112_000 -BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT = DERIVATIVE_ORDER_CREATION_GAS_LIMIT -BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT = DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT -POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT -SPOT_ORDER_CANCELATION_GAS_LIMIT = 51_000 -DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT = 73_000 -BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT - -DEPOSIT_GAS_LIMIT = 38_000 -WITHDRAW_GAS_LIMIT = 35_000 -SUBACCOUNT_TRANSFER_GAS_LIMIT = 15_000 -EXTERNAL_TRANSFER_GAS_LIMIT = 40_000 -INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT = 51_000 -DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT = 60_000 +SPOT_ORDER_CREATION_GAS_LIMIT = 52_000 +DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 84_000 +SPOT_ORDER_CANCELATION_GAS_LIMIT = 50_000 +DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT = 68_000 +# POST ONLY orders take around 50% more gas to create than normal orders due to the required validations +SPOT_POST_ONLY_ORDER_MULTIPLIER = 0.62 +DERIVATIVE_POST_ONLY_ORDER_MULTIPLIER = 0.35 class GasLimitEstimator(ABC): @@ -108,165 +96,6 @@ def _message_class(self, message: any_pb2.Any): raise NotImplementedError -class CreateSpotLimitOrdersGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCreateSpotLimitOrder") - - def gas_limit(self) -> int: - if self._message.order.order_type in [ - injective_exchange_pb.OrderType.BUY_PO, - injective_exchange_pb.OrderType.SELL_PO, - ]: - total = POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT - else: - total = SPOT_ORDER_CREATION_GAS_LIMIT - - return total - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCreateSpotLimitOrder - - -class CreateSpotMarketOrdersGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCreateSpotMarketOrder") - - def gas_limit(self) -> int: - return SPOT_MARKET_ORDER_CREATION_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCreateSpotMarketOrder - - -class CancelSpotOrderGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCancelSpotOrder") - - def gas_limit(self) -> int: - return SPOT_ORDER_CANCELATION_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCancelSpotOrder - - -class CreateDerivativeLimitOrdersGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCreateDerivativeLimitOrder") - - def gas_limit(self) -> int: - if self._message.order.order_type in [ - injective_exchange_pb.OrderType.BUY_PO, - injective_exchange_pb.OrderType.SELL_PO, - ]: - total = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT - else: - total = DERIVATIVE_ORDER_CREATION_GAS_LIMIT - - return total - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder - - -class CreateDerivativeMarketOrdersGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCreateDerivativeMarketOrder") - - def gas_limit(self) -> int: - return DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder - - -class CancelDerivativeOrderGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCancelDerivativeOrder") - - def gas_limit(self) -> int: - return DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCancelDerivativeOrder - - -class CreateBinaryOptionsLimitOrdersGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCreateBinaryOptionsLimitOrder") - - def gas_limit(self) -> int: - if self._message.order.order_type in [ - injective_exchange_pb.OrderType.BUY_PO, - injective_exchange_pb.OrderType.SELL_PO, - ]: - total = POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT - else: - total = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT - - return total - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCreateBinaryOptionsLimitOrder - - -class CreateBinaryOptionsMarketOrdersGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCreateBinaryOptionsMarketOrder") - - def gas_limit(self) -> int: - return BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCreateBinaryOptionsMarketOrder - - -class CancelBinaryOptionsOrderGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - return cls.message_type(message=message).endswith("MsgCancelBinaryOptionsOrder") - - def gas_limit(self) -> int: - return BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgCancelBinaryOptionsOrder - - class BatchCreateSpotLimitOrdersGasLimitEstimator(GasLimitEstimator): def __init__(self, message: any_pb2.Any): self._message = self._parsed_message(message=message) @@ -279,8 +108,9 @@ def gas_limit(self) -> int: post_only_orders = self._select_post_only_orders(orders=self._message.orders) total = 0 + total += self.GENERAL_MESSAGE_GAS_LIMIT total += len(self._message.orders) * SPOT_ORDER_CREATION_GAS_LIMIT - total += math.ceil(len(post_only_orders) * POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT) + total += math.ceil(len(post_only_orders) * SPOT_ORDER_CREATION_GAS_LIMIT * SPOT_POST_ONLY_ORDER_MULTIPLIER) return total @@ -298,6 +128,7 @@ def applies_to(cls, message: any_pb2.Any): def gas_limit(self) -> int: total = 0 + total += self.GENERAL_MESSAGE_GAS_LIMIT total += len(self._message.data) * SPOT_ORDER_CANCELATION_GAS_LIMIT return total @@ -318,8 +149,11 @@ def gas_limit(self) -> int: post_only_orders = self._select_post_only_orders(orders=self._message.orders) total = 0 + total += self.GENERAL_MESSAGE_GAS_LIMIT total += len(self._message.orders) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT - total += math.ceil(len(post_only_orders) * POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT) + total += math.ceil( + len(post_only_orders) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT * DERIVATIVE_POST_ONLY_ORDER_MULTIPLIER + ) return total @@ -337,6 +171,7 @@ def applies_to(cls, message: any_pb2.Any): def gas_limit(self) -> int: total = 0 + total += self.GENERAL_MESSAGE_GAS_LIMIT total += len(self._message.data) * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT return total @@ -346,6 +181,10 @@ def _message_class(self, message: any_pb2.Any): class BatchUpdateOrdersGasLimitEstimator(GasLimitEstimator): + CANCEL_ALL_SPOT_MARKET_GAS_LIMIT = 40_000 + CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT = 50_000 + MESSAGE_GAS_LIMIT = 30_000 + AVERAGE_CANCEL_ALL_AFFECTED_ORDERS = 20 def __init__(self, message: any_pb2.Any): @@ -363,31 +202,40 @@ def gas_limit(self) -> int: ) total = 0 + total += self.MESSAGE_GAS_LIMIT total += len(self._message.spot_orders_to_create) * SPOT_ORDER_CREATION_GAS_LIMIT total += len(self._message.derivative_orders_to_create) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT - total += len(self._message.binary_options_orders_to_create) * BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + total += len(self._message.binary_options_orders_to_create) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT - total += math.ceil(len(post_only_spot_orders) * POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT) - total += math.ceil(len(post_only_derivative_orders) * POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT) - total += math.ceil(len(post_only_binary_options_orders) * POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT) + total += math.ceil(len(post_only_spot_orders) * SPOT_ORDER_CREATION_GAS_LIMIT * SPOT_POST_ONLY_ORDER_MULTIPLIER) + total += math.ceil( + len(post_only_derivative_orders) + * DERIVATIVE_ORDER_CREATION_GAS_LIMIT + * DERIVATIVE_POST_ONLY_ORDER_MULTIPLIER + ) + total += math.ceil( + len(post_only_binary_options_orders) + * DERIVATIVE_ORDER_CREATION_GAS_LIMIT + * DERIVATIVE_POST_ONLY_ORDER_MULTIPLIER + ) total += len(self._message.spot_orders_to_cancel) * SPOT_ORDER_CANCELATION_GAS_LIMIT total += len(self._message.derivative_orders_to_cancel) * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT - total += len(self._message.binary_options_orders_to_cancel) * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + total += len(self._message.binary_options_orders_to_cancel) * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT total += ( len(self._message.spot_market_ids_to_cancel_all) - * SPOT_ORDER_CANCELATION_GAS_LIMIT + * self.CANCEL_ALL_SPOT_MARKET_GAS_LIMIT * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS ) total += ( len(self._message.derivative_market_ids_to_cancel_all) - * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + * self.CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS ) total += ( len(self._message.binary_options_market_ids_to_cancel_all) - * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + * self.CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT * self.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS ) @@ -397,102 +245,6 @@ def _message_class(self, message: any_pb2.Any): return injective_exchange_tx_pb.MsgBatchUpdateOrders -class DepositGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - message_type = cls.message_type(message=message) - return ".exchange." in message_type and message_type.endswith("MsgDeposit") - - def gas_limit(self) -> int: - return DEPOSIT_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgDeposit - - -class WithdrawGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - message_type = cls.message_type(message=message) - return ".exchange." in message_type and message_type.endswith("MsgWithdraw") - - def gas_limit(self) -> int: - return WITHDRAW_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgWithdraw - - -class SubaccountTransferGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - message_type = cls.message_type(message=message) - return ".exchange." in message_type and message_type.endswith("MsgSubaccountTransfer") - - def gas_limit(self) -> int: - return SUBACCOUNT_TRANSFER_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgSubaccountTransfer - - -class ExternalTransferGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - message_type = cls.message_type(message=message) - return ".exchange." in message_type and message_type.endswith("MsgExternalTransfer") - - def gas_limit(self) -> int: - return EXTERNAL_TRANSFER_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgExternalTransfer - - -class IncreasePositionMarginGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - message_type = cls.message_type(message=message) - return ".exchange." in message_type and message_type.endswith("MsgIncreasePositionMargin") - - def gas_limit(self) -> int: - return INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgIncreasePositionMargin - - -class DecreasePositionMarginGasLimitEstimator(GasLimitEstimator): - def __init__(self, message: any_pb2.Any): - self._message = self._parsed_message(message=message) - - @classmethod - def applies_to(cls, message: any_pb2.Any): - message_type = cls.message_type(message=message) - return ".exchange." in message_type and message_type.endswith("MsgDecreasePositionMargin") - - def gas_limit(self) -> int: - return DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT - - def _message_class(self, message: any_pb2.Any): - return injective_exchange_tx_pb.MsgDecreasePositionMargin - - class ExecGasLimitEstimator(GasLimitEstimator): DEFAULT_GAS_LIMIT = 20_000 diff --git a/pyinjective/proto/injective/exchange/v1beta1/query_pb2.py b/pyinjective/proto/injective/exchange/v1beta1/query_pb2.py index 9740091a..0c181221 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\"<\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\"8\n\x19QueryMarketBalanceRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"[\n\x1aQueryMarketBalanceResponse\x12=\n\x07\x62\x61lance\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x07\x62\x61lance\"\x1c\n\x1aQueryMarketBalancesRequest\"d\n\x1bQueryMarketBalancesResponse\x12\x45\n\x08\x62\x61lances\x18\x01 \x03(\x0b\x32).injective.exchange.v1beta1.MarketBalanceR\x08\x62\x61lances\"k\n\rMarketBalance\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12=\n\x07\x62\x61lance\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x07\x62\x61lance\"4\n\x1cQueryDenomMinNotionalRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\"\\\n\x1dQueryDenomMinNotionalResponse\x12;\n\x06\x61mount\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06\x61mount\"\x1f\n\x1dQueryDenomMinNotionalsRequest\"~\n\x1eQueryDenomMinNotionalsResponse\x12\\\n\x13\x64\x65nom_min_notionals\x18\x01 \x03(\x0b\x32,.injective.exchange.v1beta1.DenomMinNotionalR\x11\x64\x65nomMinNotionals*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\x89o\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}\x12\xbe\x01\n\rMarketBalance\x12\x35.injective.exchange.v1beta1.QueryMarketBalanceRequest\x1a\x36.injective.exchange.v1beta1.QueryMarketBalanceResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v1beta1/market_balance/{market_id}\x12\xb6\x01\n\x0eMarketBalances\x12\x36.injective.exchange.v1beta1.QueryMarketBalancesRequest\x1a\x37.injective.exchange.v1beta1.QueryMarketBalancesResponse\"3\x82\xd3\xe4\x93\x02-\x12+/injective/exchange/v1beta1/market_balances\x12\xc7\x01\n\x10\x44\x65nomMinNotional\x12\x38.injective.exchange.v1beta1.QueryDenomMinNotionalRequest\x1a\x39.injective.exchange.v1beta1.QueryDenomMinNotionalResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v1beta1/denom_min_notional/{denom}\x12\xc3\x01\n\x11\x44\x65nomMinNotionals\x12\x39.injective.exchange.v1beta1.QueryDenomMinNotionalsRequest\x1a:.injective.exchange.v1beta1.QueryDenomMinNotionalsResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//injective/exchange/v1beta1/denom_min_notionalsB\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\"8\n\x19QueryMarketBalanceRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\"a\n\x1aQueryMarketBalanceResponse\x12\x43\n\x07\x62\x61lance\x18\x01 \x01(\x0b\x32).injective.exchange.v1beta1.MarketBalanceR\x07\x62\x61lance\"\x1c\n\x1aQueryMarketBalancesRequest\"d\n\x1bQueryMarketBalancesResponse\x12\x45\n\x08\x62\x61lances\x18\x01 \x03(\x0b\x32).injective.exchange.v1beta1.MarketBalanceR\x08\x62\x61lances\"k\n\rMarketBalance\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12=\n\x07\x62\x61lance\x18\x02 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x07\x62\x61lance\"4\n\x1cQueryDenomMinNotionalRequest\x12\x14\n\x05\x64\x65nom\x18\x01 \x01(\tR\x05\x64\x65nom\"\\\n\x1dQueryDenomMinNotionalResponse\x12;\n\x06\x61mount\x18\x01 \x01(\tB#\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDecR\x06\x61mount\"\x1f\n\x1dQueryDenomMinNotionalsRequest\"~\n\x1eQueryDenomMinNotionalsResponse\x12\\\n\x13\x64\x65nom_min_notionals\x18\x01 \x03(\x0b\x32,.injective.exchange.v1beta1.DenomMinNotionalR\x11\x64\x65nomMinNotionals*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\x89o\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}\x12\xbe\x01\n\rMarketBalance\x12\x35.injective.exchange.v1beta1.QueryMarketBalanceRequest\x1a\x36.injective.exchange.v1beta1.QueryMarketBalanceResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v1beta1/market_balance/{market_id}\x12\xb6\x01\n\x0eMarketBalances\x12\x36.injective.exchange.v1beta1.QueryMarketBalancesRequest\x1a\x37.injective.exchange.v1beta1.QueryMarketBalancesResponse\"3\x82\xd3\xe4\x93\x02-\x12+/injective/exchange/v1beta1/market_balances\x12\xc7\x01\n\x10\x44\x65nomMinNotional\x12\x38.injective.exchange.v1beta1.QueryDenomMinNotionalRequest\x1a\x39.injective.exchange.v1beta1.QueryDenomMinNotionalResponse\">\x82\xd3\xe4\x93\x02\x38\x12\x36/injective/exchange/v1beta1/denom_min_notional/{denom}\x12\xc3\x01\n\x11\x44\x65nomMinNotionals\x12\x39.injective.exchange.v1beta1.QueryDenomMinNotionalsRequest\x1a:.injective.exchange.v1beta1.QueryDenomMinNotionalsResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//injective/exchange/v1beta1/denom_min_notionalsB\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) @@ -161,8 +161,6 @@ _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['_QUERYMARKETBALANCERESPONSE'].fields_by_name['balance']._loaded_options = None - _globals['_QUERYMARKETBALANCERESPONSE'].fields_by_name['balance']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' _globals['_MARKETBALANCE'].fields_by_name['balance']._loaded_options = None _globals['_MARKETBALANCE'].fields_by_name['balance']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec' _globals['_QUERYDENOMMINNOTIONALRESPONSE'].fields_by_name['amount']._loaded_options = None @@ -299,10 +297,10 @@ _globals['_QUERY'].methods_by_name['DenomMinNotional']._serialized_options = b'\202\323\344\223\0028\0226/injective/exchange/v1beta1/denom_min_notional/{denom}' _globals['_QUERY'].methods_by_name['DenomMinNotionals']._loaded_options = None _globals['_QUERY'].methods_by_name['DenomMinNotionals']._serialized_options = b'\202\323\344\223\0021\022//injective/exchange/v1beta1/denom_min_notionals' - _globals['_ORDERSIDE']._serialized_start=18713 - _globals['_ORDERSIDE']._serialized_end=18765 - _globals['_CANCELLATIONSTRATEGY']._serialized_start=18767 - _globals['_CANCELLATIONSTRATEGY']._serialized_end=18853 + _globals['_ORDERSIDE']._serialized_start=18719 + _globals['_ORDERSIDE']._serialized_end=18771 + _globals['_CANCELLATIONSTRATEGY']._serialized_start=18773 + _globals['_CANCELLATIONSTRATEGY']._serialized_end=18859 _globals['_SUBACCOUNT']._serialized_start=246 _globals['_SUBACCOUNT']._serialized_end=325 _globals['_QUERYSUBACCOUNTORDERSREQUEST']._serialized_start=327 @@ -578,21 +576,21 @@ _globals['_QUERYMARKETBALANCEREQUEST']._serialized_start=18012 _globals['_QUERYMARKETBALANCEREQUEST']._serialized_end=18068 _globals['_QUERYMARKETBALANCERESPONSE']._serialized_start=18070 - _globals['_QUERYMARKETBALANCERESPONSE']._serialized_end=18161 - _globals['_QUERYMARKETBALANCESREQUEST']._serialized_start=18163 - _globals['_QUERYMARKETBALANCESREQUEST']._serialized_end=18191 - _globals['_QUERYMARKETBALANCESRESPONSE']._serialized_start=18193 - _globals['_QUERYMARKETBALANCESRESPONSE']._serialized_end=18293 - _globals['_MARKETBALANCE']._serialized_start=18295 - _globals['_MARKETBALANCE']._serialized_end=18402 - _globals['_QUERYDENOMMINNOTIONALREQUEST']._serialized_start=18404 - _globals['_QUERYDENOMMINNOTIONALREQUEST']._serialized_end=18456 - _globals['_QUERYDENOMMINNOTIONALRESPONSE']._serialized_start=18458 - _globals['_QUERYDENOMMINNOTIONALRESPONSE']._serialized_end=18550 - _globals['_QUERYDENOMMINNOTIONALSREQUEST']._serialized_start=18552 - _globals['_QUERYDENOMMINNOTIONALSREQUEST']._serialized_end=18583 - _globals['_QUERYDENOMMINNOTIONALSRESPONSE']._serialized_start=18585 - _globals['_QUERYDENOMMINNOTIONALSRESPONSE']._serialized_end=18711 - _globals['_QUERY']._serialized_start=18856 - _globals['_QUERY']._serialized_end=33073 + _globals['_QUERYMARKETBALANCERESPONSE']._serialized_end=18167 + _globals['_QUERYMARKETBALANCESREQUEST']._serialized_start=18169 + _globals['_QUERYMARKETBALANCESREQUEST']._serialized_end=18197 + _globals['_QUERYMARKETBALANCESRESPONSE']._serialized_start=18199 + _globals['_QUERYMARKETBALANCESRESPONSE']._serialized_end=18299 + _globals['_MARKETBALANCE']._serialized_start=18301 + _globals['_MARKETBALANCE']._serialized_end=18408 + _globals['_QUERYDENOMMINNOTIONALREQUEST']._serialized_start=18410 + _globals['_QUERYDENOMMINNOTIONALREQUEST']._serialized_end=18462 + _globals['_QUERYDENOMMINNOTIONALRESPONSE']._serialized_start=18464 + _globals['_QUERYDENOMMINNOTIONALRESPONSE']._serialized_end=18556 + _globals['_QUERYDENOMMINNOTIONALSREQUEST']._serialized_start=18558 + _globals['_QUERYDENOMMINNOTIONALSREQUEST']._serialized_end=18589 + _globals['_QUERYDENOMMINNOTIONALSRESPONSE']._serialized_start=18591 + _globals['_QUERYDENOMMINNOTIONALSRESPONSE']._serialized_end=18717 + _globals['_QUERY']._serialized_start=18862 + _globals['_QUERY']._serialized_end=33079 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/txfees/v1beta1/genesis_pb2.py b/pyinjective/proto/injective/txfees/v1beta1/genesis_pb2.py new file mode 100644 index 00000000..843cb633 --- /dev/null +++ b/pyinjective/proto/injective/txfees/v1beta1/genesis_pb2.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/txfees/v1beta1/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.injective.txfees.v1beta1 import txfees_pb2 as injective_dot_txfees_dot_v1beta1_dot_txfees__pb2 +from pyinjective.proto.gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&injective/txfees/v1beta1/genesis.proto\x12\x18injective.txfees.v1beta1\x1a%injective/txfees/v1beta1/txfees.proto\x1a\x14gogoproto/gogo.proto\"N\n\x0cGenesisState\x12>\n\x06params\x18\x01 \x01(\x0b\x32 .injective.txfees.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06paramsB\xfc\x01\n\x1c\x63om.injective.txfees.v1beta1B\x0cGenesisProtoP\x01ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\xa2\x02\x03ITX\xaa\x02\x18Injective.Txfees.V1beta1\xca\x02\x18Injective\\Txfees\\V1beta1\xe2\x02$Injective\\Txfees\\V1beta1\\GPBMetadata\xea\x02\x1aInjective::Txfees::V1beta1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.txfees.v1beta1.genesis_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\034com.injective.txfees.v1beta1B\014GenesisProtoP\001ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\242\002\003ITX\252\002\030Injective.Txfees.V1beta1\312\002\030Injective\\Txfees\\V1beta1\342\002$Injective\\Txfees\\V1beta1\\GPBMetadata\352\002\032Injective::Txfees::V1beta1' + _globals['_GENESISSTATE'].fields_by_name['params']._loaded_options = None + _globals['_GENESISSTATE'].fields_by_name['params']._serialized_options = b'\310\336\037\000' + _globals['_GENESISSTATE']._serialized_start=129 + _globals['_GENESISSTATE']._serialized_end=207 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/txfees/v1beta1/genesis_pb2_grpc.py b/pyinjective/proto/injective/txfees/v1beta1/genesis_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/txfees/v1beta1/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/txfees/v1beta1/query_pb2.py b/pyinjective/proto/injective/txfees/v1beta1/query_pb2.py new file mode 100644 index 00000000..90e05b1f --- /dev/null +++ b/pyinjective/proto/injective/txfees/v1beta1/query_pb2.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/txfees/v1beta1/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.txfees.v1beta1 import txfees_pb2 as injective_dot_txfees_dot_v1beta1_dot_txfees__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$injective/txfees/v1beta1/query.proto\x12\x18injective.txfees.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1cgoogle/api/annotations.proto\x1a%injective/txfees/v1beta1/txfees.proto\"_\n\nEipBaseFee\x12Q\n\x08\x62\x61se_fee\x18\x01 \x01(\tB6\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x0fyaml:\"base_fee\"R\x07\x62\x61seFee\"\x14\n\x12QueryParamsRequest\"U\n\x13QueryParamsResponse\x12>\n\x06params\x18\x01 \x01(\x0b\x32 .injective.txfees.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06params\"\x18\n\x16QueryEipBaseFeeRequest\"Z\n\x17QueryEipBaseFeeResponse\x12?\n\x08\x62\x61se_fee\x18\x01 \x01(\x0b\x32$.injective.txfees.v1beta1.EipBaseFeeR\x07\x62\x61seFee2\xc4\x02\n\x05Query\x12\x8f\x01\n\x06Params\x12,.injective.txfees.v1beta1.QueryParamsRequest\x1a-.injective.txfees.v1beta1.QueryParamsResponse\"(\x82\xd3\xe4\x93\x02\"\x12 /injective/txfees/v1beta1/params\x12\xa8\x01\n\rGetEipBaseFee\x12\x30.injective.txfees.v1beta1.QueryEipBaseFeeRequest\x1a\x31.injective.txfees.v1beta1.QueryEipBaseFeeResponse\"2\x82\xd3\xe4\x93\x02,\x12*/injective/txfees/v1beta1/cur_eip_base_feeB\xfa\x01\n\x1c\x63om.injective.txfees.v1beta1B\nQueryProtoP\x01ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\xa2\x02\x03ITX\xaa\x02\x18Injective.Txfees.V1beta1\xca\x02\x18Injective\\Txfees\\V1beta1\xe2\x02$Injective\\Txfees\\V1beta1\\GPBMetadata\xea\x02\x1aInjective::Txfees::V1beta1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.txfees.v1beta1.query_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\034com.injective.txfees.v1beta1B\nQueryProtoP\001ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\242\002\003ITX\252\002\030Injective.Txfees.V1beta1\312\002\030Injective\\Txfees\\V1beta1\342\002$Injective\\Txfees\\V1beta1\\GPBMetadata\352\002\032Injective::Txfees::V1beta1' + _globals['_EIPBASEFEE'].fields_by_name['base_fee']._loaded_options = None + _globals['_EIPBASEFEE'].fields_by_name['base_fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037\017yaml:\"base_fee\"' + _globals['_QUERYPARAMSRESPONSE'].fields_by_name['params']._loaded_options = None + _globals['_QUERYPARAMSRESPONSE'].fields_by_name['params']._serialized_options = b'\310\336\037\000' + _globals['_QUERY'].methods_by_name['Params']._loaded_options = None + _globals['_QUERY'].methods_by_name['Params']._serialized_options = b'\202\323\344\223\002\"\022 /injective/txfees/v1beta1/params' + _globals['_QUERY'].methods_by_name['GetEipBaseFee']._loaded_options = None + _globals['_QUERY'].methods_by_name['GetEipBaseFee']._serialized_options = b'\202\323\344\223\002,\022*/injective/txfees/v1beta1/cur_eip_base_fee' + _globals['_EIPBASEFEE']._serialized_start=157 + _globals['_EIPBASEFEE']._serialized_end=252 + _globals['_QUERYPARAMSREQUEST']._serialized_start=254 + _globals['_QUERYPARAMSREQUEST']._serialized_end=274 + _globals['_QUERYPARAMSRESPONSE']._serialized_start=276 + _globals['_QUERYPARAMSRESPONSE']._serialized_end=361 + _globals['_QUERYEIPBASEFEEREQUEST']._serialized_start=363 + _globals['_QUERYEIPBASEFEEREQUEST']._serialized_end=387 + _globals['_QUERYEIPBASEFEERESPONSE']._serialized_start=389 + _globals['_QUERYEIPBASEFEERESPONSE']._serialized_end=479 + _globals['_QUERY']._serialized_start=482 + _globals['_QUERY']._serialized_end=806 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/txfees/v1beta1/query_pb2_grpc.py b/pyinjective/proto/injective/txfees/v1beta1/query_pb2_grpc.py new file mode 100644 index 00000000..6c7a0eeb --- /dev/null +++ b/pyinjective/proto/injective/txfees/v1beta1/query_pb2_grpc.py @@ -0,0 +1,123 @@ +# 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.txfees.v1beta1 import query_pb2 as injective_dot_txfees_dot_v1beta1_dot_query__pb2 + + +class QueryStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.Params = channel.unary_unary( + '/injective.txfees.v1beta1.Query/Params', + request_serializer=injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryParamsRequest.SerializeToString, + response_deserializer=injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryParamsResponse.FromString, + _registered_method=True) + self.GetEipBaseFee = channel.unary_unary( + '/injective.txfees.v1beta1.Query/GetEipBaseFee', + request_serializer=injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeRequest.SerializeToString, + response_deserializer=injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeResponse.FromString, + _registered_method=True) + + +class QueryServicer(object): + """Missing associated documentation comment in .proto file.""" + + def Params(self, request, context): + """Params defines a gRPC query method that returns the tokenfactory module's + parameters. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetEipBaseFee(self, request, context): + """Returns the current fee market EIP fee. + """ + 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 = { + 'Params': grpc.unary_unary_rpc_method_handler( + servicer.Params, + request_deserializer=injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryParamsRequest.FromString, + response_serializer=injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryParamsResponse.SerializeToString, + ), + 'GetEipBaseFee': grpc.unary_unary_rpc_method_handler( + servicer.GetEipBaseFee, + request_deserializer=injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeRequest.FromString, + response_serializer=injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'injective.txfees.v1beta1.Query', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('injective.txfees.v1beta1.Query', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class Query(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def Params(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.txfees.v1beta1.Query/Params', + injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryParamsRequest.SerializeToString, + injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryParamsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def GetEipBaseFee(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.txfees.v1beta1.Query/GetEipBaseFee', + injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeRequest.SerializeToString, + injective_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/pyinjective/proto/injective/txfees/v1beta1/tx_pb2.py b/pyinjective/proto/injective/txfees/v1beta1/tx_pb2.py new file mode 100644 index 00000000..4a6c5d99 --- /dev/null +++ b/pyinjective/proto/injective/txfees/v1beta1/tx_pb2.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/txfees/v1beta1/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.gogoproto import gogo_pb2 as gogoproto_dot_gogo__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.injective.txfees.v1beta1 import txfees_pb2 as injective_dot_txfees_dot_v1beta1_dot_txfees__pb2 +from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!injective/txfees/v1beta1/tx.proto\x12\x18injective.txfees.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x17\x63osmos/msg/v1/msg.proto\x1a\x19\x63osmos_proto/cosmos.proto\x1a%injective/txfees/v1beta1/txfees.proto\x1a\x11\x61mino/amino.proto\"\xb4\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.txfees.v1beta1.ParamsB\x04\xc8\xde\x1f\x00R\x06params:)\x82\xe7\xb0*\tauthority\x8a\xe7\xb0*\x16txfees/MsgUpdateParams\"\x19\n\x17MsgUpdateParamsResponse2z\n\x03Msg\x12l\n\x0cUpdateParams\x12).injective.txfees.v1beta1.MsgUpdateParams\x1a\x31.injective.txfees.v1beta1.MsgUpdateParamsResponse\x1a\x05\x80\xe7\xb0*\x01\x42\xf7\x01\n\x1c\x63om.injective.txfees.v1beta1B\x07TxProtoP\x01ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\xa2\x02\x03ITX\xaa\x02\x18Injective.Txfees.V1beta1\xca\x02\x18Injective\\Txfees\\V1beta1\xe2\x02$Injective\\Txfees\\V1beta1\\GPBMetadata\xea\x02\x1aInjective::Txfees::V1beta1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.txfees.v1beta1.tx_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\034com.injective.txfees.v1beta1B\007TxProtoP\001ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\242\002\003ITX\252\002\030Injective.Txfees.V1beta1\312\002\030Injective\\Txfees\\V1beta1\342\002$Injective\\Txfees\\V1beta1\\GPBMetadata\352\002\032Injective::Txfees::V1beta1' + _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*\026txfees/MsgUpdateParams' + _globals['_MSG']._loaded_options = None + _globals['_MSG']._serialized_options = b'\200\347\260*\001' + _globals['_MSGUPDATEPARAMS']._serialized_start=196 + _globals['_MSGUPDATEPARAMS']._serialized_end=376 + _globals['_MSGUPDATEPARAMSRESPONSE']._serialized_start=378 + _globals['_MSGUPDATEPARAMSRESPONSE']._serialized_end=403 + _globals['_MSG']._serialized_start=405 + _globals['_MSG']._serialized_end=527 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/txfees/v1beta1/tx_pb2_grpc.py b/pyinjective/proto/injective/txfees/v1beta1/tx_pb2_grpc.py new file mode 100644 index 00000000..b121e219 --- /dev/null +++ b/pyinjective/proto/injective/txfees/v1beta1/tx_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.txfees.v1beta1 import tx_pb2 as injective_dot_txfees_dot_v1beta1_dot_tx__pb2 + + +class MsgStub(object): + """Msg defines the auction Msg service. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.UpdateParams = channel.unary_unary( + '/injective.txfees.v1beta1.Msg/UpdateParams', + request_serializer=injective_dot_txfees_dot_v1beta1_dot_tx__pb2.MsgUpdateParams.SerializeToString, + response_deserializer=injective_dot_txfees_dot_v1beta1_dot_tx__pb2.MsgUpdateParamsResponse.FromString, + _registered_method=True) + + +class MsgServicer(object): + """Msg defines the auction Msg service. + """ + + 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 add_MsgServicer_to_server(servicer, server): + rpc_method_handlers = { + 'UpdateParams': grpc.unary_unary_rpc_method_handler( + servicer.UpdateParams, + request_deserializer=injective_dot_txfees_dot_v1beta1_dot_tx__pb2.MsgUpdateParams.FromString, + response_serializer=injective_dot_txfees_dot_v1beta1_dot_tx__pb2.MsgUpdateParamsResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'injective.txfees.v1beta1.Msg', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('injective.txfees.v1beta1.Msg', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class Msg(object): + """Msg defines the auction Msg service. + """ + + @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.txfees.v1beta1.Msg/UpdateParams', + injective_dot_txfees_dot_v1beta1_dot_tx__pb2.MsgUpdateParams.SerializeToString, + injective_dot_txfees_dot_v1beta1_dot_tx__pb2.MsgUpdateParamsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2.py b/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2.py new file mode 100644 index 00000000..bc07501e --- /dev/null +++ b/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: injective/txfees/v1beta1/txfees.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.amino import amino_pb2 as amino_dot_amino__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%injective/txfees/v1beta1/txfees.proto\x12\x18injective.txfees.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x11\x61mino/amino.proto\"\x9a\x0c\n\x06Params\x12R\n\x15max_gas_wanted_per_tx\x18\x01 \x01(\x04\x42 \xf2\xde\x1f\x1cyaml:\"max_gas_wanted_per_tx\"R\x11maxGasWantedPerTx\x12S\n\x15high_gas_tx_threshold\x18\x02 \x01(\x04\x42 \xf2\xde\x1f\x1cyaml:\"high_gas_tx_threshold\"R\x12highGasTxThreshold\x12\x8b\x01\n\x1dmin_gas_price_for_high_gas_tx\x18\x03 \x01(\tBK\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f$yaml:\"min_gas_price_for_high_gas_tx\"R\x17minGasPriceForHighGasTx\x12P\n\x13mempool1559_enabled\x18\x04 \x01(\x08\x42\x1f\xf2\xde\x1f\x1byaml:\"mempool_1559_enabled\"R\x12mempool1559Enabled\x12_\n\rmin_gas_price\x18\x05 \x01(\tB;\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x14yaml:\"min_gas_price\"R\x0bminGasPrice\x12\x88\x01\n\x1b\x64\x65\x66\x61ult_base_fee_multiplier\x18\x06 \x01(\tBI\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\"yaml:\"default_base_fee_multiplier\"R\x18\x64\x65\x66\x61ultBaseFeeMultiplier\x12|\n\x17max_base_fee_multiplier\x18\x07 \x01(\tBE\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1eyaml:\"max_base_fee_multiplier\"R\x14maxBaseFeeMultiplier\x12@\n\x0ereset_interval\x18\x08 \x01(\x03\x42\x19\xf2\xde\x1f\x15yaml:\"reset_interval\"R\rresetInterval\x12v\n\x15max_block_change_rate\x18\t \x01(\tBC\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1cyaml:\"max_block_change_rate\"R\x12maxBlockChangeRate\x12\x93\x01\n\x1ftarget_block_space_percent_rate\x18\n \x01(\tBM\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f&yaml:\"target_block_space_percent_rate\"R\x1btargetBlockSpacePercentRate\x12~\n\x18recheck_fee_low_base_fee\x18\x0b \x01(\tBF\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1fyaml:\"recheck_fee_low_base_fee\"R\x14recheckFeeLowBaseFee\x12\x81\x01\n\x19recheck_fee_high_base_fee\x18\x0c \x01(\tBG\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f yaml:\"recheck_fee_high_base_fee\"R\x15recheckFeeHighBaseFee\x12\xb0\x01\n)recheck_fee_base_fee_threshold_multiplier\x18\r \x01(\tBW\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x30yaml:\"recheck_fee_base_fee_threshold_multiplier\"R$recheckFeeBaseFeeThresholdMultiplier:\x16\xe8\xa0\x1f\x01\x8a\xe7\xb0*\rtxfees/ParamsB\xff\x01\n\x1c\x63om.injective.txfees.v1beta1B\x0bTxfeesProtoP\x01ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\xa2\x02\x03ITX\xaa\x02\x18Injective.Txfees.V1beta1\xca\x02\x18Injective\\Txfees\\V1beta1\xe2\x02$Injective\\Txfees\\V1beta1\\GPBMetadata\xea\x02\x1aInjective::Txfees::V1beta1\xc0\xe3\x1e\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'injective.txfees.v1beta1.txfees_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\034com.injective.txfees.v1beta1B\013TxfeesProtoP\001ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\242\002\003ITX\252\002\030Injective.Txfees.V1beta1\312\002\030Injective\\Txfees\\V1beta1\342\002$Injective\\Txfees\\V1beta1\\GPBMetadata\352\002\032Injective::Txfees::V1beta1\300\343\036\001' + _globals['_PARAMS'].fields_by_name['max_gas_wanted_per_tx']._loaded_options = None + _globals['_PARAMS'].fields_by_name['max_gas_wanted_per_tx']._serialized_options = b'\362\336\037\034yaml:\"max_gas_wanted_per_tx\"' + _globals['_PARAMS'].fields_by_name['high_gas_tx_threshold']._loaded_options = None + _globals['_PARAMS'].fields_by_name['high_gas_tx_threshold']._serialized_options = b'\362\336\037\034yaml:\"high_gas_tx_threshold\"' + _globals['_PARAMS'].fields_by_name['min_gas_price_for_high_gas_tx']._loaded_options = None + _globals['_PARAMS'].fields_by_name['min_gas_price_for_high_gas_tx']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037$yaml:\"min_gas_price_for_high_gas_tx\"' + _globals['_PARAMS'].fields_by_name['mempool1559_enabled']._loaded_options = None + _globals['_PARAMS'].fields_by_name['mempool1559_enabled']._serialized_options = b'\362\336\037\033yaml:\"mempool_1559_enabled\"' + _globals['_PARAMS'].fields_by_name['min_gas_price']._loaded_options = None + _globals['_PARAMS'].fields_by_name['min_gas_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037\024yaml:\"min_gas_price\"' + _globals['_PARAMS'].fields_by_name['default_base_fee_multiplier']._loaded_options = None + _globals['_PARAMS'].fields_by_name['default_base_fee_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037\"yaml:\"default_base_fee_multiplier\"' + _globals['_PARAMS'].fields_by_name['max_base_fee_multiplier']._loaded_options = None + _globals['_PARAMS'].fields_by_name['max_base_fee_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037\036yaml:\"max_base_fee_multiplier\"' + _globals['_PARAMS'].fields_by_name['reset_interval']._loaded_options = None + _globals['_PARAMS'].fields_by_name['reset_interval']._serialized_options = b'\362\336\037\025yaml:\"reset_interval\"' + _globals['_PARAMS'].fields_by_name['max_block_change_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['max_block_change_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037\034yaml:\"max_block_change_rate\"' + _globals['_PARAMS'].fields_by_name['target_block_space_percent_rate']._loaded_options = None + _globals['_PARAMS'].fields_by_name['target_block_space_percent_rate']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037&yaml:\"target_block_space_percent_rate\"' + _globals['_PARAMS'].fields_by_name['recheck_fee_low_base_fee']._loaded_options = None + _globals['_PARAMS'].fields_by_name['recheck_fee_low_base_fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037\037yaml:\"recheck_fee_low_base_fee\"' + _globals['_PARAMS'].fields_by_name['recheck_fee_high_base_fee']._loaded_options = None + _globals['_PARAMS'].fields_by_name['recheck_fee_high_base_fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037 yaml:\"recheck_fee_high_base_fee\"' + _globals['_PARAMS'].fields_by_name['recheck_fee_base_fee_threshold_multiplier']._loaded_options = None + _globals['_PARAMS'].fields_by_name['recheck_fee_base_fee_threshold_multiplier']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\0370yaml:\"recheck_fee_base_fee_threshold_multiplier\"' + _globals['_PARAMS']._loaded_options = None + _globals['_PARAMS']._serialized_options = b'\350\240\037\001\212\347\260*\rtxfees/Params' + _globals['_PARAMS']._serialized_start=139 + _globals['_PARAMS']._serialized_end=1701 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2_grpc.py b/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2_grpc.py new file mode 100644 index 00000000..2daafffe --- /dev/null +++ b/pyinjective/proto/injective/txfees/v1beta1/txfees_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/osmosis/txfees/v1beta1/query_pb2.py b/pyinjective/proto/osmosis/txfees/v1beta1/query_pb2.py new file mode 100644 index 00000000..26b8e89f --- /dev/null +++ b/pyinjective/proto/osmosis/txfees/v1beta1/query_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: osmosis/txfees/v1beta1/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 google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"osmosis/txfees/v1beta1/query.proto\x12\x16osmosis.txfees.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\"\x18\n\x16QueryEipBaseFeeRequest\"l\n\x17QueryEipBaseFeeResponse\x12Q\n\x08\x62\x61se_fee\x18\x01 \x01(\tB6\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x0fyaml:\"base_fee\"R\x07\x62\x61seFee2\xac\x01\n\x05Query\x12\xa2\x01\n\rGetEipBaseFee\x12..osmosis.txfees.v1beta1.QueryEipBaseFeeRequest\x1a/.osmosis.txfees.v1beta1.QueryEipBaseFeeResponse\"0\x82\xd3\xe4\x93\x02*\x12(/osmosis/txfees/v1beta1/cur_eip_base_feeB\xf8\x01\n\x1a\x63om.osmosis.txfees.v1beta1B\nQueryProtoP\x01ZTgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/osmosis/types\xa2\x02\x03OTX\xaa\x02\x16Osmosis.Txfees.V1beta1\xca\x02\x16Osmosis\\Txfees\\V1beta1\xe2\x02\"Osmosis\\Txfees\\V1beta1\\GPBMetadata\xea\x02\x18Osmosis::Txfees::V1beta1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'osmosis.txfees.v1beta1.query_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\032com.osmosis.txfees.v1beta1B\nQueryProtoP\001ZTgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/osmosis/types\242\002\003OTX\252\002\026Osmosis.Txfees.V1beta1\312\002\026Osmosis\\Txfees\\V1beta1\342\002\"Osmosis\\Txfees\\V1beta1\\GPBMetadata\352\002\030Osmosis::Txfees::V1beta1' + _globals['_QUERYEIPBASEFEERESPONSE'].fields_by_name['base_fee']._loaded_options = None + _globals['_QUERYEIPBASEFEERESPONSE'].fields_by_name['base_fee']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037\017yaml:\"base_fee\"' + _globals['_QUERY'].methods_by_name['GetEipBaseFee']._loaded_options = None + _globals['_QUERY'].methods_by_name['GetEipBaseFee']._serialized_options = b'\202\323\344\223\002*\022(/osmosis/txfees/v1beta1/cur_eip_base_fee' + _globals['_QUERYEIPBASEFEEREQUEST']._serialized_start=146 + _globals['_QUERYEIPBASEFEEREQUEST']._serialized_end=170 + _globals['_QUERYEIPBASEFEERESPONSE']._serialized_start=172 + _globals['_QUERYEIPBASEFEERESPONSE']._serialized_end=280 + _globals['_QUERY']._serialized_start=283 + _globals['_QUERY']._serialized_end=455 +# @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/osmosis/txfees/v1beta1/query_pb2_grpc.py b/pyinjective/proto/osmosis/txfees/v1beta1/query_pb2_grpc.py new file mode 100644 index 00000000..7c8cdd9b --- /dev/null +++ b/pyinjective/proto/osmosis/txfees/v1beta1/query_pb2_grpc.py @@ -0,0 +1,78 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from osmosis.txfees.v1beta1 import query_pb2 as osmosis_dot_txfees_dot_v1beta1_dot_query__pb2 + + +class QueryStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetEipBaseFee = channel.unary_unary( + '/osmosis.txfees.v1beta1.Query/GetEipBaseFee', + request_serializer=osmosis_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeRequest.SerializeToString, + response_deserializer=osmosis_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeResponse.FromString, + _registered_method=True) + + +class QueryServicer(object): + """Missing associated documentation comment in .proto file.""" + + def GetEipBaseFee(self, request, context): + """Returns the current fee market EIP fee. + """ + 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 = { + 'GetEipBaseFee': grpc.unary_unary_rpc_method_handler( + servicer.GetEipBaseFee, + request_deserializer=osmosis_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeRequest.FromString, + response_serializer=osmosis_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'osmosis.txfees.v1beta1.Query', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('osmosis.txfees.v1beta1.Query', rpc_method_handlers) + + + # This class is part of an EXPERIMENTAL API. +class Query(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def GetEipBaseFee(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, + '/osmosis.txfees.v1beta1.Query/GetEipBaseFee', + osmosis_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeRequest.SerializeToString, + osmosis_dot_txfees_dot_v1beta1_dot_query__pb2.QueryEipBaseFeeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/tests/client/chain/grpc/configurable_txfees_query_servicer.py b/tests/client/chain/grpc/configurable_txfees_query_servicer.py new file mode 100644 index 00000000..ef288a72 --- /dev/null +++ b/tests/client/chain/grpc/configurable_txfees_query_servicer.py @@ -0,0 +1,16 @@ +from collections import deque + +from pyinjective.proto.injective.txfees.v1beta1 import query_pb2 as txfees_query_pb, query_pb2_grpc as txfees_query_grpc + + +class ConfigurableTxfeesQueryServicer(txfees_query_grpc.QueryServicer): + def __init__(self): + super().__init__() + self.params_responses = deque() + self.eip_base_fee_responses = deque() + + async def Params(self, request: txfees_query_pb.QueryParamsRequest, context=None, metadata=None): + return self.params_responses.pop() + + async def GetEipBaseFee(self, request: txfees_query_pb.QueryEipBaseFeeRequest, context=None, metadata=None): + return self.eip_base_fee_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 fbab995c..64ed3a25 100644 --- a/tests/client/chain/grpc/test_chain_grpc_exchange_api.py +++ b/tests/client/chain/grpc/test_chain_grpc_exchange_api.py @@ -2549,9 +2549,12 @@ async def test_fetch_market_balance( self, exchange_servicer, ): - balance = "1000000000000000000" # Decimal as a string + market_balance = exchange_query_pb.MarketBalance( + market_id="0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe", + balance="1000000000000000000", + ) response = exchange_query_pb.QueryMarketBalanceResponse( - balance=balance, + balance=market_balance, ) exchange_servicer.market_balance_responses.append(response) @@ -2560,7 +2563,12 @@ async def test_fetch_market_balance( market_balance_response = await api.fetch_market_balance( market_id="0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" ) - expected_market_balance = {"balance": balance} + expected_market_balance = { + "balance": { + "marketId": market_balance.market_id, + "balance": market_balance.balance, + } + } assert market_balance_response == expected_market_balance diff --git a/tests/client/chain/grpc/test_chain_grpc_txfees_api.py b/tests/client/chain/grpc/test_chain_grpc_txfees_api.py new file mode 100644 index 00000000..512a7c2f --- /dev/null +++ b/tests/client/chain/grpc/test_chain_grpc_txfees_api.py @@ -0,0 +1,85 @@ +import grpc +import pytest + +from pyinjective.client.chain.grpc.chain_grpc_txfees_api import ChainGrpcTxfeesApi +from pyinjective.core.network import DisabledCookieAssistant, Network +from pyinjective.proto.injective.txfees.v1beta1 import query_pb2 as txfees_query_pb, txfees_pb2 as txfees_pb +from tests.client.chain.grpc.configurable_txfees_query_servicer import ConfigurableTxfeesQueryServicer + + +@pytest.fixture +def txfees_query_servicer(): + return ConfigurableTxfeesQueryServicer() + + +class TestChainGrpcTxfeesApi: + @pytest.mark.asyncio + async def test_fetch_module_params( + self, + txfees_query_servicer, + ): + params = txfees_pb.Params( + max_gas_wanted_per_tx=10, + high_gas_tx_threshold=20, + min_gas_price_for_high_gas_tx="30", + mempool1559_enabled=True, + min_gas_price="40", + default_base_fee_multiplier="1.5", + max_base_fee_multiplier="1.9", + reset_interval=100, + max_block_change_rate="0.75", + target_block_space_percent_rate="0.4", + recheck_fee_low_base_fee="0.15", + recheck_fee_high_base_fee="0.25", + recheck_fee_base_fee_threshold_multiplier="0.9", + ) + txfees_query_servicer.params_responses.append(txfees_query_pb.QueryParamsResponse(params=params)) + + api = self._api_instance(servicer=txfees_query_servicer) + + module_params = await api.fetch_module_params() + expected_params = { + "params": { + "maxGasWantedPerTx": str(params.max_gas_wanted_per_tx), + "highGasTxThreshold": str(params.high_gas_tx_threshold), + "minGasPriceForHighGasTx": str(params.min_gas_price_for_high_gas_tx), + "mempool1559Enabled": params.mempool1559_enabled, + "minGasPrice": str(params.min_gas_price), + "defaultBaseFeeMultiplier": str(params.default_base_fee_multiplier), + "maxBaseFeeMultiplier": str(params.max_base_fee_multiplier), + "resetInterval": str(params.reset_interval), + "maxBlockChangeRate": str(params.max_block_change_rate), + "targetBlockSpacePercentRate": str(params.target_block_space_percent_rate), + "recheckFeeLowBaseFee": str(params.recheck_fee_low_base_fee), + "recheckFeeHighBaseFee": str(params.recheck_fee_high_base_fee), + "recheckFeeBaseFeeThresholdMultiplier": str(params.recheck_fee_base_fee_threshold_multiplier), + } + } + + assert module_params == expected_params + + @pytest.mark.asyncio + async def test_fetch_eip_base_fee(self, txfees_query_servicer): + eip_base_fee = txfees_query_pb.EipBaseFee( + base_fee="1000000000000000000", + ) + txfees_query_servicer.eip_base_fee_responses.append( + txfees_query_pb.QueryEipBaseFeeResponse(base_fee=eip_base_fee) + ) + + api = self._api_instance(servicer=txfees_query_servicer) + + eip_base_fee_response = await api.fetch_eip_base_fee() + expected_eip_base_fee = {"baseFee": {"baseFee": str(eip_base_fee.base_fee)}} + + assert eip_base_fee_response == expected_eip_base_fee + + def _api_instance(self, servicer): + network = Network.devnet() + channel = grpc.aio.insecure_channel(network.grpc_endpoint) + cookie_assistant = DisabledCookieAssistant() + + api = ChainGrpcTxfeesApi(channel=channel, cookie_assistant=cookie_assistant) + api._query_stub = servicer + + return api diff --git a/tests/core/test_gas_heuristics_gas_limit_estimator.py b/tests/core/test_gas_heuristics_gas_limit_estimator.py new file mode 100644 index 00000000..32d0cc95 --- /dev/null +++ b/tests/core/test_gas_heuristics_gas_limit_estimator.py @@ -0,0 +1,850 @@ +from decimal import Decimal + +import pytest + +from pyinjective.composer import Composer +from pyinjective.core.gas_heuristics_gas_limit_estimator import ( + BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT, + BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT, + BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT, + DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT, + DEPOSIT_GAS_LIMIT, + DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT, + DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT, + DERIVATIVE_ORDER_CREATION_GAS_LIMIT, + EXTERNAL_TRANSFER_GAS_LIMIT, + INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT, + POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT, + POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT, + POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT, + SPOT_MARKET_ORDER_CREATION_GAS_LIMIT, + SPOT_ORDER_CANCELATION_GAS_LIMIT, + SPOT_ORDER_CREATION_GAS_LIMIT, + SUBACCOUNT_TRANSFER_GAS_LIMIT, + WITHDRAW_GAS_LIMIT, + BatchUpdateOrdersGasLimitEstimator, + GasHeuristicsGasLimitEstimator, +) +from pyinjective.core.gas_limit_estimator import ExecGasLimitEstimator +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 + + +class TestGasLimitEstimator: + @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_message_without_applying_rule(self, basic_composer): + message = basic_composer.MsgSend(from_address="from_address", to_address="to_address", amount=1, denom="INJ") + + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_message_gas_limit = 150_000 + + assert expected_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_batch_create_spot_limit_orders(self, basic_composer): + spot_market_id = list(basic_composer.spot_markets.keys())[0] + orders = [ + basic_composer.spot_order( + market_id=spot_market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("5"), + quantity=Decimal("1"), + order_type="BUY", + ), + basic_composer.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 = basic_composer.msg_batch_create_spot_limit_orders(sender="sender", orders=orders) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + + assert (expected_order_gas_limit * 2) == estimator.gas_limit() + + def test_estimation_for_batch_cancel_spot_orders(self): + spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + orders = [ + composer.order_data( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.order_data( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.order_data( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_cancel_spot_orders(sender="sender", orders_data=orders) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CANCELATION_GAS_LIMIT + + assert (expected_order_gas_limit * 3) == estimator.gas_limit() + + def test_estimation_for_batch_create_derivative_limit_orders(self, basic_composer): + market_id = list(basic_composer.derivative_markets.keys())[0] + orders = [ + basic_composer.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", + ), + basic_composer.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 = basic_composer.msg_batch_create_derivative_limit_orders(sender="sender", orders=orders) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + + assert (expected_order_gas_limit * 2) == estimator.gas_limit() + + def test_estimation_for_batch_cancel_derivative_orders(self): + spot_market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + orders = [ + composer.order_data( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.order_data( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.order_data( + market_id=spot_market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_cancel_derivative_orders(sender="sender", orders_data=orders) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + + assert (expected_order_gas_limit * 3) == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_create_spot_orders(self, basic_composer): + market_id = list(basic_composer.spot_markets.keys())[0] + orders = [ + basic_composer.spot_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("5"), + quantity=Decimal("1"), + order_type="BUY", + ), + basic_composer.spot_order( + market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("4"), + quantity=Decimal("1"), + order_type="BUY", + ), + ] + 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=[], + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + + assert (expected_order_gas_limit * 2) == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_create_derivative_orders(self, basic_composer): + market_id = list(basic_composer.derivative_markets.keys())[0] + orders = [ + basic_composer.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", + ), + basic_composer.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 = basic_composer.msg_batch_update_orders( + sender="senders", + derivative_orders_to_create=orders, + spot_orders_to_create=[], + derivative_orders_to_cancel=[], + spot_orders_to_cancel=[], + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + + assert (expected_order_gas_limit * 2) == estimator.gas_limit() + + 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.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.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( + 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 = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + + assert (expected_order_gas_limit * 2) == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self): + market_id = "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" + composer = Composer(network="testnet") + orders = [ + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_update_orders( + sender="senders", + derivative_orders_to_create=[], + spot_orders_to_create=[], + derivative_orders_to_cancel=[], + spot_orders_to_cancel=orders, + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CANCELATION_GAS_LIMIT + + assert (expected_order_gas_limit * 3) == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self): + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + composer = Composer(network="testnet") + orders = [ + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_update_orders( + sender="senders", + derivative_orders_to_create=[], + spot_orders_to_create=[], + derivative_orders_to_cancel=orders, + spot_orders_to_cancel=[], + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + + assert (expected_order_gas_limit * 3) == estimator.gas_limit() + + def test_estimation_for_batch_update_orders_to_cancel_binary_orders(self): + market_id = "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6" + composer = Composer(network="testnet") + orders = [ + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x3870fbdd91f07d54425147b1bb96404f4f043ba6335b422a6d494d285b387f2d", + ), + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x222daa22f60fe9f075ed0ca583459e121c23e64431c3fbffdedda04598ede0d2", + ), + composer.order_data( + market_id=market_id, + subaccount_id="subaccount_id", + order_hash="0x7ee76255d7ca763c56b0eab9828fca89fdd3739645501c8a80f58b62b4f76da5", + ), + ] + message = composer.msg_batch_update_orders( + 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 = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + + assert (expected_order_gas_limit * 3) == 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( + 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 = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_limit = ( + BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS * SPOT_ORDER_CANCELATION_GAS_LIMIT + ) + + assert expected_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( + 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 = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_limit = ( + BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS + * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + ) + + assert expected_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( + 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 = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_limit = ( + BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS + * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + ) + + assert expected_gas_limit == estimator.gas_limit() + + def test_estimation_for_create_spot_limit_order(self, basic_composer, inj_usdt_spot_market): + composer = basic_composer + market_id = inj_usdt_spot_market.id + + message = composer.msg_create_spot_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + order_type="BUY", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = SPOT_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + po_order_message = composer.msg_create_spot_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + order_type="BUY_PO", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=po_order_message) + + expected_gas_cost = POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_spot_market_order(self, basic_composer, inj_usdt_spot_market): + composer = basic_composer + market_id = inj_usdt_spot_market.id + + message = composer.msg_create_spot_market_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + order_type="BUY", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = SPOT_MARKET_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_cancel_spot_order(self, basic_composer, inj_usdt_spot_market): + composer = basic_composer + market_id = inj_usdt_spot_market.id + + message = composer.msg_cancel_spot_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + cid="cid", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = SPOT_ORDER_CANCELATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_derivative_limit_order(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + market_id = btc_usdt_perp_market.id + + message = composer.msg_create_derivative_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + margin=Decimal("7.523") * Decimal("0.01"), + order_type="BUY", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + po_order_message = composer.msg_create_derivative_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + margin=Decimal("7.523") * Decimal("0.01"), + order_type="BUY_PO", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=po_order_message) + + expected_gas_cost = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_derivative_market_order(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + market_id = btc_usdt_perp_market.id + + message = composer.msg_create_derivative_market_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + margin=Decimal("7.523") * Decimal("0.01"), + order_type="BUY", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_cancel_derivative_order(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + market_id = btc_usdt_perp_market.id + + message = composer.msg_cancel_derivative_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + cid="cid", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_binary_options_limit_order(self, basic_composer, first_match_bet_market): + composer = basic_composer + market_id = first_match_bet_market.id + + message = composer.msg_create_binary_options_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("0.5"), + quantity=Decimal("10"), + margin=Decimal("0.5") * Decimal("10"), + order_type="BUY", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + po_order_message = composer.msg_create_binary_options_limit_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("0.5"), + quantity=Decimal("10"), + margin=Decimal("0.5") * Decimal("10"), + order_type="BUY_PO", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=po_order_message) + + expected_gas_cost = POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_create_binary_options_market_order(self, basic_composer, first_match_bet_market): + composer = basic_composer + market_id = first_match_bet_market.id + + message = composer.msg_create_binary_options_market_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("0.5"), + quantity=Decimal("10"), + margin=Decimal("0.5") * Decimal("10"), + order_type="BUY", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_cancel_binary_options_order(self, basic_composer, first_match_bet_market): + composer = basic_composer + market_id = first_match_bet_market.id + + message = composer.msg_cancel_binary_options_order( + market_id=market_id, + sender="senders", + subaccount_id="subaccount_id", + cid="cid", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_deposit(self, basic_composer): + composer = basic_composer + + message = composer.msg_deposit( + sender="senders", + subaccount_id="subaccount_id", + amount=Decimal("10"), + denom=list(composer.tokens.keys())[0], + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = DEPOSIT_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_withdraw(self, basic_composer): + composer = basic_composer + + message = composer.msg_withdraw( + sender="senders", + subaccount_id="subaccount_id", + amount=Decimal("10"), + denom=list(composer.tokens.keys())[0], + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = WITHDRAW_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_subaccount_transfer(self, basic_composer): + composer = basic_composer + + message = composer.msg_subaccount_transfer( + sender="senders", + source_subaccount_id="subaccount_id", + destination_subaccount_id="destination_subaccount_id", + amount=Decimal("10"), + denom=list(composer.tokens.keys())[0], + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = SUBACCOUNT_TRANSFER_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_external_transfer(self, basic_composer): + composer = basic_composer + + message = composer.msg_external_transfer( + sender="senders", + source_subaccount_id="subaccount_id", + destination_subaccount_id="destination_subaccount_id", + amount=Decimal("10"), + denom=list(composer.tokens.keys())[0], + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = EXTERNAL_TRANSFER_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_increase_position_margin(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + + message = composer.msg_increase_position_margin( + sender="senders", + source_subaccount_id="subaccount_id", + destination_subaccount_id="destination_subaccount_id", + market_id=btc_usdt_perp_market.id, + amount=Decimal("10"), + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_decrease_position_margin(self, basic_composer, btc_usdt_perp_market): + composer = basic_composer + + message = composer.msg_decrease_position_margin( + sender="senders", + source_subaccount_id="subaccount_id", + destination_subaccount_id="destination_subaccount_id", + market_id=btc_usdt_perp_market.id, + amount=Decimal("10"), + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_cost = DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT + + assert expected_gas_cost == estimator.gas_limit() + + def test_estimation_for_exec_message(self, basic_composer): + market_id = list(basic_composer.spot_markets.keys())[0] + orders = [ + basic_composer.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 = 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 = basic_composer.MsgExec(grantee="grantee", msgs=[inner_message]) + + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + expected_exec_message_gas_limit = ExecGasLimitEstimator.DEFAULT_GAS_LIMIT + + assert expected_order_gas_limit + expected_exec_message_gas_limit == estimator.gas_limit() + + def test_estimation_for_privileged_execute_contract_message(self): + message = injective_exchange_tx_pb.MsgPrivilegedExecuteContract() + estimator = GasHeuristicsGasLimitEstimator.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 = GasHeuristicsGasLimitEstimator.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 = GasHeuristicsGasLimitEstimator.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 = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_limit = 2_250_000 + + assert expected_gas_limit == estimator.gas_limit() + + def test_estimation_for_generic_exchange_message(self, basic_composer): + market_id = list(basic_composer.derivative_markets.keys())[0] + message = basic_composer.msg_liquidate_position( + sender="sender", + market_id=market_id, + subaccount_id="subaccount_id", + ) + estimator = GasHeuristicsGasLimitEstimator.for_message(message=message) + + expected_gas_limit = 120_000 + + assert expected_gas_limit == estimator.gas_limit() diff --git a/tests/core/test_gas_limit_estimator.py b/tests/core/test_gas_limit_estimator.py index 8d74d555..fa336e64 100644 --- a/tests/core/test_gas_limit_estimator.py +++ b/tests/core/test_gas_limit_estimator.py @@ -4,24 +4,14 @@ from pyinjective.composer import Composer from pyinjective.core.gas_limit_estimator import ( - BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT, - BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT, - BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT, - DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT, - DEPOSIT_GAS_LIMIT, - DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT, DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT, DERIVATIVE_ORDER_CREATION_GAS_LIMIT, - EXTERNAL_TRANSFER_GAS_LIMIT, - INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT, - POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT, - POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT, - POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT, - SPOT_MARKET_ORDER_CREATION_GAS_LIMIT, SPOT_ORDER_CANCELATION_GAS_LIMIT, SPOT_ORDER_CREATION_GAS_LIMIT, - SUBACCOUNT_TRANSFER_GAS_LIMIT, - WITHDRAW_GAS_LIMIT, + BatchCancelDerivativeOrdersGasLimitEstimator, + BatchCancelSpotOrdersGasLimitEstimator, + BatchCreateDerivativeLimitOrdersGasLimitEstimator, + BatchCreateSpotLimitOrdersGasLimitEstimator, BatchUpdateOrdersGasLimitEstimator, ExecGasLimitEstimator, GasLimitEstimator, @@ -89,8 +79,9 @@ def test_estimation_for_batch_create_spot_limit_orders(self, basic_composer): 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) == estimator.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" @@ -116,8 +107,9 @@ def test_estimation_for_batch_cancel_spot_orders(self): 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) == estimator.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, basic_composer): market_id = list(basic_composer.derivative_markets.keys())[0] @@ -145,8 +137,9 @@ def test_estimation_for_batch_create_derivative_limit_orders(self, basic_compose 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) == estimator.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" @@ -172,8 +165,9 @@ def test_estimation_for_batch_cancel_derivative_orders(self): 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) == estimator.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, basic_composer): market_id = list(basic_composer.spot_markets.keys())[0] @@ -205,8 +199,9 @@ def test_estimation_for_batch_update_orders_to_create_spot_orders(self, basic_co estimator = GasLimitEstimator.for_message(message=message) expected_order_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert (expected_order_gas_limit * 2) == estimator.gas_limit() + 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, basic_composer): market_id = list(basic_composer.derivative_markets.keys())[0] @@ -240,8 +235,9 @@ def test_estimation_for_batch_update_orders_to_create_derivative_orders(self, ba estimator = GasLimitEstimator.for_message(message=message) expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert (expected_order_gas_limit * 2) == estimator.gas_limit() + 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" @@ -295,9 +291,10 @@ def test_estimation_for_batch_update_orders_to_create_binary_orders(self, usdt_t ) estimator = GasLimitEstimator.for_message(message=message) - expected_order_gas_limit = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + expected_order_gas_limit = DERIVATIVE_ORDER_CREATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert (expected_order_gas_limit * 2) == 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" @@ -329,8 +326,9 @@ def test_estimation_for_batch_update_orders_to_cancel_spot_orders(self): 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) == estimator.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" @@ -362,8 +360,9 @@ def test_estimation_for_batch_update_orders_to_cancel_derivative_orders(self): 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) == estimator.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" @@ -395,9 +394,10 @@ def test_estimation_for_batch_update_orders_to_cancel_binary_orders(self): ) estimator = GasLimitEstimator.for_message(message=message) - expected_order_gas_limit = BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT + expected_order_gas_limit = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert (expected_order_gas_limit * 3) == estimator.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" @@ -414,11 +414,10 @@ def test_estimation_for_batch_update_orders_to_cancel_all_for_spot_market(self): ) estimator = GasLimitEstimator.for_message(message=message) - expected_gas_limit = ( - BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS * SPOT_ORDER_CANCELATION_GAS_LIMIT - ) + expected_gas_limit = BatchUpdateOrdersGasLimitEstimator.CANCEL_ALL_SPOT_MARKET_GAS_LIMIT * 20 + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert expected_gas_limit == estimator.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" @@ -435,12 +434,10 @@ def test_estimation_for_batch_update_orders_to_cancel_all_for_derivative_market( ) estimator = GasLimitEstimator.for_message(message=message) - expected_gas_limit = ( - BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS - * DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT - ) + expected_gas_limit = BatchUpdateOrdersGasLimitEstimator.CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT * 20 + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert expected_gas_limit == estimator.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" @@ -457,319 +454,10 @@ def test_estimation_for_batch_update_orders_to_cancel_all_for_binary_options_mar ) estimator = GasLimitEstimator.for_message(message=message) - expected_gas_limit = ( - BatchUpdateOrdersGasLimitEstimator.AVERAGE_CANCEL_ALL_AFFECTED_ORDERS - * BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT - ) - - assert expected_gas_limit == estimator.gas_limit() - - def test_estimation_for_create_spot_limit_order(self, basic_composer, inj_usdt_spot_market): - composer = basic_composer - market_id = inj_usdt_spot_market.id - - message = composer.msg_create_spot_limit_order( - market_id=market_id, - sender="senders", - 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_cost = SPOT_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - po_order_message = composer.msg_create_spot_limit_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - fee_recipient="fee_recipient", - price=Decimal("7.523"), - quantity=Decimal("0.01"), - order_type="BUY_PO", - ) - estimator = GasLimitEstimator.for_message(message=po_order_message) - - expected_gas_cost = POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_create_spot_market_order(self, basic_composer, inj_usdt_spot_market): - composer = basic_composer - market_id = inj_usdt_spot_market.id - - message = composer.msg_create_spot_market_order( - market_id=market_id, - sender="senders", - 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_cost = SPOT_MARKET_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_cancel_spot_order(self, basic_composer, inj_usdt_spot_market): - composer = basic_composer - market_id = inj_usdt_spot_market.id - - message = composer.msg_cancel_spot_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - cid="cid", - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = SPOT_ORDER_CANCELATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_create_derivative_limit_order(self, basic_composer, btc_usdt_perp_market): - composer = basic_composer - market_id = btc_usdt_perp_market.id - - message = composer.msg_create_derivative_limit_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - fee_recipient="fee_recipient", - price=Decimal("7.523"), - quantity=Decimal("0.01"), - margin=Decimal("7.523") * Decimal("0.01"), - order_type="BUY", - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = DERIVATIVE_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - po_order_message = composer.msg_create_derivative_limit_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - fee_recipient="fee_recipient", - price=Decimal("7.523"), - quantity=Decimal("0.01"), - margin=Decimal("7.523") * Decimal("0.01"), - order_type="BUY_PO", - ) - estimator = GasLimitEstimator.for_message(message=po_order_message) - - expected_gas_cost = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_create_derivative_market_order(self, basic_composer, btc_usdt_perp_market): - composer = basic_composer - market_id = btc_usdt_perp_market.id - - message = composer.msg_create_derivative_market_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - fee_recipient="fee_recipient", - price=Decimal("7.523"), - quantity=Decimal("0.01"), - margin=Decimal("7.523") * Decimal("0.01"), - order_type="BUY", - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_cancel_derivative_order(self, basic_composer, btc_usdt_perp_market): - composer = basic_composer - market_id = btc_usdt_perp_market.id - - message = composer.msg_cancel_derivative_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - cid="cid", - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_create_binary_options_limit_order(self, basic_composer, first_match_bet_market): - composer = basic_composer - market_id = first_match_bet_market.id - - message = composer.msg_create_binary_options_limit_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - fee_recipient="fee_recipient", - price=Decimal("0.5"), - quantity=Decimal("10"), - margin=Decimal("0.5") * Decimal("10"), - order_type="BUY", - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - po_order_message = composer.msg_create_binary_options_limit_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - fee_recipient="fee_recipient", - price=Decimal("0.5"), - quantity=Decimal("10"), - margin=Decimal("0.5") * Decimal("10"), - order_type="BUY_PO", - ) - estimator = GasLimitEstimator.for_message(message=po_order_message) - - expected_gas_cost = POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_create_binary_options_market_order(self, basic_composer, first_match_bet_market): - composer = basic_composer - market_id = first_match_bet_market.id - - message = composer.msg_create_binary_options_market_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - fee_recipient="fee_recipient", - price=Decimal("0.5"), - quantity=Decimal("10"), - margin=Decimal("0.5") * Decimal("10"), - order_type="BUY", - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_cancel_binary_options_order(self, basic_composer, first_match_bet_market): - composer = basic_composer - market_id = first_match_bet_market.id - - message = composer.msg_cancel_binary_options_order( - market_id=market_id, - sender="senders", - subaccount_id="subaccount_id", - cid="cid", - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_deposit(self, basic_composer): - composer = basic_composer - - message = composer.msg_deposit( - sender="senders", - subaccount_id="subaccount_id", - amount=Decimal("10"), - denom=list(composer.tokens.keys())[0], - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = DEPOSIT_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_withdraw(self, basic_composer): - composer = basic_composer - - message = composer.msg_withdraw( - sender="senders", - subaccount_id="subaccount_id", - amount=Decimal("10"), - denom=list(composer.tokens.keys())[0], - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = WITHDRAW_GAS_LIMIT + expected_gas_limit = BatchUpdateOrdersGasLimitEstimator.CANCEL_ALL_DERIVATIVE_MARKET_GAS_LIMIT * 20 + expected_message_gas_limit = BatchUpdateOrdersGasLimitEstimator.MESSAGE_GAS_LIMIT - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_subaccount_transfer(self, basic_composer): - composer = basic_composer - - message = composer.msg_subaccount_transfer( - sender="senders", - source_subaccount_id="subaccount_id", - destination_subaccount_id="destination_subaccount_id", - amount=Decimal("10"), - denom=list(composer.tokens.keys())[0], - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = SUBACCOUNT_TRANSFER_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_external_transfer(self, basic_composer): - composer = basic_composer - - message = composer.msg_external_transfer( - sender="senders", - source_subaccount_id="subaccount_id", - destination_subaccount_id="destination_subaccount_id", - amount=Decimal("10"), - denom=list(composer.tokens.keys())[0], - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = EXTERNAL_TRANSFER_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_increase_position_margin(self, basic_composer, btc_usdt_perp_market): - composer = basic_composer - - message = composer.msg_increase_position_margin( - sender="senders", - source_subaccount_id="subaccount_id", - destination_subaccount_id="destination_subaccount_id", - market_id=btc_usdt_perp_market.id, - amount=Decimal("10"), - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = INCREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() - - def test_estimation_for_decrease_position_margin(self, basic_composer, btc_usdt_perp_market): - composer = basic_composer - - message = composer.msg_decrease_position_margin( - sender="senders", - source_subaccount_id="subaccount_id", - destination_subaccount_id="destination_subaccount_id", - market_id=btc_usdt_perp_market.id, - amount=Decimal("10"), - ) - estimator = GasLimitEstimator.for_message(message=message) - - expected_gas_cost = DECREASE_POSITION_MARGIN_TRANSFER_GAS_LIMIT - - assert expected_gas_cost == estimator.gas_limit() + assert expected_gas_limit + expected_message_gas_limit == estimator.gas_limit() def test_estimation_for_exec_message(self, basic_composer): market_id = list(basic_composer.spot_markets.keys())[0] @@ -795,9 +483,13 @@ def test_estimation_for_exec_message(self, basic_composer): 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_exec_message_gas_limit == estimator.gas_limit() + assert ( + expected_order_gas_limit + expected_inner_message_gas_limit + expected_exec_message_gas_limit + == estimator.gas_limit() + ) def test_estimation_for_privileged_execute_contract_message(self): message = injective_exchange_tx_pb.MsgPrivilegedExecuteContract() @@ -837,11 +529,15 @@ def test_estimation_for_governance_message(self): assert expected_gas_limit == estimator.gas_limit() def test_estimation_for_generic_exchange_message(self, basic_composer): - market_id = list(basic_composer.derivative_markets.keys())[0] - message = basic_composer.msg_liquidate_position( + market_id = list(basic_composer.spot_markets.keys())[0] + message = basic_composer.msg_create_spot_limit_order( sender="sender", market_id=market_id, 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) diff --git a/tests/core/test_message_based_transaction_fee_calculator.py b/tests/core/test_message_based_transaction_fee_calculator.py index f6b8b9d0..13465f77 100644 --- a/tests/core/test_message_based_transaction_fee_calculator.py +++ b/tests/core/test_message_based_transaction_fee_calculator.py @@ -8,9 +8,9 @@ from pyinjective.composer import Composer from pyinjective.core.broadcaster import MessageBasedTransactionFeeCalculator from pyinjective.core.gas_limit_estimator import ( - SPOT_ORDER_CREATION_GAS_LIMIT, DefaultGasLimitEstimator, ExecGasLimitEstimator, + GenericExchangeGasLimitEstimator, PrivilegedExecuteContractGasLimitEstimator, ) from pyinjective.core.network import Network @@ -148,10 +148,14 @@ async def test_gas_fee_for_exchange_message(self, basic_composer): market_id = list(basic_composer.spot_markets.keys())[0] - message = basic_composer.msg_liquidate_position( + message = basic_composer.msg_create_spot_limit_order( sender="sender", - subaccount_id="subaccount_id", market_id=market_id, + subaccount_id="subaccount_id", + fee_recipient="fee_recipient", + price=Decimal("7.523"), + quantity=Decimal("0.01"), + order_type="BUY", ) transaction = Transaction() transaction.with_messages(message) @@ -191,7 +195,7 @@ async def test_gas_fee_for_msg_exec_message(self, basic_composer): await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT - expected_inner_message_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + expected_inner_message_gas_limit = GenericExchangeGasLimitEstimator.BASIC_REFERENCE_GAS_LIMIT expected_exec_message_gas_limit = ExecGasLimitEstimator.DEFAULT_GAS_LIMIT expected_gas_limit = math.ceil( expected_exec_message_gas_limit + expected_inner_message_gas_limit + expected_transaction_gas_limit @@ -230,7 +234,7 @@ async def test_gas_fee_for_two_messages_in_one_transaction(self, basic_composer) await calculator.configure_gas_fee_for_transaction(transaction=transaction, private_key=None, public_key=None) expected_transaction_gas_limit = MessageBasedTransactionFeeCalculator.TRANSACTION_ANTE_GAS_LIMIT - expected_inner_message_gas_limit = SPOT_ORDER_CREATION_GAS_LIMIT + expected_inner_message_gas_limit = GenericExchangeGasLimitEstimator.BASIC_REFERENCE_GAS_LIMIT expected_exec_message_gas_limit = ExecGasLimitEstimator.DEFAULT_GAS_LIMIT expected_send_message_gas_limit = DefaultGasLimitEstimator.DEFAULT_GAS_LIMIT expected_gas_limit = math.ceil( From f675e2af0f6a44b9c3896f28d6639a294acac901 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:26:03 -0300 Subject: [PATCH 07/13] fix: fix broadcaster creation example scripts --- .../chain_client/5_MessageBroadcasterWithoutSimulation.py | 2 +- ...6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py b/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py index 8e55700b..c463b699 100644 --- a/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py +++ b/examples/chain_client/5_MessageBroadcasterWithoutSimulation.py @@ -27,7 +27,7 @@ async def main() -> None: # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted gas_price = int(gas_price * 1.1) - message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( + message_broadcaster = MsgBroadcasterWithPk.new_without_simulation( network=network, private_key=private_key_in_hexa, gas_price=gas_price, diff --git a/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py b/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py index 57ad19c8..5bfb75ce 100644 --- a/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py +++ b/examples/chain_client/6_MessageBroadcasterWithGranteeAccountWithoutSimulation.py @@ -33,9 +33,9 @@ async def main() -> None: # adjust gas price to make it valid even if it changes between the time it is requested and the TX is broadcasted gas_price = int(gas_price * 1.1) - message_broadcaster = MsgBroadcasterWithPk.new_using_simulation( + message_broadcaster = MsgBroadcasterWithPk.new_for_grantee_account_without_simulation( network=network, - private_key=private_key_in_hexa, + grantee_private_key=private_key_in_hexa, gas_price=gas_price, client=client, composer=composer, From 02165b5394a2470b26dfa7d88e2054d1fc3010f4 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:15:02 -0300 Subject: [PATCH 08/13] fix: pointed to the correct injective-core branch for the proto generation --- buf.gen.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buf.gen.yaml b/buf.gen.yaml index 1421c939..b23753a2 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -24,6 +24,6 @@ inputs: # tag: v1.15.0-alpha # subdir: proto - git_repo: https://github.com/InjectiveLabs/injective-core - branch: master + branch: release/v1.15.x subdir: proto - directory: proto From 1418b58ab0d519fd2c51c18c1f68b602943ef613 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:21:00 -0300 Subject: [PATCH 09/13] fix: updated gas heuristics per message gas cost to sync with latest changes on chain --- .../core/gas_heuristics_gas_limit_estimator.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pyinjective/core/gas_heuristics_gas_limit_estimator.py b/pyinjective/core/gas_heuristics_gas_limit_estimator.py index 22f9140b..f57718af 100644 --- a/pyinjective/core/gas_heuristics_gas_limit_estimator.py +++ b/pyinjective/core/gas_heuristics_gas_limit_estimator.py @@ -11,17 +11,17 @@ tx_pb2 as injective_exchange_tx_pb, ) -SPOT_ORDER_CREATION_GAS_LIMIT = 61_000 +SPOT_ORDER_CREATION_GAS_LIMIT = 100_000 SPOT_MARKET_ORDER_CREATION_GAS_LIMIT = 50_000 -POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT = 92_000 -DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 82_000 -DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT = 67_000 -POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 112_000 +POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT = 120_000 +DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 120_000 +DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT = 105_000 +POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT = 140_000 BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT = DERIVATIVE_ORDER_CREATION_GAS_LIMIT BINARY_OPTIONS_MARKET_ORDER_CREATION_GAS_LIMIT = DERIVATIVE_MARKET_ORDER_CREATION_GAS_LIMIT POST_ONLY_BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT = POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT -SPOT_ORDER_CANCELATION_GAS_LIMIT = 51_000 -DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT = 73_000 +SPOT_ORDER_CANCELATION_GAS_LIMIT = 65_000 +DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT = 70_000 BINARY_OPTIONS_ORDER_CANCELATION_GAS_LIMIT = DERIVATIVE_ORDER_CANCELATION_GAS_LIMIT DEPOSIT_GAS_LIMIT = 38_000 From 14909aeaa5bd572afcfa7a99c29a1aa8b3dfda53 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:27:34 -0300 Subject: [PATCH 10/13] fix: added cleanup code in AsyncClient for the object destruction phase --- pyinjective/async_client.py | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/pyinjective/async_client.py b/pyinjective/async_client.py index 2d4df23c..62811380 100644 --- a/pyinjective/async_client.py +++ b/pyinjective/async_client.py @@ -270,6 +270,21 @@ def __init__( cookie_assistant=network.explorer_cookie_assistant, ) + def __del__(self): + self._cancel_timeout_height_sync_task() + + async def close_exchange_channel(self): + await self.exchange_channel.close() + self._cancel_timeout_height_sync_task() + + async def close_chain_channel(self): + await self.chain_channel.close() + self._cancel_timeout_height_sync_task() + + async def close_chain_stream_channel(self): + await self.chain_stream_channel.close() + self._cancel_timeout_height_sync_task() + async def all_tokens(self) -> Dict[str, Token]: if self._tokens_by_symbol is None: async with self._tokens_and_markets_initialization_lock: @@ -309,14 +324,6 @@ def get_number(self): async def fetch_tx(self, hash: str) -> Dict[str, Any]: return await self.tx_api.fetch_tx(hash=hash) - async def close_exchange_channel(self): - await self.exchange_channel.close() - self._cancel_timeout_height_sync_task() - - async def close_chain_channel(self): - await self.chain_channel.close() - self._cancel_timeout_height_sync_task() - async def sync_timeout_height(self): try: block = await self.fetch_latest_block() @@ -2568,5 +2575,11 @@ async def _timeout_height_sync_process(self): def _cancel_timeout_height_sync_task(self): if self._timeout_height_sync_task is not None: - self._timeout_height_sync_task.cancel() + try: + self._timeout_height_sync_task.cancel() + asyncio.get_event_loop().run_until_complete(asyncio.wait_for(self._timeout_height_sync_task, timeout=1)) + except Exception as e: + logger = LoggerProvider().logger_for_class(logging_class=self.__class__) + logger.warning("error canceling timeout height sync task") + logger.debug("error canceling timeout height sync task", exc_info=e) self._timeout_height_sync_task = None From 9f2062c2c166bace4c5acb6a7217f2d383590873 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 7 Apr 2025 17:21:49 -0300 Subject: [PATCH 11/13] feat: updated proto definitions for chain v1.15 upgrade and Indexer v1.14.48 --- Makefile | 2 +- buf.gen.yaml | 8 +- pyinjective/ofac.json | 95 +------------------ .../exchange/injective_trading_rpc_pb2.py | 30 +++--- .../injective/txfees/v1beta1/txfees_pb2.py | 8 +- 5 files changed, 29 insertions(+), 114 deletions(-) diff --git a/Makefile b/Makefile index 360dc288..c221826a 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ clean-all: $(call clean_repos) clone-injective-indexer: - git clone https://github.com/InjectiveLabs/injective-indexer.git -b v1.14.25 --depth 1 --single-branch + git clone https://github.com/InjectiveLabs/injective-indexer.git -b v1.14.48 --depth 1 --single-branch clone-all: clone-injective-indexer diff --git a/buf.gen.yaml b/buf.gen.yaml index b23753a2..53d077bf 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -19,11 +19,11 @@ inputs: tag: v0.53.2-inj.2 # - git_repo: https://github.com/InjectiveLabs/wasmd # branch: v0.51.x-inj -# subdir: proto -# - git_repo: https://github.com/InjectiveLabs/injective-core -# tag: v1.15.0-alpha # subdir: proto - git_repo: https://github.com/InjectiveLabs/injective-core - branch: release/v1.15.x + tag: v1.15.0-beta.2 subdir: proto +# - git_repo: https://github.com/InjectiveLabs/injective-core +# branch: release/v1.15.x +# subdir: proto - directory: proto diff --git a/pyinjective/ofac.json b/pyinjective/ofac.json index 66b27cd2..b90e59cd 100644 --- a/pyinjective/ofac.json +++ b/pyinjective/ofac.json @@ -1,162 +1,75 @@ [ - "0x01e2919679362dfbc9ee1644ba9c6da6d6245bb1", - "0x03893a7c7463ae47d46bc7f091665f1893656003", "0x04dba1194ee10112fe6c3207c0687def0e78bacf", - "0x05e0b5b40b7b66098c2161a5ee11c5740a3a7c45", - "0x07687e702b410fa43f4cb4af7fa097918ffd2730", - "0x0836222f2b2b24a3f36f98668ed8f0b38d1a872f", "0x08723392ed15743cc38513c4925f5e6be5c17243", "0x08b2efdcdb8822efe5ad0eae55517cf5dc544251", - "0x09193888b3f38c82dedfda55259a82c0e7de875e", "0x0931ca4d13bb4ba75d9b7132ab690265d749a5e7", "0x098b716b8aaf21512996dc57eb0615e2383e2f96", - "0x0e3a09dda6b20afbb34ac7cd4a6881493f3e7bf7", "0x0ee5067b06776a89ccc7dc8ee369984ad7db5e06", - "0x12d66f87a04a9e220743712ce6d9bb1b5616b8fc", - "0x1356c899d8c9467c7f71c195612f8a395abf2f0a", - "0x169ad27a470d064dede56a2d3ff727986b15d52b", "0x175d44451403edf28469df03a9280c1197adb92c", - "0x178169b423a011fff22b9e3f3abea13414ddd0f1", - "0x179f48c78f57a3a78f0608cc9197b8972921d1d2", "0x1967d8af5bd86a497fb3dd7899a020e47560daaf", "0x1999ef52700c34de7ec2b68a28aafb37db0c5ade", "0x19aa5fe80d33a56d56c78e82ea5e50e5d80b4dff", "0x19f8f2b0915daa12a3f5c9cf01df9e24d53794f7", "0x1da5821544e25c636c1417ba96ade4cf6d2f9b5a", - "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", "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", - "0xba214c1c1928a32bffe790263e38b4af9bfcd659", - "0xbb93e510bbcd0b7beb5a853875f9ec60275cf498", "0xc2a3829f459b3edd87791c74cd45402ba0a20be3", "0xc455f7fd3e0e12afd51fba5c106909934d8a0e4a", - "0xca0840578f57fe71599d29375e16783424023357", - "0xcc84179ffd19a1627e79f8648d09e095252bc418", - "0xcee71753c9820f063b38fdbe4cfdaf1d3d928a80", "0xd0975b32cea532eadddfc9c60481976e39db3472", - "0xd21be7248e0197ee08e0c20d4a96debdac3d20af", - "0xd47438c816c9e7f2e2888e060936a499af9582b3", - "0xd4b88df4d29f5cedd6857912842cff3b20c8cfa3", - "0xd5d6f8d9e784d0e26222ad3834500801a68d027d", - "0xd691f27f38b395864ea86cfc7253969b409c362d", - "0xd692fd2d0b2fbd2e52cfa5b5b9424bc981c30696", - "0xd82ed8786d7c69dc7e052f7a542ab047971e73d2", "0xd882cfc20f52f2599d84b8e8d58c7fb62cfe344b", - "0xd8d7de3349ccaa0fde6298fe6d7b7d0d34586193", - "0xd90e2f925da726b50c4ed8d0fb90ad053324f31b", - "0xd96f2b1c14db8458374d9aca76e26c3d18364307", "0xdcbeffbecce100cce9e4b153c4e15cb885643193", - "0xdd4c48c0b24039969fc16d1cdf626eab821d3384", - "0xdf231d99ff8b6c6cbf4e9b9a945cbacef9339178", - "0xdf3a408c53e5078af6e8fb2a85088d46ee09a61b", "0xe1d865c3d669dcc8c57c8d023140cb204e672ee4", "0xe7aa314c77f4233c18c6cc84384a9247c0cf367b", "0xe950dc316b836e4eefb8308bf32bf7c72a1358ff", "0xed6e0a7e4ac94d976eebfb82ccf777a3c6bad921", - "0xedc5d01286f99a066559f60a585406f3878a033e", "0xefe301d259f525ca1ba74a7977b80d5b060b3cca", "0xf3701f445b6bdafedbca97d1e477357839e4120d", - "0xf4b067dd14e95bab89be928c07cb22e3c94e0daa", - "0xf60dd140cff0706bae9cd734ac3ae76ad9ebc32a", - "0xf67721a2d8f736e75a49fdd7fad2e31d8676542a", "0xf7b31119c2682c88d88d455dbb9d5932c65cf1be", "0xfac583c0cf07ea434052c49115a4682172ab6b4f", - "0xfd8610d20aa15b7b2e3be39b396a1bc3516c7144", "0xfec8a60023265364d066a1212fde3930f6ae8da7", - "0xffbac21a641dcfe4552920138d90f3638b3c9fba", "0xc5801cd781d168e2d3899ad9c39d8a2541871298", "0x0992E2D17e0082Df8a31Bf36Bd8Cc662551de68B", - "0x8aa07899eb940f40e514b8effdb3b6af5d1cf7bb" + "0x8aa07899eb940f40e514b8effdb3b6af5d1cf7bb", + "0xb9436d76e8fe08859d042e41b4a21c85715e1176", + "0x7bc5cb059f21553af489d2b2df3d40aaae9b44e8", + "0x430ab3c698b3210548b6ac9f72936b43b15ebe9b" ] diff --git a/pyinjective/proto/exchange/injective_trading_rpc_pb2.py b/pyinjective/proto/exchange/injective_trading_rpc_pb2.py index f2e6dfbf..35a90018 100644 --- a/pyinjective/proto/exchange/injective_trading_rpc_pb2.py +++ b/pyinjective/proto/exchange/injective_trading_rpc_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$exchange/injective_trading_rpc.proto\x12\x15injective_trading_rpc\"\x9c\x04\n\x1cListTradingStrategiesRequest\x12\x14\n\x05state\x18\x01 \x01(\tR\x05state\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x04 \x01(\tR\x0e\x61\x63\x63ountAddress\x12+\n\x11pending_execution\x18\x05 \x01(\x08R\x10pendingExecution\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x14\n\x05limit\x18\x08 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\t \x01(\x04R\x04skip\x12#\n\rstrategy_type\x18\n \x03(\tR\x0cstrategyType\x12\x1f\n\x0bmarket_type\x18\x0b \x01(\tR\nmarketType\x12,\n\x12last_executed_time\x18\x0c \x01(\x12R\x10lastExecutedTime\x12\x19\n\x08with_tvl\x18\r \x01(\x08R\x07withTvl\x12\x30\n\x14is_trailing_strategy\x18\x0e \x01(\x08R\x12isTrailingStrategy\x12)\n\x10with_performance\x18\x0f \x01(\x08R\x0fwithPerformance\"\x9e\x01\n\x1dListTradingStrategiesResponse\x12\x46\n\nstrategies\x18\x01 \x03(\x0b\x32&.injective_trading_rpc.TradingStrategyR\nstrategies\x12\x35\n\x06paging\x18\x02 \x01(\x0b\x32\x1d.injective_trading_rpc.PagingR\x06paging\"\xd6\x0f\n\x0fTradingStrategy\x12\x14\n\x05state\x18\x01 \x01(\tR\x05state\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x04 \x01(\tR\x0e\x61\x63\x63ountAddress\x12)\n\x10\x63ontract_address\x18\x05 \x01(\tR\x0f\x63ontractAddress\x12\'\n\x0f\x65xecution_price\x18\x06 \x01(\tR\x0e\x65xecutionPrice\x12#\n\rbase_quantity\x18\x07 \x01(\tR\x0c\x62\x61seQuantity\x12%\n\x0equote_quantity\x18\x14 \x01(\tR\rquoteQuantity\x12\x1f\n\x0blower_bound\x18\x08 \x01(\tR\nlowerBound\x12\x1f\n\x0bupper_bound\x18\t \x01(\tR\nupperBound\x12\x1b\n\tstop_loss\x18\n \x01(\tR\x08stopLoss\x12\x1f\n\x0btake_profit\x18\x0b \x01(\tR\ntakeProfit\x12\x19\n\x08swap_fee\x18\x0c \x01(\tR\x07swapFee\x12!\n\x0c\x62\x61se_deposit\x18\x11 \x01(\tR\x0b\x62\x61seDeposit\x12#\n\rquote_deposit\x18\x12 \x01(\tR\x0cquoteDeposit\x12(\n\x10market_mid_price\x18\x13 \x01(\tR\x0emarketMidPrice\x12>\n\x1bsubscription_quote_quantity\x18\x15 \x01(\tR\x19subscriptionQuoteQuantity\x12<\n\x1asubscription_base_quantity\x18\x16 \x01(\tR\x18subscriptionBaseQuantity\x12\x31\n\x15number_of_grid_levels\x18\x17 \x01(\tR\x12numberOfGridLevels\x12<\n\x1bshould_exit_with_quote_only\x18\x18 \x01(\x08R\x17shouldExitWithQuoteOnly\x12\x1f\n\x0bstop_reason\x18\x19 \x01(\tR\nstopReason\x12+\n\x11pending_execution\x18\x1a \x01(\x08R\x10pendingExecution\x12%\n\x0e\x63reated_height\x18\r \x01(\x12R\rcreatedHeight\x12%\n\x0eremoved_height\x18\x0e \x01(\x12R\rremovedHeight\x12\x1d\n\ncreated_at\x18\x0f \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\x12R\tupdatedAt\x12\x1b\n\texit_type\x18\x1b \x01(\tR\x08\x65xitType\x12K\n\x10stop_loss_config\x18\x1c \x01(\x0b\x32!.injective_trading_rpc.ExitConfigR\x0estopLossConfig\x12O\n\x12take_profit_config\x18\x1d \x01(\x0b\x32!.injective_trading_rpc.ExitConfigR\x10takeProfitConfig\x12#\n\rstrategy_type\x18\x1e \x01(\tR\x0cstrategyType\x12)\n\x10\x63ontract_version\x18\x1f \x01(\tR\x0f\x63ontractVersion\x12#\n\rcontract_name\x18 \x01(\tR\x0c\x63ontractName\x12\x1f\n\x0bmarket_type\x18! \x01(\tR\nmarketType\x12(\n\x10last_executed_at\x18\" \x01(\x12R\x0elastExecutedAt\x12$\n\x0etrail_up_price\x18# \x01(\tR\x0ctrailUpPrice\x12(\n\x10trail_down_price\x18$ \x01(\tR\x0etrailDownPrice\x12(\n\x10trail_up_counter\x18% \x01(\x12R\x0etrailUpCounter\x12,\n\x12trail_down_counter\x18& \x01(\x12R\x10trailDownCounter\x12\x10\n\x03tvl\x18\' \x01(\tR\x03tvl\x12\x10\n\x03pnl\x18( \x01(\tR\x03pnl\x12\x19\n\x08pnl_perc\x18) \x01(\tR\x07pnlPerc\x12$\n\x0epnl_updated_at\x18* \x01(\x12R\x0cpnlUpdatedAt\x12 \n\x0bperformance\x18+ \x01(\tR\x0bperformance\x12\x10\n\x03roi\x18, \x01(\tR\x03roi\x12,\n\x12initial_base_price\x18- \x01(\tR\x10initialBasePrice\x12.\n\x13initial_quote_price\x18. \x01(\tR\x11initialQuotePrice\x12,\n\x12\x63urrent_base_price\x18/ \x01(\tR\x10\x63urrentBasePrice\x12.\n\x13\x63urrent_quote_price\x18\x30 \x01(\tR\x11\x63urrentQuotePrice\x12(\n\x10\x66inal_base_price\x18\x31 \x01(\tR\x0e\x66inalBasePrice\x12*\n\x11\x66inal_quote_price\x18\x32 \x01(\tR\x0f\x66inalQuotePrice\"H\n\nExitConfig\x12\x1b\n\texit_type\x18\x01 \x01(\tR\x08\x65xitType\x12\x1d\n\nexit_price\x18\x02 \x01(\tR\texitPrice\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\x18\n\x16GetTradingStatsRequest\"\xf4\x01\n\x17GetTradingStatsResponse\x12:\n\x19\x61\x63tive_trading_strategies\x18\x01 \x01(\x04R\x17\x61\x63tiveTradingStrategies\x12G\n total_trading_strategies_created\x18\x02 \x01(\x04R\x1dtotalTradingStrategiesCreated\x12\x1b\n\ttotal_tvl\x18\x03 \x01(\tR\x08totalTvl\x12\x37\n\x07markets\x18\x04 \x03(\x0b\x32\x1d.injective_trading_rpc.MarketR\x07markets\"a\n\x06Market\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12:\n\x19\x61\x63tive_trading_strategies\x18\x02 \x01(\x04R\x17\x61\x63tiveTradingStrategies2\x8c\x02\n\x13InjectiveTradingRPC\x12\x82\x01\n\x15ListTradingStrategies\x12\x33.injective_trading_rpc.ListTradingStrategiesRequest\x1a\x34.injective_trading_rpc.ListTradingStrategiesResponse\x12p\n\x0fGetTradingStats\x12-.injective_trading_rpc.GetTradingStatsRequest\x1a..injective_trading_rpc.GetTradingStatsResponseB\xbb\x01\n\x19\x63om.injective_trading_rpcB\x18InjectiveTradingRpcProtoP\x01Z\x18/injective_trading_rpcpb\xa2\x02\x03IXX\xaa\x02\x13InjectiveTradingRpc\xca\x02\x13InjectiveTradingRpc\xe2\x02\x1fInjectiveTradingRpc\\GPBMetadata\xea\x02\x13InjectiveTradingRpcb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$exchange/injective_trading_rpc.proto\x12\x15injective_trading_rpc\"\x9c\x04\n\x1cListTradingStrategiesRequest\x12\x14\n\x05state\x18\x01 \x01(\tR\x05state\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x04 \x01(\tR\x0e\x61\x63\x63ountAddress\x12+\n\x11pending_execution\x18\x05 \x01(\x08R\x10pendingExecution\x12\x1d\n\nstart_time\x18\x06 \x01(\x12R\tstartTime\x12\x19\n\x08\x65nd_time\x18\x07 \x01(\x12R\x07\x65ndTime\x12\x14\n\x05limit\x18\x08 \x01(\x11R\x05limit\x12\x12\n\x04skip\x18\t \x01(\x04R\x04skip\x12#\n\rstrategy_type\x18\n \x03(\tR\x0cstrategyType\x12\x1f\n\x0bmarket_type\x18\x0b \x01(\tR\nmarketType\x12,\n\x12last_executed_time\x18\x0c \x01(\x12R\x10lastExecutedTime\x12\x19\n\x08with_tvl\x18\r \x01(\x08R\x07withTvl\x12\x30\n\x14is_trailing_strategy\x18\x0e \x01(\x08R\x12isTrailingStrategy\x12)\n\x10with_performance\x18\x0f \x01(\x08R\x0fwithPerformance\"\x9e\x01\n\x1dListTradingStrategiesResponse\x12\x46\n\nstrategies\x18\x01 \x03(\x0b\x32&.injective_trading_rpc.TradingStrategyR\nstrategies\x12\x35\n\x06paging\x18\x02 \x01(\x0b\x32\x1d.injective_trading_rpc.PagingR\x06paging\"\x9f\x10\n\x0fTradingStrategy\x12\x14\n\x05state\x18\x01 \x01(\tR\x05state\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12#\n\rsubaccount_id\x18\x03 \x01(\tR\x0csubaccountId\x12\'\n\x0f\x61\x63\x63ount_address\x18\x04 \x01(\tR\x0e\x61\x63\x63ountAddress\x12)\n\x10\x63ontract_address\x18\x05 \x01(\tR\x0f\x63ontractAddress\x12\'\n\x0f\x65xecution_price\x18\x06 \x01(\tR\x0e\x65xecutionPrice\x12#\n\rbase_quantity\x18\x07 \x01(\tR\x0c\x62\x61seQuantity\x12%\n\x0equote_quantity\x18\x14 \x01(\tR\rquoteQuantity\x12\x1f\n\x0blower_bound\x18\x08 \x01(\tR\nlowerBound\x12\x1f\n\x0bupper_bound\x18\t \x01(\tR\nupperBound\x12\x1b\n\tstop_loss\x18\n \x01(\tR\x08stopLoss\x12\x1f\n\x0btake_profit\x18\x0b \x01(\tR\ntakeProfit\x12\x19\n\x08swap_fee\x18\x0c \x01(\tR\x07swapFee\x12!\n\x0c\x62\x61se_deposit\x18\x11 \x01(\tR\x0b\x62\x61seDeposit\x12#\n\rquote_deposit\x18\x12 \x01(\tR\x0cquoteDeposit\x12(\n\x10market_mid_price\x18\x13 \x01(\tR\x0emarketMidPrice\x12>\n\x1bsubscription_quote_quantity\x18\x15 \x01(\tR\x19subscriptionQuoteQuantity\x12<\n\x1asubscription_base_quantity\x18\x16 \x01(\tR\x18subscriptionBaseQuantity\x12\x31\n\x15number_of_grid_levels\x18\x17 \x01(\tR\x12numberOfGridLevels\x12<\n\x1bshould_exit_with_quote_only\x18\x18 \x01(\x08R\x17shouldExitWithQuoteOnly\x12\x1f\n\x0bstop_reason\x18\x19 \x01(\tR\nstopReason\x12+\n\x11pending_execution\x18\x1a \x01(\x08R\x10pendingExecution\x12%\n\x0e\x63reated_height\x18\r \x01(\x12R\rcreatedHeight\x12%\n\x0eremoved_height\x18\x0e \x01(\x12R\rremovedHeight\x12\x1d\n\ncreated_at\x18\x0f \x01(\x12R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x10 \x01(\x12R\tupdatedAt\x12\x1b\n\texit_type\x18\x1b \x01(\tR\x08\x65xitType\x12K\n\x10stop_loss_config\x18\x1c \x01(\x0b\x32!.injective_trading_rpc.ExitConfigR\x0estopLossConfig\x12O\n\x12take_profit_config\x18\x1d \x01(\x0b\x32!.injective_trading_rpc.ExitConfigR\x10takeProfitConfig\x12#\n\rstrategy_type\x18\x1e \x01(\tR\x0cstrategyType\x12)\n\x10\x63ontract_version\x18\x1f \x01(\tR\x0f\x63ontractVersion\x12#\n\rcontract_name\x18 \x01(\tR\x0c\x63ontractName\x12\x1f\n\x0bmarket_type\x18! \x01(\tR\nmarketType\x12(\n\x10last_executed_at\x18\" \x01(\x12R\x0elastExecutedAt\x12$\n\x0etrail_up_price\x18# \x01(\tR\x0ctrailUpPrice\x12(\n\x10trail_down_price\x18$ \x01(\tR\x0etrailDownPrice\x12(\n\x10trail_up_counter\x18% \x01(\x12R\x0etrailUpCounter\x12,\n\x12trail_down_counter\x18& \x01(\x12R\x10trailDownCounter\x12\x10\n\x03tvl\x18\' \x01(\tR\x03tvl\x12\x10\n\x03pnl\x18( \x01(\tR\x03pnl\x12\x19\n\x08pnl_perc\x18) \x01(\tR\x07pnlPerc\x12$\n\x0epnl_updated_at\x18* \x01(\x12R\x0cpnlUpdatedAt\x12 \n\x0bperformance\x18+ \x01(\tR\x0bperformance\x12\x10\n\x03roi\x18, \x01(\tR\x03roi\x12,\n\x12initial_base_price\x18- \x01(\tR\x10initialBasePrice\x12.\n\x13initial_quote_price\x18. \x01(\tR\x11initialQuotePrice\x12,\n\x12\x63urrent_base_price\x18/ \x01(\tR\x10\x63urrentBasePrice\x12.\n\x13\x63urrent_quote_price\x18\x30 \x01(\tR\x11\x63urrentQuotePrice\x12(\n\x10\x66inal_base_price\x18\x31 \x01(\tR\x0e\x66inalBasePrice\x12*\n\x11\x66inal_quote_price\x18\x32 \x01(\tR\x0f\x66inalQuotePrice\x12G\n\nfinal_data\x18\x33 \x01(\x0b\x32(.injective_trading_rpc.StrategyFinalDataR\tfinalData\"H\n\nExitConfig\x12\x1b\n\texit_type\x18\x01 \x01(\tR\x08\x65xitType\x12\x1d\n\nexit_price\x18\x02 \x01(\tR\texitPrice\"\x83\x03\n\x11StrategyFinalData\x12.\n\x13initial_base_amount\x18\x01 \x01(\tR\x11initialBaseAmount\x12\x30\n\x14initial_quote_amount\x18\x02 \x01(\tR\x12initialQuoteAmount\x12*\n\x11\x66inal_base_amount\x18\x03 \x01(\tR\x0f\x66inalBaseAmount\x12,\n\x12\x66inal_quote_amount\x18\x04 \x01(\tR\x10\x66inalQuoteAmount\x12,\n\x12initial_base_price\x18\x05 \x01(\tR\x10initialBasePrice\x12.\n\x13initial_quote_price\x18\x06 \x01(\tR\x11initialQuotePrice\x12(\n\x10\x66inal_base_price\x18\x07 \x01(\tR\x0e\x66inalBasePrice\x12*\n\x11\x66inal_quote_price\x18\x08 \x01(\tR\x0f\x66inalQuotePrice\"\x86\x01\n\x06Paging\x12\x14\n\x05total\x18\x01 \x01(\x12R\x05total\x12\x12\n\x04\x66rom\x18\x02 \x01(\x11R\x04\x66rom\x12\x0e\n\x02to\x18\x03 \x01(\x11R\x02to\x12.\n\x13\x63ount_by_subaccount\x18\x04 \x01(\x12R\x11\x63ountBySubaccount\x12\x12\n\x04next\x18\x05 \x03(\tR\x04next\"\x18\n\x16GetTradingStatsRequest\"\xf4\x01\n\x17GetTradingStatsResponse\x12:\n\x19\x61\x63tive_trading_strategies\x18\x01 \x01(\x04R\x17\x61\x63tiveTradingStrategies\x12G\n total_trading_strategies_created\x18\x02 \x01(\x04R\x1dtotalTradingStrategiesCreated\x12\x1b\n\ttotal_tvl\x18\x03 \x01(\tR\x08totalTvl\x12\x37\n\x07markets\x18\x04 \x03(\x0b\x32\x1d.injective_trading_rpc.MarketR\x07markets\"a\n\x06Market\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12:\n\x19\x61\x63tive_trading_strategies\x18\x02 \x01(\x04R\x17\x61\x63tiveTradingStrategies2\x8c\x02\n\x13InjectiveTradingRPC\x12\x82\x01\n\x15ListTradingStrategies\x12\x33.injective_trading_rpc.ListTradingStrategiesRequest\x1a\x34.injective_trading_rpc.ListTradingStrategiesResponse\x12p\n\x0fGetTradingStats\x12-.injective_trading_rpc.GetTradingStatsRequest\x1a..injective_trading_rpc.GetTradingStatsResponseB\xbb\x01\n\x19\x63om.injective_trading_rpcB\x18InjectiveTradingRpcProtoP\x01Z\x18/injective_trading_rpcpb\xa2\x02\x03IXX\xaa\x02\x13InjectiveTradingRpc\xca\x02\x13InjectiveTradingRpc\xe2\x02\x1fInjectiveTradingRpc\\GPBMetadata\xea\x02\x13InjectiveTradingRpcb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -27,17 +27,19 @@ _globals['_LISTTRADINGSTRATEGIESRESPONSE']._serialized_start=607 _globals['_LISTTRADINGSTRATEGIESRESPONSE']._serialized_end=765 _globals['_TRADINGSTRATEGY']._serialized_start=768 - _globals['_TRADINGSTRATEGY']._serialized_end=2774 - _globals['_EXITCONFIG']._serialized_start=2776 - _globals['_EXITCONFIG']._serialized_end=2848 - _globals['_PAGING']._serialized_start=2851 - _globals['_PAGING']._serialized_end=2985 - _globals['_GETTRADINGSTATSREQUEST']._serialized_start=2987 - _globals['_GETTRADINGSTATSREQUEST']._serialized_end=3011 - _globals['_GETTRADINGSTATSRESPONSE']._serialized_start=3014 - _globals['_GETTRADINGSTATSRESPONSE']._serialized_end=3258 - _globals['_MARKET']._serialized_start=3260 - _globals['_MARKET']._serialized_end=3357 - _globals['_INJECTIVETRADINGRPC']._serialized_start=3360 - _globals['_INJECTIVETRADINGRPC']._serialized_end=3628 + _globals['_TRADINGSTRATEGY']._serialized_end=2847 + _globals['_EXITCONFIG']._serialized_start=2849 + _globals['_EXITCONFIG']._serialized_end=2921 + _globals['_STRATEGYFINALDATA']._serialized_start=2924 + _globals['_STRATEGYFINALDATA']._serialized_end=3311 + _globals['_PAGING']._serialized_start=3314 + _globals['_PAGING']._serialized_end=3448 + _globals['_GETTRADINGSTATSREQUEST']._serialized_start=3450 + _globals['_GETTRADINGSTATSREQUEST']._serialized_end=3474 + _globals['_GETTRADINGSTATSRESPONSE']._serialized_start=3477 + _globals['_GETTRADINGSTATSRESPONSE']._serialized_end=3721 + _globals['_MARKET']._serialized_start=3723 + _globals['_MARKET']._serialized_end=3820 + _globals['_INJECTIVETRADINGRPC']._serialized_start=3823 + _globals['_INJECTIVETRADINGRPC']._serialized_end=4091 # @@protoc_insertion_point(module_scope) diff --git a/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2.py b/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2.py index bc07501e..d337eafd 100644 --- a/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2.py +++ b/pyinjective/proto/injective/txfees/v1beta1/txfees_pb2.py @@ -12,12 +12,12 @@ _sym_db = _symbol_database.Default() +from pyinjective.proto.amino import amino_pb2 as amino_dot_amino__pb2 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.amino import amino_pb2 as amino_dot_amino__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%injective/txfees/v1beta1/txfees.proto\x12\x18injective.txfees.v1beta1\x1a\x14gogoproto/gogo.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x11\x61mino/amino.proto\"\x9a\x0c\n\x06Params\x12R\n\x15max_gas_wanted_per_tx\x18\x01 \x01(\x04\x42 \xf2\xde\x1f\x1cyaml:\"max_gas_wanted_per_tx\"R\x11maxGasWantedPerTx\x12S\n\x15high_gas_tx_threshold\x18\x02 \x01(\x04\x42 \xf2\xde\x1f\x1cyaml:\"high_gas_tx_threshold\"R\x12highGasTxThreshold\x12\x8b\x01\n\x1dmin_gas_price_for_high_gas_tx\x18\x03 \x01(\tBK\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f$yaml:\"min_gas_price_for_high_gas_tx\"R\x17minGasPriceForHighGasTx\x12P\n\x13mempool1559_enabled\x18\x04 \x01(\x08\x42\x1f\xf2\xde\x1f\x1byaml:\"mempool_1559_enabled\"R\x12mempool1559Enabled\x12_\n\rmin_gas_price\x18\x05 \x01(\tB;\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x14yaml:\"min_gas_price\"R\x0bminGasPrice\x12\x88\x01\n\x1b\x64\x65\x66\x61ult_base_fee_multiplier\x18\x06 \x01(\tBI\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\"yaml:\"default_base_fee_multiplier\"R\x18\x64\x65\x66\x61ultBaseFeeMultiplier\x12|\n\x17max_base_fee_multiplier\x18\x07 \x01(\tBE\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1eyaml:\"max_base_fee_multiplier\"R\x14maxBaseFeeMultiplier\x12@\n\x0ereset_interval\x18\x08 \x01(\x03\x42\x19\xf2\xde\x1f\x15yaml:\"reset_interval\"R\rresetInterval\x12v\n\x15max_block_change_rate\x18\t \x01(\tBC\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1cyaml:\"max_block_change_rate\"R\x12maxBlockChangeRate\x12\x93\x01\n\x1ftarget_block_space_percent_rate\x18\n \x01(\tBM\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f&yaml:\"target_block_space_percent_rate\"R\x1btargetBlockSpacePercentRate\x12~\n\x18recheck_fee_low_base_fee\x18\x0b \x01(\tBF\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1fyaml:\"recheck_fee_low_base_fee\"R\x14recheckFeeLowBaseFee\x12\x81\x01\n\x19recheck_fee_high_base_fee\x18\x0c \x01(\tBG\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f yaml:\"recheck_fee_high_base_fee\"R\x15recheckFeeHighBaseFee\x12\xb0\x01\n)recheck_fee_base_fee_threshold_multiplier\x18\r \x01(\tBW\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x30yaml:\"recheck_fee_base_fee_threshold_multiplier\"R$recheckFeeBaseFeeThresholdMultiplier:\x16\xe8\xa0\x1f\x01\x8a\xe7\xb0*\rtxfees/ParamsB\xff\x01\n\x1c\x63om.injective.txfees.v1beta1B\x0bTxfeesProtoP\x01ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\xa2\x02\x03ITX\xaa\x02\x18Injective.Txfees.V1beta1\xca\x02\x18Injective\\Txfees\\V1beta1\xe2\x02$Injective\\Txfees\\V1beta1\\GPBMetadata\xea\x02\x1aInjective::Txfees::V1beta1\xc0\xe3\x1e\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%injective/txfees/v1beta1/txfees.proto\x12\x18injective.txfees.v1beta1\x1a\x11\x61mino/amino.proto\x1a\x14gogoproto/gogo.proto\x1a\x1cgoogle/api/annotations.proto\"\x99\x0c\n\x06Params\x12R\n\x15max_gas_wanted_per_tx\x18\x01 \x01(\x04\x42 \xf2\xde\x1f\x1cyaml:\"max_gas_wanted_per_tx\"R\x11maxGasWantedPerTx\x12S\n\x15high_gas_tx_threshold\x18\x02 \x01(\x04\x42 \xf2\xde\x1f\x1cyaml:\"high_gas_tx_threshold\"R\x12highGasTxThreshold\x12\x8b\x01\n\x1dmin_gas_price_for_high_gas_tx\x18\x03 \x01(\tBK\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f$yaml:\"min_gas_price_for_high_gas_tx\"R\x17minGasPriceForHighGasTx\x12O\n\x13mempool1559_enabled\x18\x04 \x01(\x08\x42\x1e\xf2\xde\x1f\x1ayaml:\"mempool1559_enabled\"R\x12mempool1559Enabled\x12_\n\rmin_gas_price\x18\x05 \x01(\tB;\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x14yaml:\"min_gas_price\"R\x0bminGasPrice\x12\x88\x01\n\x1b\x64\x65\x66\x61ult_base_fee_multiplier\x18\x06 \x01(\tBI\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\"yaml:\"default_base_fee_multiplier\"R\x18\x64\x65\x66\x61ultBaseFeeMultiplier\x12|\n\x17max_base_fee_multiplier\x18\x07 \x01(\tBE\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1eyaml:\"max_base_fee_multiplier\"R\x14maxBaseFeeMultiplier\x12@\n\x0ereset_interval\x18\x08 \x01(\x03\x42\x19\xf2\xde\x1f\x15yaml:\"reset_interval\"R\rresetInterval\x12v\n\x15max_block_change_rate\x18\t \x01(\tBC\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1cyaml:\"max_block_change_rate\"R\x12maxBlockChangeRate\x12\x93\x01\n\x1ftarget_block_space_percent_rate\x18\n \x01(\tBM\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f&yaml:\"target_block_space_percent_rate\"R\x1btargetBlockSpacePercentRate\x12~\n\x18recheck_fee_low_base_fee\x18\x0b \x01(\tBF\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x1fyaml:\"recheck_fee_low_base_fee\"R\x14recheckFeeLowBaseFee\x12\x81\x01\n\x19recheck_fee_high_base_fee\x18\x0c \x01(\tBG\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f yaml:\"recheck_fee_high_base_fee\"R\x15recheckFeeHighBaseFee\x12\xb0\x01\n)recheck_fee_base_fee_threshold_multiplier\x18\r \x01(\tBW\xc8\xde\x1f\x00\xda\xde\x1f\x1b\x63osmossdk.io/math.LegacyDec\xf2\xde\x1f\x30yaml:\"recheck_fee_base_fee_threshold_multiplier\"R$recheckFeeBaseFeeThresholdMultiplier:\x16\xe8\xa0\x1f\x01\x8a\xe7\xb0*\rtxfees/ParamsB\xff\x01\n\x1c\x63om.injective.txfees.v1beta1B\x0bTxfeesProtoP\x01ZLgithub.com/InjectiveLabs/injective-core/injective-chain/modules/txfees/types\xa2\x02\x03ITX\xaa\x02\x18Injective.Txfees.V1beta1\xca\x02\x18Injective\\Txfees\\V1beta1\xe2\x02$Injective\\Txfees\\V1beta1\\GPBMetadata\xea\x02\x1aInjective::Txfees::V1beta1\xc0\xe3\x1e\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -32,7 +32,7 @@ _globals['_PARAMS'].fields_by_name['min_gas_price_for_high_gas_tx']._loaded_options = None _globals['_PARAMS'].fields_by_name['min_gas_price_for_high_gas_tx']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037$yaml:\"min_gas_price_for_high_gas_tx\"' _globals['_PARAMS'].fields_by_name['mempool1559_enabled']._loaded_options = None - _globals['_PARAMS'].fields_by_name['mempool1559_enabled']._serialized_options = b'\362\336\037\033yaml:\"mempool_1559_enabled\"' + _globals['_PARAMS'].fields_by_name['mempool1559_enabled']._serialized_options = b'\362\336\037\032yaml:\"mempool1559_enabled\"' _globals['_PARAMS'].fields_by_name['min_gas_price']._loaded_options = None _globals['_PARAMS'].fields_by_name['min_gas_price']._serialized_options = b'\310\336\037\000\332\336\037\033cosmossdk.io/math.LegacyDec\362\336\037\024yaml:\"min_gas_price\"' _globals['_PARAMS'].fields_by_name['default_base_fee_multiplier']._loaded_options = None @@ -54,5 +54,5 @@ _globals['_PARAMS']._loaded_options = None _globals['_PARAMS']._serialized_options = b'\350\240\037\001\212\347\260*\rtxfees/Params' _globals['_PARAMS']._serialized_start=139 - _globals['_PARAMS']._serialized_end=1701 + _globals['_PARAMS']._serialized_end=1700 # @@protoc_insertion_point(module_scope) From 25b01df6946215a43c16bbeb0feeaae24d7fc2aa Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Mon, 7 Apr 2025 23:37:39 -0300 Subject: [PATCH 12/13] feat: made the gas calculator using gas heuristics the default one for the MsgBroadcasterWithPk when broadcasting without simulation --- pyinjective/core/broadcaster.py | 88 ++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 8 deletions(-) diff --git a/pyinjective/core/broadcaster.py b/pyinjective/core/broadcaster.py index de025e61..030547ed 100644 --- a/pyinjective/core/broadcaster.py +++ b/pyinjective/core/broadcaster.py @@ -124,6 +124,36 @@ def new_without_simulation( ): """Creates a new broadcaster instance that uses message-based gas estimation without simulation. + Args: + network (Network): The network configuration to use (mainnet, testnet, etc.) + private_key (str): The private key in hex format for signing transactions + gas_price (Optional[int]): Custom gas price in chain format (e.g. 500000000000000000 for 0.5 INJ). + Defaults to None + client (Optional[AsyncClient]): Custom AsyncClient instance. Defaults to None + composer (Optional[Composer]): Custom Composer instance. Defaults to None + + Returns: + MsgBroadcasterWithPk: A configured broadcaster instance using message-based fee calculation + """ + return cls.new_using_gas_heuristics( + network=network, + private_key=private_key, + gas_price=gas_price, + client=client, + composer=composer, + ) + + @classmethod + def new_using_gas_heuristics( + cls, + network: Network, + private_key: str, + gas_price: Optional[int] = None, + client: Optional[AsyncClient] = None, + composer: Optional[Composer] = None, + ): + """Creates a new broadcaster instance that uses gas heuristics for gas calculation + Args: network (Network): The network configuration to use (mainnet, testnet, etc.) private_key (str): The private key in hex format for signing transactions @@ -138,7 +168,11 @@ def new_without_simulation( client = client or AsyncClient(network=network) composer = composer or Composer(network=client.network.string()) account_config = StandardAccountBroadcasterConfig(private_key=private_key) - fee_calculator = MessageBasedTransactionFeeCalculator(client=client, composer=composer, gas_price=gas_price) + fee_calculator = MessageBasedTransactionFeeCalculator.new_using_gas_heuristics( + client=client, + composer=composer, + gas_price=gas_price, + ) instance = cls( network=network, account_config=account_config, @@ -149,7 +183,7 @@ def new_without_simulation( return instance @classmethod - def new_using_gas_heuristics( + def new_using_estimate_gas( cls, network: Network, private_key: str, @@ -173,7 +207,7 @@ def new_using_gas_heuristics( client = client or AsyncClient(network=network) composer = composer or Composer(network=client.network.string()) account_config = StandardAccountBroadcasterConfig(private_key=private_key) - fee_calculator = MessageBasedTransactionFeeCalculator.new_using_gas_heuristics( + fee_calculator = MessageBasedTransactionFeeCalculator.new_using_gas_estimation( client=client, composer=composer, gas_price=gas_price, @@ -232,8 +266,38 @@ def new_for_grantee_account_without_simulation( client: Optional[AsyncClient] = None, composer: Optional[Composer] = None, ): - """Creates a new broadcaster instance for a grantee account that uses message-based gas estimation without - simulation. + """Creates a new broadcaster instance for a grantee account that uses gas estimator using gas heuristics. + + Args: + network (Network): The network configuration to use (mainnet, testnet, etc.) + grantee_private_key (str): The grantee's private key in hex format for signing transactions + gas_price (Optional[int]): Custom gas price in chain format (e.g. 500000000000000000 for 0.5 INJ). + Defaults to None + client (Optional[AsyncClient]): Custom AsyncClient instance. Defaults to None + composer (Optional[Composer]): Custom Composer instance. Defaults to None + + Returns: + MsgBroadcasterWithPk: A configured broadcaster instance using message-based fee calculation for a grantee + account + """ + return cls.new_for_grantee_account_using_gas_heuristics( + network=network, + grantee_private_key=grantee_private_key, + gas_price=gas_price, + client=client, + composer=composer, + ) + + @classmethod + def new_for_grantee_account_using_gas_heuristics( + cls, + network: Network, + grantee_private_key: str, + gas_price: Optional[int] = None, + client: Optional[AsyncClient] = None, + composer: Optional[Composer] = None, + ): + """Creates a new broadcaster instance for a grantee account that uses gas heuristics. Args: network (Network): The network configuration to use (mainnet, testnet, etc.) @@ -250,7 +314,11 @@ def new_for_grantee_account_without_simulation( client = client or AsyncClient(network=network) composer = composer or Composer(network=client.network.string()) account_config = GranteeAccountBroadcasterConfig(grantee_private_key=grantee_private_key, composer=composer) - fee_calculator = MessageBasedTransactionFeeCalculator(client=client, composer=composer, gas_price=gas_price) + fee_calculator = MessageBasedTransactionFeeCalculator.new_using_gas_heuristics( + client=client, + composer=composer, + gas_price=gas_price, + ) instance = cls( network=network, account_config=account_config, @@ -261,7 +329,7 @@ def new_for_grantee_account_without_simulation( return instance @classmethod - def new_for_grantee_account_using_gas_heuristics( + def new_for_grantee_account_using_estimated_gas( cls, network: Network, grantee_private_key: str, @@ -287,7 +355,7 @@ def new_for_grantee_account_using_gas_heuristics( client = client or AsyncClient(network=network) composer = composer or Composer(network=client.network.string()) account_config = GranteeAccountBroadcasterConfig(grantee_private_key=grantee_private_key, composer=composer) - fee_calculator = MessageBasedTransactionFeeCalculator.new_using_gas_heuristics( + fee_calculator = MessageBasedTransactionFeeCalculator.new_using_gas_estimation( client=client, composer=composer, gas_price=gas_price, @@ -465,6 +533,10 @@ def new_using_gas_heuristics(cls, client: AsyncClient, composer: Composer, gas_p client=client, composer=composer, gas_price=gas_price, estimator_class=GasHeuristicsGasLimitEstimator ) + @classmethod + def new_using_gas_estimation(cls, client: AsyncClient, composer: Composer, gas_price: Optional[int] = None): + return cls(client=client, composer=composer, gas_price=gas_price, estimator_class=GasLimitEstimator) + async def configure_gas_fee_for_transaction( self, transaction: Transaction, From 104d1769fade97cdd4adb39bde8475628997b2f7 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Tue, 8 Apr 2025 00:05:55 -0300 Subject: [PATCH 13/13] fix: fixed gas calculation using heuristics to not duplicate the required gas for post only orders --- .../core/gas_heuristics_gas_limit_estimator.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pyinjective/core/gas_heuristics_gas_limit_estimator.py b/pyinjective/core/gas_heuristics_gas_limit_estimator.py index f57718af..10a4da5c 100644 --- a/pyinjective/core/gas_heuristics_gas_limit_estimator.py +++ b/pyinjective/core/gas_heuristics_gas_limit_estimator.py @@ -263,7 +263,7 @@ def gas_limit(self) -> int: post_only_orders = self._select_post_only_orders(orders=self._message.orders) total = 0 - total += len(self._message.orders) * SPOT_ORDER_CREATION_GAS_LIMIT + total += (len(self._message.orders) - len(post_only_orders)) * SPOT_ORDER_CREATION_GAS_LIMIT total += math.ceil(len(post_only_orders) * POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT) return total @@ -302,7 +302,7 @@ def gas_limit(self) -> int: post_only_orders = self._select_post_only_orders(orders=self._message.orders) total = 0 - total += len(self._message.orders) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT + total += (len(self._message.orders) - len(post_only_orders)) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT total += math.ceil(len(post_only_orders) * POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT) return total @@ -347,9 +347,13 @@ def gas_limit(self) -> int: ) total = 0 - total += len(self._message.spot_orders_to_create) * SPOT_ORDER_CREATION_GAS_LIMIT - total += len(self._message.derivative_orders_to_create) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT - total += len(self._message.binary_options_orders_to_create) * BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT + total += (len(self._message.spot_orders_to_create) - len(post_only_spot_orders)) * SPOT_ORDER_CREATION_GAS_LIMIT + total += ( + len(self._message.derivative_orders_to_create) - len(post_only_derivative_orders) + ) * DERIVATIVE_ORDER_CREATION_GAS_LIMIT + total += ( + len(self._message.binary_options_orders_to_create) - len(post_only_binary_options_orders) + ) * BINARY_OPTIONS_ORDER_CREATION_GAS_LIMIT total += math.ceil(len(post_only_spot_orders) * POST_ONLY_SPOT_ORDER_CREATION_GAS_LIMIT) total += math.ceil(len(post_only_derivative_orders) * POST_ONLY_DERIVATIVE_ORDER_CREATION_GAS_LIMIT)