@gnolang/tm2-js-client 1.3.3 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.cjs +12 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.mjs +12 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/toPrimitive.cjs +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/toPrimitive.mjs +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/toPropertyKey.cjs +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/toPropertyKey.mjs +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/typeof.cjs +16 -0
- package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/typeof.mjs +11 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/index.cjs +92 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +23 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +23 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +22 -0
- package/dist/index.mjs.map +1 -0
- package/dist/proto/google/protobuf/any.cjs +84 -0
- package/dist/proto/google/protobuf/any.cjs.map +1 -0
- package/dist/proto/google/protobuf/any.d.cts +141 -0
- package/dist/proto/google/protobuf/any.d.cts.map +1 -0
- package/dist/proto/google/protobuf/any.d.mts +141 -0
- package/dist/proto/google/protobuf/any.d.mts.map +1 -0
- package/dist/proto/google/protobuf/any.mjs +83 -0
- package/dist/proto/google/protobuf/any.mjs.map +1 -0
- package/dist/proto/index.cjs +2 -0
- package/dist/proto/index.d.cts +2 -0
- package/dist/proto/index.d.mts +2 -0
- package/dist/proto/index.mjs +3 -0
- package/dist/proto/tm2/abci.cjs +182 -0
- package/dist/proto/tm2/abci.cjs.map +1 -0
- package/dist/proto/tm2/abci.d.cts +33 -0
- package/dist/proto/tm2/abci.d.cts.map +1 -0
- package/dist/proto/tm2/abci.d.mts +33 -0
- package/dist/proto/tm2/abci.d.mts.map +1 -0
- package/dist/proto/tm2/abci.mjs +181 -0
- package/dist/proto/tm2/abci.mjs.map +1 -0
- package/dist/proto/tm2/tx.cjs +263 -0
- package/dist/proto/tm2/tx.cjs.map +1 -0
- package/dist/proto/tm2/tx.d.cts +49 -0
- package/dist/proto/tm2/tx.d.cts.map +1 -0
- package/dist/proto/tm2/tx.d.mts +49 -0
- package/dist/proto/tm2/tx.d.mts.map +1 -0
- package/dist/proto/tm2/tx.mjs +258 -0
- package/dist/proto/tm2/tx.mjs.map +1 -0
- package/dist/provider/endpoints.cjs +43 -0
- package/dist/provider/endpoints.cjs.map +1 -0
- package/dist/provider/endpoints.d.cts +33 -0
- package/dist/provider/endpoints.d.cts.map +1 -0
- package/dist/provider/endpoints.d.mts +33 -0
- package/dist/provider/endpoints.d.mts.map +1 -0
- package/dist/provider/endpoints.mjs +39 -0
- package/dist/provider/endpoints.mjs.map +1 -0
- package/dist/provider/errors/errors.cjs +122 -0
- package/dist/provider/errors/errors.cjs.map +1 -0
- package/dist/provider/errors/errors.d.cts +62 -0
- package/dist/provider/errors/errors.d.cts.map +1 -0
- package/dist/provider/errors/errors.d.mts +62 -0
- package/dist/provider/errors/errors.d.mts.map +1 -0
- package/dist/provider/errors/errors.mjs +104 -0
- package/dist/provider/errors/errors.mjs.map +1 -0
- package/dist/provider/errors/messages.cjs +40 -0
- package/dist/provider/errors/messages.cjs.map +1 -0
- package/dist/provider/errors/messages.mjs +23 -0
- package/dist/provider/errors/messages.mjs.map +1 -0
- package/dist/provider/index.cjs +12 -0
- package/dist/provider/index.d.cts +11 -0
- package/dist/provider/index.d.mts +11 -0
- package/dist/provider/index.mjs +13 -0
- package/dist/provider/jsonrpc/index.cjs +1 -0
- package/dist/provider/jsonrpc/index.d.cts +1 -0
- package/dist/provider/jsonrpc/index.d.mts +1 -0
- package/dist/provider/jsonrpc/index.mjs +2 -0
- package/dist/provider/jsonrpc/jsonrpc.cjs +20 -0
- package/dist/provider/jsonrpc/jsonrpc.cjs.map +1 -0
- package/dist/provider/jsonrpc/jsonrpc.d.cts +16 -0
- package/dist/provider/jsonrpc/jsonrpc.d.cts.map +1 -0
- package/dist/provider/jsonrpc/jsonrpc.d.mts +16 -0
- package/dist/provider/jsonrpc/jsonrpc.d.mts.map +1 -0
- package/dist/provider/jsonrpc/jsonrpc.mjs +19 -0
- package/dist/provider/jsonrpc/jsonrpc.mjs.map +1 -0
- package/dist/provider/provider.cjs +130 -0
- package/dist/provider/provider.cjs.map +1 -0
- package/dist/provider/provider.d.cts +130 -0
- package/dist/provider/provider.d.cts.map +1 -0
- package/dist/provider/provider.d.mts +130 -0
- package/dist/provider/provider.d.mts.map +1 -0
- package/dist/provider/provider.mjs +130 -0
- package/dist/provider/provider.mjs.map +1 -0
- package/dist/provider/types/abci.cjs +6 -0
- package/dist/provider/types/abci.cjs.map +1 -0
- package/dist/provider/types/abci.d.cts +42 -0
- package/dist/provider/types/abci.d.cts.map +1 -0
- package/dist/provider/types/abci.d.mts +42 -0
- package/dist/provider/types/abci.d.mts.map +1 -0
- package/dist/provider/types/abci.mjs +6 -0
- package/dist/provider/types/abci.mjs.map +1 -0
- package/dist/provider/types/common.d.cts +186 -0
- package/dist/provider/types/common.d.cts.map +1 -0
- package/dist/provider/types/common.d.mts +186 -0
- package/dist/provider/types/common.d.mts.map +1 -0
- package/dist/provider/types/jsonrpc.d.cts +30 -0
- package/dist/provider/types/jsonrpc.d.cts.map +1 -0
- package/dist/provider/types/jsonrpc.d.mts +30 -0
- package/dist/provider/types/jsonrpc.d.mts.map +1 -0
- package/dist/provider/utility/adapters.cjs +241 -0
- package/dist/provider/utility/adapters.cjs.map +1 -0
- package/dist/provider/utility/adapters.d.cts +19 -0
- package/dist/provider/utility/adapters.d.cts.map +1 -0
- package/dist/provider/utility/adapters.d.mts +19 -0
- package/dist/provider/utility/adapters.d.mts.map +1 -0
- package/dist/provider/utility/adapters.mjs +231 -0
- package/dist/provider/utility/adapters.mjs.map +1 -0
- package/dist/provider/utility/errors.utility.cjs +38 -0
- package/dist/provider/utility/errors.utility.cjs.map +1 -0
- package/dist/provider/utility/errors.utility.mjs +38 -0
- package/dist/provider/utility/errors.utility.mjs.map +1 -0
- package/dist/provider/utility/index.cjs +3 -0
- package/dist/provider/utility/index.d.cts +3 -0
- package/dist/provider/utility/index.d.mts +3 -0
- package/dist/provider/utility/index.mjs +4 -0
- package/dist/provider/utility/provider.utility.cjs +122 -0
- package/dist/provider/utility/provider.utility.cjs.map +1 -0
- package/{bin/provider/utility/provider.utility.d.ts → dist/provider/utility/provider.utility.d.cts} +15 -10
- package/dist/provider/utility/provider.utility.d.cts.map +1 -0
- package/dist/provider/utility/provider.utility.d.mts +45 -0
- package/dist/provider/utility/provider.utility.d.mts.map +1 -0
- package/dist/provider/utility/provider.utility.mjs +116 -0
- package/dist/provider/utility/provider.utility.mjs.map +1 -0
- package/dist/provider/utility/requests.utility.cjs +75 -0
- package/dist/provider/utility/requests.utility.cjs.map +1 -0
- package/dist/provider/utility/requests.utility.d.cts +40 -0
- package/dist/provider/utility/requests.utility.d.cts.map +1 -0
- package/dist/provider/utility/requests.utility.d.mts +40 -0
- package/dist/provider/utility/requests.utility.d.mts.map +1 -0
- package/dist/provider/utility/requests.utility.mjs +68 -0
- package/dist/provider/utility/requests.utility.mjs.map +1 -0
- package/dist/provider/websocket/index.cjs +1 -0
- package/dist/provider/websocket/index.d.cts +1 -0
- package/dist/provider/websocket/index.d.mts +1 -0
- package/dist/provider/websocket/index.mjs +2 -0
- package/dist/provider/websocket/ws.cjs +27 -0
- package/dist/provider/websocket/ws.cjs.map +1 -0
- package/dist/provider/websocket/ws.d.cts +21 -0
- package/dist/provider/websocket/ws.d.cts.map +1 -0
- package/dist/provider/websocket/ws.d.mts +21 -0
- package/dist/provider/websocket/ws.d.mts.map +1 -0
- package/dist/provider/websocket/ws.mjs +26 -0
- package/dist/provider/websocket/ws.mjs.map +1 -0
- package/dist/services/index.cjs +1 -0
- package/dist/services/index.d.cts +2 -0
- package/dist/services/index.d.mts +2 -0
- package/dist/services/index.mjs +2 -0
- package/dist/services/rest/restService.cjs +16 -0
- package/dist/services/rest/restService.cjs.map +1 -0
- package/dist/services/rest/restService.d.cts +9 -0
- package/dist/services/rest/restService.d.cts.map +1 -0
- package/dist/services/rest/restService.d.mts +9 -0
- package/dist/services/rest/restService.d.mts.map +1 -0
- package/dist/services/rest/restService.mjs +14 -0
- package/dist/services/rest/restService.mjs.map +1 -0
- package/dist/services/rest/restService.types.d.cts +11 -0
- package/dist/services/rest/restService.types.d.cts.map +1 -0
- package/dist/services/rest/restService.types.d.mts +11 -0
- package/dist/services/rest/restService.types.d.mts.map +1 -0
- package/dist/wallet/index.cjs +8 -0
- package/dist/wallet/index.d.cts +7 -0
- package/dist/wallet/index.d.mts +7 -0
- package/dist/wallet/index.mjs +9 -0
- package/dist/wallet/key/index.cjs +1 -0
- package/dist/wallet/key/index.mjs +2 -0
- package/dist/wallet/key/key.cjs +46 -0
- package/dist/wallet/key/key.cjs.map +1 -0
- package/dist/wallet/key/key.d.cts +26 -0
- package/dist/wallet/key/key.d.cts.map +1 -0
- package/dist/wallet/key/key.d.mts +26 -0
- package/dist/wallet/key/key.d.mts.map +1 -0
- package/dist/wallet/key/key.mjs +45 -0
- package/dist/wallet/key/key.mjs.map +1 -0
- package/dist/wallet/ledger/index.cjs +1 -0
- package/dist/wallet/ledger/index.d.cts +1 -0
- package/dist/wallet/ledger/index.d.mts +1 -0
- package/dist/wallet/ledger/index.mjs +2 -0
- package/dist/wallet/ledger/ledger.cjs +49 -0
- package/dist/wallet/ledger/ledger.cjs.map +1 -0
- package/dist/wallet/ledger/ledger.d.cts +27 -0
- package/dist/wallet/ledger/ledger.d.cts.map +1 -0
- package/dist/wallet/ledger/ledger.d.mts +27 -0
- package/dist/wallet/ledger/ledger.d.mts.map +1 -0
- package/dist/wallet/ledger/ledger.mjs +48 -0
- package/dist/wallet/ledger/ledger.mjs.map +1 -0
- package/dist/wallet/signer.d.cts +33 -0
- package/dist/wallet/signer.d.cts.map +1 -0
- package/dist/wallet/signer.d.mts +33 -0
- package/dist/wallet/signer.d.mts.map +1 -0
- package/dist/wallet/types/sign.cjs +6 -0
- package/dist/wallet/types/sign.cjs.map +1 -0
- package/dist/wallet/types/sign.d.cts +20 -0
- package/dist/wallet/types/sign.d.cts.map +1 -0
- package/dist/wallet/types/sign.d.mts +20 -0
- package/dist/wallet/types/sign.d.mts.map +1 -0
- package/dist/wallet/types/sign.mjs +6 -0
- package/dist/wallet/types/sign.mjs.map +1 -0
- package/dist/wallet/types/wallet.d.cts +9 -0
- package/dist/wallet/types/wallet.d.cts.map +1 -0
- package/dist/wallet/types/wallet.d.mts +9 -0
- package/dist/wallet/types/wallet.d.mts.map +1 -0
- package/dist/wallet/utility/index.cjs +1 -0
- package/dist/wallet/utility/index.d.cts +1 -0
- package/dist/wallet/utility/index.d.mts +1 -0
- package/dist/wallet/utility/index.mjs +2 -0
- package/dist/wallet/utility/utility.cjs +83 -0
- package/dist/wallet/utility/utility.cjs.map +1 -0
- package/dist/wallet/utility/utility.d.cts +42 -0
- package/dist/wallet/utility/utility.d.cts.map +1 -0
- package/dist/wallet/utility/utility.d.mts +42 -0
- package/dist/wallet/utility/utility.d.mts.map +1 -0
- package/dist/wallet/utility/utility.mjs +75 -0
- package/dist/wallet/utility/utility.mjs.map +1 -0
- package/dist/wallet/wallet.cjs +223 -0
- package/dist/wallet/wallet.cjs.map +1 -0
- package/dist/wallet/wallet.d.cts +113 -0
- package/dist/wallet/wallet.d.cts.map +1 -0
- package/dist/wallet/wallet.d.mts +113 -0
- package/dist/wallet/wallet.d.mts.map +1 -0
- package/dist/wallet/wallet.mjs +222 -0
- package/dist/wallet/wallet.mjs.map +1 -0
- package/package.json +57 -38
- package/bin/index.d.ts +0 -4
- package/bin/index.js +0 -20
- package/bin/proto/google/protobuf/any.d.ts +0 -145
- package/bin/proto/google/protobuf/any.js +0 -113
- package/bin/proto/index.d.ts +0 -2
- package/bin/proto/index.js +0 -20
- package/bin/proto/tm2/abci.d.ts +0 -37
- package/bin/proto/tm2/abci.js +0 -277
- package/bin/proto/tm2/multisig.d.ts +0 -43
- package/bin/proto/tm2/multisig.js +0 -322
- package/bin/proto/tm2/multisig.test.d.ts +0 -1
- package/bin/proto/tm2/multisig.test.js +0 -63
- package/bin/proto/tm2/tx.d.ts +0 -52
- package/bin/proto/tm2/tx.js +0 -360
- package/bin/provider/endpoints.d.ts +0 -29
- package/bin/provider/endpoints.js +0 -37
- package/bin/provider/errors/errors.d.ts +0 -59
- package/bin/provider/errors/errors.js +0 -173
- package/bin/provider/errors/index.d.ts +0 -1
- package/bin/provider/errors/index.js +0 -17
- package/bin/provider/errors/messages.d.ts +0 -19
- package/bin/provider/errors/messages.js +0 -41
- package/bin/provider/index.d.ts +0 -7
- package/bin/provider/index.js +0 -23
- package/bin/provider/jsonrpc/index.d.ts +0 -1
- package/bin/provider/jsonrpc/index.js +0 -17
- package/bin/provider/jsonrpc/jsonrpc.d.ts +0 -31
- package/bin/provider/jsonrpc/jsonrpc.js +0 -327
- package/bin/provider/jsonrpc/jsonrpc.test.d.ts +0 -1
- package/bin/provider/jsonrpc/jsonrpc.test.js +0 -488
- package/bin/provider/provider.d.ts +0 -98
- package/bin/provider/provider.js +0 -2
- package/bin/provider/types/abci.d.ts +0 -39
- package/bin/provider/types/abci.js +0 -4
- package/bin/provider/types/common.d.ts +0 -184
- package/bin/provider/types/common.js +0 -3
- package/bin/provider/types/index.d.ts +0 -3
- package/bin/provider/types/index.js +0 -19
- package/bin/provider/types/jsonrpc.d.ts +0 -26
- package/bin/provider/types/jsonrpc.js +0 -2
- package/bin/provider/utility/errors.utility.d.ts +0 -11
- package/bin/provider/utility/errors.utility.js +0 -56
- package/bin/provider/utility/index.d.ts +0 -2
- package/bin/provider/utility/index.js +0 -18
- package/bin/provider/utility/provider.utility.js +0 -244
- package/bin/provider/utility/requests.utility.d.ts +0 -35
- package/bin/provider/utility/requests.utility.js +0 -80
- package/bin/provider/websocket/index.d.ts +0 -1
- package/bin/provider/websocket/index.js +0 -17
- package/bin/provider/websocket/ws.d.ts +0 -58
- package/bin/provider/websocket/ws.js +0 -415
- package/bin/provider/websocket/ws.test.d.ts +0 -1
- package/bin/provider/websocket/ws.test.js +0 -648
- package/bin/services/index.d.ts +0 -2
- package/bin/services/index.js +0 -18
- package/bin/services/rest/restService.d.ts +0 -4
- package/bin/services/rest/restService.js +0 -72
- package/bin/services/rest/restService.types.d.ts +0 -6
- package/bin/services/rest/restService.types.js +0 -2
- package/bin/wallet/index.d.ts +0 -6
- package/bin/wallet/index.js +0 -22
- package/bin/wallet/key/index.d.ts +0 -1
- package/bin/wallet/key/index.js +0 -17
- package/bin/wallet/key/key.d.ts +0 -21
- package/bin/wallet/key/key.js +0 -102
- package/bin/wallet/key/key.test.d.ts +0 -1
- package/bin/wallet/key/key.test.js +0 -121
- package/bin/wallet/ledger/index.d.ts +0 -1
- package/bin/wallet/ledger/index.js +0 -17
- package/bin/wallet/ledger/ledger.d.ts +0 -22
- package/bin/wallet/ledger/ledger.js +0 -109
- package/bin/wallet/signer.d.ts +0 -29
- package/bin/wallet/signer.js +0 -2
- package/bin/wallet/types/index.d.ts +0 -2
- package/bin/wallet/types/index.js +0 -18
- package/bin/wallet/types/sign.d.ts +0 -16
- package/bin/wallet/types/sign.js +0 -4
- package/bin/wallet/types/wallet.d.ts +0 -5
- package/bin/wallet/types/wallet.js +0 -2
- package/bin/wallet/utility/index.d.ts +0 -1
- package/bin/wallet/utility/index.js +0 -17
- package/bin/wallet/utility/utility.d.ts +0 -36
- package/bin/wallet/utility/utility.js +0 -117
- package/bin/wallet/wallet.d.ts +0 -106
- package/bin/wallet/wallet.js +0 -361
- package/bin/wallet/wallet.test.d.ts +0 -1
- package/bin/wallet/wallet.test.js +0 -423
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.cjs","names":["uint8ArrayToBase64","Tx","extractSimulateFromResponse","adaptAbciQueryResponse","constructRequestError","extractBalanceFromResponse","adaptBlockResponse","adaptBlockResultsResponse","adaptConsensusParamsResponse","adaptNetInfoResponse","extractSequenceFromResponse","extractAccountNumberFromResponse","extractAccountFromResponse","adaptStatusResponse","adaptTxResponse","TransactionEndpoint","adaptBroadcastTxSyncResponse","ABCIErrorKey","adaptBroadcastTxCommitResponse","waitForTransaction"],"sources":["../../src/provider/provider.ts"],"sourcesContent":["import {\n Tm2Client,\n} from \"@gnolang/tm2-rpc\";\n\nimport {\n Tx,\n} from \"../proto/index.js\";\nimport {\n TransactionEndpoint,\n} from \"./endpoints.js\";\nimport {\n ABCIAccount,\n ABCIErrorKey,\n ABCIResponse,\n BlockInfo,\n BlockResult,\n BroadcastAsGeneric,\n BroadcastTransactionMap,\n BroadcastTxCommitResult,\n BroadcastTxSyncResult,\n ConsensusParams,\n NetworkInfo,\n Status,\n TxResult,\n} from \"./types/index.js\";\nimport {\n constructRequestError,\n} from \"./utility/errors.utility.js\";\nimport {\n adaptAbciQueryResponse,\n adaptBlockResponse,\n adaptBlockResultsResponse,\n adaptBroadcastTxCommitResponse,\n adaptBroadcastTxSyncResponse,\n adaptConsensusParamsResponse,\n adaptNetInfoResponse,\n adaptStatusResponse,\n adaptTxResponse,\n extractAccountFromResponse,\n extractAccountNumberFromResponse,\n extractBalanceFromResponse,\n extractSequenceFromResponse,\n extractSimulateFromResponse,\n uint8ArrayToBase64,\n waitForTransaction,\n} from \"./utility/index.js\";\n\n/**\n * Read-only abstraction for accessing blockchain data\n */\nexport interface Provider {\n // Account-specific methods //\n\n /**\n * Fetches the denomination balance of the account\n * @param {string} address the bech32 address of the account\n * @param {string} [denomination=ugnot] the balance denomination\n * @param {number} [height=0] the height for querying.\n * If omitted, the latest height is used\n */\n getBalance(\n address: string,\n denomination?: string,\n height?: number\n ): Promise<number>\n\n /**\n * Fetches the account sequence\n * @param {string} address the bech32 address of the account\n * @param {number} [height=0] the height for querying.\n * If omitted, the latest height is used.\n * @deprecated use {@link getAccount} instead\n */\n getAccountSequence(address: string, height?: number): Promise<number>\n\n /**\n * Fetches the account number. Errors out if the account\n * is not initialized\n * @param {string} address the bech32 address of the account\n * @param {number} [height=0] the height for querying.\n * If omitted, the latest height is used\n * @deprecated use {@link getAccount} instead\n */\n getAccountNumber(address: string, height?: number): Promise<number>\n\n /**\n * Fetches the account. Errors out if the account\n * is not initialized\n * @param {string} address the bech32 address of the account\n * @param {number} [height=0] the height for querying.\n * If omitted, the latest height is used\n */\n getAccount(address: string, height?: number): Promise<ABCIAccount>\n\n /**\n * Fetches the block at the specific height, if any\n * @param {number} height the height for querying\n */\n getBlock(height: number): Promise<BlockInfo>\n\n /**\n * Fetches the block at the specific height, if any\n * @param {number} height the height for querying\n */\n getBlockResult(height: number): Promise<BlockResult>\n\n /**\n * Fetches the latest block number from the chain\n */\n getBlockNumber(): Promise<number>\n\n // Network-specific methods //\n\n /**\n * Fetches the network information\n */\n getNetwork(): Promise<NetworkInfo>\n\n /**\n * Fetches the consensus params for the specific block height\n * @param {number} height the height for querying\n */\n getConsensusParams(height: number): Promise<ConsensusParams>\n\n /**\n * Fetches the current node status\n */\n getStatus(): Promise<Status>\n\n /**\n * Fetches the current (recommended) average gas price\n */\n getGasPrice(): Promise<number>\n\n /**\n * Estimates the gas limit for the transaction\n * @param {Tx} tx the transaction that needs estimating\n */\n estimateGas(tx: Tx): Promise<bigint>\n\n // Transaction specific methods //\n\n /**\n * Sends the transaction to the node. If the type of endpoint\n * is a broadcast commit, waits for the transaction to be committed to the chain.\n * The transaction needs to be signed beforehand.\n * Returns the transaction broadcast result.\n * @param {string} tx the base64-encoded signed transaction\n * @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)\n */\n sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: string,\n endpoint: K\n ): Promise<BroadcastAsGeneric<K>[\"result\"]>\n\n /**\n * Waits for the transaction to be committed on the chain.\n * NOTE: This method will not take in the fromHeight parameter once\n * proper transaction indexing is added - the implementation should\n * simply try to fetch the transaction first to see if it's included in a block\n * before starting to wait for it; Until then, this method should be used\n * in the sequence:\n * get latest block -> send transaction -> waitForTransaction(block before send)\n * @param {string} hash The transaction hash\n * @param {number} [fromHeight=latest] The block height used to begin the search\n * @param {number} [timeout=15000] Optional wait timeout in MS\n */\n waitForTransaction(\n hash: string,\n fromHeight?: number,\n timeout?: number\n ): Promise<Tx>\n}\n\n/**\n * Base provider implementation backed by a Tm2Client.\n * Subclasses only need to provide a static `create()` factory.\n */\nexport abstract class BaseTm2Provider implements Provider {\n protected readonly client: Tm2Client;\n\n protected constructor(client: Tm2Client) {\n this.client = client;\n }\n\n async estimateGas(tx: Tx): Promise<bigint> {\n const encodedTx = uint8ArrayToBase64(Tx.encode(tx).finish());\n const rpcResponse = await this.client.abciQuery({\n path: \".app/simulate\",\n data: new TextEncoder().encode(encodedTx),\n height: 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n const simulateResult = extractSimulateFromResponse(abciResponse);\n\n const resultErrorKey = simulateResult.response_base?.error?.type_url;\n if (resultErrorKey) {\n throw constructRequestError(resultErrorKey);\n }\n\n return simulateResult.gas_used;\n }\n\n async getBalance(\n address: string,\n denomination?: string,\n height?: number,\n ): Promise<number> {\n const rpcResponse = await this.client.abciQuery({\n path: `bank/balances/${address}`,\n data: new Uint8Array(),\n height: height ? height : 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n\n return extractBalanceFromResponse(\n abciResponse.response.ResponseBase.Data,\n denomination ? denomination : \"ugnot\",\n );\n }\n\n async getBlock(height: number): Promise<BlockInfo> {\n const rpcResponse = await this.client.block(height);\n return adaptBlockResponse(rpcResponse);\n }\n\n async getBlockResult(height: number): Promise<BlockResult> {\n const rpcResponse = await this.client.blockResults(height);\n return adaptBlockResultsResponse(rpcResponse);\n }\n\n async getBlockNumber(): Promise<number> {\n const status = await this.getStatus();\n return parseInt(status.sync_info.latest_block_height);\n }\n\n async getConsensusParams(height: number): Promise<ConsensusParams> {\n const rpcResponse = await this.client.consensusParams(height);\n return adaptConsensusParamsResponse(rpcResponse);\n }\n\n getGasPrice(): Promise<number> {\n return Promise.reject(\"not supported\");\n }\n\n async getNetwork(): Promise<NetworkInfo> {\n const rpcResponse = await this.client.netInfo();\n return adaptNetInfoResponse(rpcResponse);\n }\n\n async getAccountSequence(address: string, height?: number): Promise<number> {\n const rpcResponse = await this.client.abciQuery({\n path: `auth/accounts/${address}`,\n data: new Uint8Array(),\n height: height ? height : 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n return extractSequenceFromResponse(abciResponse.response.ResponseBase.Data);\n }\n\n async getAccountNumber(address: string, height?: number): Promise<number> {\n const rpcResponse = await this.client.abciQuery({\n path: `auth/accounts/${address}`,\n data: new Uint8Array(),\n height: height ? height : 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n return extractAccountNumberFromResponse(\n abciResponse.response.ResponseBase.Data,\n );\n }\n\n async getAccount(address: string, height?: number): Promise<ABCIAccount> {\n const rpcResponse = await this.client.abciQuery({\n path: `auth/accounts/${address}`,\n data: new Uint8Array(),\n height: height ? height : 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n return extractAccountFromResponse(abciResponse.response.ResponseBase.Data);\n }\n\n async getStatus(): Promise<Status> {\n const rpcResponse = await this.client.status();\n return adaptStatusResponse(rpcResponse);\n }\n\n async getTransaction(hash: string): Promise<TxResult> {\n const hashBytes = Uint8Array.from(\n (hash.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)),\n );\n const rpcResponse = await this.client.tx({\n hash: hashBytes,\n });\n return adaptTxResponse(rpcResponse);\n }\n\n async sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: string,\n endpoint: K,\n ): Promise<BroadcastTransactionMap[K][\"result\"]> {\n const txBytes = Uint8Array.from(Buffer.from(tx, \"base64\"));\n\n switch (endpoint) {\n case TransactionEndpoint.BROADCAST_TX_COMMIT:\n return this.broadcastTxCommit(txBytes);\n case TransactionEndpoint.BROADCAST_TX_SYNC:\n default:\n return this.broadcastTxSync(txBytes);\n }\n }\n\n private async broadcastTxSync(\n txBytes: Uint8Array,\n ): Promise<BroadcastTxSyncResult> {\n const rpcResponse = await this.client.broadcastTxSync({\n tx: txBytes,\n });\n const response = adaptBroadcastTxSyncResponse(rpcResponse);\n\n if (response.error) {\n const errType: string = response.error[ABCIErrorKey];\n const log: string = response.Log;\n\n throw constructRequestError(errType, log);\n }\n\n return response;\n }\n\n private async broadcastTxCommit(\n txBytes: Uint8Array,\n ): Promise<BroadcastTxCommitResult> {\n const rpcResponse = await this.client.broadcastTxCommit({\n tx: txBytes,\n });\n const response = adaptBroadcastTxCommitResponse(rpcResponse);\n\n const {\n check_tx, deliver_tx,\n } = response;\n\n if (check_tx.ResponseBase.Error) {\n const errType: string = check_tx.ResponseBase.Error[ABCIErrorKey];\n const log: string = check_tx.ResponseBase.Log;\n\n throw constructRequestError(errType, log);\n }\n\n if (deliver_tx.ResponseBase.Error) {\n const errType: string = deliver_tx.ResponseBase.Error[ABCIErrorKey];\n const log: string = deliver_tx.ResponseBase.Log;\n\n throw constructRequestError(errType, log);\n }\n\n return response;\n }\n\n async waitForTransaction(\n hash: string,\n fromHeight?: number,\n timeout?: number,\n ): Promise<Tx> {\n return waitForTransaction(this, hash, fromHeight, timeout);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Tx } from "../proto/tm2/tx.cjs";
|
|
2
|
+
import { ABCIAccount } from "./types/abci.cjs";
|
|
3
|
+
import { BlockInfo, BlockResult, BroadcastAsGeneric, BroadcastTransactionMap, ConsensusParams, NetworkInfo, Status, TxResult } from "./types/common.cjs";
|
|
4
|
+
import { Tm2Client } from "@gnolang/tm2-rpc";
|
|
5
|
+
|
|
6
|
+
//#region src/provider/provider.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Read-only abstraction for accessing blockchain data
|
|
9
|
+
*/
|
|
10
|
+
interface Provider {
|
|
11
|
+
/**
|
|
12
|
+
* Fetches the denomination balance of the account
|
|
13
|
+
* @param {string} address the bech32 address of the account
|
|
14
|
+
* @param {string} [denomination=ugnot] the balance denomination
|
|
15
|
+
* @param {number} [height=0] the height for querying.
|
|
16
|
+
* If omitted, the latest height is used
|
|
17
|
+
*/
|
|
18
|
+
getBalance(address: string, denomination?: string, height?: number): Promise<number>;
|
|
19
|
+
/**
|
|
20
|
+
* Fetches the account sequence
|
|
21
|
+
* @param {string} address the bech32 address of the account
|
|
22
|
+
* @param {number} [height=0] the height for querying.
|
|
23
|
+
* If omitted, the latest height is used.
|
|
24
|
+
* @deprecated use {@link getAccount} instead
|
|
25
|
+
*/
|
|
26
|
+
getAccountSequence(address: string, height?: number): Promise<number>;
|
|
27
|
+
/**
|
|
28
|
+
* Fetches the account number. Errors out if the account
|
|
29
|
+
* is not initialized
|
|
30
|
+
* @param {string} address the bech32 address of the account
|
|
31
|
+
* @param {number} [height=0] the height for querying.
|
|
32
|
+
* If omitted, the latest height is used
|
|
33
|
+
* @deprecated use {@link getAccount} instead
|
|
34
|
+
*/
|
|
35
|
+
getAccountNumber(address: string, height?: number): Promise<number>;
|
|
36
|
+
/**
|
|
37
|
+
* Fetches the account. Errors out if the account
|
|
38
|
+
* is not initialized
|
|
39
|
+
* @param {string} address the bech32 address of the account
|
|
40
|
+
* @param {number} [height=0] the height for querying.
|
|
41
|
+
* If omitted, the latest height is used
|
|
42
|
+
*/
|
|
43
|
+
getAccount(address: string, height?: number): Promise<ABCIAccount>;
|
|
44
|
+
/**
|
|
45
|
+
* Fetches the block at the specific height, if any
|
|
46
|
+
* @param {number} height the height for querying
|
|
47
|
+
*/
|
|
48
|
+
getBlock(height: number): Promise<BlockInfo>;
|
|
49
|
+
/**
|
|
50
|
+
* Fetches the block at the specific height, if any
|
|
51
|
+
* @param {number} height the height for querying
|
|
52
|
+
*/
|
|
53
|
+
getBlockResult(height: number): Promise<BlockResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Fetches the latest block number from the chain
|
|
56
|
+
*/
|
|
57
|
+
getBlockNumber(): Promise<number>;
|
|
58
|
+
/**
|
|
59
|
+
* Fetches the network information
|
|
60
|
+
*/
|
|
61
|
+
getNetwork(): Promise<NetworkInfo>;
|
|
62
|
+
/**
|
|
63
|
+
* Fetches the consensus params for the specific block height
|
|
64
|
+
* @param {number} height the height for querying
|
|
65
|
+
*/
|
|
66
|
+
getConsensusParams(height: number): Promise<ConsensusParams>;
|
|
67
|
+
/**
|
|
68
|
+
* Fetches the current node status
|
|
69
|
+
*/
|
|
70
|
+
getStatus(): Promise<Status>;
|
|
71
|
+
/**
|
|
72
|
+
* Fetches the current (recommended) average gas price
|
|
73
|
+
*/
|
|
74
|
+
getGasPrice(): Promise<number>;
|
|
75
|
+
/**
|
|
76
|
+
* Estimates the gas limit for the transaction
|
|
77
|
+
* @param {Tx} tx the transaction that needs estimating
|
|
78
|
+
*/
|
|
79
|
+
estimateGas(tx: Tx): Promise<bigint>;
|
|
80
|
+
/**
|
|
81
|
+
* Sends the transaction to the node. If the type of endpoint
|
|
82
|
+
* is a broadcast commit, waits for the transaction to be committed to the chain.
|
|
83
|
+
* The transaction needs to be signed beforehand.
|
|
84
|
+
* Returns the transaction broadcast result.
|
|
85
|
+
* @param {string} tx the base64-encoded signed transaction
|
|
86
|
+
* @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)
|
|
87
|
+
*/
|
|
88
|
+
sendTransaction<K extends keyof BroadcastTransactionMap>(tx: string, endpoint: K): Promise<BroadcastAsGeneric<K>["result"]>;
|
|
89
|
+
/**
|
|
90
|
+
* Waits for the transaction to be committed on the chain.
|
|
91
|
+
* NOTE: This method will not take in the fromHeight parameter once
|
|
92
|
+
* proper transaction indexing is added - the implementation should
|
|
93
|
+
* simply try to fetch the transaction first to see if it's included in a block
|
|
94
|
+
* before starting to wait for it; Until then, this method should be used
|
|
95
|
+
* in the sequence:
|
|
96
|
+
* get latest block -> send transaction -> waitForTransaction(block before send)
|
|
97
|
+
* @param {string} hash The transaction hash
|
|
98
|
+
* @param {number} [fromHeight=latest] The block height used to begin the search
|
|
99
|
+
* @param {number} [timeout=15000] Optional wait timeout in MS
|
|
100
|
+
*/
|
|
101
|
+
waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<Tx>;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Base provider implementation backed by a Tm2Client.
|
|
105
|
+
* Subclasses only need to provide a static `create()` factory.
|
|
106
|
+
*/
|
|
107
|
+
declare abstract class BaseTm2Provider implements Provider {
|
|
108
|
+
protected readonly client: Tm2Client;
|
|
109
|
+
protected constructor(client: Tm2Client);
|
|
110
|
+
estimateGas(tx: Tx): Promise<bigint>;
|
|
111
|
+
getBalance(address: string, denomination?: string, height?: number): Promise<number>;
|
|
112
|
+
getBlock(height: number): Promise<BlockInfo>;
|
|
113
|
+
getBlockResult(height: number): Promise<BlockResult>;
|
|
114
|
+
getBlockNumber(): Promise<number>;
|
|
115
|
+
getConsensusParams(height: number): Promise<ConsensusParams>;
|
|
116
|
+
getGasPrice(): Promise<number>;
|
|
117
|
+
getNetwork(): Promise<NetworkInfo>;
|
|
118
|
+
getAccountSequence(address: string, height?: number): Promise<number>;
|
|
119
|
+
getAccountNumber(address: string, height?: number): Promise<number>;
|
|
120
|
+
getAccount(address: string, height?: number): Promise<ABCIAccount>;
|
|
121
|
+
getStatus(): Promise<Status>;
|
|
122
|
+
getTransaction(hash: string): Promise<TxResult>;
|
|
123
|
+
sendTransaction<K extends keyof BroadcastTransactionMap>(tx: string, endpoint: K): Promise<BroadcastTransactionMap[K]["result"]>;
|
|
124
|
+
private broadcastTxSync;
|
|
125
|
+
private broadcastTxCommit;
|
|
126
|
+
waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<Tx>;
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { BaseTm2Provider, Provider };
|
|
130
|
+
//# sourceMappingURL=provider.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.cts","names":[],"sources":["../../src/provider/provider.ts"],"mappings":";;;;;;;;;UAkDiB,QAAA;EAAA;;;;;;;EAUf,UAAA,CACE,OAAA,UACA,YAAA,WACA,MAAA,YACC,OAAA;EAkC+B;;;;;;;EAzBlC,kBAAA,CAAmB,OAAA,UAAiB,MAAA,YAAkB,OAAA;EAiDlB;;;;;;;;EAvCpC,gBAAA,CAAiB,OAAA,UAAiB,MAAA,YAAkB,OAAA;EAsEzC;;;;;;;EA7DX,UAAA,CAAW,OAAA,UAAiB,MAAA,YAAkB,OAAA,CAAQ,WAAA;EA9BpD;;;;EAoCF,QAAA,CAAS,MAAA,WAAiB,OAAA,CAAQ,SAAA;EAzBE;;;;EA+BpC,cAAA,CAAe,MAAA,WAAiB,OAAA,CAAQ,WAAA;EArBY;;;EA0BpD,cAAA,IAAkB,OAAA;EAjB4B;;;EAwB9C,UAAA,IAAc,OAAA,CAAQ,WAAA;EAlBI;;;;EAwB1B,kBAAA,CAAmB,MAAA,WAAiB,OAAA,CAAQ,eAAA;EAlBJ;;;EAuBxC,SAAA,IAAa,OAAA,CAAQ,MAAA;EAXP;;;EAgBd,WAAA,IAAe,OAAA;EAVqB;;;;EAgBpC,WAAA,CAAY,EAAA,EAAI,EAAA,GAAK,OAAA;EANrB;;;;;;;;EAkBA,eAAA,iBAAgC,uBAAA,EAC9B,EAAA,UACA,QAAA,EAAU,CAAA,GACT,OAAA,CAAQ,kBAAA,CAAmB,CAAA;EAF5B;;;;;;;;;;;;EAgBF,kBAAA,CACE,IAAA,UACA,UAAA,WACA,OAAA,YACC,OAAA,CAAQ,EAAA;AAAA;AAOb;;;;AAAA,uBAAsB,eAAA,YAA2B,QAAA;EAAA,mBAC5B,MAAA,EAAQ,SAAA;EAAA,UAElB,WAAA,CAAa,MAAA,EAAQ,SAAA;EAIxB,WAAA,CAAY,EAAA,EAAI,EAAA,GAAK,OAAA;EAoBrB,UAAA,CACJ,OAAA,UACA,YAAA,WACA,MAAA,YACC,OAAA;EAgBG,QAAA,CAAS,MAAA,WAAiB,OAAA,CAAQ,SAAA;EAKlC,cAAA,CAAe,MAAA,WAAiB,OAAA,CAAQ,WAAA;EAKxC,cAAA,CAAA,GAAkB,OAAA;EAKlB,kBAAA,CAAmB,MAAA,WAAiB,OAAA,CAAQ,eAAA;EAKlD,WAAA,CAAA,GAAe,OAAA;EAIT,UAAA,CAAA,GAAc,OAAA,CAAQ,WAAA;EAKtB,kBAAA,CAAmB,OAAA,UAAiB,MAAA,YAAkB,OAAA;EAYtD,gBAAA,CAAiB,OAAA,UAAiB,MAAA,YAAkB,OAAA;EAcpD,UAAA,CAAW,OAAA,UAAiB,MAAA,YAAkB,OAAA,CAAQ,WAAA;EAYtD,SAAA,CAAA,GAAa,OAAA,CAAQ,MAAA;EAKrB,cAAA,CAAe,IAAA,WAAe,OAAA,CAAQ,QAAA;EAUtC,eAAA,iBAAgC,uBAAA,CAAA,CACpC,EAAA,UACA,QAAA,EAAU,CAAA,GACT,OAAA,CAAQ,uBAAA,CAAwB,CAAA;EAAA,QAYrB,eAAA;EAAA,QAkBA,iBAAA;EA6BR,kBAAA,CACJ,IAAA,UACA,UAAA,WACA,OAAA,YACC,OAAA,CAAQ,EAAA;AAAA"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Tx } from "../proto/tm2/tx.mjs";
|
|
2
|
+
import { ABCIAccount } from "./types/abci.mjs";
|
|
3
|
+
import { BlockInfo, BlockResult, BroadcastAsGeneric, BroadcastTransactionMap, ConsensusParams, NetworkInfo, Status, TxResult } from "./types/common.mjs";
|
|
4
|
+
import { Tm2Client } from "@gnolang/tm2-rpc";
|
|
5
|
+
|
|
6
|
+
//#region src/provider/provider.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Read-only abstraction for accessing blockchain data
|
|
9
|
+
*/
|
|
10
|
+
interface Provider {
|
|
11
|
+
/**
|
|
12
|
+
* Fetches the denomination balance of the account
|
|
13
|
+
* @param {string} address the bech32 address of the account
|
|
14
|
+
* @param {string} [denomination=ugnot] the balance denomination
|
|
15
|
+
* @param {number} [height=0] the height for querying.
|
|
16
|
+
* If omitted, the latest height is used
|
|
17
|
+
*/
|
|
18
|
+
getBalance(address: string, denomination?: string, height?: number): Promise<number>;
|
|
19
|
+
/**
|
|
20
|
+
* Fetches the account sequence
|
|
21
|
+
* @param {string} address the bech32 address of the account
|
|
22
|
+
* @param {number} [height=0] the height for querying.
|
|
23
|
+
* If omitted, the latest height is used.
|
|
24
|
+
* @deprecated use {@link getAccount} instead
|
|
25
|
+
*/
|
|
26
|
+
getAccountSequence(address: string, height?: number): Promise<number>;
|
|
27
|
+
/**
|
|
28
|
+
* Fetches the account number. Errors out if the account
|
|
29
|
+
* is not initialized
|
|
30
|
+
* @param {string} address the bech32 address of the account
|
|
31
|
+
* @param {number} [height=0] the height for querying.
|
|
32
|
+
* If omitted, the latest height is used
|
|
33
|
+
* @deprecated use {@link getAccount} instead
|
|
34
|
+
*/
|
|
35
|
+
getAccountNumber(address: string, height?: number): Promise<number>;
|
|
36
|
+
/**
|
|
37
|
+
* Fetches the account. Errors out if the account
|
|
38
|
+
* is not initialized
|
|
39
|
+
* @param {string} address the bech32 address of the account
|
|
40
|
+
* @param {number} [height=0] the height for querying.
|
|
41
|
+
* If omitted, the latest height is used
|
|
42
|
+
*/
|
|
43
|
+
getAccount(address: string, height?: number): Promise<ABCIAccount>;
|
|
44
|
+
/**
|
|
45
|
+
* Fetches the block at the specific height, if any
|
|
46
|
+
* @param {number} height the height for querying
|
|
47
|
+
*/
|
|
48
|
+
getBlock(height: number): Promise<BlockInfo>;
|
|
49
|
+
/**
|
|
50
|
+
* Fetches the block at the specific height, if any
|
|
51
|
+
* @param {number} height the height for querying
|
|
52
|
+
*/
|
|
53
|
+
getBlockResult(height: number): Promise<BlockResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Fetches the latest block number from the chain
|
|
56
|
+
*/
|
|
57
|
+
getBlockNumber(): Promise<number>;
|
|
58
|
+
/**
|
|
59
|
+
* Fetches the network information
|
|
60
|
+
*/
|
|
61
|
+
getNetwork(): Promise<NetworkInfo>;
|
|
62
|
+
/**
|
|
63
|
+
* Fetches the consensus params for the specific block height
|
|
64
|
+
* @param {number} height the height for querying
|
|
65
|
+
*/
|
|
66
|
+
getConsensusParams(height: number): Promise<ConsensusParams>;
|
|
67
|
+
/**
|
|
68
|
+
* Fetches the current node status
|
|
69
|
+
*/
|
|
70
|
+
getStatus(): Promise<Status>;
|
|
71
|
+
/**
|
|
72
|
+
* Fetches the current (recommended) average gas price
|
|
73
|
+
*/
|
|
74
|
+
getGasPrice(): Promise<number>;
|
|
75
|
+
/**
|
|
76
|
+
* Estimates the gas limit for the transaction
|
|
77
|
+
* @param {Tx} tx the transaction that needs estimating
|
|
78
|
+
*/
|
|
79
|
+
estimateGas(tx: Tx): Promise<bigint>;
|
|
80
|
+
/**
|
|
81
|
+
* Sends the transaction to the node. If the type of endpoint
|
|
82
|
+
* is a broadcast commit, waits for the transaction to be committed to the chain.
|
|
83
|
+
* The transaction needs to be signed beforehand.
|
|
84
|
+
* Returns the transaction broadcast result.
|
|
85
|
+
* @param {string} tx the base64-encoded signed transaction
|
|
86
|
+
* @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)
|
|
87
|
+
*/
|
|
88
|
+
sendTransaction<K extends keyof BroadcastTransactionMap>(tx: string, endpoint: K): Promise<BroadcastAsGeneric<K>["result"]>;
|
|
89
|
+
/**
|
|
90
|
+
* Waits for the transaction to be committed on the chain.
|
|
91
|
+
* NOTE: This method will not take in the fromHeight parameter once
|
|
92
|
+
* proper transaction indexing is added - the implementation should
|
|
93
|
+
* simply try to fetch the transaction first to see if it's included in a block
|
|
94
|
+
* before starting to wait for it; Until then, this method should be used
|
|
95
|
+
* in the sequence:
|
|
96
|
+
* get latest block -> send transaction -> waitForTransaction(block before send)
|
|
97
|
+
* @param {string} hash The transaction hash
|
|
98
|
+
* @param {number} [fromHeight=latest] The block height used to begin the search
|
|
99
|
+
* @param {number} [timeout=15000] Optional wait timeout in MS
|
|
100
|
+
*/
|
|
101
|
+
waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<Tx>;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Base provider implementation backed by a Tm2Client.
|
|
105
|
+
* Subclasses only need to provide a static `create()` factory.
|
|
106
|
+
*/
|
|
107
|
+
declare abstract class BaseTm2Provider implements Provider {
|
|
108
|
+
protected readonly client: Tm2Client;
|
|
109
|
+
protected constructor(client: Tm2Client);
|
|
110
|
+
estimateGas(tx: Tx): Promise<bigint>;
|
|
111
|
+
getBalance(address: string, denomination?: string, height?: number): Promise<number>;
|
|
112
|
+
getBlock(height: number): Promise<BlockInfo>;
|
|
113
|
+
getBlockResult(height: number): Promise<BlockResult>;
|
|
114
|
+
getBlockNumber(): Promise<number>;
|
|
115
|
+
getConsensusParams(height: number): Promise<ConsensusParams>;
|
|
116
|
+
getGasPrice(): Promise<number>;
|
|
117
|
+
getNetwork(): Promise<NetworkInfo>;
|
|
118
|
+
getAccountSequence(address: string, height?: number): Promise<number>;
|
|
119
|
+
getAccountNumber(address: string, height?: number): Promise<number>;
|
|
120
|
+
getAccount(address: string, height?: number): Promise<ABCIAccount>;
|
|
121
|
+
getStatus(): Promise<Status>;
|
|
122
|
+
getTransaction(hash: string): Promise<TxResult>;
|
|
123
|
+
sendTransaction<K extends keyof BroadcastTransactionMap>(tx: string, endpoint: K): Promise<BroadcastTransactionMap[K]["result"]>;
|
|
124
|
+
private broadcastTxSync;
|
|
125
|
+
private broadcastTxCommit;
|
|
126
|
+
waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<Tx>;
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { BaseTm2Provider, Provider };
|
|
130
|
+
//# sourceMappingURL=provider.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.mts","names":[],"sources":["../../src/provider/provider.ts"],"mappings":";;;;;;;;;UAkDiB,QAAA;EAAA;;;;;;;EAUf,UAAA,CACE,OAAA,UACA,YAAA,WACA,MAAA,YACC,OAAA;EAkC+B;;;;;;;EAzBlC,kBAAA,CAAmB,OAAA,UAAiB,MAAA,YAAkB,OAAA;EAiDlB;;;;;;;;EAvCpC,gBAAA,CAAiB,OAAA,UAAiB,MAAA,YAAkB,OAAA;EAsEzC;;;;;;;EA7DX,UAAA,CAAW,OAAA,UAAiB,MAAA,YAAkB,OAAA,CAAQ,WAAA;EA9BpD;;;;EAoCF,QAAA,CAAS,MAAA,WAAiB,OAAA,CAAQ,SAAA;EAzBE;;;;EA+BpC,cAAA,CAAe,MAAA,WAAiB,OAAA,CAAQ,WAAA;EArBY;;;EA0BpD,cAAA,IAAkB,OAAA;EAjB4B;;;EAwB9C,UAAA,IAAc,OAAA,CAAQ,WAAA;EAlBI;;;;EAwB1B,kBAAA,CAAmB,MAAA,WAAiB,OAAA,CAAQ,eAAA;EAlBJ;;;EAuBxC,SAAA,IAAa,OAAA,CAAQ,MAAA;EAXP;;;EAgBd,WAAA,IAAe,OAAA;EAVqB;;;;EAgBpC,WAAA,CAAY,EAAA,EAAI,EAAA,GAAK,OAAA;EANrB;;;;;;;;EAkBA,eAAA,iBAAgC,uBAAA,EAC9B,EAAA,UACA,QAAA,EAAU,CAAA,GACT,OAAA,CAAQ,kBAAA,CAAmB,CAAA;EAF5B;;;;;;;;;;;;EAgBF,kBAAA,CACE,IAAA,UACA,UAAA,WACA,OAAA,YACC,OAAA,CAAQ,EAAA;AAAA;AAOb;;;;AAAA,uBAAsB,eAAA,YAA2B,QAAA;EAAA,mBAC5B,MAAA,EAAQ,SAAA;EAAA,UAElB,WAAA,CAAa,MAAA,EAAQ,SAAA;EAIxB,WAAA,CAAY,EAAA,EAAI,EAAA,GAAK,OAAA;EAoBrB,UAAA,CACJ,OAAA,UACA,YAAA,WACA,MAAA,YACC,OAAA;EAgBG,QAAA,CAAS,MAAA,WAAiB,OAAA,CAAQ,SAAA;EAKlC,cAAA,CAAe,MAAA,WAAiB,OAAA,CAAQ,WAAA;EAKxC,cAAA,CAAA,GAAkB,OAAA;EAKlB,kBAAA,CAAmB,MAAA,WAAiB,OAAA,CAAQ,eAAA;EAKlD,WAAA,CAAA,GAAe,OAAA;EAIT,UAAA,CAAA,GAAc,OAAA,CAAQ,WAAA;EAKtB,kBAAA,CAAmB,OAAA,UAAiB,MAAA,YAAkB,OAAA;EAYtD,gBAAA,CAAiB,OAAA,UAAiB,MAAA,YAAkB,OAAA;EAcpD,UAAA,CAAW,OAAA,UAAiB,MAAA,YAAkB,OAAA,CAAQ,WAAA;EAYtD,SAAA,CAAA,GAAa,OAAA,CAAQ,MAAA;EAKrB,cAAA,CAAe,IAAA,WAAe,OAAA,CAAQ,QAAA;EAUtC,eAAA,iBAAgC,uBAAA,CAAA,CACpC,EAAA,UACA,QAAA,EAAU,CAAA,GACT,OAAA,CAAQ,uBAAA,CAAwB,CAAA;EAAA,QAYrB,eAAA;EAAA,QAkBA,iBAAA;EA6BR,kBAAA,CACJ,IAAA,UACA,UAAA,WACA,OAAA,YACC,OAAA,CAAQ,EAAA;AAAA"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Tx } from "../proto/tm2/tx.mjs";
|
|
2
|
+
import "../proto/index.mjs";
|
|
3
|
+
import { TransactionEndpoint } from "./endpoints.mjs";
|
|
4
|
+
import { _defineProperty } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.mjs";
|
|
5
|
+
import { ABCIErrorKey } from "./types/abci.mjs";
|
|
6
|
+
import { constructRequestError } from "./utility/errors.utility.mjs";
|
|
7
|
+
import { adaptAbciQueryResponse, adaptBlockResponse, adaptBlockResultsResponse, adaptBroadcastTxCommitResponse, adaptBroadcastTxSyncResponse, adaptConsensusParamsResponse, adaptNetInfoResponse, adaptStatusResponse, adaptTxResponse } from "./utility/adapters.mjs";
|
|
8
|
+
import { uint8ArrayToBase64 } from "./utility/requests.utility.mjs";
|
|
9
|
+
import { extractAccountFromResponse, extractAccountNumberFromResponse, extractBalanceFromResponse, extractSequenceFromResponse, extractSimulateFromResponse, waitForTransaction } from "./utility/provider.utility.mjs";
|
|
10
|
+
import "./utility/index.mjs";
|
|
11
|
+
//#region src/provider/provider.ts
|
|
12
|
+
/**
|
|
13
|
+
* Base provider implementation backed by a Tm2Client.
|
|
14
|
+
* Subclasses only need to provide a static `create()` factory.
|
|
15
|
+
*/
|
|
16
|
+
var BaseTm2Provider = class {
|
|
17
|
+
constructor(client) {
|
|
18
|
+
_defineProperty(this, "client", void 0);
|
|
19
|
+
this.client = client;
|
|
20
|
+
}
|
|
21
|
+
async estimateGas(tx) {
|
|
22
|
+
const encodedTx = uint8ArrayToBase64(Tx.encode(tx).finish());
|
|
23
|
+
const simulateResult = extractSimulateFromResponse(adaptAbciQueryResponse(await this.client.abciQuery({
|
|
24
|
+
path: ".app/simulate",
|
|
25
|
+
data: new TextEncoder().encode(encodedTx),
|
|
26
|
+
height: 0,
|
|
27
|
+
prove: false
|
|
28
|
+
})));
|
|
29
|
+
const resultErrorKey = simulateResult.response_base?.error?.type_url;
|
|
30
|
+
if (resultErrorKey) throw constructRequestError(resultErrorKey);
|
|
31
|
+
return simulateResult.gas_used;
|
|
32
|
+
}
|
|
33
|
+
async getBalance(address, denomination, height) {
|
|
34
|
+
return extractBalanceFromResponse(adaptAbciQueryResponse(await this.client.abciQuery({
|
|
35
|
+
path: `bank/balances/${address}`,
|
|
36
|
+
data: new Uint8Array(),
|
|
37
|
+
height: height ? height : 0,
|
|
38
|
+
prove: false
|
|
39
|
+
})).response.ResponseBase.Data, denomination ? denomination : "ugnot");
|
|
40
|
+
}
|
|
41
|
+
async getBlock(height) {
|
|
42
|
+
return adaptBlockResponse(await this.client.block(height));
|
|
43
|
+
}
|
|
44
|
+
async getBlockResult(height) {
|
|
45
|
+
return adaptBlockResultsResponse(await this.client.blockResults(height));
|
|
46
|
+
}
|
|
47
|
+
async getBlockNumber() {
|
|
48
|
+
const status = await this.getStatus();
|
|
49
|
+
return parseInt(status.sync_info.latest_block_height);
|
|
50
|
+
}
|
|
51
|
+
async getConsensusParams(height) {
|
|
52
|
+
return adaptConsensusParamsResponse(await this.client.consensusParams(height));
|
|
53
|
+
}
|
|
54
|
+
getGasPrice() {
|
|
55
|
+
return Promise.reject("not supported");
|
|
56
|
+
}
|
|
57
|
+
async getNetwork() {
|
|
58
|
+
return adaptNetInfoResponse(await this.client.netInfo());
|
|
59
|
+
}
|
|
60
|
+
async getAccountSequence(address, height) {
|
|
61
|
+
return extractSequenceFromResponse(adaptAbciQueryResponse(await this.client.abciQuery({
|
|
62
|
+
path: `auth/accounts/${address}`,
|
|
63
|
+
data: new Uint8Array(),
|
|
64
|
+
height: height ? height : 0,
|
|
65
|
+
prove: false
|
|
66
|
+
})).response.ResponseBase.Data);
|
|
67
|
+
}
|
|
68
|
+
async getAccountNumber(address, height) {
|
|
69
|
+
return extractAccountNumberFromResponse(adaptAbciQueryResponse(await this.client.abciQuery({
|
|
70
|
+
path: `auth/accounts/${address}`,
|
|
71
|
+
data: new Uint8Array(),
|
|
72
|
+
height: height ? height : 0,
|
|
73
|
+
prove: false
|
|
74
|
+
})).response.ResponseBase.Data);
|
|
75
|
+
}
|
|
76
|
+
async getAccount(address, height) {
|
|
77
|
+
return extractAccountFromResponse(adaptAbciQueryResponse(await this.client.abciQuery({
|
|
78
|
+
path: `auth/accounts/${address}`,
|
|
79
|
+
data: new Uint8Array(),
|
|
80
|
+
height: height ? height : 0,
|
|
81
|
+
prove: false
|
|
82
|
+
})).response.ResponseBase.Data);
|
|
83
|
+
}
|
|
84
|
+
async getStatus() {
|
|
85
|
+
return adaptStatusResponse(await this.client.status());
|
|
86
|
+
}
|
|
87
|
+
async getTransaction(hash) {
|
|
88
|
+
const hashBytes = Uint8Array.from((hash.match(/.{1,2}/g) ?? []).map((byte) => parseInt(byte, 16)));
|
|
89
|
+
return adaptTxResponse(await this.client.tx({ hash: hashBytes }));
|
|
90
|
+
}
|
|
91
|
+
async sendTransaction(tx, endpoint) {
|
|
92
|
+
const txBytes = Uint8Array.from(Buffer.from(tx, "base64"));
|
|
93
|
+
switch (endpoint) {
|
|
94
|
+
case TransactionEndpoint.BROADCAST_TX_COMMIT: return this.broadcastTxCommit(txBytes);
|
|
95
|
+
case TransactionEndpoint.BROADCAST_TX_SYNC:
|
|
96
|
+
default: return this.broadcastTxSync(txBytes);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async broadcastTxSync(txBytes) {
|
|
100
|
+
const response = adaptBroadcastTxSyncResponse(await this.client.broadcastTxSync({ tx: txBytes }));
|
|
101
|
+
if (response.error) {
|
|
102
|
+
const errType = response.error[ABCIErrorKey];
|
|
103
|
+
const log = response.Log;
|
|
104
|
+
throw constructRequestError(errType, log);
|
|
105
|
+
}
|
|
106
|
+
return response;
|
|
107
|
+
}
|
|
108
|
+
async broadcastTxCommit(txBytes) {
|
|
109
|
+
const response = adaptBroadcastTxCommitResponse(await this.client.broadcastTxCommit({ tx: txBytes }));
|
|
110
|
+
const { check_tx, deliver_tx } = response;
|
|
111
|
+
if (check_tx.ResponseBase.Error) {
|
|
112
|
+
const errType = check_tx.ResponseBase.Error[ABCIErrorKey];
|
|
113
|
+
const log = check_tx.ResponseBase.Log;
|
|
114
|
+
throw constructRequestError(errType, log);
|
|
115
|
+
}
|
|
116
|
+
if (deliver_tx.ResponseBase.Error) {
|
|
117
|
+
const errType = deliver_tx.ResponseBase.Error[ABCIErrorKey];
|
|
118
|
+
const log = deliver_tx.ResponseBase.Log;
|
|
119
|
+
throw constructRequestError(errType, log);
|
|
120
|
+
}
|
|
121
|
+
return response;
|
|
122
|
+
}
|
|
123
|
+
async waitForTransaction(hash, fromHeight, timeout) {
|
|
124
|
+
return waitForTransaction(this, hash, fromHeight, timeout);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
//#endregion
|
|
128
|
+
export { BaseTm2Provider };
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=provider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.mjs","names":[],"sources":["../../src/provider/provider.ts"],"sourcesContent":["import {\n Tm2Client,\n} from \"@gnolang/tm2-rpc\";\n\nimport {\n Tx,\n} from \"../proto/index.js\";\nimport {\n TransactionEndpoint,\n} from \"./endpoints.js\";\nimport {\n ABCIAccount,\n ABCIErrorKey,\n ABCIResponse,\n BlockInfo,\n BlockResult,\n BroadcastAsGeneric,\n BroadcastTransactionMap,\n BroadcastTxCommitResult,\n BroadcastTxSyncResult,\n ConsensusParams,\n NetworkInfo,\n Status,\n TxResult,\n} from \"./types/index.js\";\nimport {\n constructRequestError,\n} from \"./utility/errors.utility.js\";\nimport {\n adaptAbciQueryResponse,\n adaptBlockResponse,\n adaptBlockResultsResponse,\n adaptBroadcastTxCommitResponse,\n adaptBroadcastTxSyncResponse,\n adaptConsensusParamsResponse,\n adaptNetInfoResponse,\n adaptStatusResponse,\n adaptTxResponse,\n extractAccountFromResponse,\n extractAccountNumberFromResponse,\n extractBalanceFromResponse,\n extractSequenceFromResponse,\n extractSimulateFromResponse,\n uint8ArrayToBase64,\n waitForTransaction,\n} from \"./utility/index.js\";\n\n/**\n * Read-only abstraction for accessing blockchain data\n */\nexport interface Provider {\n // Account-specific methods //\n\n /**\n * Fetches the denomination balance of the account\n * @param {string} address the bech32 address of the account\n * @param {string} [denomination=ugnot] the balance denomination\n * @param {number} [height=0] the height for querying.\n * If omitted, the latest height is used\n */\n getBalance(\n address: string,\n denomination?: string,\n height?: number\n ): Promise<number>\n\n /**\n * Fetches the account sequence\n * @param {string} address the bech32 address of the account\n * @param {number} [height=0] the height for querying.\n * If omitted, the latest height is used.\n * @deprecated use {@link getAccount} instead\n */\n getAccountSequence(address: string, height?: number): Promise<number>\n\n /**\n * Fetches the account number. Errors out if the account\n * is not initialized\n * @param {string} address the bech32 address of the account\n * @param {number} [height=0] the height for querying.\n * If omitted, the latest height is used\n * @deprecated use {@link getAccount} instead\n */\n getAccountNumber(address: string, height?: number): Promise<number>\n\n /**\n * Fetches the account. Errors out if the account\n * is not initialized\n * @param {string} address the bech32 address of the account\n * @param {number} [height=0] the height for querying.\n * If omitted, the latest height is used\n */\n getAccount(address: string, height?: number): Promise<ABCIAccount>\n\n /**\n * Fetches the block at the specific height, if any\n * @param {number} height the height for querying\n */\n getBlock(height: number): Promise<BlockInfo>\n\n /**\n * Fetches the block at the specific height, if any\n * @param {number} height the height for querying\n */\n getBlockResult(height: number): Promise<BlockResult>\n\n /**\n * Fetches the latest block number from the chain\n */\n getBlockNumber(): Promise<number>\n\n // Network-specific methods //\n\n /**\n * Fetches the network information\n */\n getNetwork(): Promise<NetworkInfo>\n\n /**\n * Fetches the consensus params for the specific block height\n * @param {number} height the height for querying\n */\n getConsensusParams(height: number): Promise<ConsensusParams>\n\n /**\n * Fetches the current node status\n */\n getStatus(): Promise<Status>\n\n /**\n * Fetches the current (recommended) average gas price\n */\n getGasPrice(): Promise<number>\n\n /**\n * Estimates the gas limit for the transaction\n * @param {Tx} tx the transaction that needs estimating\n */\n estimateGas(tx: Tx): Promise<bigint>\n\n // Transaction specific methods //\n\n /**\n * Sends the transaction to the node. If the type of endpoint\n * is a broadcast commit, waits for the transaction to be committed to the chain.\n * The transaction needs to be signed beforehand.\n * Returns the transaction broadcast result.\n * @param {string} tx the base64-encoded signed transaction\n * @param {BroadcastType} endpoint the transaction broadcast type (sync / commit)\n */\n sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: string,\n endpoint: K\n ): Promise<BroadcastAsGeneric<K>[\"result\"]>\n\n /**\n * Waits for the transaction to be committed on the chain.\n * NOTE: This method will not take in the fromHeight parameter once\n * proper transaction indexing is added - the implementation should\n * simply try to fetch the transaction first to see if it's included in a block\n * before starting to wait for it; Until then, this method should be used\n * in the sequence:\n * get latest block -> send transaction -> waitForTransaction(block before send)\n * @param {string} hash The transaction hash\n * @param {number} [fromHeight=latest] The block height used to begin the search\n * @param {number} [timeout=15000] Optional wait timeout in MS\n */\n waitForTransaction(\n hash: string,\n fromHeight?: number,\n timeout?: number\n ): Promise<Tx>\n}\n\n/**\n * Base provider implementation backed by a Tm2Client.\n * Subclasses only need to provide a static `create()` factory.\n */\nexport abstract class BaseTm2Provider implements Provider {\n protected readonly client: Tm2Client;\n\n protected constructor(client: Tm2Client) {\n this.client = client;\n }\n\n async estimateGas(tx: Tx): Promise<bigint> {\n const encodedTx = uint8ArrayToBase64(Tx.encode(tx).finish());\n const rpcResponse = await this.client.abciQuery({\n path: \".app/simulate\",\n data: new TextEncoder().encode(encodedTx),\n height: 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n const simulateResult = extractSimulateFromResponse(abciResponse);\n\n const resultErrorKey = simulateResult.response_base?.error?.type_url;\n if (resultErrorKey) {\n throw constructRequestError(resultErrorKey);\n }\n\n return simulateResult.gas_used;\n }\n\n async getBalance(\n address: string,\n denomination?: string,\n height?: number,\n ): Promise<number> {\n const rpcResponse = await this.client.abciQuery({\n path: `bank/balances/${address}`,\n data: new Uint8Array(),\n height: height ? height : 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n\n return extractBalanceFromResponse(\n abciResponse.response.ResponseBase.Data,\n denomination ? denomination : \"ugnot\",\n );\n }\n\n async getBlock(height: number): Promise<BlockInfo> {\n const rpcResponse = await this.client.block(height);\n return adaptBlockResponse(rpcResponse);\n }\n\n async getBlockResult(height: number): Promise<BlockResult> {\n const rpcResponse = await this.client.blockResults(height);\n return adaptBlockResultsResponse(rpcResponse);\n }\n\n async getBlockNumber(): Promise<number> {\n const status = await this.getStatus();\n return parseInt(status.sync_info.latest_block_height);\n }\n\n async getConsensusParams(height: number): Promise<ConsensusParams> {\n const rpcResponse = await this.client.consensusParams(height);\n return adaptConsensusParamsResponse(rpcResponse);\n }\n\n getGasPrice(): Promise<number> {\n return Promise.reject(\"not supported\");\n }\n\n async getNetwork(): Promise<NetworkInfo> {\n const rpcResponse = await this.client.netInfo();\n return adaptNetInfoResponse(rpcResponse);\n }\n\n async getAccountSequence(address: string, height?: number): Promise<number> {\n const rpcResponse = await this.client.abciQuery({\n path: `auth/accounts/${address}`,\n data: new Uint8Array(),\n height: height ? height : 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n return extractSequenceFromResponse(abciResponse.response.ResponseBase.Data);\n }\n\n async getAccountNumber(address: string, height?: number): Promise<number> {\n const rpcResponse = await this.client.abciQuery({\n path: `auth/accounts/${address}`,\n data: new Uint8Array(),\n height: height ? height : 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n return extractAccountNumberFromResponse(\n abciResponse.response.ResponseBase.Data,\n );\n }\n\n async getAccount(address: string, height?: number): Promise<ABCIAccount> {\n const rpcResponse = await this.client.abciQuery({\n path: `auth/accounts/${address}`,\n data: new Uint8Array(),\n height: height ? height : 0,\n prove: false,\n });\n\n const abciResponse: ABCIResponse = adaptAbciQueryResponse(rpcResponse);\n return extractAccountFromResponse(abciResponse.response.ResponseBase.Data);\n }\n\n async getStatus(): Promise<Status> {\n const rpcResponse = await this.client.status();\n return adaptStatusResponse(rpcResponse);\n }\n\n async getTransaction(hash: string): Promise<TxResult> {\n const hashBytes = Uint8Array.from(\n (hash.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16)),\n );\n const rpcResponse = await this.client.tx({\n hash: hashBytes,\n });\n return adaptTxResponse(rpcResponse);\n }\n\n async sendTransaction<K extends keyof BroadcastTransactionMap>(\n tx: string,\n endpoint: K,\n ): Promise<BroadcastTransactionMap[K][\"result\"]> {\n const txBytes = Uint8Array.from(Buffer.from(tx, \"base64\"));\n\n switch (endpoint) {\n case TransactionEndpoint.BROADCAST_TX_COMMIT:\n return this.broadcastTxCommit(txBytes);\n case TransactionEndpoint.BROADCAST_TX_SYNC:\n default:\n return this.broadcastTxSync(txBytes);\n }\n }\n\n private async broadcastTxSync(\n txBytes: Uint8Array,\n ): Promise<BroadcastTxSyncResult> {\n const rpcResponse = await this.client.broadcastTxSync({\n tx: txBytes,\n });\n const response = adaptBroadcastTxSyncResponse(rpcResponse);\n\n if (response.error) {\n const errType: string = response.error[ABCIErrorKey];\n const log: string = response.Log;\n\n throw constructRequestError(errType, log);\n }\n\n return response;\n }\n\n private async broadcastTxCommit(\n txBytes: Uint8Array,\n ): Promise<BroadcastTxCommitResult> {\n const rpcResponse = await this.client.broadcastTxCommit({\n tx: txBytes,\n });\n const response = adaptBroadcastTxCommitResponse(rpcResponse);\n\n const {\n check_tx, deliver_tx,\n } = response;\n\n if (check_tx.ResponseBase.Error) {\n const errType: string = check_tx.ResponseBase.Error[ABCIErrorKey];\n const log: string = check_tx.ResponseBase.Log;\n\n throw constructRequestError(errType, log);\n }\n\n if (deliver_tx.ResponseBase.Error) {\n const errType: string = deliver_tx.ResponseBase.Error[ABCIErrorKey];\n const log: string = deliver_tx.ResponseBase.Log;\n\n throw constructRequestError(errType, log);\n }\n\n return response;\n }\n\n async waitForTransaction(\n hash: string,\n fromHeight?: number,\n timeout?: number,\n ): Promise<Tx> {\n return waitForTransaction(this, hash, fromHeight, timeout);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abci.cjs","names":[],"sources":["../../../src/provider/types/abci.ts"],"sourcesContent":["export interface ABCIResponse {\n response: {\n ResponseBase: ABCIResponseBase\n Key: string | null\n Value: string | null\n Proof: MerkleProof | null\n Height: string\n }\n}\n\nexport interface ABCIResponseBase {\n Error: {\n // ABCIErrorKey\n [key: string]: string\n } | null\n Data: string | null\n Events: string | null\n Log: string\n Info: string\n}\n\ninterface MerkleProof {\n ops: {\n type: string\n key: string | null\n data: string | null\n }[]\n}\n\nexport interface ABCIAccount {\n BaseAccount: {\n // the associated account address\n address: string\n // the balance list\n coins: string\n // the public key info\n public_key: {\n // type of public key\n \"@type\": string\n // public key value\n value: string\n } | null\n // the account number (state-dependent) (decimal)\n account_number: string\n // the account sequence / nonce (decimal)\n sequence: string\n }\n}\n\nexport const ABCIErrorKey = \"@type\";\n"],"mappings":";AAiDA,MAAa,eAAe"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//#region src/provider/types/abci.d.ts
|
|
2
|
+
interface ABCIResponse {
|
|
3
|
+
response: {
|
|
4
|
+
ResponseBase: ABCIResponseBase;
|
|
5
|
+
Key: string | null;
|
|
6
|
+
Value: string | null;
|
|
7
|
+
Proof: MerkleProof | null;
|
|
8
|
+
Height: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
interface ABCIResponseBase {
|
|
12
|
+
Error: {
|
|
13
|
+
[key: string]: string;
|
|
14
|
+
} | null;
|
|
15
|
+
Data: string | null;
|
|
16
|
+
Events: string | null;
|
|
17
|
+
Log: string;
|
|
18
|
+
Info: string;
|
|
19
|
+
}
|
|
20
|
+
interface MerkleProof {
|
|
21
|
+
ops: {
|
|
22
|
+
type: string;
|
|
23
|
+
key: string | null;
|
|
24
|
+
data: string | null;
|
|
25
|
+
}[];
|
|
26
|
+
}
|
|
27
|
+
interface ABCIAccount {
|
|
28
|
+
BaseAccount: {
|
|
29
|
+
address: string;
|
|
30
|
+
coins: string;
|
|
31
|
+
public_key: {
|
|
32
|
+
"@type": string;
|
|
33
|
+
value: string;
|
|
34
|
+
} | null;
|
|
35
|
+
account_number: string;
|
|
36
|
+
sequence: string;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
declare const ABCIErrorKey = "@type";
|
|
40
|
+
//#endregion
|
|
41
|
+
export { ABCIAccount, ABCIErrorKey, ABCIResponse, ABCIResponseBase };
|
|
42
|
+
//# sourceMappingURL=abci.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abci.d.cts","names":[],"sources":["../../../src/provider/types/abci.ts"],"mappings":";UAAiB,YAAA;EACf,QAAA;IACE,YAAA,EAAc,gBAAA;IACd,GAAA;IACA,KAAA;IACA,KAAA,EAAO,WAAA;IACP,MAAA;EAAA;AAAA;AAAA,UAIa,gBAAA;EACf,KAAA;IAAA,CAEG,GAAA;EAAA;EAEH,IAAA;EACA,MAAA;EACA,GAAA;EACA,IAAA;AAAA;AAAA,UAGQ,WAAA;EACR,GAAA;IACE,IAAA;IACA,GAAA;IACA,IAAA;EAAA;AAAA;AAAA,UAIa,WAAA;EACf,WAAA;IAEE,OAAA;IAEA,KAAA;IAEA,UAAA;MAEE,OAAA;MAEA,KAAA;IAAA;IAGF,cAAA;IAEA,QAAA;EAAA;AAAA;AAAA,cAIS,YAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//#region src/provider/types/abci.d.ts
|
|
2
|
+
interface ABCIResponse {
|
|
3
|
+
response: {
|
|
4
|
+
ResponseBase: ABCIResponseBase;
|
|
5
|
+
Key: string | null;
|
|
6
|
+
Value: string | null;
|
|
7
|
+
Proof: MerkleProof | null;
|
|
8
|
+
Height: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
interface ABCIResponseBase {
|
|
12
|
+
Error: {
|
|
13
|
+
[key: string]: string;
|
|
14
|
+
} | null;
|
|
15
|
+
Data: string | null;
|
|
16
|
+
Events: string | null;
|
|
17
|
+
Log: string;
|
|
18
|
+
Info: string;
|
|
19
|
+
}
|
|
20
|
+
interface MerkleProof {
|
|
21
|
+
ops: {
|
|
22
|
+
type: string;
|
|
23
|
+
key: string | null;
|
|
24
|
+
data: string | null;
|
|
25
|
+
}[];
|
|
26
|
+
}
|
|
27
|
+
interface ABCIAccount {
|
|
28
|
+
BaseAccount: {
|
|
29
|
+
address: string;
|
|
30
|
+
coins: string;
|
|
31
|
+
public_key: {
|
|
32
|
+
"@type": string;
|
|
33
|
+
value: string;
|
|
34
|
+
} | null;
|
|
35
|
+
account_number: string;
|
|
36
|
+
sequence: string;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
declare const ABCIErrorKey = "@type";
|
|
40
|
+
//#endregion
|
|
41
|
+
export { ABCIAccount, ABCIErrorKey, ABCIResponse, ABCIResponseBase };
|
|
42
|
+
//# sourceMappingURL=abci.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abci.d.mts","names":[],"sources":["../../../src/provider/types/abci.ts"],"mappings":";UAAiB,YAAA;EACf,QAAA;IACE,YAAA,EAAc,gBAAA;IACd,GAAA;IACA,KAAA;IACA,KAAA,EAAO,WAAA;IACP,MAAA;EAAA;AAAA;AAAA,UAIa,gBAAA;EACf,KAAA;IAAA,CAEG,GAAA;EAAA;EAEH,IAAA;EACA,MAAA;EACA,GAAA;EACA,IAAA;AAAA;AAAA,UAGQ,WAAA;EACR,GAAA;IACE,IAAA;IACA,GAAA;IACA,IAAA;EAAA;AAAA;AAAA,UAIa,WAAA;EACf,WAAA;IAEE,OAAA;IAEA,KAAA;IAEA,UAAA;MAEE,OAAA;MAEA,KAAA;IAAA;IAGF,cAAA;IAEA,QAAA;EAAA;AAAA;AAAA,cAIS,YAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abci.mjs","names":[],"sources":["../../../src/provider/types/abci.ts"],"sourcesContent":["export interface ABCIResponse {\n response: {\n ResponseBase: ABCIResponseBase\n Key: string | null\n Value: string | null\n Proof: MerkleProof | null\n Height: string\n }\n}\n\nexport interface ABCIResponseBase {\n Error: {\n // ABCIErrorKey\n [key: string]: string\n } | null\n Data: string | null\n Events: string | null\n Log: string\n Info: string\n}\n\ninterface MerkleProof {\n ops: {\n type: string\n key: string | null\n data: string | null\n }[]\n}\n\nexport interface ABCIAccount {\n BaseAccount: {\n // the associated account address\n address: string\n // the balance list\n coins: string\n // the public key info\n public_key: {\n // type of public key\n \"@type\": string\n // public key value\n value: string\n } | null\n // the account number (state-dependent) (decimal)\n account_number: string\n // the account sequence / nonce (decimal)\n sequence: string\n }\n}\n\nexport const ABCIErrorKey = \"@type\";\n"],"mappings":";AAiDA,MAAa,eAAe"}
|