@perpx/js-sdk 0.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/LICENSE +13 -0
- package/README.md +97 -0
- package/build/cjs/__tests__/clients/composite-client.test.js +130 -0
- package/build/cjs/__tests__/helpers/baseClients.js +29 -0
- package/build/cjs/__tests__/helpers/constants.js +110 -0
- package/build/cjs/__tests__/lib/helpers.test.js +45 -0
- package/build/cjs/__tests__/lib/util.test.js +67 -0
- package/build/cjs/__tests__/lib/validation.test.js +254 -0
- package/build/cjs/__tests__/modules/client/AccountEndpoints.test.js +186 -0
- package/build/cjs/__tests__/modules/client/FaucetEndpoint.test.js +15 -0
- package/build/cjs/__tests__/modules/client/MarketsEndpoints.test.js +69 -0
- package/build/cjs/__tests__/modules/client/Transfers.test.js +69 -0
- package/build/cjs/__tests__/modules/client/UtilityEndpoints.test.js +28 -0
- package/build/cjs/__tests__/modules/client/ValidatorGetEndpoints.test.js +46 -0
- package/build/cjs/__tests__/modules/client/ValidatorPostEndpoints.test.js +61 -0
- package/build/cjs/__tests__/modules/client/constants.js +7 -0
- package/build/cjs/__tests__/modules/onboarding.test.js +51 -0
- package/build/cjs/examples/account_endpoints.js +129 -0
- package/build/cjs/examples/batch_cancel_orders_example.js +93 -0
- package/build/cjs/examples/composite_example.js +50 -0
- package/build/cjs/examples/constants.js +35 -0
- package/build/cjs/examples/faucet_endpoint.js +23 -0
- package/build/cjs/examples/gov_add_new_market.js +77 -0
- package/build/cjs/examples/human_readable_orders.json +86 -0
- package/build/cjs/examples/human_readable_short_term_orders.json +42 -0
- package/build/cjs/examples/json-encoding.js +32 -0
- package/build/cjs/examples/long_term_order_cancel_example.js +63 -0
- package/build/cjs/examples/markets_endpoints.js +134 -0
- package/build/cjs/examples/native_examples.js +112 -0
- package/build/cjs/examples/noble_example.js +88 -0
- package/build/cjs/examples/optimal_node.js +70 -0
- package/build/cjs/examples/permissioned_keys_example.js +104 -0
- package/build/cjs/examples/raw_orders.json +130 -0
- package/build/cjs/examples/short_term_order_cancel_example.js +54 -0
- package/build/cjs/examples/short_term_order_composite_example.js +68 -0
- package/build/cjs/examples/test.js +50 -0
- package/build/cjs/examples/transfer_example_deposit.js +29 -0
- package/build/cjs/examples/transfer_example_send.js +42 -0
- package/build/cjs/examples/transfer_example_subaccount_transfer.js +29 -0
- package/build/cjs/examples/transfer_example_withdraw.js +30 -0
- package/build/cjs/examples/transfer_example_withdraw_other.js +42 -0
- package/build/cjs/examples/utility_endpoints.js +42 -0
- package/build/cjs/examples/validator_get_example.js +158 -0
- package/build/cjs/examples/validator_post_example.js +76 -0
- package/build/cjs/examples/wallet_address.js +22 -0
- package/build/cjs/examples/websocket_example.js +36 -0
- package/build/cjs/examples/websocket_orderbook_example.js +196 -0
- package/build/cjs/package.json +1 -0
- package/build/cjs/src/clients/composite-client.js +839 -0
- package/build/cjs/src/clients/constants.js +288 -0
- package/build/cjs/src/clients/faucet-client.js +36 -0
- package/build/cjs/src/clients/helpers/chain-helpers.js +178 -0
- package/build/cjs/src/clients/helpers/request-helpers.js +65 -0
- package/build/cjs/src/clients/indexer-client.js +56 -0
- package/build/cjs/src/clients/lib/axios/axiosRequest.js +34 -0
- package/build/cjs/src/clients/lib/axios/errors.js +28 -0
- package/build/cjs/src/clients/lib/axios/index.js +23 -0
- package/build/cjs/src/clients/lib/axios/types.js +11 -0
- package/build/cjs/src/clients/lib/cctpProto.js +3242 -0
- package/build/cjs/src/clients/lib/errors.js +58 -0
- package/build/cjs/src/clients/lib/registry.js +52 -0
- package/build/cjs/src/clients/modules/account.js +223 -0
- package/build/cjs/src/clients/modules/composer.js +419 -0
- package/build/cjs/src/clients/modules/get.js +442 -0
- package/build/cjs/src/clients/modules/local-wallet.js +82 -0
- package/build/cjs/src/clients/modules/markets.js +54 -0
- package/build/cjs/src/clients/modules/post.js +412 -0
- package/build/cjs/src/clients/modules/proto-includes.js +69 -0
- package/build/cjs/src/clients/modules/rest.js +41 -0
- package/build/cjs/src/clients/modules/signer.js +93 -0
- package/build/cjs/src/clients/modules/tendermintClient.js +137 -0
- package/build/cjs/src/clients/modules/utility.js +52 -0
- package/build/cjs/src/clients/modules/vault.js +25 -0
- package/build/cjs/src/clients/native.js +1330 -0
- package/build/cjs/src/clients/noble-client.js +96 -0
- package/build/cjs/src/clients/socket-client.js +304 -0
- package/build/cjs/src/clients/subaccount.js +45 -0
- package/build/cjs/src/clients/types.js +43 -0
- package/build/cjs/src/clients/validator-client.js +87 -0
- package/build/cjs/src/index.js +73 -0
- package/build/cjs/src/lib/constants.js +23 -0
- package/build/cjs/src/lib/errors.js +37 -0
- package/build/cjs/src/lib/helpers.js +108 -0
- package/build/cjs/src/lib/onboarding.js +75 -0
- package/build/cjs/src/lib/trading-key-utils.js +120 -0
- package/build/cjs/src/lib/utils.js +89 -0
- package/build/cjs/src/lib/validation.js +159 -0
- package/build/cjs/src/network_optimizer.js +109 -0
- package/build/cjs/src/types.js +25 -0
- package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -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 +181 -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 +64 -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 +56 -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 +49 -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 +457 -0
- package/build/esm/src/clients/composite-client.d.ts.map +1 -0
- package/build/esm/src/clients/composite-client.js +832 -0
- package/build/esm/src/clients/constants.d.ts +173 -0
- package/build/esm/src/clients/constants.d.ts.map +1 -0
- package/build/esm/src/clients/constants.js +264 -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 +12 -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 +36 -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 +48 -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 +38 -0
- package/build/esm/src/clients/modules/composer.d.ts.map +1 -0
- package/build/esm/src/clients/modules/composer.js +412 -0
- package/build/esm/src/clients/modules/get.d.ts +199 -0
- package/build/esm/src/clients/modules/get.d.ts.map +1 -0
- package/build/esm/src/clients/modules/get.js +402 -0
- package/build/esm/src/clients/modules/local-wallet.d.ts +42 -0
- package/build/esm/src/clients/modules/local-wallet.d.ts.map +1 -0
- package/build/esm/src/clients/modules/local-wallet.js +76 -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 +137 -0
- package/build/esm/src/clients/modules/post.d.ts.map +1 -0
- package/build/esm/src/clients/modules/post.js +405 -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 +30 -0
- package/build/esm/src/clients/modules/rest.d.ts +13 -0
- package/build/esm/src/clients/modules/rest.d.ts.map +1 -0
- package/build/esm/src/clients/modules/rest.js +35 -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 +52 -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 +32 -0
- package/build/esm/src/clients/modules/utility.d.ts.map +1 -0
- package/build/esm/src/clients/modules/utility.js +46 -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 +39 -0
- package/build/esm/src/clients/noble-client.d.ts.map +1 -0
- package/build/esm/src/clients/noble-client.js +92 -0
- package/build/esm/src/clients/socket-client.d.ts +149 -0
- package/build/esm/src/clients/socket-client.d.ts.map +1 -0
- package/build/esm/src/clients/socket-client.js +297 -0
- package/build/esm/src/clients/subaccount.d.ts +26 -0
- package/build/esm/src/clients/subaccount.d.ts.map +1 -0
- package/build/esm/src/clients/subaccount.js +41 -0
- package/build/esm/src/clients/types.d.ts +139 -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 +41 -0
- package/build/esm/src/clients/validator-client.d.ts.map +1 -0
- package/build/esm/src/clients/validator-client.js +80 -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 +32 -0
- package/build/esm/src/lib/helpers.d.ts.map +1 -0
- package/build/esm/src/lib/helpers.js +98 -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 +37 -0
- package/build/esm/src/lib/trading-key-utils.d.ts.map +1 -0
- package/build/esm/src/lib/trading-key-utils.js +111 -0
- package/build/esm/src/lib/utils.d.ts +49 -0
- package/build/esm/src/lib/utils.d.ts.map +1 -0
- package/build/esm/src/lib/utils.js +79 -0
- package/build/esm/src/lib/validation.d.ts +35 -0
- package/build/esm/src/lib/validation.d.ts.map +1 -0
- package/build/esm/src/lib/validation.js +147 -0
- package/build/esm/src/network_optimizer.d.ts +21 -0
- package/build/esm/src/network_optimizer.d.ts.map +1 -0
- package/build/esm/src/network_optimizer.js +104 -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/package.json +129 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validatePlaceOrderMessage = validatePlaceOrderMessage;
|
|
7
|
+
exports.validateCancelOrderMessage = validateCancelOrderMessage;
|
|
8
|
+
exports.validateBatchCancelOrderMessage = validateBatchCancelOrderMessage;
|
|
9
|
+
exports.validateTransferMessage = validateTransferMessage;
|
|
10
|
+
exports.verifyOrderFlags = verifyOrderFlags;
|
|
11
|
+
exports.isStatefulOrder = isStatefulOrder;
|
|
12
|
+
exports.isValidAddress = isValidAddress;
|
|
13
|
+
const bech32_1 = require("bech32");
|
|
14
|
+
const long_1 = __importDefault(require("long"));
|
|
15
|
+
const constants_1 = require("../clients/constants");
|
|
16
|
+
const types_1 = require("../clients/types");
|
|
17
|
+
const errors_1 = require("./errors");
|
|
18
|
+
/**
|
|
19
|
+
* @describe validatePlaceOrderMessage validates that an order to place has fields that would be
|
|
20
|
+
* valid on-chain.
|
|
21
|
+
*/
|
|
22
|
+
function validatePlaceOrderMessage(subaccountNumber, order) {
|
|
23
|
+
if (!verifyNumberIsUint32(order.clientId)) {
|
|
24
|
+
return new errors_1.UserError(`clientId: ${order.clientId} is not a valid uint32`);
|
|
25
|
+
}
|
|
26
|
+
if (order.quantums.lessThanOrEqual(long_1.default.ZERO)) {
|
|
27
|
+
return new errors_1.UserError(`quantums: ${order.quantums} cannot be <= 0`);
|
|
28
|
+
}
|
|
29
|
+
if (order.subticks.lessThanOrEqual(long_1.default.ZERO)) {
|
|
30
|
+
return new errors_1.UserError(`subticks: ${order.subticks} cannot be <= 0`);
|
|
31
|
+
}
|
|
32
|
+
if (!verifySubaccountNumber(subaccountNumber)) {
|
|
33
|
+
return new errors_1.UserError(`subaccountNumber: ${subaccountNumber} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`);
|
|
34
|
+
}
|
|
35
|
+
if (!isStatefulOrder(order.orderFlags) && !verifyGoodTilBlock(order.goodTilBlock)) {
|
|
36
|
+
return new errors_1.UserError(`goodTilBlock: ${order.goodTilBlock} is not a valid uint32 or is 0`);
|
|
37
|
+
}
|
|
38
|
+
if (isStatefulOrder(order.orderFlags) && !verifyGoodTilBlockTime(order.goodTilBlockTime)) {
|
|
39
|
+
return new errors_1.UserError(`goodTilBlockTime: ${order.goodTilBlockTime} is not a valid uint32 or is 0`);
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @describe validateCancelOrderMessage validates that an order to cancel has fields that would be
|
|
45
|
+
* valid on-chain.
|
|
46
|
+
*/
|
|
47
|
+
function validateCancelOrderMessage(subaccountNumber, order) {
|
|
48
|
+
if (!verifyNumberIsUint32(order.clientId)) {
|
|
49
|
+
return new errors_1.UserError(`clientId: ${order.clientId} is not a valid uint32`);
|
|
50
|
+
}
|
|
51
|
+
if (!isStatefulOrder(order.orderFlags) && !verifyGoodTilBlock(order.goodTilBlock)) {
|
|
52
|
+
return new errors_1.UserError(`goodTilBlock: ${order.goodTilBlock} is not a valid uint32 or is 0`);
|
|
53
|
+
}
|
|
54
|
+
if (!isStatefulOrder(order.orderFlags) && order.goodTilBlockTime !== undefined) {
|
|
55
|
+
return new errors_1.UserError(`goodTilBlockTime is ${order.goodTilBlockTime}, but should not be set for non-stateful orders`);
|
|
56
|
+
}
|
|
57
|
+
if (isStatefulOrder(order.orderFlags) && !verifyGoodTilBlockTime(order.goodTilBlockTime)) {
|
|
58
|
+
return new errors_1.UserError(`goodTilBlockTime: ${order.goodTilBlockTime} is not a valid uint32 or is 0`);
|
|
59
|
+
}
|
|
60
|
+
if (isStatefulOrder(order.orderFlags) && order.goodTilBlock !== undefined) {
|
|
61
|
+
return new errors_1.UserError(`goodTilBlock is ${order.goodTilBlock}, but should not be set for stateful orders`);
|
|
62
|
+
}
|
|
63
|
+
if (!verifySubaccountNumber(subaccountNumber)) {
|
|
64
|
+
return new errors_1.UserError(`subaccountNumber: ${subaccountNumber} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`);
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @describe validateBatchCancelOrderMessage validates that orders to batch cancel have fields that would be
|
|
70
|
+
* valid on-chain.
|
|
71
|
+
*/
|
|
72
|
+
function validateBatchCancelOrderMessage(subaccountNumber, orders) {
|
|
73
|
+
for (const orderBatch of orders.shortTermOrders) {
|
|
74
|
+
for (const clientId of orderBatch.clientIds) {
|
|
75
|
+
if (!verifyNumberIsUint32(clientId)) {
|
|
76
|
+
return new errors_1.UserError(`clientId: ${clientId} is not a valid uint32`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (!verifyGoodTilBlock(orders.goodTilBlock)) {
|
|
81
|
+
return new errors_1.UserError(`goodTilBlock: ${orders.goodTilBlock} is not a valid uint32 or is 0`);
|
|
82
|
+
}
|
|
83
|
+
if (!verifySubaccountNumber(subaccountNumber)) {
|
|
84
|
+
return new errors_1.UserError(`subaccountNumber: ${subaccountNumber} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`);
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @describe validateTransferMessage validates that a transfer to place has fields that would be
|
|
90
|
+
* valid on-chain.
|
|
91
|
+
*/
|
|
92
|
+
function validateTransferMessage(transfer) {
|
|
93
|
+
if (!verifySubaccountNumber(transfer.sender.number || 0)) {
|
|
94
|
+
return new errors_1.UserError(`senderSubaccountNumber: ${transfer.sender.number || 0} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`);
|
|
95
|
+
}
|
|
96
|
+
if (!verifySubaccountNumber(transfer.recipient.number || 0)) {
|
|
97
|
+
return new errors_1.UserError(`recipientSubaccountNumber: ${transfer.recipient.number || 0} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`);
|
|
98
|
+
}
|
|
99
|
+
if (transfer.assetId !== 0) {
|
|
100
|
+
return new errors_1.UserError(`asset id: ${transfer.assetId} not supported`);
|
|
101
|
+
}
|
|
102
|
+
if (transfer.amount.lessThanOrEqual(long_1.default.ZERO)) {
|
|
103
|
+
return new errors_1.UserError(`amount: ${transfer.amount} cannot be <= 0`);
|
|
104
|
+
}
|
|
105
|
+
const addressError = verifyIsBech32(transfer.recipient.owner);
|
|
106
|
+
if (addressError !== undefined) {
|
|
107
|
+
return new errors_1.UserError(addressError.toString());
|
|
108
|
+
}
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
function verifyGoodTilBlock(goodTilBlock) {
|
|
112
|
+
if (goodTilBlock === undefined) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
return verifyNumberIsUint32(goodTilBlock) && goodTilBlock > 0;
|
|
116
|
+
}
|
|
117
|
+
function verifyGoodTilBlockTime(goodTilBlockTime) {
|
|
118
|
+
if (goodTilBlockTime === undefined) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
return verifyNumberIsUint32(goodTilBlockTime) && goodTilBlockTime > 0;
|
|
122
|
+
}
|
|
123
|
+
function verifySubaccountNumber(subaccountNumber) {
|
|
124
|
+
return subaccountNumber >= 0 && subaccountNumber <= constants_1.MAX_SUBACCOUNT_NUMBER;
|
|
125
|
+
}
|
|
126
|
+
function verifyNumberIsUint32(num) {
|
|
127
|
+
return num >= 0 && num <= constants_1.MAX_UINT_32;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* @description Validate that an order flag is a supported value.
|
|
131
|
+
*/
|
|
132
|
+
function verifyOrderFlags(orderFlags) {
|
|
133
|
+
return (orderFlags === types_1.OrderFlags.SHORT_TERM ||
|
|
134
|
+
orderFlags === types_1.OrderFlags.LONG_TERM ||
|
|
135
|
+
orderFlags === types_1.OrderFlags.CONDITIONAL);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* @description Determine whether an order flag represents a stateful order.
|
|
139
|
+
*/
|
|
140
|
+
function isStatefulOrder(orderFlags) {
|
|
141
|
+
return orderFlags === types_1.OrderFlags.LONG_TERM || orderFlags === types_1.OrderFlags.CONDITIONAL;
|
|
142
|
+
}
|
|
143
|
+
function verifyIsBech32(address) {
|
|
144
|
+
try {
|
|
145
|
+
(0, bech32_1.decode)(address);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
return error;
|
|
149
|
+
}
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* @description Validate a Perpx bech32 address with prefix check.
|
|
154
|
+
*/
|
|
155
|
+
function isValidAddress(address) {
|
|
156
|
+
// An address is valid if it starts with the BECH32_PREFIX + '1' and is Bech32 format.
|
|
157
|
+
return address.startsWith(`${constants_1.BECH32_PREFIX}1`) && verifyIsBech32(address) === undefined;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWlCQSw4REE0QkM7QUFNRCxnRUFnQ0M7QUFNRCwwRUF1QkM7QUFNRCwwREEyQkM7QUE2QkQsNENBTUM7QUFLRCwwQ0FFQztBQWVELHdDQUdDO0FBN01ELG1DQUFnQztBQUNoQyxnREFBd0I7QUFFeEIsb0RBQXlGO0FBQ3pGLDRDQU0wQjtBQUMxQixxQ0FBcUM7QUFFckM7OztHQUdHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQ3ZDLGdCQUF3QixFQUN4QixLQUFrQjtJQUVsQixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUMsT0FBTyxJQUFJLGtCQUFTLENBQUMsYUFBYSxLQUFLLENBQUMsUUFBUSx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzlDLE9BQU8sSUFBSSxrQkFBUyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsaUJBQWlCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksa0JBQVMsQ0FBQyxhQUFhLEtBQUssQ0FBQyxRQUFRLGlCQUFpQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLGtCQUFTLENBQ2xCLHFCQUFxQixnQkFBZ0IsdUJBQXVCLGlDQUFxQixFQUFFLENBQ3BGLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNsRixPQUFPLElBQUksa0JBQVMsQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLFlBQVksZ0NBQWdDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBQ0QsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUN6RixPQUFPLElBQUksa0JBQVMsQ0FDbEIscUJBQXFCLEtBQUssQ0FBQyxnQkFBZ0IsZ0NBQWdDLENBQzVFLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLDBCQUEwQixDQUN4QyxnQkFBd0IsRUFDeEIsS0FBbUI7SUFFbkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFDLE9BQU8sSUFBSSxrQkFBUyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsd0JBQXdCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNsRixPQUFPLElBQUksa0JBQVMsQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLFlBQVksZ0NBQWdDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQy9FLE9BQU8sSUFBSSxrQkFBUyxDQUNsQix1QkFBdUIsS0FBSyxDQUFDLGdCQUFnQixpREFBaUQsQ0FDL0YsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ3pGLE9BQU8sSUFBSSxrQkFBUyxDQUNsQixxQkFBcUIsS0FBSyxDQUFDLGdCQUFnQixnQ0FBZ0MsQ0FDNUUsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxRSxPQUFPLElBQUksa0JBQVMsQ0FDbEIsbUJBQW1CLEtBQUssQ0FBQyxZQUFZLDZDQUE2QyxDQUNuRixDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLGtCQUFTLENBQ2xCLHFCQUFxQixnQkFBZ0IsdUJBQXVCLGlDQUFxQixFQUFFLENBQ3BGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLCtCQUErQixDQUM3QyxnQkFBd0IsRUFDeEIsTUFBeUI7SUFFekIsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEQsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sSUFBSSxrQkFBUyxDQUFDLGFBQWEsUUFBUSx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPLElBQUksa0JBQVMsQ0FBQyxpQkFBaUIsTUFBTSxDQUFDLFlBQVksZ0NBQWdDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksa0JBQVMsQ0FDbEIscUJBQXFCLGdCQUFnQix1QkFBdUIsaUNBQXFCLEVBQUUsQ0FDcEYsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsUUFBa0I7SUFDeEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxNQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0QsT0FBTyxJQUFJLGtCQUFTLENBQ2xCLDJCQUNFLFFBQVEsQ0FBQyxNQUFRLENBQUMsTUFBTSxJQUFJLENBQzlCLHVCQUF1QixpQ0FBcUIsRUFBRSxDQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsU0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlELE9BQU8sSUFBSSxrQkFBUyxDQUNsQiw4QkFDRSxRQUFRLENBQUMsU0FBVyxDQUFDLE1BQU0sSUFBSSxDQUNqQyx1QkFBdUIsaUNBQXFCLEVBQUUsQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLGtCQUFTLENBQUMsYUFBYSxRQUFRLENBQUMsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQy9DLE9BQU8sSUFBSSxrQkFBUyxDQUFDLFdBQVcsUUFBUSxDQUFDLE1BQU0saUJBQWlCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQXNCLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25GLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxrQkFBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxZQUFnQztJQUMxRCxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsZ0JBQW9DO0lBQ2xFLElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxnQkFBd0I7SUFDdEQsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksZ0JBQWdCLElBQUksaUNBQXFCLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsR0FBVztJQUN2QyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHVCQUFXLENBQUM7QUFDeEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsVUFBc0I7SUFDckQsT0FBTyxDQUNMLFVBQVUsS0FBSyxrQkFBVSxDQUFDLFVBQVU7UUFDcEMsVUFBVSxLQUFLLGtCQUFVLENBQUMsU0FBUztRQUNuQyxVQUFVLEtBQUssa0JBQVUsQ0FBQyxXQUFXLENBQ3RDLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsVUFBc0I7SUFDcEQsT0FBTyxVQUFVLEtBQUssa0JBQVUsQ0FBQyxTQUFTLElBQUksVUFBVSxLQUFLLGtCQUFVLENBQUMsV0FBVyxDQUFDO0FBQ3RGLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxPQUFlO0lBQ3JDLElBQUksQ0FBQztRQUNILElBQUEsZUFBTSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLE9BQWU7SUFDNUMsc0ZBQXNGO0lBQ3RGLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLHlCQUFhLEdBQUcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxTQUFTLENBQUM7QUFDMUYsQ0FBQyJ9
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NetworkOptimizer = exports.isTruthy = void 0;
|
|
4
|
+
const indexer_client_1 = require("./clients/indexer-client");
|
|
5
|
+
const validator_client_1 = require("./clients/validator-client");
|
|
6
|
+
const helpers_1 = require("./lib/helpers");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
class PingResponse {
|
|
9
|
+
constructor(height) {
|
|
10
|
+
this.height = height;
|
|
11
|
+
this.responseTime = new Date();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @description Type guard helper for filtering falsy values.
|
|
16
|
+
*/
|
|
17
|
+
const isTruthy = (n) => Boolean(n);
|
|
18
|
+
exports.isTruthy = isTruthy;
|
|
19
|
+
class NetworkOptimizer {
|
|
20
|
+
async validatorClients(endpointUrls, chainId) {
|
|
21
|
+
return (await Promise.all(endpointUrls.map((endpointUrl) => validator_client_1.ValidatorClient.connect(new types_1.ValidatorConfig(endpointUrl, chainId, {
|
|
22
|
+
CHAINTOKEN_DENOM: 'placeholder',
|
|
23
|
+
CHAINTOKEN_DECIMALS: 18,
|
|
24
|
+
USDC_DENOM: 'uusdc',
|
|
25
|
+
USDC_DECIMALS: 6,
|
|
26
|
+
})).catch((_) => undefined)))).filter(exports.isTruthy);
|
|
27
|
+
}
|
|
28
|
+
indexerClients(endpointUrls) {
|
|
29
|
+
return endpointUrls
|
|
30
|
+
.map((endpointUrl) => new indexer_client_1.IndexerClient(
|
|
31
|
+
// socket is not used for finding optimal indexer, but required as a parameter to the config
|
|
32
|
+
new types_1.IndexerConfig(endpointUrl, endpointUrl.replace('https://', 'wss://').replace('http://', 'ws://'))))
|
|
33
|
+
.filter(exports.isTruthy);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @description Pick the fastest validator node at latest or near-latest height.
|
|
37
|
+
*
|
|
38
|
+
* @returns The selected REST endpoint URL.
|
|
39
|
+
*/
|
|
40
|
+
async findOptimalNode(endpointUrls, chainId) {
|
|
41
|
+
if (endpointUrls.length === 0) {
|
|
42
|
+
const errorResponse = {
|
|
43
|
+
error: {
|
|
44
|
+
message: 'No nodes provided',
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
return (0, helpers_1.encodeJson)(errorResponse);
|
|
48
|
+
}
|
|
49
|
+
const clients = await this.validatorClients(endpointUrls, chainId);
|
|
50
|
+
const responses = (await Promise.all(clients
|
|
51
|
+
.map(async (client) => {
|
|
52
|
+
const block = await client.get.latestBlock();
|
|
53
|
+
const response = new PingResponse(block.header.height);
|
|
54
|
+
return {
|
|
55
|
+
endpoint: client.config.restEndpoint,
|
|
56
|
+
height: response.height,
|
|
57
|
+
time: response.responseTime.getTime(),
|
|
58
|
+
};
|
|
59
|
+
})
|
|
60
|
+
.map((promise) => promise.catch((_) => undefined)))).filter(exports.isTruthy);
|
|
61
|
+
if (responses.length === 0) {
|
|
62
|
+
throw new Error('Could not connect to endpoints');
|
|
63
|
+
}
|
|
64
|
+
const maxHeight = Math.max(...responses.map(({ height }) => height));
|
|
65
|
+
return (responses
|
|
66
|
+
// Only consider nodes at `maxHeight` or `maxHeight - 1`
|
|
67
|
+
.filter(({ height }) => height === maxHeight || height === maxHeight - 1)
|
|
68
|
+
// Return the endpoint with the fastest response time
|
|
69
|
+
.sort((a, b) => a.time - b.time)[0].endpoint);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @description Pick the fastest indexer at latest or near-latest height.
|
|
73
|
+
*
|
|
74
|
+
* @returns The selected REST endpoint URL.
|
|
75
|
+
*/
|
|
76
|
+
async findOptimalIndexer(endpointUrls) {
|
|
77
|
+
if (endpointUrls.length === 0) {
|
|
78
|
+
const errorResponse = {
|
|
79
|
+
error: {
|
|
80
|
+
message: 'No URL provided',
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
return (0, helpers_1.encodeJson)(errorResponse);
|
|
84
|
+
}
|
|
85
|
+
const clients = this.indexerClients(endpointUrls);
|
|
86
|
+
const responses = (await Promise.all(clients
|
|
87
|
+
.map(async (client) => {
|
|
88
|
+
const block = await client.utility.getHeight();
|
|
89
|
+
const response = new PingResponse(+block.height);
|
|
90
|
+
return {
|
|
91
|
+
endpoint: client.config.restEndpoint,
|
|
92
|
+
height: response.height,
|
|
93
|
+
time: response.responseTime.getTime(),
|
|
94
|
+
};
|
|
95
|
+
})
|
|
96
|
+
.map((promise) => promise.catch((_) => undefined)))).filter(exports.isTruthy);
|
|
97
|
+
if (responses.length === 0) {
|
|
98
|
+
throw new Error('Could not connect to endpoints');
|
|
99
|
+
}
|
|
100
|
+
const maxHeight = Math.max(...responses.map(({ height }) => height));
|
|
101
|
+
return (responses
|
|
102
|
+
// Only consider nodes at `maxHeight` or `maxHeight - 1`
|
|
103
|
+
.filter(({ height }) => height === maxHeight || height === maxHeight - 1)
|
|
104
|
+
// Return the endpoint with the fastest response time
|
|
105
|
+
.sort((a, b) => a.time - b.time)[0].endpoint);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.NetworkOptimizer = NetworkOptimizer;
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya19vcHRpbWl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmV0d29ya19vcHRpbWl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBQ3pELGlFQUE2RDtBQUM3RCwyQ0FBMkM7QUFDM0MsbUNBQXlEO0FBRXpELE1BQU0sWUFBWTtJQUtoQixZQUFZLE1BQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0ksTUFBTSxRQUFRLEdBQUcsQ0FBSSxDQUFvQyxFQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBM0UsUUFBQSxRQUFRLFlBQW1FO0FBRXhGLE1BQWEsZ0JBQWdCO0lBQ25CLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDNUIsWUFBc0IsRUFDdEIsT0FBZTtRQUVmLE9BQU8sQ0FDTCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQy9CLGtDQUFlLENBQUMsT0FBTyxDQUNyQixJQUFJLHVCQUFlLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRTtZQUN4QyxnQkFBZ0IsRUFBRSxhQUFhO1lBQy9CLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsVUFBVSxFQUFFLE9BQU87WUFDbkIsYUFBYSxFQUFFLENBQUM7U0FDakIsQ0FBQyxDQUNILENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FDRixDQUNGLENBQUMsTUFBTSxDQUFDLGdCQUFRLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRU8sY0FBYyxDQUFDLFlBQXNCO1FBQzNDLE9BQU8sWUFBWTthQUNoQixHQUFHLENBQ0YsQ0FBQyxXQUFX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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ClobPairId = void 0;
|
|
18
|
+
__exportStar(require("./clients/types"), exports);
|
|
19
|
+
__exportStar(require("./clients/constants"), exports);
|
|
20
|
+
var ClobPairId;
|
|
21
|
+
(function (ClobPairId) {
|
|
22
|
+
ClobPairId[ClobPairId["PERPETUAL_PAIR_BTC_USD"] = 0] = "PERPETUAL_PAIR_BTC_USD";
|
|
23
|
+
ClobPairId[ClobPairId["PERPETUAL_PAIR_ETH_USD"] = 1] = "PERPETUAL_PAIR_ETH_USD";
|
|
24
|
+
})(ClobPairId || (exports.ClobPairId = ClobPairId = {}));
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxrREFBZ0M7QUFDaEMsc0RBQW9DO0FBa0NwQyxJQUFZLFVBR1g7QUFIRCxXQUFZLFVBQVU7SUFDcEIsK0VBQTBCLENBQUE7SUFDMUIsK0VBQTBCLENBQUE7QUFDNUIsQ0FBQyxFQUhXLFVBQVUsMEJBQVYsVUFBVSxRQUdyQiJ9
|