@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,73 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.NetworkOptimizer = exports.ByteArrayEncoding = exports.encodeJson = exports.ValidatorClient = exports.SubaccountInfo = exports.SubaccountClient = exports.SocketClient = exports.NobleClient = exports.LocalWallet = exports.IndexerClient = exports.FaucetClient = exports.CompositeClient = exports.validation = exports.utils = exports.tradingKeyUtils = exports.onboarding = exports.helpers = void 0;
|
|
43
|
+
// Types.
|
|
44
|
+
__exportStar(require("./types"), exports);
|
|
45
|
+
// Utility functions.
|
|
46
|
+
exports.helpers = __importStar(require("./lib/helpers"));
|
|
47
|
+
exports.onboarding = __importStar(require("./lib/onboarding"));
|
|
48
|
+
exports.tradingKeyUtils = __importStar(require("./lib/trading-key-utils"));
|
|
49
|
+
exports.utils = __importStar(require("./lib/utils"));
|
|
50
|
+
exports.validation = __importStar(require("./lib/validation"));
|
|
51
|
+
var composite_client_1 = require("./clients/composite-client");
|
|
52
|
+
Object.defineProperty(exports, "CompositeClient", { enumerable: true, get: function () { return composite_client_1.CompositeClient; } });
|
|
53
|
+
var faucet_client_1 = require("./clients/faucet-client");
|
|
54
|
+
Object.defineProperty(exports, "FaucetClient", { enumerable: true, get: function () { return faucet_client_1.FaucetClient; } });
|
|
55
|
+
var indexer_client_1 = require("./clients/indexer-client");
|
|
56
|
+
Object.defineProperty(exports, "IndexerClient", { enumerable: true, get: function () { return indexer_client_1.IndexerClient; } });
|
|
57
|
+
var local_wallet_1 = require("./clients/modules/local-wallet");
|
|
58
|
+
Object.defineProperty(exports, "LocalWallet", { enumerable: true, get: function () { return __importDefault(local_wallet_1).default; } });
|
|
59
|
+
var noble_client_1 = require("./clients/noble-client");
|
|
60
|
+
Object.defineProperty(exports, "NobleClient", { enumerable: true, get: function () { return noble_client_1.NobleClient; } });
|
|
61
|
+
var socket_client_1 = require("./clients/socket-client");
|
|
62
|
+
Object.defineProperty(exports, "SocketClient", { enumerable: true, get: function () { return socket_client_1.SocketClient; } });
|
|
63
|
+
var subaccount_1 = require("./clients/subaccount");
|
|
64
|
+
Object.defineProperty(exports, "SubaccountClient", { enumerable: true, get: function () { return subaccount_1.SubaccountInfo; } });
|
|
65
|
+
Object.defineProperty(exports, "SubaccountInfo", { enumerable: true, get: function () { return subaccount_1.SubaccountInfo; } });
|
|
66
|
+
var validator_client_1 = require("./clients/validator-client");
|
|
67
|
+
Object.defineProperty(exports, "ValidatorClient", { enumerable: true, get: function () { return validator_client_1.ValidatorClient; } });
|
|
68
|
+
var helpers_1 = require("./lib/helpers");
|
|
69
|
+
Object.defineProperty(exports, "encodeJson", { enumerable: true, get: function () { return helpers_1.encodeJson; } });
|
|
70
|
+
Object.defineProperty(exports, "ByteArrayEncoding", { enumerable: true, get: function () { return helpers_1.ByteArrayEncoding; } });
|
|
71
|
+
var network_optimizer_1 = require("./network_optimizer");
|
|
72
|
+
Object.defineProperty(exports, "NetworkOptimizer", { enumerable: true, get: function () { return network_optimizer_1.NetworkOptimizer; } });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUztBQUNULDBDQUF3QjtBQUV4QixxQkFBcUI7QUFDckIseURBQXlDO0FBQ3pDLCtEQUErQztBQUMvQywyRUFBMkQ7QUFDM0QscURBQXFDO0FBQ3JDLCtEQUErQztBQUUvQywrREFBNkQ7QUFBcEQsbUhBQUEsZUFBZSxPQUFBO0FBQ3hCLHlEQUF1RDtBQUE5Qyw2R0FBQSxZQUFZLE9BQUE7QUFDckIsMkRBQXlEO0FBQWhELCtHQUFBLGFBQWEsT0FBQTtBQUN0QiwrREFBd0U7QUFBL0QsNEhBQUEsT0FBTyxPQUFlO0FBQy9CLHVEQUFxRDtBQUE1QywyR0FBQSxXQUFXLE9BQUE7QUFDcEIseURBQXVEO0FBQTlDLDZHQUFBLFlBQVksT0FBQTtBQUNyQixtREFBMEY7QUFBakYsOEdBQUEsY0FBYyxPQUFvQjtBQUFFLDRHQUFBLGNBQWMsT0FBQTtBQUMzRCwrREFBNkQ7QUFBcEQsbUhBQUEsZUFBZSxPQUFBO0FBQ3hCLHlDQUE4RDtBQUFyRCxxR0FBQSxVQUFVLE9BQUE7QUFBRSw0R0FBQSxpQkFBaUIsT0FBQTtBQUN0Qyx5REFBdUQ7QUFBOUMscUhBQUEsZ0JBQWdCLE9BQUEifQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SERIALIZED_INT_ZERO = exports.DEFAULT_SEQUENCE = exports.MAX_SUBACCOUNT_NUMBER = exports.MAX_UINT_32 = exports.ZERO_FEE = exports.GAS_MULTIPLIER = exports.API_TIMEOUT_DEFAULT_MS = exports.BROADCAST_TIMEOUT_MS = exports.BROADCAST_POLL_INTERVAL_MS = exports.NOBLE_BECH32_PREFIX = exports.BECH32_PREFIX = void 0;
|
|
4
|
+
// Bech32 Prefix
|
|
5
|
+
exports.BECH32_PREFIX = 'perpx';
|
|
6
|
+
exports.NOBLE_BECH32_PREFIX = 'noble';
|
|
7
|
+
// Broadcast Defaults
|
|
8
|
+
exports.BROADCAST_POLL_INTERVAL_MS = 300;
|
|
9
|
+
exports.BROADCAST_TIMEOUT_MS = 8000;
|
|
10
|
+
// API Defaults
|
|
11
|
+
exports.API_TIMEOUT_DEFAULT_MS = 5000;
|
|
12
|
+
// Gas
|
|
13
|
+
exports.GAS_MULTIPLIER = 1.6;
|
|
14
|
+
exports.ZERO_FEE = {
|
|
15
|
+
amount: [],
|
|
16
|
+
gas: '0',
|
|
17
|
+
};
|
|
18
|
+
// Validation
|
|
19
|
+
exports.MAX_UINT_32 = 4294967295;
|
|
20
|
+
exports.MAX_SUBACCOUNT_NUMBER = 128000;
|
|
21
|
+
exports.DEFAULT_SEQUENCE = 0;
|
|
22
|
+
exports.SERIALIZED_INT_ZERO = Uint8Array.from([0x02]);
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsZ0JBQWdCO0FBQ0gsUUFBQSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLFFBQUEsbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0FBRTNDLHFCQUFxQjtBQUNSLFFBQUEsMEJBQTBCLEdBQVcsR0FBRyxDQUFDO0FBQ3pDLFFBQUEsb0JBQW9CLEdBQVcsSUFBSyxDQUFDO0FBRWxELGVBQWU7QUFDRixRQUFBLHNCQUFzQixHQUFXLElBQUssQ0FBQztBQUVwRCxNQUFNO0FBQ08sUUFBQSxjQUFjLEdBQVcsR0FBRyxDQUFDO0FBRTdCLFFBQUEsUUFBUSxHQUFXO0lBQzlCLE1BQU0sRUFBRSxFQUFFO0lBQ1YsR0FBRyxFQUFFLEdBQUc7Q0FDVCxDQUFDO0FBRUYsYUFBYTtBQUNBLFFBQUEsV0FBVyxHQUFHLFVBQWEsQ0FBQztBQUM1QixRQUFBLHFCQUFxQixHQUFHLE1BQU8sQ0FBQztBQUVoQyxRQUFBLGdCQUFnQixHQUFXLENBQUMsQ0FBQztBQUU3QixRQUFBLG1CQUFtQixHQUFlLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserError = exports.BroadcastErrorObject = exports.UnexpectedClientError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* An edge-case was hit in the client that should never have been reached.
|
|
6
|
+
*/
|
|
7
|
+
class UnexpectedClientError extends Error {
|
|
8
|
+
constructor() {
|
|
9
|
+
super('An unexpected error occurred on the client');
|
|
10
|
+
this.name = 'UnexpectedClientError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.UnexpectedClientError = UnexpectedClientError;
|
|
14
|
+
/**
|
|
15
|
+
* An error occurred during the broadcasting process.
|
|
16
|
+
*/
|
|
17
|
+
class BroadcastErrorObject extends Error {
|
|
18
|
+
constructor(message, result) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'BroadcastError';
|
|
21
|
+
this.result = result;
|
|
22
|
+
this.code = result.code;
|
|
23
|
+
this.codespace = result.codespace;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.BroadcastErrorObject = BroadcastErrorObject;
|
|
27
|
+
/**
|
|
28
|
+
* User error occurred during a client operation.
|
|
29
|
+
*/
|
|
30
|
+
class UserError extends Error {
|
|
31
|
+
constructor(message) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = 'UserError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.UserError = UserError;
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLEtBQUs7SUFDOUM7UUFDRSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQUxELHNEQUtDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLEtBQUs7SUFLN0MsWUFBWSxPQUFlLEVBQUUsTUFBK0I7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQVpELG9EQVlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxLQUFLO0lBQ2xDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFMRCw4QkFLQyJ9
|
|
@@ -0,0 +1,108 @@
|
|
|
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.ByteArrayEncoding = void 0;
|
|
7
|
+
exports.convertPartialTransactionOptionsToFull = convertPartialTransactionOptionsToFull;
|
|
8
|
+
exports.stripHexPrefix = stripHexPrefix;
|
|
9
|
+
exports.bigIntToBytes = bigIntToBytes;
|
|
10
|
+
exports.encodeJson = encodeJson;
|
|
11
|
+
const encoding_1 = require("@cosmjs/encoding");
|
|
12
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
13
|
+
const long_1 = __importDefault(require("long"));
|
|
14
|
+
const constants_1 = require("./constants");
|
|
15
|
+
/**
|
|
16
|
+
* @description Either return undefined or insert default sequence value into
|
|
17
|
+
* `partialTransactionOptions` if it does not exist.
|
|
18
|
+
*
|
|
19
|
+
* @returns undefined or full TransactionOptions.
|
|
20
|
+
*/
|
|
21
|
+
function convertPartialTransactionOptionsToFull(partialTransactionOptions) {
|
|
22
|
+
if (partialTransactionOptions === undefined) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
sequence: constants_1.DEFAULT_SEQUENCE,
|
|
27
|
+
...partialTransactionOptions,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @description Strip '0x' prefix from input string. If there is no '0x' prefix, return the original
|
|
32
|
+
* input.
|
|
33
|
+
*
|
|
34
|
+
* @returns input without '0x' prefix or original input if no prefix.
|
|
35
|
+
*/
|
|
36
|
+
function stripHexPrefix(input) {
|
|
37
|
+
if (input.indexOf('0x') === 0) {
|
|
38
|
+
return input.slice(2);
|
|
39
|
+
}
|
|
40
|
+
return input;
|
|
41
|
+
}
|
|
42
|
+
function toBigInt(u) {
|
|
43
|
+
if (u.length <= 1) {
|
|
44
|
+
return BigInt(0);
|
|
45
|
+
}
|
|
46
|
+
// eslint-disable-next-line no-bitwise
|
|
47
|
+
const negated = (u[0] & 1) === 1;
|
|
48
|
+
const hex = Buffer.from(u.slice(1)).toString('hex');
|
|
49
|
+
const abs = BigInt(`0x${hex}`);
|
|
50
|
+
return negated ? -abs : abs;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @description Encode a bigint into the SDK's signed byte representation.
|
|
54
|
+
*
|
|
55
|
+
* @returns A Uint8Array with a sign byte followed by the bigint bytes.
|
|
56
|
+
*/
|
|
57
|
+
function bigIntToBytes(value) {
|
|
58
|
+
const absoluteValue = value < 0 ? value * BigInt(-1) : value;
|
|
59
|
+
const nonPaddedHexValue = absoluteValue.toString(16);
|
|
60
|
+
const paddedHexValue = nonPaddedHexValue.length % 2 === 0 ? nonPaddedHexValue : `0${nonPaddedHexValue}`;
|
|
61
|
+
const numberBytes = Buffer.from(paddedHexValue, 'hex');
|
|
62
|
+
const signedBytes = Uint8Array.of(value < 0 ? 3 : 2, ...numberBytes);
|
|
63
|
+
return signedBytes;
|
|
64
|
+
}
|
|
65
|
+
var ByteArrayEncoding;
|
|
66
|
+
(function (ByteArrayEncoding) {
|
|
67
|
+
ByteArrayEncoding["HEX"] = "hex";
|
|
68
|
+
ByteArrayEncoding["BIGINT"] = "bigint";
|
|
69
|
+
})(ByteArrayEncoding || (exports.ByteArrayEncoding = ByteArrayEncoding = {}));
|
|
70
|
+
/**
|
|
71
|
+
* @description Stringify JSON while encoding BigNumber/Long/Uint8Array values.
|
|
72
|
+
*
|
|
73
|
+
* @returns A JSON string with numeric and byte values normalized for transport.
|
|
74
|
+
*/
|
|
75
|
+
function encodeJson(object, byteArrayEncoding = ByteArrayEncoding.HEX) {
|
|
76
|
+
// eslint-disable-next-line prefer-arrow-callback
|
|
77
|
+
return JSON.stringify(object, function replacer(_key, value) {
|
|
78
|
+
// Even though we set the an UInt8Array as the value,
|
|
79
|
+
// it comes in here as an object with UInt8Array as the buffer property.
|
|
80
|
+
if (value instanceof bignumber_js_1.default) {
|
|
81
|
+
return value.toString();
|
|
82
|
+
}
|
|
83
|
+
if (typeof value === 'bigint') {
|
|
84
|
+
return value.toString();
|
|
85
|
+
}
|
|
86
|
+
if (value instanceof long_1.default) {
|
|
87
|
+
return value.toString();
|
|
88
|
+
}
|
|
89
|
+
if ((value === null || value === void 0 ? void 0 : value.buffer) instanceof Uint8Array) {
|
|
90
|
+
if (byteArrayEncoding === ByteArrayEncoding.HEX) {
|
|
91
|
+
return (0, encoding_1.toHex)(value.buffer);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
return toBigInt(value.buffer).toString();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (value instanceof Uint8Array) {
|
|
98
|
+
if (byteArrayEncoding === ByteArrayEncoding.HEX) {
|
|
99
|
+
return (0, encoding_1.toHex)(value);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return toBigInt(value).toString();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return value;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFhQSx3RkFXQztBQVFELHdDQU1DO0FBa0JELHNDQVFDO0FBWUQsZ0NBZ0NDO0FBNUdELCtDQUF5QztBQUN6QyxnRUFBcUM7QUFDckMsZ0RBQXdCO0FBR3hCLDJDQUErQztBQUUvQzs7Ozs7R0FLRztBQUNILFNBQWdCLHNDQUFzQyxDQUNwRCx5QkFBcUQ7SUFFckQsSUFBSSx5QkFBeUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTztRQUNMLFFBQVEsRUFBRSw0QkFBZ0I7UUFDMUIsR0FBRyx5QkFBeUI7S0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxLQUFhO0lBQzFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLENBQWE7SUFDN0IsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFDRCxzQ0FBc0M7SUFDdEMsTUFBTSxPQUFPLEdBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxNQUFNLEdBQUcsR0FBVyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzlCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLEtBQWE7SUFDekMsTUFBTSxhQUFhLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0QsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sY0FBYyxHQUNsQixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWlCLEVBQUUsQ0FBQztJQUNuRixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDckUsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELElBQVksaUJBR1g7QUFIRCxXQUFZLGlCQUFpQjtJQUMzQixnQ0FBVyxDQUFBO0lBQ1gsc0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBRzVCO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFVBQVUsQ0FDeEIsTUFBZSxFQUNmLG9CQUF1QyxpQkFBaUIsQ0FBQyxHQUFHO0lBRTVELGlEQUFpRDtJQUNqRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLO1FBQ3pELHFEQUFxRDtRQUNyRCx3RUFBd0U7UUFDeEUsSUFBSSxLQUFLLFlBQVksc0JBQVMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLEtBQUssWUFBWSxjQUFJLEVBQUUsQ0FBQztZQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxNQUFNLGFBQVksVUFBVSxFQUFFLENBQUM7WUFDeEMsSUFBSSxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEQsT0FBTyxJQUFBLGdCQUFLLEVBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxJQUFJLGlCQUFpQixLQUFLLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoRCxPQUFPLElBQUEsZ0JBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deriveHDKeyFromMnemonic = exports.deriveHDKeyFromEthereumSignature = exports.exportMnemonicAndPrivateKey = void 0;
|
|
4
|
+
const bip32_1 = require("@scure/bip32");
|
|
5
|
+
const bip39_1 = require("@scure/bip39");
|
|
6
|
+
const english_1 = require("@scure/bip39/wordlists/english");
|
|
7
|
+
const keccak_1 = require("ethereum-cryptography/keccak");
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
9
|
+
/**
|
|
10
|
+
* @description Get Mnemonic and priv/pub keys from privateKeyBytes and BIP44 HD path
|
|
11
|
+
*
|
|
12
|
+
* @url https://github.com/confio/cosmos-hd-key-derivation-spec#bip44
|
|
13
|
+
*
|
|
14
|
+
* @param entropy used to generate mnemonic
|
|
15
|
+
*
|
|
16
|
+
* @param path BIP44 HD Path. Default is The Cosmos Hub path
|
|
17
|
+
*
|
|
18
|
+
* @throws Error if the hdkey does not exist
|
|
19
|
+
*
|
|
20
|
+
* @returns Mnemonic and priv/pub keys
|
|
21
|
+
*/
|
|
22
|
+
const exportMnemonicAndPrivateKey = (entropy, path = "m/44'/118'/0'/0/0") => {
|
|
23
|
+
const mnemonic = (0, bip39_1.entropyToMnemonic)(entropy, english_1.wordlist);
|
|
24
|
+
const { privateKey, publicKey } = (0, exports.deriveHDKeyFromMnemonic)(mnemonic, path);
|
|
25
|
+
return {
|
|
26
|
+
mnemonic,
|
|
27
|
+
privateKey,
|
|
28
|
+
publicKey,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
exports.exportMnemonicAndPrivateKey = exportMnemonicAndPrivateKey;
|
|
32
|
+
/**
|
|
33
|
+
* @description Get private information for onboarding using an Ethereum Signature.
|
|
34
|
+
*
|
|
35
|
+
* @returns Mnemonic and Public/Private HD keys
|
|
36
|
+
*/
|
|
37
|
+
const deriveHDKeyFromEthereumSignature = (signature) => {
|
|
38
|
+
const buffer = Buffer.from((0, helpers_1.stripHexPrefix)(signature), 'hex');
|
|
39
|
+
if (buffer.length !== 65) {
|
|
40
|
+
throw new Error('Signature must be 65 bytes');
|
|
41
|
+
}
|
|
42
|
+
// Remove the 'v' value by taking only the first 64 bytes of the signature
|
|
43
|
+
const rsValues = buffer.subarray(0, 64);
|
|
44
|
+
// Hash the 'r' and 's' values down to 32 bytes (256 bits) using Keccak-256
|
|
45
|
+
const entropy = (0, keccak_1.keccak256)(rsValues);
|
|
46
|
+
return (0, exports.exportMnemonicAndPrivateKey)(entropy);
|
|
47
|
+
};
|
|
48
|
+
exports.deriveHDKeyFromEthereumSignature = deriveHDKeyFromEthereumSignature;
|
|
49
|
+
/**
|
|
50
|
+
* @description Derive priv/pub keys from mnemonic and BIP44 HD path
|
|
51
|
+
*
|
|
52
|
+
* @url https://github.com/confio/cosmos-hd-key-derivation-spec#bip44
|
|
53
|
+
*
|
|
54
|
+
* @param mnemonic used to generate seed
|
|
55
|
+
*
|
|
56
|
+
* @param path BIP44 HD Path. Default is The Cosmos Hub path
|
|
57
|
+
*
|
|
58
|
+
* @throws Error if the hdkey does not exist
|
|
59
|
+
*
|
|
60
|
+
* @returns Priv/pub keys
|
|
61
|
+
*/
|
|
62
|
+
const deriveHDKeyFromMnemonic = (mnemonic, path = "m/44'/118'/0'/0/0") => {
|
|
63
|
+
const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic);
|
|
64
|
+
const hdkey = bip32_1.HDKey.fromMasterSeed(seed);
|
|
65
|
+
const derivedHdkey = hdkey.derive(path);
|
|
66
|
+
if (!hdkey.privateKey) {
|
|
67
|
+
throw new Error('null hd key');
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
privateKey: derivedHdkey.privateKey,
|
|
71
|
+
publicKey: derivedHdkey.publicKey,
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
exports.deriveHDKeyFromMnemonic = deriveHDKeyFromMnemonic;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25ib2FyZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvb25ib2FyZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3Q0FBcUM7QUFDckMsd0NBQXFFO0FBQ3JFLDREQUEwRDtBQUMxRCx5REFBeUQ7QUFFekQsdUNBQTJDO0FBRTNDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNJLE1BQU0sMkJBQTJCLEdBQUcsQ0FDekMsT0FBbUIsRUFDbkIsT0FBZSxtQkFBbUIsRUFLbEMsRUFBRTtJQUNGLE1BQU0sUUFBUSxHQUFHLElBQUEseUJBQWlCLEVBQUMsT0FBTyxFQUFFLGtCQUFRLENBQUMsQ0FBQztJQUN0RCxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsK0JBQXVCLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLE9BQU87UUFDTCxRQUFRO1FBQ1IsVUFBVTtRQUNWLFNBQVM7S0FDVixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBZlcsUUFBQSwyQkFBMkIsK0JBZXRDO0FBRUY7Ozs7R0FJRztBQUNJLE1BQU0sZ0NBQWdDLEdBQUcsQ0FDOUMsU0FBaUIsRUFLakIsRUFBRTtJQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBQSx3QkFBYyxFQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTdELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QywyRUFBMkU7SUFDM0UsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQkFBUyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLE9BQU8sSUFBQSxtQ0FBMkIsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFsQlcsUUFBQSxnQ0FBZ0Msb0NBa0IzQztBQUVGOzs7Ozs7Ozs7Ozs7R0FZRztBQUNJLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsUUFBZ0IsRUFDaEIsT0FBZSxtQkFBbUIsRUFJbEMsRUFBRTtJQUNGLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQWtCLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFFMUMsTUFBTSxLQUFLLEdBQUcsYUFBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTztRQUNMLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVTtRQUNuQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVM7S0FDbEMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXBCVyxRQUFBLHVCQUF1QiwyQkFvQmxDIn0=
|
|
@@ -0,0 +1,120 @@
|
|
|
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.getAuthorizedTradingKeysMetadata = exports.getAuthorizeNewTradingKeyArguments = exports.createNewRandomPerpxWallet = void 0;
|
|
7
|
+
const encoding_1 = require("@cosmjs/encoding");
|
|
8
|
+
const tendermint_rpc_1 = require("@cosmjs/tendermint-rpc");
|
|
9
|
+
const bip39_1 = require("@scure/bip39");
|
|
10
|
+
const english_1 = require("@scure/bip39/wordlists/english");
|
|
11
|
+
const constants_1 = require("../clients/constants");
|
|
12
|
+
const local_wallet_1 = __importDefault(require("../clients/modules/local-wallet"));
|
|
13
|
+
const constants_2 = require("./constants");
|
|
14
|
+
const onboarding_1 = require("./onboarding");
|
|
15
|
+
/**
|
|
16
|
+
* @description Create a new random wallet and return mnemonic + address metadata.
|
|
17
|
+
*
|
|
18
|
+
* @returns The mnemonic, private key hex, public key, and address.
|
|
19
|
+
*/
|
|
20
|
+
const createNewRandomPerpxWallet = async () => {
|
|
21
|
+
const mnemonic = (0, bip39_1.generateMnemonic)(english_1.wordlist, 128);
|
|
22
|
+
const { privateKey: privateKeyRaw } = (0, onboarding_1.deriveHDKeyFromMnemonic)(mnemonic);
|
|
23
|
+
const wallet = await local_wallet_1.default.fromMnemonic(mnemonic, constants_2.BECH32_PREFIX);
|
|
24
|
+
const privateKeyHex = privateKeyRaw != null ? `0x${(0, encoding_1.toHex)(privateKeyRaw)}` : undefined;
|
|
25
|
+
const publicKey = wallet.pubKey;
|
|
26
|
+
const address = wallet.address;
|
|
27
|
+
if (privateKeyHex == null || publicKey == null || address == null) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
// 12 english words
|
|
32
|
+
mnemonic,
|
|
33
|
+
// toHex of the raw private key bits
|
|
34
|
+
privateKeyHex,
|
|
35
|
+
// base64, not hex
|
|
36
|
+
publicKey: publicKey.value,
|
|
37
|
+
// valid perpx address corresponding to the key pair
|
|
38
|
+
address,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.createNewRandomPerpxWallet = createNewRandomPerpxWallet;
|
|
42
|
+
/**
|
|
43
|
+
* @description Build authenticator args to authorize a trading key for subaccount 0.
|
|
44
|
+
*
|
|
45
|
+
* Allows place order, cancel order, and batch cancel only.
|
|
46
|
+
*/
|
|
47
|
+
const getAuthorizeNewTradingKeyArguments = ({ generatedWalletPubKey, }) => {
|
|
48
|
+
const wrapAndEncode64 = (s) => (0, encoding_1.toBase64)(new TextEncoder().encode(s));
|
|
49
|
+
const messageFilterSubAuth = [
|
|
50
|
+
{
|
|
51
|
+
type: constants_1.AuthenticatorType.MESSAGE_FILTER,
|
|
52
|
+
config: wrapAndEncode64(constants_1.TYPE_URL_MSG_PLACE_ORDER),
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: constants_1.AuthenticatorType.MESSAGE_FILTER,
|
|
56
|
+
config: wrapAndEncode64(constants_1.TYPE_URL_MSG_CANCEL_ORDER),
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: constants_1.AuthenticatorType.MESSAGE_FILTER,
|
|
60
|
+
config: wrapAndEncode64(constants_1.TYPE_URL_BATCH_CANCEL),
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
const anyOfMessageFilterConfigB64 = wrapAndEncode64(JSON.stringify(messageFilterSubAuth));
|
|
64
|
+
const subAuth = [
|
|
65
|
+
{
|
|
66
|
+
type: constants_1.AuthenticatorType.SIGNATURE_VERIFICATION,
|
|
67
|
+
config: generatedWalletPubKey,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
type: constants_1.AuthenticatorType.ANY_OF,
|
|
71
|
+
config: anyOfMessageFilterConfigB64,
|
|
72
|
+
},
|
|
73
|
+
// we limit to cross markets to make it slightly harder to drain user funds on low liquidity markets with trading keys
|
|
74
|
+
// could undo this in the future if people are angry about it
|
|
75
|
+
{
|
|
76
|
+
type: constants_1.AuthenticatorType.SUBACCOUNT_FILTER,
|
|
77
|
+
config: wrapAndEncode64('0'),
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
const jsonString = JSON.stringify(subAuth);
|
|
81
|
+
const encodedData = new TextEncoder().encode(jsonString);
|
|
82
|
+
const topLevelType = constants_1.AuthenticatorType.ALL_OF;
|
|
83
|
+
return {
|
|
84
|
+
type: topLevelType,
|
|
85
|
+
data: encodedData,
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
exports.getAuthorizeNewTradingKeyArguments = getAuthorizeNewTradingKeyArguments;
|
|
89
|
+
const isTruthy = (n) => Boolean(n);
|
|
90
|
+
/**
|
|
91
|
+
* @description Parse authenticators into trading-key metadata.
|
|
92
|
+
*
|
|
93
|
+
* Returns entries that match the format produced by getAuthorizeNewTradingKeyArguments.
|
|
94
|
+
*/
|
|
95
|
+
const getAuthorizedTradingKeysMetadata = (authorizedKeys) => {
|
|
96
|
+
return authorizedKeys
|
|
97
|
+
.map(({ config, id, type }) => {
|
|
98
|
+
var _a;
|
|
99
|
+
if (type !== constants_1.AuthenticatorType.ALL_OF) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
const parsedConfig = JSON.parse(new TextDecoder().decode(config));
|
|
103
|
+
if (parsedConfig == null) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const publicKey = (_a = parsedConfig.find((t) => t.type === constants_1.AuthenticatorType.SIGNATURE_VERIFICATION)) === null || _a === void 0 ? void 0 : _a.config;
|
|
107
|
+
if (publicKey == null || typeof publicKey !== 'string') {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
const address = (0, encoding_1.toBech32)(constants_2.BECH32_PREFIX, (0, tendermint_rpc_1.rawSecp256k1PubkeyToRawAddress)((0, encoding_1.fromBase64)(publicKey)));
|
|
111
|
+
return {
|
|
112
|
+
id: id.toString(),
|
|
113
|
+
publicKey,
|
|
114
|
+
address,
|
|
115
|
+
};
|
|
116
|
+
})
|
|
117
|
+
.filter(isTruthy);
|
|
118
|
+
};
|
|
119
|
+
exports.getAuthorizedTradingKeysMetadata = getAuthorizedTradingKeysMetadata;
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZGluZy1rZXktdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYWRpbmcta2V5LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtDQUF5RTtBQUN6RSwyREFBd0U7QUFDeEUsd0NBQWdEO0FBQ2hELDREQUEwRDtBQUUxRCxvREFNOEI7QUFFOUIsbUZBQTBEO0FBQzFELDJDQUE0QztBQUM1Qyw2Q0FBdUQ7QUFFdkQ7Ozs7R0FJRztBQUNJLE1BQU0sMEJBQTBCLEdBQUcsS0FBSyxJQUU3QyxFQUFFO0lBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxrQkFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBQSxvQ0FBdUIsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUN4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSx5QkFBYSxDQUFDLENBQUM7SUFFdkUsTUFBTSxhQUFhLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFBLGdCQUFLLEVBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUUvQixJQUFJLGFBQWEsSUFBSSxJQUFJLElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEUsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxtQkFBbUI7UUFDbkIsUUFBUTtRQUNSLG9DQUFvQztRQUNwQyxhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLFNBQVMsRUFBRSxTQUFTLENB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
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.randomInt = randomInt;
|
|
4
|
+
exports.generateRandomClientId = generateRandomClientId;
|
|
5
|
+
exports.clientIdFromString = clientIdFromString;
|
|
6
|
+
exports.sleep = sleep;
|
|
7
|
+
exports.getGovAddNewMarketTitle = getGovAddNewMarketTitle;
|
|
8
|
+
exports.getGovAddNewMarketSummary = getGovAddNewMarketSummary;
|
|
9
|
+
exports.calculateClockOffsetFromFetchDateHeader = calculateClockOffsetFromFetchDateHeader;
|
|
10
|
+
exports.getProxyAgent = getProxyAgent;
|
|
11
|
+
const https_proxy_agent_1 = require("https-proxy-agent");
|
|
12
|
+
const constants_1 = require("../clients/constants");
|
|
13
|
+
/**
|
|
14
|
+
* Returns a random integer value between 0 and (n-1).
|
|
15
|
+
*/
|
|
16
|
+
function randomInt(n) {
|
|
17
|
+
return Math.floor(Math.random() * n);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generate a random clientId.
|
|
21
|
+
*/
|
|
22
|
+
function generateRandomClientId() {
|
|
23
|
+
return randomInt(constants_1.MAX_UINT_32 + 1);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Deterministically generate a valid clientId from an arbitrary string by performing a
|
|
27
|
+
* quick hashing function on the string.
|
|
28
|
+
*/
|
|
29
|
+
function clientIdFromString(input) {
|
|
30
|
+
let hash = 0;
|
|
31
|
+
if (input.length === 0)
|
|
32
|
+
return hash;
|
|
33
|
+
for (let i = 0; i < input.length; i++) {
|
|
34
|
+
hash = (hash << 5) - hash + input.charCodeAt(i); // eslint-disable-line no-bitwise
|
|
35
|
+
hash |= 0; // eslint-disable-line no-bitwise
|
|
36
|
+
}
|
|
37
|
+
// Bitwise operators covert the value to a 32-bit integer.
|
|
38
|
+
// We must coerce this into a 32-bit unsigned integer.
|
|
39
|
+
return hash + 2 ** 31;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Pauses the execution of the program for a specified time.
|
|
43
|
+
* @param ms - The number of milliseconds to pause the program.
|
|
44
|
+
* @returns A promise that resolves after the specified number of milliseconds.
|
|
45
|
+
*/
|
|
46
|
+
async function sleep(ms) {
|
|
47
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Returns a title to use for a gov proposal that adds a new market.
|
|
51
|
+
*
|
|
52
|
+
* @param ticker ticker symbol for the new market.
|
|
53
|
+
* @returns title for the gov proposal.
|
|
54
|
+
*/
|
|
55
|
+
function getGovAddNewMarketTitle(ticker) {
|
|
56
|
+
return `Add ${ticker} perpetual market`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Returns a summary to use for a gov proposal that adds a new market.
|
|
60
|
+
*
|
|
61
|
+
* @param ticker ticker symbol for the new market.
|
|
62
|
+
* @param delayBlocks number of blocks to wait before activating the market.
|
|
63
|
+
* @returns summary for the gov proposal.
|
|
64
|
+
*/
|
|
65
|
+
function getGovAddNewMarketSummary(ticker, delayBlocks) {
|
|
66
|
+
return `Add the x/prices, x/perpetuals and x/clob parameters needed for a ${ticker} perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after ${delayBlocks} blocks.`;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @description Estimate local clock offset from a request/response round trip.
|
|
70
|
+
*
|
|
71
|
+
* @returns Millisecond offset to align local time with server time.
|
|
72
|
+
*/
|
|
73
|
+
function calculateClockOffsetFromFetchDateHeader(clientRequestStartTime, serverReportedTime, clientRequestEndTime) {
|
|
74
|
+
// use midpoint, so assume that time for request reach server === time for response to reach us
|
|
75
|
+
const estimatedLocalTimeAtServerArrival = (clientRequestStartTime + clientRequestEndTime) / 2;
|
|
76
|
+
// we need an offset such that estimatedLocalTimeAtServerArrival + offset = serverReportedTime
|
|
77
|
+
const offset = serverReportedTime - estimatedLocalTimeAtServerArrival;
|
|
78
|
+
return Math.floor(offset);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @description Build an HTTPS proxy agent from Axios proxy config.
|
|
82
|
+
*
|
|
83
|
+
* @returns A proxy agent suitable for axios/WebSocket usage.
|
|
84
|
+
*/
|
|
85
|
+
function getProxyAgent(proxy) {
|
|
86
|
+
const auth = proxy.auth ? `${proxy.auth.username}:${proxy.auth.password}@` : '';
|
|
87
|
+
return new https_proxy_agent_1.HttpsProxyAgent(`${proxy.protocol}://${auth}${proxy.host}:${proxy.port}`);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsOEJBRUM7QUFLRCx3REFFQztBQU1ELGdEQVdDO0FBT0Qsc0JBRUM7QUFRRCwwREFFQztBQVNELDhEQUVDO0FBT0QsMEZBWUM7QUFPRCxzQ0FHQztBQTVGRCx5REFBb0Q7QUFFcEQsb0RBQW1EO0FBRW5EOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLENBQVM7SUFDakMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0I7SUFDcEMsT0FBTyxTQUFTLENBQUMsdUJBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsS0FBYTtJQUM5QyxJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7SUFDckIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztRQUNsRixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsaUNBQWlDO0lBQzlDLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsc0RBQXNEO0lBQ3RELE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsS0FBSyxDQUFDLEVBQVU7SUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLE1BQWM7SUFDcEQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLE1BQWMsRUFBRSxXQUFtQjtJQUMzRSxPQUFPLHFFQUFxRSxNQUFNLHdHQUF3RyxXQUFXLFVBQVUsQ0FBQztBQUNsTixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHVDQUF1QyxDQUNyRCxzQkFBOEIsRUFDOUIsa0JBQTBCLEVBQzFCLG9CQUE0QjtJQUU1QiwrRkFBK0Y7SUFDL0YsTUFBTSxpQ0FBaUMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTlGLDhGQUE4RjtJQUM5RixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsR0FBRyxpQ0FBaUMsQ0FBQztJQUV0RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBdUI7SUFDbkQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEYsT0FBTyxJQUFJLG1DQUFlLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZGLENBQUMifQ==
|