@ritbit/v4-client-js 1.3.17
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/.env +1 -0
- package/.eslintignore +2 -0
- package/.eslintrc.js +15 -0
- package/.gitleaks.toml +24 -0
- package/.gitleaksignore +1 -0
- package/.nvmrc +1 -0
- package/.prettierignore +3 -0
- package/.prettierrc.json +6 -0
- package/.releaserc +10 -0
- package/.vscode/launch.json +11 -0
- package/LICENSE +13 -0
- package/README.md +83 -0
- package/__native__/__ios__/v4-native-client.js +209891 -0
- package/__native__/__ios__/v4-native-client.js.map +1 -0
- package/__tests__/clients/composite-client.test.ts +140 -0
- package/__tests__/helpers/baseClients.ts +23 -0
- package/__tests__/helpers/constants.ts +130 -0
- package/__tests__/lib/helpers.test.ts +53 -0
- package/__tests__/lib/util.test.ts +77 -0
- package/__tests__/lib/validation.test.ts +289 -0
- package/__tests__/modules/client/AccountEndpoints.test.ts +236 -0
- package/__tests__/modules/client/FaucetEndpoint.test.ts +14 -0
- package/__tests__/modules/client/MarketsEndpoints.test.ts +84 -0
- package/__tests__/modules/client/Transfers.test.ts +44 -0
- package/__tests__/modules/client/UtilityEndpoints.test.ts +29 -0
- package/__tests__/modules/client/ValidatorGetEndpoints.test.ts +50 -0
- package/__tests__/modules/client/ValidatorPostEndpoints.test.ts +52 -0
- package/__tests__/modules/client/constants.ts +5 -0
- package/__tests__/modules/onboarding.test.ts +66 -0
- package/build/cjs/clients/composite-client.js +788 -0
- package/build/cjs/clients/constants.js +293 -0
- package/build/cjs/clients/faucet-client.js +36 -0
- package/build/cjs/clients/helpers/chain-helpers.js +178 -0
- package/build/cjs/clients/helpers/request-helpers.js +65 -0
- package/build/cjs/clients/indexer-client.js +56 -0
- package/build/cjs/clients/lib/axios/axiosRequest.js +34 -0
- package/build/cjs/clients/lib/axios/errors.js +28 -0
- package/build/cjs/clients/lib/axios/index.js +23 -0
- package/build/cjs/clients/lib/axios/types.js +11 -0
- package/build/cjs/clients/lib/cctpProto.js +3242 -0
- package/build/cjs/clients/lib/errors.js +58 -0
- package/build/cjs/clients/lib/registry.js +51 -0
- package/build/cjs/clients/modules/account.js +223 -0
- package/build/cjs/clients/modules/composer.js +404 -0
- package/build/cjs/clients/modules/get.js +469 -0
- package/build/cjs/clients/modules/local-wallet.js +59 -0
- package/build/cjs/clients/modules/markets.js +54 -0
- package/build/cjs/clients/modules/post.js +391 -0
- package/build/cjs/clients/modules/proto-includes.js +72 -0
- package/build/cjs/clients/modules/rest.js +33 -0
- package/build/cjs/clients/modules/signer.js +93 -0
- package/build/cjs/clients/modules/tendermintClient.js +137 -0
- package/build/cjs/clients/modules/utility.js +44 -0
- package/build/cjs/clients/modules/vault.js +25 -0
- package/build/cjs/clients/noble-client.js +75 -0
- package/build/cjs/clients/socket-client.js +301 -0
- package/build/cjs/clients/subaccount.js +33 -0
- package/build/cjs/clients/types.js +43 -0
- package/build/cjs/clients/validator-client.js +81 -0
- package/build/cjs/index.js +73 -0
- package/build/cjs/lib/constants.js +23 -0
- package/build/cjs/lib/errors.js +37 -0
- package/build/cjs/lib/helpers.js +98 -0
- package/build/cjs/lib/onboarding.js +75 -0
- package/build/cjs/lib/trading-key-utils.js +108 -0
- package/build/cjs/lib/utils.js +79 -0
- package/build/cjs/lib/validation.js +150 -0
- package/build/cjs/network_optimizer.js +96 -0
- package/build/cjs/package.json +1 -0
- package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/build/cjs/types.js +25 -0
- package/build/esm/__tests__/clients/composite-client.test.d.ts +2 -0
- package/build/esm/__tests__/clients/composite-client.test.d.ts.map +1 -0
- package/build/esm/__tests__/clients/composite-client.test.js +128 -0
- package/build/esm/__tests__/helpers/baseClients.d.ts +19 -0
- package/build/esm/__tests__/helpers/baseClients.d.ts.map +1 -0
- package/build/esm/__tests__/helpers/baseClients.js +22 -0
- package/build/esm/__tests__/helpers/constants.d.ts +19 -0
- package/build/esm/__tests__/helpers/constants.d.ts.map +1 -0
- package/build/esm/__tests__/helpers/constants.js +104 -0
- package/build/esm/__tests__/lib/helpers.test.d.ts +2 -0
- package/build/esm/__tests__/lib/helpers.test.d.ts.map +1 -0
- package/build/esm/__tests__/lib/helpers.test.js +40 -0
- package/build/esm/__tests__/lib/util.test.d.ts +2 -0
- package/build/esm/__tests__/lib/util.test.d.ts.map +1 -0
- package/build/esm/__tests__/lib/util.test.js +65 -0
- package/build/esm/__tests__/lib/validation.test.d.ts +2 -0
- package/build/esm/__tests__/lib/validation.test.d.ts.map +1 -0
- package/build/esm/__tests__/lib/validation.test.js +249 -0
- package/build/esm/__tests__/modules/client/AccountEndpoints.test.d.ts +2 -0
- package/build/esm/__tests__/modules/client/AccountEndpoints.test.d.ts.map +1 -0
- package/build/esm/__tests__/modules/client/AccountEndpoints.test.js +169 -0
- package/build/esm/__tests__/modules/client/FaucetEndpoint.test.d.ts +2 -0
- package/build/esm/__tests__/modules/client/FaucetEndpoint.test.d.ts.map +1 -0
- package/build/esm/__tests__/modules/client/FaucetEndpoint.test.js +13 -0
- package/build/esm/__tests__/modules/client/MarketsEndpoints.test.d.ts +2 -0
- package/build/esm/__tests__/modules/client/MarketsEndpoints.test.d.ts.map +1 -0
- package/build/esm/__tests__/modules/client/MarketsEndpoints.test.js +66 -0
- package/build/esm/__tests__/modules/client/Transfers.test.d.ts +2 -0
- package/build/esm/__tests__/modules/client/Transfers.test.d.ts.map +1 -0
- package/build/esm/__tests__/modules/client/Transfers.test.js +39 -0
- package/build/esm/__tests__/modules/client/UtilityEndpoints.test.d.ts +2 -0
- package/build/esm/__tests__/modules/client/UtilityEndpoints.test.d.ts.map +1 -0
- package/build/esm/__tests__/modules/client/UtilityEndpoints.test.js +26 -0
- package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.d.ts +2 -0
- package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.d.ts.map +1 -0
- package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.js +44 -0
- package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.d.ts +2 -0
- package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.d.ts.map +1 -0
- package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.js +48 -0
- package/build/esm/__tests__/modules/client/constants.d.ts +4 -0
- package/build/esm/__tests__/modules/client/constants.d.ts.map +1 -0
- package/build/esm/__tests__/modules/client/constants.js +4 -0
- package/build/esm/__tests__/modules/onboarding.test.d.ts +2 -0
- package/build/esm/__tests__/modules/onboarding.test.d.ts.map +1 -0
- package/build/esm/__tests__/modules/onboarding.test.js +48 -0
- package/build/esm/examples/account_endpoints.d.ts +5 -0
- package/build/esm/examples/account_endpoints.d.ts.map +1 -0
- package/build/esm/examples/account_endpoints.js +127 -0
- package/build/esm/examples/batch_cancel_orders_example.d.ts +2 -0
- package/build/esm/examples/batch_cancel_orders_example.d.ts.map +1 -0
- package/build/esm/examples/batch_cancel_orders_example.js +88 -0
- package/build/esm/examples/composite_example.d.ts +2 -0
- package/build/esm/examples/composite_example.d.ts.map +1 -0
- package/build/esm/examples/composite_example.js +45 -0
- package/build/esm/examples/constants.d.ts +13 -0
- package/build/esm/examples/constants.d.ts.map +1 -0
- package/build/esm/examples/constants.js +29 -0
- package/build/esm/examples/faucet_endpoint.d.ts +5 -0
- package/build/esm/examples/faucet_endpoint.d.ts.map +1 -0
- package/build/esm/examples/faucet_endpoint.js +21 -0
- package/build/esm/examples/gov_add_new_market.d.ts +2 -0
- package/build/esm/examples/gov_add_new_market.d.ts.map +1 -0
- package/build/esm/examples/gov_add_new_market.js +72 -0
- package/build/esm/examples/human_readable_orders.json +86 -0
- package/build/esm/examples/human_readable_short_term_orders.json +42 -0
- package/build/esm/examples/json-encoding.d.ts +2 -0
- package/build/esm/examples/json-encoding.d.ts.map +1 -0
- package/build/esm/examples/json-encoding.js +27 -0
- package/build/esm/examples/long_term_order_cancel_example.d.ts +2 -0
- package/build/esm/examples/long_term_order_cancel_example.d.ts.map +1 -0
- package/build/esm/examples/long_term_order_cancel_example.js +58 -0
- package/build/esm/examples/markets_endpoints.d.ts +5 -0
- package/build/esm/examples/markets_endpoints.d.ts.map +1 -0
- package/build/esm/examples/markets_endpoints.js +131 -0
- package/build/esm/examples/native_examples.d.ts +2 -0
- package/build/esm/examples/native_examples.d.ts.map +1 -0
- package/build/esm/examples/native_examples.js +110 -0
- package/build/esm/examples/noble_example.d.ts +2 -0
- package/build/esm/examples/noble_example.d.ts.map +1 -0
- package/build/esm/examples/noble_example.js +83 -0
- package/build/esm/examples/optimal_node.d.ts +2 -0
- package/build/esm/examples/optimal_node.d.ts.map +1 -0
- package/build/esm/examples/optimal_node.js +68 -0
- package/build/esm/examples/permissioned_keys_example.d.ts +2 -0
- package/build/esm/examples/permissioned_keys_example.d.ts.map +1 -0
- package/build/esm/examples/permissioned_keys_example.js +99 -0
- package/build/esm/examples/raw_orders.json +130 -0
- package/build/esm/examples/short_term_order_cancel_example.d.ts +2 -0
- package/build/esm/examples/short_term_order_cancel_example.d.ts.map +1 -0
- package/build/esm/examples/short_term_order_cancel_example.js +49 -0
- package/build/esm/examples/short_term_order_composite_example.d.ts +2 -0
- package/build/esm/examples/short_term_order_composite_example.d.ts.map +1 -0
- package/build/esm/examples/short_term_order_composite_example.js +63 -0
- package/build/esm/examples/test.d.ts +2 -0
- package/build/esm/examples/test.d.ts.map +1 -0
- package/build/esm/examples/test.js +45 -0
- package/build/esm/examples/transfer_example_deposit.d.ts +2 -0
- package/build/esm/examples/transfer_example_deposit.d.ts.map +1 -0
- package/build/esm/examples/transfer_example_deposit.js +24 -0
- package/build/esm/examples/transfer_example_send.d.ts +2 -0
- package/build/esm/examples/transfer_example_send.d.ts.map +1 -0
- package/build/esm/examples/transfer_example_send.js +37 -0
- package/build/esm/examples/transfer_example_subaccount_transfer.d.ts +2 -0
- package/build/esm/examples/transfer_example_subaccount_transfer.d.ts.map +1 -0
- package/build/esm/examples/transfer_example_subaccount_transfer.js +24 -0
- package/build/esm/examples/transfer_example_withdraw.d.ts +2 -0
- package/build/esm/examples/transfer_example_withdraw.d.ts.map +1 -0
- package/build/esm/examples/transfer_example_withdraw.js +25 -0
- package/build/esm/examples/transfer_example_withdraw_other.d.ts +2 -0
- package/build/esm/examples/transfer_example_withdraw_other.d.ts.map +1 -0
- package/build/esm/examples/transfer_example_withdraw_other.js +37 -0
- package/build/esm/examples/utility_endpoints.d.ts +5 -0
- package/build/esm/examples/utility_endpoints.d.ts.map +1 -0
- package/build/esm/examples/utility_endpoints.js +40 -0
- package/build/esm/examples/validator_get_example.d.ts +2 -0
- package/build/esm/examples/validator_get_example.d.ts.map +1 -0
- package/build/esm/examples/validator_get_example.js +156 -0
- package/build/esm/examples/validator_post_example.d.ts +2 -0
- package/build/esm/examples/validator_post_example.d.ts.map +1 -0
- package/build/esm/examples/validator_post_example.js +71 -0
- package/build/esm/examples/wallet_address.d.ts +2 -0
- package/build/esm/examples/wallet_address.d.ts.map +1 -0
- package/build/esm/examples/wallet_address.js +17 -0
- package/build/esm/examples/websocket_example.d.ts +2 -0
- package/build/esm/examples/websocket_example.d.ts.map +1 -0
- package/build/esm/examples/websocket_example.js +34 -0
- package/build/esm/examples/websocket_orderbook_example.d.ts +2 -0
- package/build/esm/examples/websocket_orderbook_example.d.ts.map +1 -0
- package/build/esm/examples/websocket_orderbook_example.js +194 -0
- package/build/esm/src/clients/composite-client.d.ts +406 -0
- package/build/esm/src/clients/composite-client.d.ts.map +1 -0
- package/build/esm/src/clients/composite-client.js +781 -0
- package/build/esm/src/clients/constants.d.ts +170 -0
- package/build/esm/src/clients/constants.d.ts.map +1 -0
- package/build/esm/src/clients/constants.js +269 -0
- package/build/esm/src/clients/faucet-client.d.ts +18 -0
- package/build/esm/src/clients/faucet-client.d.ts.map +1 -0
- package/build/esm/src/clients/faucet-client.js +29 -0
- package/build/esm/src/clients/helpers/chain-helpers.d.ts +15 -0
- package/build/esm/src/clients/helpers/chain-helpers.d.ts.map +1 -0
- package/build/esm/src/clients/helpers/chain-helpers.js +163 -0
- package/build/esm/src/clients/helpers/request-helpers.d.ts +3 -0
- package/build/esm/src/clients/helpers/request-helpers.d.ts.map +1 -0
- package/build/esm/src/clients/helpers/request-helpers.js +58 -0
- package/build/esm/src/clients/indexer-client.d.ts +40 -0
- package/build/esm/src/clients/indexer-client.d.ts.map +1 -0
- package/build/esm/src/clients/indexer-client.js +49 -0
- package/build/esm/src/clients/lib/axios/axiosRequest.d.ts +9 -0
- package/build/esm/src/clients/lib/axios/axiosRequest.d.ts.map +1 -0
- package/build/esm/src/clients/lib/axios/axiosRequest.js +28 -0
- package/build/esm/src/clients/lib/axios/errors.d.ts +31 -0
- package/build/esm/src/clients/lib/axios/errors.d.ts.map +1 -0
- package/build/esm/src/clients/lib/axios/errors.js +23 -0
- package/build/esm/src/clients/lib/axios/index.d.ts +7 -0
- package/build/esm/src/clients/lib/axios/index.d.ts.map +1 -0
- package/build/esm/src/clients/lib/axios/index.js +7 -0
- package/build/esm/src/clients/lib/axios/types.d.ts +7 -0
- package/build/esm/src/clients/lib/axios/types.d.ts.map +1 -0
- package/build/esm/src/clients/lib/axios/types.js +8 -0
- package/build/esm/src/clients/lib/cctpProto.d.ts +670 -0
- package/build/esm/src/clients/lib/cctpProto.d.ts.map +1 -0
- package/build/esm/src/clients/lib/cctpProto.js +3234 -0
- package/build/esm/src/clients/lib/errors.d.ts +38 -0
- package/build/esm/src/clients/lib/errors.d.ts.map +1 -0
- package/build/esm/src/clients/lib/errors.js +50 -0
- package/build/esm/src/clients/lib/registry.d.ts +4 -0
- package/build/esm/src/clients/lib/registry.d.ts.map +1 -0
- package/build/esm/src/clients/lib/registry.js +47 -0
- package/build/esm/src/clients/modules/account.d.ts +30 -0
- package/build/esm/src/clients/modules/account.d.ts.map +1 -0
- package/build/esm/src/clients/modules/account.js +217 -0
- package/build/esm/src/clients/modules/composer.d.ts +37 -0
- package/build/esm/src/clients/modules/composer.d.ts.map +1 -0
- package/build/esm/src/clients/modules/composer.js +397 -0
- package/build/esm/src/clients/modules/get.d.ts +193 -0
- package/build/esm/src/clients/modules/get.d.ts.map +1 -0
- package/build/esm/src/clients/modules/get.js +429 -0
- package/build/esm/src/clients/modules/local-wallet.d.ts +19 -0
- package/build/esm/src/clients/modules/local-wallet.d.ts.map +1 -0
- package/build/esm/src/clients/modules/local-wallet.js +53 -0
- package/build/esm/src/clients/modules/markets.d.ts +14 -0
- package/build/esm/src/clients/modules/markets.d.ts.map +1 -0
- package/build/esm/src/clients/modules/markets.js +48 -0
- package/build/esm/src/clients/modules/post.d.ts +133 -0
- package/build/esm/src/clients/modules/post.d.ts.map +1 -0
- package/build/esm/src/clients/modules/post.js +384 -0
- package/build/esm/src/clients/modules/proto-includes.d.ts +30 -0
- package/build/esm/src/clients/modules/proto-includes.d.ts.map +1 -0
- package/build/esm/src/clients/modules/proto-includes.js +32 -0
- package/build/esm/src/clients/modules/rest.d.ts +12 -0
- package/build/esm/src/clients/modules/rest.d.ts.map +1 -0
- package/build/esm/src/clients/modules/rest.js +27 -0
- package/build/esm/src/clients/modules/signer.d.ts +19 -0
- package/build/esm/src/clients/modules/signer.d.ts.map +1 -0
- package/build/esm/src/clients/modules/signer.js +86 -0
- package/build/esm/src/clients/modules/tendermintClient.d.ts +54 -0
- package/build/esm/src/clients/modules/tendermintClient.d.ts.map +1 -0
- package/build/esm/src/clients/modules/tendermintClient.js +133 -0
- package/build/esm/src/clients/modules/utility.d.ts +27 -0
- package/build/esm/src/clients/modules/utility.d.ts.map +1 -0
- package/build/esm/src/clients/modules/utility.js +38 -0
- package/build/esm/src/clients/modules/vault.d.ts +12 -0
- package/build/esm/src/clients/modules/vault.d.ts.map +1 -0
- package/build/esm/src/clients/modules/vault.js +19 -0
- package/build/esm/src/clients/native.d.ts +75 -0
- package/build/esm/src/clients/native.d.ts.map +1 -0
- package/build/esm/src/clients/native.js +1237 -0
- package/build/esm/src/clients/noble-client.d.ts +18 -0
- package/build/esm/src/clients/noble-client.d.ts.map +1 -0
- package/build/esm/src/clients/noble-client.js +71 -0
- package/build/esm/src/clients/socket-client.d.ts +146 -0
- package/build/esm/src/clients/socket-client.d.ts.map +1 -0
- package/build/esm/src/clients/socket-client.js +294 -0
- package/build/esm/src/clients/subaccount.d.ts +14 -0
- package/build/esm/src/clients/subaccount.d.ts.map +1 -0
- package/build/esm/src/clients/subaccount.js +29 -0
- package/build/esm/src/clients/types.d.ts +137 -0
- package/build/esm/src/clients/types.d.ts.map +1 -0
- package/build/esm/src/clients/types.js +26 -0
- package/build/esm/src/clients/validator-client.d.ts +35 -0
- package/build/esm/src/clients/validator-client.d.ts.map +1 -0
- package/build/esm/src/clients/validator-client.js +74 -0
- package/build/esm/src/index.d.ts +17 -0
- package/build/esm/src/index.d.ts.map +1 -0
- package/build/esm/src/index.js +19 -0
- package/build/esm/src/lib/constants.d.ts +13 -0
- package/build/esm/src/lib/constants.d.ts.map +1 -0
- package/build/esm/src/lib/constants.js +20 -0
- package/build/esm/src/lib/errors.d.ts +23 -0
- package/build/esm/src/lib/errors.d.ts.map +1 -0
- package/build/esm/src/lib/errors.js +31 -0
- package/build/esm/src/lib/helpers.d.ts +22 -0
- package/build/esm/src/lib/helpers.d.ts.map +1 -0
- package/build/esm/src/lib/helpers.js +88 -0
- package/build/esm/src/lib/onboarding.d.ts +46 -0
- package/build/esm/src/lib/onboarding.d.ts.map +1 -0
- package/build/esm/src/lib/onboarding.js +69 -0
- package/build/esm/src/lib/trading-key-utils.d.ts +22 -0
- package/build/esm/src/lib/trading-key-utils.d.ts.map +1 -0
- package/build/esm/src/lib/trading-key-utils.js +99 -0
- package/build/esm/src/lib/utils.d.ts +39 -0
- package/build/esm/src/lib/utils.d.ts.map +1 -0
- package/build/esm/src/lib/utils.js +69 -0
- package/build/esm/src/lib/validation.d.ts +26 -0
- package/build/esm/src/lib/validation.d.ts.map +1 -0
- package/build/esm/src/lib/validation.js +138 -0
- package/build/esm/src/network_optimizer.d.ts +8 -0
- package/build/esm/src/network_optimizer.d.ts.map +1 -0
- package/build/esm/src/network_optimizer.js +91 -0
- package/build/esm/src/types.d.ts +26 -0
- package/build/esm/src/types.d.ts.map +1 -0
- package/build/esm/src/types.js +8 -0
- package/build/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/commitlint.config.js +8 -0
- package/examples/account_endpoints.ts +129 -0
- package/examples/batch_cancel_orders_example.ts +130 -0
- package/examples/composite_example.ts +65 -0
- package/examples/constants.ts +42 -0
- package/examples/faucet_endpoint.ts +24 -0
- package/examples/gov_add_new_market.json +64 -0
- package/examples/gov_add_new_market.ts +95 -0
- package/examples/human_readable_orders.json +86 -0
- package/examples/human_readable_short_term_orders.json +42 -0
- package/examples/json-encoding.ts +33 -0
- package/examples/long_term_order_cancel_example.ts +87 -0
- package/examples/markets_endpoints.ts +134 -0
- package/examples/native_examples.ts +151 -0
- package/examples/noble_example.ts +107 -0
- package/examples/optimal_node.ts +70 -0
- package/examples/permissioned_keys_example.ts +162 -0
- package/examples/raw_orders.json +130 -0
- package/examples/short_term_order_cancel_example.ts +68 -0
- package/examples/short_term_order_composite_example.ts +80 -0
- package/examples/test.ts +65 -0
- package/examples/transfer_example_deposit.ts +28 -0
- package/examples/transfer_example_send.ts +60 -0
- package/examples/transfer_example_subaccount_transfer.ts +29 -0
- package/examples/transfer_example_withdraw.ts +31 -0
- package/examples/transfer_example_withdraw_other.ts +60 -0
- package/examples/utility_endpoints.ts +42 -0
- package/examples/validator_get_example.ts +160 -0
- package/examples/validator_post_example.ts +81 -0
- package/examples/wallet_address.ts +18 -0
- package/examples/websocket_example.ts +44 -0
- package/examples/websocket_orderbook_example.ts +239 -0
- package/jest.config.js +12 -0
- package/jest.globalSetup.js +5 -0
- package/jest.setup.js +1 -0
- package/package.json +113 -0
- package/ritbit-v4-client-js-1.3.17.tgz +0 -0
- package/scripts/bump_version.sh +16 -0
- package/scripts/generate-cctp-protos.sh +41 -0
- package/scripts/mobile_build_pack.sh +5 -0
- package/scripts/publish-if-not-exists.sh +21 -0
- package/src/clients/composite-client.ts +1431 -0
- package/src/clients/constants.ts +358 -0
- package/src/clients/faucet-client.ts +48 -0
- package/src/clients/helpers/chain-helpers.ts +231 -0
- package/src/clients/helpers/request-helpers.ts +71 -0
- package/src/clients/indexer-client.ts +61 -0
- package/src/clients/lib/axios/axiosRequest.ts +41 -0
- package/src/clients/lib/axios/errors.ts +41 -0
- package/src/clients/lib/axios/index.ts +7 -0
- package/src/clients/lib/axios/types.ts +6 -0
- package/src/clients/lib/cctpProto.ts +4197 -0
- package/src/clients/lib/errors.ts +63 -0
- package/src/clients/lib/registry.ts +88 -0
- package/src/clients/modules/account.ts +388 -0
- package/src/clients/modules/composer.ts +645 -0
- package/src/clients/modules/get.ts +740 -0
- package/src/clients/modules/local-wallet.ts +79 -0
- package/src/clients/modules/markets.ts +71 -0
- package/src/clients/modules/post.ts +1016 -0
- package/src/clients/modules/proto-includes.ts +33 -0
- package/src/clients/modules/rest.ts +40 -0
- package/src/clients/modules/signer.ts +139 -0
- package/src/clients/modules/tendermintClient.ts +168 -0
- package/src/clients/modules/utility.ts +47 -0
- package/src/clients/modules/vault.ts +23 -0
- package/src/clients/native.ts +1508 -0
- package/src/clients/noble-client.ts +108 -0
- package/src/clients/socket-client.ts +331 -0
- package/src/clients/subaccount.ts +57 -0
- package/src/clients/types.ts +191 -0
- package/src/clients/validator-client.ts +103 -0
- package/src/index.ts +20 -0
- package/src/lib/constants.ts +28 -0
- package/src/lib/errors.ts +38 -0
- package/src/lib/helpers.ts +99 -0
- package/src/lib/onboarding.ts +96 -0
- package/src/lib/trading-key-utils.ts +136 -0
- package/src/lib/utils.ts +84 -0
- package/src/lib/validation.ts +197 -0
- package/src/network_optimizer.ts +132 -0
- package/src/types.ts +44 -0
- package/tasks.json +16 -0
- package/tsconfig.base.json +15 -0
- package/tsconfig.cjs.json +20 -0
- package/tsconfig.eslint.json +14 -0
- package/tsconfig.esm.json +11 -0
- package/webpack.config.js +56 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { EncodeObject, Registry, Coin } from '@cosmjs/proto-signing';
|
|
2
|
+
import {
|
|
3
|
+
calculateFee,
|
|
4
|
+
DeliverTxResponse,
|
|
5
|
+
GasPrice,
|
|
6
|
+
StdFee,
|
|
7
|
+
defaultRegistryTypes,
|
|
8
|
+
SigningStargateClient,
|
|
9
|
+
MsgTransferEncodeObject,
|
|
10
|
+
} from '@cosmjs/stargate';
|
|
11
|
+
|
|
12
|
+
import { GAS_MULTIPLIER } from './constants';
|
|
13
|
+
import { MsgDepositForBurn, MsgDepositForBurnWithCaller } from './lib/cctpProto';
|
|
14
|
+
import LocalWallet from './modules/local-wallet';
|
|
15
|
+
|
|
16
|
+
export class NobleClient {
|
|
17
|
+
private wallet?: LocalWallet;
|
|
18
|
+
private restEndpoint: string;
|
|
19
|
+
private stargateClient?: SigningStargateClient;
|
|
20
|
+
private defaultClientMemo?: string;
|
|
21
|
+
|
|
22
|
+
constructor(restEndpoint: string, defaultClientMemo?: string) {
|
|
23
|
+
this.restEndpoint = restEndpoint;
|
|
24
|
+
this.defaultClientMemo = defaultClientMemo;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
get isConnected(): boolean {
|
|
28
|
+
return Boolean(this.stargateClient);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async connect(wallet: LocalWallet): Promise<void> {
|
|
32
|
+
if (wallet?.offlineSigner === undefined) {
|
|
33
|
+
throw new Error('Wallet signer not found');
|
|
34
|
+
}
|
|
35
|
+
this.wallet = wallet;
|
|
36
|
+
this.stargateClient = await SigningStargateClient.connectWithSigner(
|
|
37
|
+
this.restEndpoint,
|
|
38
|
+
wallet.offlineSigner,
|
|
39
|
+
{
|
|
40
|
+
registry: new Registry([
|
|
41
|
+
['/circle.cctp.v1.MsgDepositForBurn', MsgDepositForBurn],
|
|
42
|
+
['/circle.cctp.v1.MsgDepositForBurnWithCaller', MsgDepositForBurnWithCaller],
|
|
43
|
+
...defaultRegistryTypes,
|
|
44
|
+
]),
|
|
45
|
+
},
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
getAccountBalances(): Promise<readonly Coin[]> {
|
|
50
|
+
if (!this.stargateClient || this.wallet?.address === undefined) {
|
|
51
|
+
throw new Error('stargateClient not initialized');
|
|
52
|
+
}
|
|
53
|
+
return this.stargateClient.getAllBalances(this.wallet.address);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
getAccountBalance(denom: string): Promise<Coin> {
|
|
57
|
+
if (!this.stargateClient || this.wallet?.address === undefined) {
|
|
58
|
+
throw new Error('stargateClient not initialized');
|
|
59
|
+
}
|
|
60
|
+
return this.stargateClient.getBalance(this.wallet.address, denom);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async IBCTransfer(message: MsgTransferEncodeObject): Promise<DeliverTxResponse> {
|
|
64
|
+
const tx = await this.send([message]);
|
|
65
|
+
return tx;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async send(
|
|
69
|
+
messages: EncodeObject[],
|
|
70
|
+
gasPrice: GasPrice = GasPrice.fromString('0.1uusdc'),
|
|
71
|
+
memo?: string,
|
|
72
|
+
): Promise<DeliverTxResponse> {
|
|
73
|
+
if (!this.stargateClient) {
|
|
74
|
+
throw new Error('NobleClient stargateClient not initialized');
|
|
75
|
+
}
|
|
76
|
+
if (this.wallet?.address === undefined) {
|
|
77
|
+
throw new Error('NobleClient wallet not initialized');
|
|
78
|
+
}
|
|
79
|
+
// Simulate to get the gas estimate
|
|
80
|
+
const fee = await this.simulateTransaction(messages, gasPrice, memo ?? this.defaultClientMemo);
|
|
81
|
+
|
|
82
|
+
// Sign and broadcast the transaction
|
|
83
|
+
return this.stargateClient.signAndBroadcast(
|
|
84
|
+
this.wallet.address,
|
|
85
|
+
messages,
|
|
86
|
+
fee,
|
|
87
|
+
memo ?? this.defaultClientMemo,
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
async simulateTransaction(
|
|
92
|
+
messages: readonly EncodeObject[],
|
|
93
|
+
gasPrice: GasPrice = GasPrice.fromString('0.1uusdc'),
|
|
94
|
+
memo?: string,
|
|
95
|
+
): Promise<StdFee> {
|
|
96
|
+
if (!this.stargateClient) {
|
|
97
|
+
throw new Error('NobleClient stargateClient not initialized');
|
|
98
|
+
}
|
|
99
|
+
if (this.wallet?.address === undefined) {
|
|
100
|
+
throw new Error('NobleClient wallet not initialized');
|
|
101
|
+
}
|
|
102
|
+
// Get simulated response
|
|
103
|
+
const gasEstimate = await this.stargateClient.simulate(this.wallet?.address, messages, memo);
|
|
104
|
+
|
|
105
|
+
// Calculate and return the fee
|
|
106
|
+
return calculateFee(Math.floor(gasEstimate * GAS_MULTIPLIER), gasPrice);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { HttpsProxyAgent } from 'https-proxy-agent';
|
|
2
|
+
import WebSocket, { ErrorEvent, MessageEvent } from 'ws';
|
|
3
|
+
|
|
4
|
+
import { getProxyAgent } from '../lib/utils';
|
|
5
|
+
import { IndexerConfig } from './constants';
|
|
6
|
+
|
|
7
|
+
enum OutgoingMessageTypes {
|
|
8
|
+
SUBSCRIBE = 'subscribe',
|
|
9
|
+
UNSUBSCRIBE = 'unsubscribe',
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
enum SocketChannels {
|
|
13
|
+
SUBACCOUNTS = 'v4_subaccounts',
|
|
14
|
+
ORDERBOOK = 'v4_orderbook',
|
|
15
|
+
TRADES = 'v4_trades',
|
|
16
|
+
MARKETS = 'v4_markets',
|
|
17
|
+
CANDLES = 'v4_candles',
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export enum IncomingMessageTypes {
|
|
21
|
+
CONNECTED = 'connected',
|
|
22
|
+
SUBSCRIBED = 'subscribed',
|
|
23
|
+
ERROR = 'error',
|
|
24
|
+
CHANNEL_DATA = 'channel_data',
|
|
25
|
+
CHANNEL_BATCH_DATA = 'channel_batch_data',
|
|
26
|
+
PONG = 'pong',
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export enum CandlesResolution {
|
|
30
|
+
ONE_MINUTE = '1MIN',
|
|
31
|
+
FIVE_MINUTES = '5MINS',
|
|
32
|
+
FIFTEEN_MINUTES = '15MINS',
|
|
33
|
+
THIRTY_MINUTES = '30MINS',
|
|
34
|
+
ONE_HOUR = '1HOUR',
|
|
35
|
+
FOUR_HOURS = '4HOURS',
|
|
36
|
+
ONE_DAY = '1DAY',
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class SocketClient {
|
|
40
|
+
private url: string;
|
|
41
|
+
private ws?: WebSocket;
|
|
42
|
+
private proxyAgent?: HttpsProxyAgent<string>;
|
|
43
|
+
private onOpenCallback?: () => void;
|
|
44
|
+
private onCloseCallback?: () => void;
|
|
45
|
+
private onMessageCallback?: (event: MessageEvent) => void;
|
|
46
|
+
private onErrorCallback?: (event: ErrorEvent) => void;
|
|
47
|
+
private lastMessageTime: number = Date.now();
|
|
48
|
+
|
|
49
|
+
constructor(
|
|
50
|
+
config: IndexerConfig,
|
|
51
|
+
onOpenCallback: () => void,
|
|
52
|
+
onCloseCallback: () => void,
|
|
53
|
+
onMessageCallback: (event: MessageEvent) => void,
|
|
54
|
+
onErrorCallback: (event: ErrorEvent) => void,
|
|
55
|
+
) {
|
|
56
|
+
this.url = config.websocketEndpoint;
|
|
57
|
+
this.proxyAgent = config.proxy ? getProxyAgent(config.proxy) : undefined;
|
|
58
|
+
this.onOpenCallback = onOpenCallback;
|
|
59
|
+
this.onCloseCallback = onCloseCallback;
|
|
60
|
+
this.onMessageCallback = onMessageCallback;
|
|
61
|
+
this.onErrorCallback = onErrorCallback;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
connect(): void {
|
|
65
|
+
this.ws = new WebSocket(this.url, {
|
|
66
|
+
agent: this.proxyAgent,
|
|
67
|
+
});
|
|
68
|
+
this.ws.addEventListener('open', this.handleOpen.bind(this));
|
|
69
|
+
this.ws.addEventListener('close', this.handleClose.bind(this));
|
|
70
|
+
this.ws.addEventListener('message', this.handleMessage.bind(this));
|
|
71
|
+
this.ws.addEventListener('error', this.handleError.bind(this));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @description Close the websocket connection.
|
|
76
|
+
*
|
|
77
|
+
*/
|
|
78
|
+
close(): void {
|
|
79
|
+
this.ws?.close();
|
|
80
|
+
this.ws = undefined;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @description Check is the websocket connection connecting
|
|
85
|
+
*/
|
|
86
|
+
isConnecting(): boolean {
|
|
87
|
+
return this.ws?.readyState === WebSocket.CONNECTING;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @description Check is the websocket connection open
|
|
92
|
+
*/
|
|
93
|
+
isOpen(): boolean {
|
|
94
|
+
return this.ws?.readyState === WebSocket.OPEN;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @description Check is the websocket connection closing
|
|
99
|
+
*/
|
|
100
|
+
isClosing(): boolean {
|
|
101
|
+
return this.ws?.readyState === WebSocket.CLOSING;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @description Check is the websocket connection closed
|
|
106
|
+
*/
|
|
107
|
+
isClosed(): boolean {
|
|
108
|
+
return this.ws?.readyState === WebSocket.CLOSED;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @description Send data to the websocket connection.
|
|
113
|
+
*
|
|
114
|
+
*/
|
|
115
|
+
send(data: string): void {
|
|
116
|
+
this.ws?.send(data);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private handleOpen(): void {
|
|
120
|
+
if (this.onOpenCallback) {
|
|
121
|
+
this.onOpenCallback();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
private handleClose(): void {
|
|
126
|
+
if (this.onCloseCallback) {
|
|
127
|
+
this.onCloseCallback();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
private handleMessage(event: MessageEvent): void {
|
|
132
|
+
if (event.data === 'PING') {
|
|
133
|
+
this.send('PONG');
|
|
134
|
+
} else {
|
|
135
|
+
this.lastMessageTime = Date.now();
|
|
136
|
+
if (this.onMessageCallback) {
|
|
137
|
+
this.onMessageCallback(event);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
private handleError(event: ErrorEvent): void {
|
|
143
|
+
if (this.onErrorCallback) {
|
|
144
|
+
this.onErrorCallback(event);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @description Set callback when the socket is opened.
|
|
150
|
+
*
|
|
151
|
+
*/
|
|
152
|
+
set onOpen(callback: () => void) {
|
|
153
|
+
this.onOpenCallback = callback;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @description Set callback when the socket is closed.
|
|
158
|
+
*
|
|
159
|
+
*/
|
|
160
|
+
set onClose(callback: () => void) {
|
|
161
|
+
this.onCloseCallback = callback;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @description Set callback when the socket receives a message.
|
|
166
|
+
*
|
|
167
|
+
*/
|
|
168
|
+
set onMessage(callback: (event: MessageEvent) => void) {
|
|
169
|
+
this.onMessageCallback = callback;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* @description Set callback when the socket encounters an error.
|
|
174
|
+
*/
|
|
175
|
+
set onError(callback: (event: ErrorEvent) => void) {
|
|
176
|
+
this.onErrorCallback = callback;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @description Send a subscribe message to the websocket connection.
|
|
181
|
+
*
|
|
182
|
+
*/
|
|
183
|
+
subscribe(channel: string, params?: object): void {
|
|
184
|
+
const message = {
|
|
185
|
+
type: OutgoingMessageTypes.SUBSCRIBE,
|
|
186
|
+
channel,
|
|
187
|
+
...params,
|
|
188
|
+
};
|
|
189
|
+
this.send(JSON.stringify(message));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* @description Send an unsubscribe message to the websocket connection.
|
|
194
|
+
*
|
|
195
|
+
*/
|
|
196
|
+
unsubscribe(channel: string, params?: object): void {
|
|
197
|
+
const message = {
|
|
198
|
+
type: OutgoingMessageTypes.UNSUBSCRIBE,
|
|
199
|
+
channel,
|
|
200
|
+
...params,
|
|
201
|
+
};
|
|
202
|
+
this.send(JSON.stringify(message));
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @description Subscribe to markets channel.
|
|
207
|
+
*
|
|
208
|
+
*/
|
|
209
|
+
subscribeToMarkets(): void {
|
|
210
|
+
const channel = SocketChannels.MARKETS;
|
|
211
|
+
const params = {
|
|
212
|
+
batched: true,
|
|
213
|
+
};
|
|
214
|
+
this.subscribe(channel, params);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* @description Unsubscribe from markets channel
|
|
219
|
+
*
|
|
220
|
+
*/
|
|
221
|
+
unsubscribeFromMarkets(): void {
|
|
222
|
+
const channel = SocketChannels.MARKETS;
|
|
223
|
+
this.unsubscribe(channel);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* @description Subscribe to trade channel
|
|
228
|
+
* for a specific market.
|
|
229
|
+
*
|
|
230
|
+
*/
|
|
231
|
+
subscribeToTrades(market: string): void {
|
|
232
|
+
const channel = SocketChannels.TRADES;
|
|
233
|
+
const params = {
|
|
234
|
+
id: market,
|
|
235
|
+
batched: true,
|
|
236
|
+
};
|
|
237
|
+
this.subscribe(channel, params);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* @description Unscribed from trade channel
|
|
242
|
+
* for a specific market.
|
|
243
|
+
*
|
|
244
|
+
*/
|
|
245
|
+
unsubscribeFromTrades(market: string): void {
|
|
246
|
+
const channel = SocketChannels.TRADES;
|
|
247
|
+
const params = {
|
|
248
|
+
id: market,
|
|
249
|
+
};
|
|
250
|
+
this.unsubscribe(channel, params);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* @description Subscribe to orderbook channel
|
|
255
|
+
* for a specific market.
|
|
256
|
+
*
|
|
257
|
+
*/
|
|
258
|
+
subscribeToOrderbook(market: string): void {
|
|
259
|
+
const channel = SocketChannels.ORDERBOOK;
|
|
260
|
+
const params = {
|
|
261
|
+
id: market,
|
|
262
|
+
batched: true,
|
|
263
|
+
};
|
|
264
|
+
this.subscribe(channel, params);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* @description Unsubscribe from orderbook channel
|
|
269
|
+
* for a specific market.
|
|
270
|
+
*/
|
|
271
|
+
unsubscribeFromOrderbook(market: string): void {
|
|
272
|
+
const channel = SocketChannels.ORDERBOOK;
|
|
273
|
+
const params = {
|
|
274
|
+
id: market,
|
|
275
|
+
};
|
|
276
|
+
this.unsubscribe(channel, params);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* @description Subscribe to candles channel
|
|
281
|
+
* for a specific market and resolution.
|
|
282
|
+
*
|
|
283
|
+
*/
|
|
284
|
+
subscribeToCandles(market: string, resolution: CandlesResolution): void {
|
|
285
|
+
const channel = SocketChannels.CANDLES;
|
|
286
|
+
const params = {
|
|
287
|
+
id: `${market}/${resolution}`,
|
|
288
|
+
batched: true,
|
|
289
|
+
};
|
|
290
|
+
this.subscribe(channel, params);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* @description Unsubscribe from candles channel
|
|
295
|
+
* for a specific market and resolution.
|
|
296
|
+
*/
|
|
297
|
+
unsubscribeFromCandles(market: string, resolution: CandlesResolution): void {
|
|
298
|
+
const channel = SocketChannels.CANDLES;
|
|
299
|
+
const params = {
|
|
300
|
+
id: `${market}/${resolution}`,
|
|
301
|
+
};
|
|
302
|
+
this.unsubscribe(channel, params);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* @description Subscribe to subaccount channel
|
|
307
|
+
* for a specific address and subaccount number.
|
|
308
|
+
*/
|
|
309
|
+
subscribeToSubaccount(address: string, subaccountNumber: number): void {
|
|
310
|
+
const channel = SocketChannels.SUBACCOUNTS;
|
|
311
|
+
const subaccountId = `${address}/${subaccountNumber}`;
|
|
312
|
+
const params = {
|
|
313
|
+
id: subaccountId,
|
|
314
|
+
};
|
|
315
|
+
this.subscribe(channel, params);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* @description Unsubscribe from subaccount channel
|
|
320
|
+
* for a specific address and subaccount number.
|
|
321
|
+
*
|
|
322
|
+
*/
|
|
323
|
+
unsubscribeFromSubaccount(address: string, subaccountNumber: number): void {
|
|
324
|
+
const channel = SocketChannels.SUBACCOUNTS;
|
|
325
|
+
const subaccountId = `${address}/${subaccountNumber}`;
|
|
326
|
+
const params = {
|
|
327
|
+
id: subaccountId,
|
|
328
|
+
};
|
|
329
|
+
this.unsubscribe(channel, params);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import Long from 'long';
|
|
2
|
+
|
|
3
|
+
import { MAX_SUBACCOUNT_NUMBER } from './constants';
|
|
4
|
+
import LocalWallet from './modules/local-wallet';
|
|
5
|
+
|
|
6
|
+
export class SubaccountInfo {
|
|
7
|
+
readonly address: string;
|
|
8
|
+
readonly subaccountNumber: number;
|
|
9
|
+
readonly signingWallet: LocalWallet;
|
|
10
|
+
readonly authenticators?: Long[];
|
|
11
|
+
|
|
12
|
+
private constructor(
|
|
13
|
+
signingWallet: LocalWallet,
|
|
14
|
+
address: string,
|
|
15
|
+
subaccountNumber: number = 0,
|
|
16
|
+
authenticators?: Long[],
|
|
17
|
+
) {
|
|
18
|
+
if (subaccountNumber < 0 || subaccountNumber > MAX_SUBACCOUNT_NUMBER) {
|
|
19
|
+
throw new Error(`Subaccount number must be between 0 and ${MAX_SUBACCOUNT_NUMBER}`);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
this.address = address;
|
|
23
|
+
this.subaccountNumber = subaccountNumber;
|
|
24
|
+
this.signingWallet = signingWallet;
|
|
25
|
+
this.authenticators = authenticators;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static forLocalWallet(wallet: LocalWallet, subaccountNumber: number = 0): SubaccountInfo {
|
|
29
|
+
const address = wallet.address;
|
|
30
|
+
if (address === undefined) {
|
|
31
|
+
throw new Error('Address not available from wallet');
|
|
32
|
+
}
|
|
33
|
+
return new SubaccountInfo(wallet, address, subaccountNumber);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static forPermissionedWallet(
|
|
37
|
+
signingWallet: LocalWallet,
|
|
38
|
+
accountAddress: string,
|
|
39
|
+
subaccountNumber: number = 0,
|
|
40
|
+
authenticators: Long[],
|
|
41
|
+
): SubaccountInfo {
|
|
42
|
+
return new SubaccountInfo(signingWallet, accountAddress, subaccountNumber, authenticators);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
get isPermissionedWallet(): boolean {
|
|
46
|
+
return this.address !== this.signingWallet.address;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
cloneWithSubaccount(subaccountNumber: number): SubaccountInfo {
|
|
50
|
+
return new SubaccountInfo(
|
|
51
|
+
this.signingWallet,
|
|
52
|
+
this.address,
|
|
53
|
+
subaccountNumber,
|
|
54
|
+
this.authenticators,
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { Coin } from '@cosmjs/proto-signing';
|
|
2
|
+
import { Method } from '@cosmjs/tendermint-rpc';
|
|
3
|
+
import {
|
|
4
|
+
Order_ConditionType,
|
|
5
|
+
Order_Side,
|
|
6
|
+
Order_TimeInForce,
|
|
7
|
+
} from '@ritbit/v4-proto/src/codegen/ritbit/clob/order';
|
|
8
|
+
import { PerpetualMarketType } from '@ritbit/v4-proto/src/codegen/ritbit/perpetuals/perpetual';
|
|
9
|
+
import BigNumber from 'bignumber.js';
|
|
10
|
+
import Long from 'long';
|
|
11
|
+
|
|
12
|
+
export type Integer = BigNumber;
|
|
13
|
+
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
+
export type GenericParams = { [name: string]: any };
|
|
16
|
+
|
|
17
|
+
// TODO: Find a better way.
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
export type Data = any;
|
|
20
|
+
|
|
21
|
+
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
22
|
+
|
|
23
|
+
// Information for signing a transaction while offline - without sequence.
|
|
24
|
+
export interface PartialTransactionOptions {
|
|
25
|
+
accountNumber: number;
|
|
26
|
+
chainId: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Information for signing a transaction while offline.
|
|
30
|
+
export interface TransactionOptions extends PartialTransactionOptions {
|
|
31
|
+
sequence: number;
|
|
32
|
+
authenticators?: Long[];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// OrderFlags, just a number in proto, defined as enum for convenience
|
|
36
|
+
export enum OrderFlags {
|
|
37
|
+
SHORT_TERM = 0,
|
|
38
|
+
LONG_TERM = 64,
|
|
39
|
+
CONDITIONAL = 32,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// TWAP order parameters
|
|
43
|
+
export interface ITwapParameters {
|
|
44
|
+
duration: number; // Duration in seconds [300, 86400]
|
|
45
|
+
interval: number; // Interval in seconds [30, 3600]
|
|
46
|
+
priceTolerance: number; // Price tolerance in ppm [0, 1_000_000)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Builder code parameters for partner/builder fees
|
|
50
|
+
export interface IBuilderCodeParameters {
|
|
51
|
+
builderAddress: string; // Address to receive the fee
|
|
52
|
+
feePpm: number; // Fee in parts per million
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface IBasicOrder {
|
|
56
|
+
clientId: number;
|
|
57
|
+
orderFlags: OrderFlags;
|
|
58
|
+
clobPairId: number;
|
|
59
|
+
goodTilBlock?: number;
|
|
60
|
+
goodTilBlockTime?: number;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface IPlaceOrder extends IBasicOrder {
|
|
64
|
+
side: Order_Side;
|
|
65
|
+
quantums: Long;
|
|
66
|
+
subticks: Long;
|
|
67
|
+
timeInForce: Order_TimeInForce;
|
|
68
|
+
reduceOnly: boolean;
|
|
69
|
+
clientMetadata: number;
|
|
70
|
+
conditionType?: Order_ConditionType;
|
|
71
|
+
conditionalOrderTriggerSubticks?: Long;
|
|
72
|
+
twapParameters?: ITwapParameters;
|
|
73
|
+
builderCodeParameters?: IBuilderCodeParameters;
|
|
74
|
+
orderRouterAddress?: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface ICancelOrder extends IBasicOrder {}
|
|
78
|
+
|
|
79
|
+
export interface IBatchCancelOrder {
|
|
80
|
+
shortTermOrders: { clobPairId: number; clientIds: number[] }[];
|
|
81
|
+
goodTilBlock: number;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// How long to wait and how often to check when calling Broadcast with
|
|
85
|
+
// Method.BroadcastTxCommit
|
|
86
|
+
export interface BroadcastOptions {
|
|
87
|
+
broadcastPollIntervalMs: number;
|
|
88
|
+
broadcastTimeoutMs: number;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface DenomConfig {
|
|
92
|
+
USDC_DENOM: string;
|
|
93
|
+
USDC_DECIMALS: number;
|
|
94
|
+
USDC_GAS_DENOM?: string;
|
|
95
|
+
|
|
96
|
+
CHAINTOKEN_DENOM: string;
|
|
97
|
+
CHAINTOKEN_DECIMALS: number;
|
|
98
|
+
CHAINTOKEN_GAS_DENOM?: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Specify when a broadcast should return:
|
|
102
|
+
// 1. Immediately
|
|
103
|
+
// 2. Once the transaction is added to the memPool
|
|
104
|
+
// 3. Once the transaction is committed to a block
|
|
105
|
+
// See https://docs.cosmos.network/master/run-node/txs.html for more information
|
|
106
|
+
export type BroadcastMode =
|
|
107
|
+
| Method.BroadcastTxAsync
|
|
108
|
+
| Method.BroadcastTxSync
|
|
109
|
+
| Method.BroadcastTxCommit;
|
|
110
|
+
|
|
111
|
+
// ------ Utility Endpoint Responses ------ //
|
|
112
|
+
export interface TimeResponse {
|
|
113
|
+
iso: string;
|
|
114
|
+
epoch: number;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface HeightResponse {
|
|
118
|
+
height: number;
|
|
119
|
+
time: string;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface ComplianceResponse {
|
|
123
|
+
restricted: boolean;
|
|
124
|
+
reason?: string;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export enum ComplianceReason {
|
|
128
|
+
MANUAL = 'MANUAL',
|
|
129
|
+
US_GEO = 'US_GEO',
|
|
130
|
+
CA_GEO = 'CA_GEO',
|
|
131
|
+
GB_GEO = 'GB_GEO',
|
|
132
|
+
SANCTIONED_GEO = 'SANCTIONED_GEO',
|
|
133
|
+
COMPLIANCE_PROVIDER = 'COMPLIANCE_PROVIDER',
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export enum ComplianceStatus {
|
|
137
|
+
COMPLIANT = 'COMPLIANT',
|
|
138
|
+
FIRST_STRIKE_CLOSE_ONLY = 'FIRST_STRIKE_CLOSE_ONLY',
|
|
139
|
+
FIRST_STRIKE = 'FIRST_STRIKE',
|
|
140
|
+
CLOSE_ONLY = 'CLOSE_ONLY',
|
|
141
|
+
BLOCKED = 'BLOCKED',
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface ComplianceV2Response {
|
|
145
|
+
status: ComplianceStatus;
|
|
146
|
+
reason?: ComplianceReason;
|
|
147
|
+
updatedAt?: string;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// ------------ Squid ------------ //
|
|
151
|
+
export type SquidIBCPayload = {
|
|
152
|
+
msgTypeUrl: '/ibc.applications.transfer.v1.MsgTransfer';
|
|
153
|
+
msg: Partial<{
|
|
154
|
+
sourcePort: string;
|
|
155
|
+
sourceChannel: string;
|
|
156
|
+
token: Coin;
|
|
157
|
+
sender: string;
|
|
158
|
+
receiver: string;
|
|
159
|
+
timeoutTimestamp: Long;
|
|
160
|
+
memo: string;
|
|
161
|
+
}>;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
// ------------ x/gov: Add New Market ------------ //
|
|
165
|
+
|
|
166
|
+
export type GovAddNewMarketParams = {
|
|
167
|
+
// common
|
|
168
|
+
id: number;
|
|
169
|
+
ticker: string;
|
|
170
|
+
|
|
171
|
+
// x/prices
|
|
172
|
+
priceExponent: number;
|
|
173
|
+
minPriceChange: number;
|
|
174
|
+
minExchanges: number;
|
|
175
|
+
exchangeConfigJson: string;
|
|
176
|
+
|
|
177
|
+
// x/perpetuals
|
|
178
|
+
liquidityTier: number;
|
|
179
|
+
atomicResolution: number;
|
|
180
|
+
marketType: PerpetualMarketType;
|
|
181
|
+
|
|
182
|
+
// x/clob
|
|
183
|
+
quantumConversionExponent: number;
|
|
184
|
+
stepBaseQuantums: Long;
|
|
185
|
+
subticksPerTick: number;
|
|
186
|
+
|
|
187
|
+
// x/delaymsg
|
|
188
|
+
delayBlocks: number;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export * from './modules/proto-includes';
|