@dydxprotocol/v4-client-js 2.2.0 → 2.3.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.
Files changed (499) hide show
  1. package/CHANGELOG.md +4 -13
  2. package/build/cjs/__tests__/clients/composite-client.test.js +130 -0
  3. package/build/cjs/__tests__/helpers/baseClients.js +29 -0
  4. package/build/cjs/__tests__/helpers/constants.js +82 -0
  5. package/build/cjs/__tests__/lib/helpers.test.js +45 -0
  6. package/build/cjs/__tests__/lib/util.test.js +67 -0
  7. package/build/cjs/__tests__/lib/validation.test.js +254 -0
  8. package/build/cjs/__tests__/modules/client/AccountEndpoints.test.js +171 -0
  9. package/build/cjs/__tests__/modules/client/FaucetEndpoint.test.js +15 -0
  10. package/build/cjs/__tests__/modules/client/MarketsEndpoints.test.js +69 -0
  11. package/build/cjs/__tests__/modules/client/Transfers.test.js +44 -0
  12. package/build/cjs/__tests__/modules/client/UtilityEndpoints.test.js +28 -0
  13. package/build/cjs/__tests__/modules/client/ValidatorGetEndpoints.test.js +46 -0
  14. package/build/cjs/__tests__/modules/client/ValidatorPostEndpoints.test.js +53 -0
  15. package/build/cjs/__tests__/modules/client/constants.js +7 -0
  16. package/build/cjs/__tests__/modules/onboarding.test.js +50 -0
  17. package/build/cjs/examples/account_endpoints.js +129 -0
  18. package/build/cjs/examples/batch_cancel_orders_example.js +93 -0
  19. package/build/cjs/examples/composite_example.js +50 -0
  20. package/build/cjs/examples/constants.js +33 -0
  21. package/build/cjs/examples/faucet_endpoint.js +23 -0
  22. package/build/cjs/examples/gov_add_new_market.js +77 -0
  23. package/build/cjs/examples/human_readable_orders.json +86 -0
  24. package/build/cjs/examples/human_readable_short_term_orders.json +42 -0
  25. package/build/cjs/examples/json-encoding.js +32 -0
  26. package/build/cjs/examples/long_term_order_cancel_example.js +63 -0
  27. package/build/cjs/examples/markets_endpoints.js +134 -0
  28. package/build/cjs/examples/native_examples.js +112 -0
  29. package/build/cjs/examples/noble_example.js +87 -0
  30. package/build/cjs/examples/optimal_node.js +70 -0
  31. package/build/cjs/examples/permissioned_keys_example.js +99 -0
  32. package/build/cjs/examples/raw_orders.json +130 -0
  33. package/build/cjs/examples/short_term_order_cancel_example.js +54 -0
  34. package/build/cjs/examples/short_term_order_composite_example.js +68 -0
  35. package/build/cjs/examples/test.js +50 -0
  36. package/build/cjs/examples/transfer_example_deposit.js +29 -0
  37. package/build/cjs/examples/transfer_example_send.js +42 -0
  38. package/build/cjs/examples/transfer_example_subaccount_transfer.js +29 -0
  39. package/build/cjs/examples/transfer_example_withdraw.js +30 -0
  40. package/build/cjs/examples/transfer_example_withdraw_other.js +42 -0
  41. package/build/cjs/examples/utility_endpoints.js +42 -0
  42. package/build/cjs/examples/validator_get_example.js +158 -0
  43. package/build/cjs/examples/validator_post_example.js +76 -0
  44. package/build/cjs/examples/wallet_address.js +22 -0
  45. package/build/cjs/examples/websocket_example.js +36 -0
  46. package/build/cjs/examples/websocket_orderbook_example.js +196 -0
  47. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/amino/amino.js +3 -0
  48. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/amino/bundle.js +40 -0
  49. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/app/runtime/v1alpha1/module.js +182 -0
  50. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/app/v1alpha1/config.js +179 -0
  51. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/app/v1alpha1/module.js +170 -0
  52. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/app/v1alpha1/query.js +100 -0
  53. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/app/v1alpha1/query.rpc.Query.js +62 -0
  54. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/auth/module/v1/module.js +134 -0
  55. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/auth/v1beta1/auth.js +263 -0
  56. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/auth/v1beta1/genesis.js +84 -0
  57. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/auth/v1beta1/query.js +742 -0
  58. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/auth/v1beta1/query.lcd.js +102 -0
  59. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/auth/v1beta1/query.rpc.Query.js +145 -0
  60. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/auth/v1beta1/tx.js +109 -0
  61. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/auth/v1beta1/tx.rpc.msg.js +51 -0
  62. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/module/v1/module.js +64 -0
  63. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/v1beta1/authz.js +217 -0
  64. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/v1beta1/event.js +142 -0
  65. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/v1beta1/genesis.js +75 -0
  66. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/v1beta1/query.js +320 -0
  67. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/v1beta1/query.lcd.js +60 -0
  68. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/v1beta1/query.rpc.Query.js +80 -0
  69. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/v1beta1/tx.js +276 -0
  70. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/authz/v1beta1/tx.rpc.msg.js +63 -0
  71. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/module/v1/module.js +82 -0
  72. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/v1beta1/authz.js +83 -0
  73. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/v1beta1/bank.js +395 -0
  74. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/v1beta1/genesis.js +152 -0
  75. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/v1beta1/query.js +1035 -0
  76. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/v1beta1/query.lcd.js +187 -0
  77. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/v1beta1/query.rpc.Query.js +165 -0
  78. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/v1beta1/tx.js +336 -0
  79. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bank/v1beta1/tx.rpc.msg.js +69 -0
  80. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/abci/v1beta1/abci.js +700 -0
  81. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/node/v1beta1/query.js +212 -0
  82. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/node/v1beta1/query.lcd.js +22 -0
  83. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/node/v1beta1/query.rpc.Service.js +71 -0
  84. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/query/v1beta1/pagination.js +151 -0
  85. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/reflection/v1beta1/reflection.js +172 -0
  86. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/reflection/v2alpha1/reflection.js +1027 -0
  87. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/tendermint/v1beta1/query.js +973 -0
  88. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/tendermint/v1beta1/query.lcd.js +86 -0
  89. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/tendermint/v1beta1/query.rpc.Service.js +118 -0
  90. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/tendermint/v1beta1/types.js +242 -0
  91. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/base/v1beta1/coin.js +198 -0
  92. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bundle.js +680 -0
  93. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/circuit/module/v1/module.js +74 -0
  94. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/circuit/v1/query.js +252 -0
  95. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/circuit/v1/query.lcd.js +37 -0
  96. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/circuit/v1/query.rpc.Query.js +82 -0
  97. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/circuit/v1/tx.js +287 -0
  98. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/circuit/v1/tx.rpc.msg.js +63 -0
  99. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/circuit/v1/types.js +235 -0
  100. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/consensus/module/v1/module.js +74 -0
  101. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/consensus/v1/query.js +100 -0
  102. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/consensus/v1/query.lcd.js +16 -0
  103. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/consensus/v1/query.rpc.Query.js +62 -0
  104. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/consensus/v1/tx.js +133 -0
  105. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/consensus/v1/tx.rpc.msg.js +51 -0
  106. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crisis/module/v1/module.js +82 -0
  107. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crisis/v1beta1/genesis.js +74 -0
  108. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crisis/v1beta1/tx.js +187 -0
  109. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crisis/v1beta1/tx.rpc.msg.js +57 -0
  110. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crypto/ed25519/keys.js +110 -0
  111. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crypto/hd/v1/hd.js +106 -0
  112. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crypto/keyring/v1/record.js +238 -0
  113. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crypto/multisig/keys.js +83 -0
  114. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crypto/multisig/v1beta1/multisig.js +118 -0
  115. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crypto/secp256k1/keys.js +110 -0
  116. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/crypto/secp256r1/keys.js +110 -0
  117. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/distribution/module/v1/module.js +82 -0
  118. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/distribution/v1beta1/distribution.js +600 -0
  119. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/distribution/v1beta1/genesis.js +489 -0
  120. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/distribution/v1beta1/query.js +803 -0
  121. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/distribution/v1beta1/query.lcd.js +84 -0
  122. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/distribution/v1beta1/query.rpc.Query.js +143 -0
  123. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/distribution/v1beta1/tx.js +558 -0
  124. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/distribution/v1beta1/tx.rpc.msg.js +87 -0
  125. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/evidence/module/v1/module.js +64 -0
  126. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/evidence/v1beta1/evidence.js +100 -0
  127. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/evidence/v1beta1/genesis.js +75 -0
  128. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/evidence/v1beta1/query.js +198 -0
  129. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/evidence/v1beta1/query.lcd.js +37 -0
  130. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/evidence/v1beta1/query.rpc.Query.js +73 -0
  131. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/evidence/v1beta1/tx.js +119 -0
  132. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/evidence/v1beta1/tx.rpc.msg.js +51 -0
  133. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/feegrant/module/v1/module.js +64 -0
  134. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/feegrant/v1beta1/feegrant.js +251 -0
  135. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/feegrant/v1beta1/genesis.js +75 -0
  136. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/feegrant/v1beta1/query.js +295 -0
  137. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/feegrant/v1beta1/query.lcd.js +43 -0
  138. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/feegrant/v1beta1/query.rpc.Query.js +80 -0
  139. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/feegrant/v1beta1/tx.js +249 -0
  140. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/feegrant/v1beta1/tx.rpc.msg.js +63 -0
  141. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/genutil/module/v1/module.js +64 -0
  142. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/genutil/v1beta1/genesis.js +74 -0
  143. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/module/v1/module.js +83 -0
  144. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1/genesis.js +140 -0
  145. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1/gov.js +832 -0
  146. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1/query.js +774 -0
  147. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1/query.lcd.js +92 -0
  148. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1/query.rpc.Query.js +134 -0
  149. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1/tx.js +648 -0
  150. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1/tx.rpc.msg.js +87 -0
  151. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1beta1/genesis.js +124 -0
  152. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1beta1/gov.js +672 -0
  153. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1beta1/query.js +704 -0
  154. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1beta1/query.lcd.js +86 -0
  155. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1beta1/query.rpc.Query.js +125 -0
  156. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1beta1/tx.js +363 -0
  157. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1beta1/tx.rpc.msg.js +69 -0
  158. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/module/v1/module.js +83 -0
  159. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/v1/events.js +435 -0
  160. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/v1/genesis.js +132 -0
  161. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/v1/query.js +1181 -0
  162. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/v1/query.lcd.js +157 -0
  163. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/v1/query.rpc.Query.js +181 -0
  164. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/v1/tx.js +1290 -0
  165. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/v1/tx.rpc.msg.js +129 -0
  166. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/group/v1/types.js +945 -0
  167. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/lcd.js +148 -0
  168. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/mint/module/v1/module.js +82 -0
  169. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/mint/v1beta1/genesis.js +82 -0
  170. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/mint/v1beta1/mint.js +159 -0
  171. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/mint/v1beta1/query.js +224 -0
  172. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/mint/v1beta1/query.lcd.js +28 -0
  173. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/mint/v1beta1/query.rpc.Query.js +80 -0
  174. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/mint/v1beta1/tx.js +109 -0
  175. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/mint/v1beta1/tx.rpc.msg.js +51 -0
  176. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/msg/textual/v1/textual.js +3 -0
  177. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/msg/v1/msg.js +3 -0
  178. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/module/v1/module.js +64 -0
  179. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/v1beta1/event.js +202 -0
  180. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/v1beta1/genesis.js +127 -0
  181. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/v1beta1/nft.js +191 -0
  182. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/v1beta1/query.js +596 -0
  183. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/v1beta1/query.lcd.js +74 -0
  184. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/v1beta1/query.rpc.Query.js +118 -0
  185. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/v1beta1/tx.js +124 -0
  186. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/nft/v1beta1/tx.rpc.msg.js +51 -0
  187. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/orm/module/v1alpha1/module.js +64 -0
  188. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/orm/query/v1alpha1/query.js +414 -0
  189. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/orm/query/v1alpha1/query.rpc.Query.js +71 -0
  190. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/orm/v1/orm.js +222 -0
  191. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/orm/v1alpha1/schema.js +191 -0
  192. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/params/module/v1/module.js +64 -0
  193. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/params/v1beta1/params.js +142 -0
  194. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/params/v1beta1/query.js +224 -0
  195. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/params/v1beta1/query.lcd.js +34 -0
  196. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/params/v1beta1/query.rpc.Query.js +71 -0
  197. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/query/v1/query.js +3 -0
  198. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/reflection/v1/reflection.js +101 -0
  199. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/rpc.query.js +116 -0
  200. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/rpc.tx.js +94 -0
  201. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/slashing/module/v1/module.js +74 -0
  202. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/slashing/v1beta1/genesis.js +224 -0
  203. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/slashing/v1beta1/query.js +251 -0
  204. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/slashing/v1beta1/query.lcd.js +37 -0
  205. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/slashing/v1beta1/query.rpc.Query.js +82 -0
  206. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/slashing/v1beta1/slashing.js +185 -0
  207. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/slashing/v1beta1/tx.js +171 -0
  208. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/slashing/v1beta1/tx.rpc.msg.js +57 -0
  209. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/module/v1/module.js +98 -0
  210. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/v1beta1/authz.js +197 -0
  211. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/v1beta1/genesis.js +176 -0
  212. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/v1beta1/query.js +1173 -0
  213. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/v1beta1/query.lcd.js +171 -0
  214. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/v1beta1/query.rpc.Query.js +179 -0
  215. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/v1beta1/staking.js +1297 -0
  216. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/v1beta1/tx.js +665 -0
  217. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/staking/v1beta1/tx.rpc.msg.js +87 -0
  218. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/store/internal/kv/v1beta1/kv.js +118 -0
  219. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/store/snapshots/v1/snapshot.js +378 -0
  220. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/store/streaming/abci/grpc.js +188 -0
  221. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/store/v1beta1/commit_info.js +180 -0
  222. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/store/v1beta1/listening.js +150 -0
  223. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/tx/config/v1/config.js +82 -0
  224. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/tx/signing/v1beta1/signing.js +365 -0
  225. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/tx/v1beta1/service.js +924 -0
  226. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/tx/v1beta1/service.lcd.js +58 -0
  227. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/tx/v1beta1/service.rpc.Service.js +134 -0
  228. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/tx/v1beta1/tx.js +740 -0
  229. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/upgrade/module/v1/module.js +74 -0
  230. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/upgrade/v1beta1/query.js +377 -0
  231. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/upgrade/v1beta1/query.lcd.js +55 -0
  232. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/upgrade/v1beta1/query.rpc.Query.js +98 -0
  233. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/upgrade/v1beta1/tx.js +171 -0
  234. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/upgrade/v1beta1/tx.rpc.msg.js +57 -0
  235. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/upgrade/v1beta1/upgrade.js +249 -0
  236. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/vesting/module/v1/module.js +64 -0
  237. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/vesting/v1beta1/tx.js +299 -0
  238. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/vesting/v1beta1/tx.rpc.msg.js +63 -0
  239. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/vesting/v1beta1/vesting.js +318 -0
  240. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos_proto/bundle.js +40 -0
  241. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos_proto/cosmos.js +184 -0
  242. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/accountplus.js +137 -0
  243. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/genesis.js +146 -0
  244. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/models.js +91 -0
  245. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/params.js +74 -0
  246. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/query.js +253 -0
  247. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/query.lcd.js +28 -0
  248. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/query.rpc.Query.js +80 -0
  249. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/tx.js +323 -0
  250. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/tx.rpc.msg.js +63 -0
  251. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/affiliates.js +207 -0
  252. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/genesis.js +74 -0
  253. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/query.js +337 -0
  254. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/query.lcd.js +34 -0
  255. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/query.rpc.Query.js +89 -0
  256. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/tx.js +249 -0
  257. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/tx.rpc.msg.js +63 -0
  258. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/assets/asset.js +122 -0
  259. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/assets/genesis.js +75 -0
  260. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/assets/query.js +190 -0
  261. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/assets/query.lcd.js +31 -0
  262. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/assets/query.rpc.Query.js +73 -0
  263. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/assets/tx.js +3 -0
  264. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/blocktime.js +164 -0
  265. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/genesis.js +74 -0
  266. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/params.js +110 -0
  267. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/query.js +223 -0
  268. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/query.lcd.js +22 -0
  269. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/query.rpc.Query.js +80 -0
  270. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/tx.js +179 -0
  271. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/tx.rpc.msg.js +57 -0
  272. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/bridge_event.js +100 -0
  273. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/bridge_event_info.js +83 -0
  274. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/genesis.js +99 -0
  275. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/params.js +196 -0
  276. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/query.js +462 -0
  277. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/query.lcd.js +57 -0
  278. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/query.rpc.Query.js +107 -0
  279. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/tx.js +382 -0
  280. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bridge/tx.rpc.msg.js +75 -0
  281. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bundle.js +453 -0
  282. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/block_rate_limit_config.js +142 -0
  283. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/clob_pair.js +293 -0
  284. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/equity_tier_limit_config.js +126 -0
  285. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/finalize_block.js +74 -0
  286. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/genesis.js +102 -0
  287. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/liquidations.js +198 -0
  288. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/liquidations_config.js +230 -0
  289. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/matches.js +358 -0
  290. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/mev.js +372 -0
  291. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/operation.js +160 -0
  292. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/order.js +748 -0
  293. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/order_removals.js +215 -0
  294. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/process_proposer_matches_events.js +131 -0
  295. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.js +1065 -0
  296. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.lcd.js +55 -0
  297. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.rpc.Query.js +136 -0
  298. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/streaming.js +100 -0
  299. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/tx.js +799 -0
  300. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/tx.rpc.msg.js +99 -0
  301. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/daemons/bridge/bridge.js +101 -0
  302. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/daemons/liquidation/liquidation.js +126 -0
  303. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/daemons/pricefeed/price_feed.js +198 -0
  304. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/delaymsg/block_message_ids.js +84 -0
  305. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/delaymsg/delayed_message.js +91 -0
  306. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/delaymsg/genesis.js +83 -0
  307. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/delaymsg/query.js +254 -0
  308. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/delaymsg/query.lcd.js +28 -0
  309. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/delaymsg/query.rpc.Query.js +80 -0
  310. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/delaymsg/tx.js +127 -0
  311. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/delaymsg/tx.rpc.msg.js +51 -0
  312. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/epochs/epoch_info.js +122 -0
  313. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/epochs/genesis.js +75 -0
  314. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/epochs/query.js +190 -0
  315. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/epochs/query.lcd.js +31 -0
  316. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/epochs/query.rpc.Query.js +73 -0
  317. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/feetiers/genesis.js +74 -0
  318. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/feetiers/params.js +151 -0
  319. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/feetiers/query.js +180 -0
  320. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/feetiers/query.lcd.js +28 -0
  321. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/feetiers/query.rpc.Query.js +71 -0
  322. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/feetiers/tx.js +109 -0
  323. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/feetiers/tx.rpc.msg.js +51 -0
  324. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/govplus/genesis.js +64 -0
  325. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/govplus/query.js +3 -0
  326. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/govplus/query.rpc.Query.js +17 -0
  327. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/govplus/tx.js +132 -0
  328. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/govplus/tx.rpc.msg.js +51 -0
  329. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/events/events.js +2060 -0
  330. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/indexer_manager/event.js +306 -0
  331. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/off_chain_updates/off_chain_updates.js +448 -0
  332. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/protocol/v1/clob.js +487 -0
  333. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/protocol/v1/perpetual.js +51 -0
  334. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/protocol/v1/subaccount.js +195 -0
  335. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/protocol/v1/vault.js +62 -0
  336. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/redis/redis_order.js +162 -0
  337. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/shared/removal_reason.js +176 -0
  338. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/socks/messages.js +458 -0
  339. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/lcd.js +207 -0
  340. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/genesis.js +83 -0
  341. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/params.js +90 -0
  342. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/query.js +162 -0
  343. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/query.lcd.js +22 -0
  344. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/query.rpc.Query.js +71 -0
  345. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/tx.js +320 -0
  346. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/tx.rpc.msg.js +69 -0
  347. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/genesis.js +92 -0
  348. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/params.js +90 -0
  349. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/perpetual.js +408 -0
  350. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.js +515 -0
  351. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.lcd.js +69 -0
  352. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.rpc.Query.js +120 -0
  353. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/tx.js +426 -0
  354. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/tx.rpc.msg.js +75 -0
  355. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/genesis.js +84 -0
  356. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/market_param.js +114 -0
  357. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/market_price.js +91 -0
  358. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.js +403 -0
  359. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.lcd.js +57 -0
  360. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.rpc.Query.js +102 -0
  361. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/streaming.js +91 -0
  362. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/tx.js +286 -0
  363. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/tx.rpc.msg.js +63 -0
  364. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/capacity.js +127 -0
  365. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/genesis.js +75 -0
  366. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/limit_params.js +135 -0
  367. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/pending_send_packet.js +83 -0
  368. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/query.js +237 -0
  369. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/query.lcd.js +34 -0
  370. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/query.rpc.Query.js +80 -0
  371. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/tx.js +109 -0
  372. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/ratelimit/tx.rpc.msg.js +51 -0
  373. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/genesis.js +74 -0
  374. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/params.js +90 -0
  375. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.js +233 -0
  376. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.lcd.js +29 -0
  377. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.rpc.Query.js +80 -0
  378. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/revshare.js +154 -0
  379. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/tx.js +258 -0
  380. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/tx.rpc.msg.js +63 -0
  381. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rewards/genesis.js +74 -0
  382. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rewards/params.js +106 -0
  383. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rewards/query.js +100 -0
  384. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rewards/query.lcd.js +16 -0
  385. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rewards/query.rpc.Query.js +62 -0
  386. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rewards/reward_share.js +82 -0
  387. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rewards/tx.js +109 -0
  388. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rewards/tx.rpc.msg.js +51 -0
  389. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rpc.query.js +139 -0
  390. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rpc.tx.js +114 -0
  391. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/sending/genesis.js +64 -0
  392. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/sending/query.js +3 -0
  393. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/sending/query.rpc.Query.js +17 -0
  394. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/sending/transfer.js +281 -0
  395. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/sending/tx.js +178 -0
  396. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/sending/tx.rpc.msg.js +70 -0
  397. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/stats/genesis.js +74 -0
  398. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/stats/params.js +74 -0
  399. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/stats/query.js +294 -0
  400. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/stats/query.lcd.js +40 -0
  401. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/stats/query.rpc.Query.js +89 -0
  402. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/stats/stats.js +374 -0
  403. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/stats/tx.js +109 -0
  404. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/stats/tx.rpc.msg.js +51 -0
  405. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/asset_position.js +91 -0
  406. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/genesis.js +75 -0
  407. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/perpetual_position.js +98 -0
  408. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/query.js +358 -0
  409. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/query.lcd.js +44 -0
  410. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/query.rpc.Query.js +91 -0
  411. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/streaming.js +188 -0
  412. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/subaccount.js +144 -0
  413. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/genesis.js +301 -0
  414. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/params.js +338 -0
  415. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/query.js +747 -0
  416. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/query.lcd.js +69 -0
  417. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/query.rpc.Query.js +129 -0
  418. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/share.js +206 -0
  419. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/tx.js +758 -0
  420. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/tx.rpc.msg.js +93 -0
  421. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/vault.js +180 -0
  422. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vest/genesis.js +75 -0
  423. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vest/query.js +110 -0
  424. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vest/query.lcd.js +22 -0
  425. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vest/query.rpc.Query.js +62 -0
  426. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vest/tx.js +179 -0
  427. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vest/tx.rpc.msg.js +57 -0
  428. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vest/vest_entry.js +108 -0
  429. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/gogoproto/bundle.js +40 -0
  430. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/gogoproto/gogo.js +3 -0
  431. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/google/api/annotations.js +3 -0
  432. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/google/api/http.js +234 -0
  433. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/google/bundle.js +54 -0
  434. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/google/protobuf/any.js +82 -0
  435. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/google/protobuf/descriptor.js +2207 -0
  436. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/google/protobuf/duration.js +83 -0
  437. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/google/protobuf/timestamp.js +83 -0
  438. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/helpers.js +194 -0
  439. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/index.js +29 -0
  440. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/abci/types.js +3070 -0
  441. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/bundle.js +71 -0
  442. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/crypto/keys.js +82 -0
  443. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/crypto/proof.js +283 -0
  444. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/libs/bits/types.js +93 -0
  445. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/p2p/types.js +278 -0
  446. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/types/block.js +99 -0
  447. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/types/evidence.js +257 -0
  448. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/types/params.js +350 -0
  449. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/types/types.js +1053 -0
  450. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/types/validator.js +245 -0
  451. package/build/cjs/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/version/types.js +126 -0
  452. package/build/cjs/package.json +1 -0
  453. package/build/cjs/src/clients/composite-client.js +784 -0
  454. package/build/cjs/src/clients/constants.js +302 -0
  455. package/build/cjs/src/clients/faucet-client.js +36 -0
  456. package/build/cjs/src/clients/helpers/chain-helpers.js +178 -0
  457. package/build/cjs/src/clients/helpers/request-helpers.js +65 -0
  458. package/build/cjs/src/clients/indexer-client.js +56 -0
  459. package/build/cjs/src/clients/lib/axios/axiosRequest.js +34 -0
  460. package/build/cjs/src/clients/lib/axios/errors.js +28 -0
  461. package/build/cjs/src/clients/lib/axios/index.js +23 -0
  462. package/build/cjs/src/clients/lib/axios/types.js +11 -0
  463. package/build/cjs/src/clients/lib/cctpProto.js +3242 -0
  464. package/build/cjs/src/clients/lib/errors.js +58 -0
  465. package/build/cjs/src/clients/lib/registry.js +51 -0
  466. package/build/cjs/src/clients/modules/account.js +193 -0
  467. package/build/cjs/src/clients/modules/composer.js +402 -0
  468. package/build/cjs/src/clients/modules/get.js +403 -0
  469. package/build/cjs/src/clients/modules/local-wallet.js +48 -0
  470. package/build/cjs/src/clients/modules/markets.js +54 -0
  471. package/build/cjs/src/clients/modules/post.js +391 -0
  472. package/build/cjs/src/clients/modules/proto-includes.js +69 -0
  473. package/build/cjs/src/clients/modules/rest.js +27 -0
  474. package/build/cjs/src/clients/modules/signer.js +93 -0
  475. package/build/cjs/src/clients/modules/tendermintClient.js +137 -0
  476. package/build/cjs/src/clients/modules/utility.js +44 -0
  477. package/build/cjs/src/clients/modules/vault.js +25 -0
  478. package/build/cjs/src/clients/native.js +1279 -0
  479. package/build/cjs/src/clients/noble-client.js +75 -0
  480. package/build/cjs/src/clients/socket-client.js +297 -0
  481. package/build/cjs/src/clients/subaccount.js +24 -0
  482. package/build/cjs/src/clients/types.js +43 -0
  483. package/build/cjs/src/clients/validator-client.js +81 -0
  484. package/build/cjs/src/index.js +72 -0
  485. package/build/cjs/src/lib/constants.js +23 -0
  486. package/build/cjs/src/lib/errors.js +37 -0
  487. package/build/cjs/src/lib/helpers.js +98 -0
  488. package/build/cjs/src/lib/onboarding.js +75 -0
  489. package/build/cjs/src/lib/utils.js +73 -0
  490. package/build/cjs/src/lib/validation.js +150 -0
  491. package/build/cjs/src/network_optimizer.js +96 -0
  492. package/build/cjs/src/types.js +25 -0
  493. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  494. package/build/esm/src/clients/composite-client.d.ts +6 -2
  495. package/build/esm/src/clients/composite-client.d.ts.map +1 -1
  496. package/build/esm/src/clients/composite-client.js +19 -18
  497. package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
  498. package/package.json +2 -2
  499. package/src/clients/composite-client.ts +75 -107
@@ -0,0 +1,784 @@
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.CompositeClient = void 0;
7
+ const util_1 = require("util");
8
+ const tendermint_rpc_1 = require("@cosmjs/tendermint-rpc");
9
+ const order_1 = require("@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/order");
10
+ const ethers_1 = require("ethers");
11
+ const long_1 = __importDefault(require("long"));
12
+ const protobufjs_1 = __importDefault(require("protobufjs"));
13
+ const helpers_1 = require("../lib/helpers");
14
+ const validation_1 = require("../lib/validation");
15
+ const types_1 = require("../types");
16
+ const constants_1 = require("./constants");
17
+ const chain_helpers_1 = require("./helpers/chain-helpers");
18
+ const indexer_client_1 = require("./indexer-client");
19
+ const errors_1 = require("./lib/errors");
20
+ const registry_1 = require("./lib/registry");
21
+ const subaccount_1 = require("./subaccount");
22
+ const validator_client_1 = require("./validator-client");
23
+ // Required for encoding and decoding queries that are of type Long.
24
+ // Must be done once but since the individal modules should be usable
25
+ // - must be set in each module that encounters encoding/decoding Longs.
26
+ // Reference: https://github.com/protobufjs/protobuf.js/issues/921
27
+ protobufjs_1.default.util.Long = long_1.default;
28
+ protobufjs_1.default.configure();
29
+ class CompositeClient {
30
+ static async connect(network) {
31
+ const client = new CompositeClient(network);
32
+ await client.initialize();
33
+ return client;
34
+ }
35
+ constructor(network, apiTimeout) {
36
+ this.gasDenom = constants_1.SelectedGasDenom.USDC;
37
+ this.network = network;
38
+ this._indexerClient = new indexer_client_1.IndexerClient(network.indexerConfig, apiTimeout);
39
+ }
40
+ async initialize() {
41
+ this._validatorClient = await validator_client_1.ValidatorClient.connect(this.network.validatorConfig);
42
+ }
43
+ get indexerClient() {
44
+ /**
45
+ * Get the validator client
46
+ */
47
+ return this._indexerClient;
48
+ }
49
+ get validatorClient() {
50
+ /**
51
+ * Get the validator client
52
+ */
53
+ return this._validatorClient;
54
+ }
55
+ get selectedGasDenom() {
56
+ if (!this._validatorClient)
57
+ return undefined;
58
+ return this._validatorClient.selectedGasDenom;
59
+ }
60
+ setSelectedGasDenom(gasDenom) {
61
+ if (!this._validatorClient)
62
+ throw new Error('Validator client not initialized');
63
+ this._validatorClient.setSelectedGasDenom(gasDenom);
64
+ }
65
+ async populateAccountNumberCache(address) {
66
+ if (!this._validatorClient)
67
+ throw new Error('Validator client not initialized');
68
+ await this._validatorClient.populateAccountNumberCache(address);
69
+ }
70
+ /**
71
+ * @description Sign a list of messages with a wallet.
72
+ * the calling function is responsible for creating the messages.
73
+ *
74
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
75
+ * at any point.
76
+ * @returns The Signature.
77
+ */
78
+ async sign(wallet, messaging, zeroFee, gasPrice, memo, account) {
79
+ return this.validatorClient.post.sign(wallet, messaging, zeroFee, gasPrice, memo, account);
80
+ }
81
+ /**
82
+ * @description Send a list of messages with a wallet.
83
+ * the calling function is responsible for creating the messages.
84
+ *
85
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
86
+ * at any point.
87
+ * @returns The Transaction Hash.
88
+ */
89
+ async send(wallet, messaging, zeroFee, gasPrice, memo, broadcastMode, account, authenticators) {
90
+ return this.validatorClient.post.send(wallet, messaging, zeroFee, gasPrice, memo, broadcastMode, account, undefined, authenticators);
91
+ }
92
+ /**
93
+ * @description Send a signed transaction.
94
+ *
95
+ * @param signedTransaction The signed transaction to send.
96
+ *
97
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
98
+ * at any point.
99
+ * @returns The Transaction Hash.
100
+ */
101
+ async sendSignedTransaction(signedTransaction) {
102
+ return this.validatorClient.post.sendSignedTransaction(signedTransaction);
103
+ }
104
+ /**
105
+ * @description Simulate a list of messages with a wallet.
106
+ * the calling function is responsible for creating the messages.
107
+ *
108
+ * To send multiple messages with gas estimate:
109
+ * 1. Client is responsible for creating the messages.
110
+ * 2. Call simulate() to get the gas estimate.
111
+ * 3. Call send() to send the messages.
112
+ *
113
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
114
+ * at any point.
115
+ * @returns The gas estimate.
116
+ */
117
+ async simulate(wallet, messaging, gasPrice, memo, account) {
118
+ return this.validatorClient.post.simulate(wallet, messaging, gasPrice, memo, account);
119
+ }
120
+ /**
121
+ * @description Calculate the goodTilBlock value for a SHORT_TERM order
122
+ *
123
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
124
+ * at any point.
125
+ * @returns The goodTilBlock value
126
+ */
127
+ async calculateGoodTilBlock(orderFlags, currentHeight, goodTilBlock) {
128
+ if (orderFlags === types_1.OrderFlags.SHORT_TERM) {
129
+ if (goodTilBlock !== undefined && goodTilBlock !== 0 && goodTilBlock !== null) {
130
+ return Promise.resolve(goodTilBlock);
131
+ }
132
+ else {
133
+ const height = currentHeight !== null && currentHeight !== void 0 ? currentHeight : (await this.validatorClient.get.latestBlockHeight());
134
+ return height + constants_1.SHORT_BLOCK_FORWARD;
135
+ }
136
+ }
137
+ else {
138
+ return Promise.resolve(0);
139
+ }
140
+ }
141
+ /**
142
+ * @description Validate the goodTilBlock value for a SHORT_TERM order
143
+ *
144
+ * @param goodTilBlock Number of blocks from the current block height the order will
145
+ * be valid for.
146
+ *
147
+ * @throws UserError if the goodTilBlock value is not valid given latest block height and
148
+ * SHORT_BLOCK_WINDOW.
149
+ */
150
+ async validateGoodTilBlock(goodTilBlock) {
151
+ const height = await this.validatorClient.get.latestBlockHeight();
152
+ const nextValidBlockHeight = height + 1;
153
+ const lowerBound = nextValidBlockHeight;
154
+ const upperBound = nextValidBlockHeight + constants_1.SHORT_BLOCK_WINDOW;
155
+ if (goodTilBlock < lowerBound || goodTilBlock > upperBound) {
156
+ throw new errors_1.UserError(`Invalid Short-Term order GoodTilBlock.
157
+ Should be greater-than-or-equal-to ${lowerBound} and less-than-or-equal-to ${upperBound}.
158
+ Provided good til block: ${goodTilBlock}`);
159
+ }
160
+ }
161
+ /**
162
+ * @description Calculate the goodTilBlockTime value for a LONG_TERM order
163
+ * the calling function is responsible for creating the messages.
164
+ *
165
+ * @param goodTilTimeInSeconds The goodTilTimeInSeconds of the order to place.
166
+ *
167
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
168
+ * at any point.
169
+ * @returns The goodTilBlockTime value
170
+ */
171
+ calculateGoodTilBlockTime(goodTilTimeInSeconds) {
172
+ const now = new Date();
173
+ const millisecondsPerSecond = 1000;
174
+ const interval = goodTilTimeInSeconds * millisecondsPerSecond;
175
+ const future = new Date(now.valueOf() + interval);
176
+ return Math.round(future.getTime() / 1000);
177
+ }
178
+ /**
179
+ * @description Place a short term order with human readable input.
180
+ *
181
+ * Use human readable form of input, including price and size
182
+ * The quantum and subticks are calculated and submitted
183
+ *
184
+ * @param subaccount The subaccount to place the order under
185
+ * @param marketId The market to place the order on
186
+ * @param side The side of the order to place
187
+ * @param price The price of the order to place
188
+ * @param size The size of the order to place
189
+ * @param clientId The client id of the order to place
190
+ * @param timeInForce The time in force of the order to place
191
+ * @param goodTilBlock The goodTilBlock of the order to place
192
+ * @param reduceOnly The reduceOnly of the order to place
193
+ *
194
+ *
195
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
196
+ * at any point.
197
+ * @returns The transaction hash.
198
+ */
199
+ async placeShortTermOrder(subaccount, marketId, side, price, size, clientId, goodTilBlock, timeInForce, reduceOnly, memo, permissionedKeysAccountAuth) {
200
+ // For permissioned orders, use the permissioning account details instead of the subaccount
201
+ // This allows placing orders on behalf of another account when using permissioned keys
202
+ const accountForOrder = permissionedKeysAccountAuth
203
+ ? permissionedKeysAccountAuth.accountForOrder
204
+ : subaccount;
205
+ const msgs = new Promise((resolve, reject) => {
206
+ const msg = this.placeShortTermOrderMessage(accountForOrder, marketId, side, price, size, clientId, goodTilBlock, timeInForce, reduceOnly);
207
+ msg
208
+ .then((it) => {
209
+ resolve([it]);
210
+ })
211
+ .catch((err) => {
212
+ console.log(err);
213
+ reject(err);
214
+ });
215
+ });
216
+ const account = this.validatorClient.post.account(accountForOrder.address, undefined);
217
+ return this.send(subaccount.wallet, () => msgs, true, undefined, memo, undefined, () => account, permissionedKeysAccountAuth === null || permissionedKeysAccountAuth === void 0 ? void 0 : permissionedKeysAccountAuth.authenticators);
218
+ }
219
+ /**
220
+ * @description Place an order with human readable input.
221
+ *
222
+ * Only MARKET and LIMIT types are supported right now
223
+ * Use human readable form of input, including price and size
224
+ * The quantum and subticks are calculated and submitted
225
+ *
226
+ * @param subaccount The subaccount to place the order on.
227
+ * @param marketId The market to place the order on.
228
+ * @param type The type of order to place.
229
+ * @param side The side of the order to place.
230
+ * @param price The price of the order to place.
231
+ * @param size The size of the order to place.
232
+ * @param clientId The client id of the order to place.
233
+ * @param timeInForce The time in force of the order to place.
234
+ * @param goodTilTimeInSeconds The goodTilTimeInSeconds of the order to place.
235
+ * @param execution The execution of the order to place.
236
+ * @param postOnly The postOnly of the order to place.
237
+ * @param reduceOnly The reduceOnly of the order to place.
238
+ * @param triggerPrice The trigger price of conditional orders.
239
+ * @param marketInfo optional market information for calculating quantums and subticks.
240
+ * This can be constructed from Indexer API. If set to null, additional round
241
+ * trip to Indexer API will be made.
242
+ * @param currentHeight Current block height. This can be obtained from ValidatorClient.
243
+ * If set to null, additional round trip to ValidatorClient will be made.
244
+ *
245
+ *
246
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
247
+ * at any point.
248
+ * @returns The transaction hash.
249
+ */
250
+ async placeOrder(subaccount, marketId, type, side, price, size, clientId, timeInForce, goodTilTimeInSeconds, execution, postOnly, reduceOnly, triggerPrice, marketInfo, currentHeight, goodTilBlock, memo) {
251
+ const msgs = new Promise((resolve) => {
252
+ const msg = this.placeOrderMessage(subaccount, marketId, type, side, price, size, clientId, timeInForce, goodTilTimeInSeconds, execution, postOnly, reduceOnly, triggerPrice, marketInfo, currentHeight, goodTilBlock);
253
+ msg
254
+ .then((it) => resolve([it]))
255
+ .catch((err) => {
256
+ throw err;
257
+ });
258
+ });
259
+ const orderFlags = (0, chain_helpers_1.calculateOrderFlags)(type, timeInForce);
260
+ const account = this.validatorClient.post.account(subaccount.address, orderFlags);
261
+ return this.send(subaccount.wallet, () => msgs, true, undefined, memo, undefined, () => account);
262
+ }
263
+ /**
264
+ * @description Calculate and create the place order message
265
+ *
266
+ * Only MARKET and LIMIT types are supported right now
267
+ * Use human readable form of input, including price and size
268
+ * The quantum and subticks are calculated and submitted
269
+ *
270
+ * @param subaccount The subaccount to place the order under
271
+ * @param marketId The market to place the order on
272
+ * @param type The type of order to place
273
+ * @param side The side of the order to place
274
+ * @param price The price of the order to place
275
+ * @param size The size of the order to place
276
+ * @param clientId The client id of the order to place
277
+ * @param timeInForce The time in force of the order to place
278
+ * @param goodTilTimeInSeconds The goodTilTimeInSeconds of the order to place
279
+ * @param execution The execution of the order to place
280
+ * @param postOnly The postOnly of the order to place
281
+ * @param reduceOnly The reduceOnly of the order to place
282
+ *
283
+ *
284
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
285
+ * at any point.
286
+ * @returns The message to be passed into the protocol
287
+ */
288
+ async placeOrderMessage(subaccount, marketId, type, side, price, size, clientId, timeInForce, goodTilTimeInSeconds, execution, postOnly, reduceOnly, triggerPrice, marketInfo, currentHeight, goodTilBlock) {
289
+ const orderFlags = (0, chain_helpers_1.calculateOrderFlags)(type, timeInForce);
290
+ const result = await Promise.all([
291
+ this.calculateGoodTilBlock(orderFlags, currentHeight, goodTilBlock),
292
+ this.retrieveMarketInfo(marketId, marketInfo),
293
+ ]);
294
+ const desiredGoodTilBlock = result[0];
295
+ const clobPairId = result[1].clobPairId;
296
+ const atomicResolution = result[1].atomicResolution;
297
+ const stepBaseQuantums = result[1].stepBaseQuantums;
298
+ const quantumConversionExponent = result[1].quantumConversionExponent;
299
+ const subticksPerTick = result[1].subticksPerTick;
300
+ const orderSide = (0, chain_helpers_1.calculateSide)(side);
301
+ const quantums = (0, chain_helpers_1.calculateQuantums)(size, atomicResolution, stepBaseQuantums);
302
+ const subticks = (0, chain_helpers_1.calculateSubticks)(price, atomicResolution, quantumConversionExponent, subticksPerTick);
303
+ const orderTimeInForce = (0, chain_helpers_1.calculateTimeInForce)(type, timeInForce, execution, postOnly);
304
+ let goodTilBlockTime = 0;
305
+ if (orderFlags === types_1.OrderFlags.LONG_TERM || orderFlags === types_1.OrderFlags.CONDITIONAL) {
306
+ if (goodTilTimeInSeconds == null) {
307
+ throw new Error('goodTilTimeInSeconds must be set for LONG_TERM or CONDITIONAL order');
308
+ }
309
+ else {
310
+ goodTilBlockTime = this.calculateGoodTilBlockTime(goodTilTimeInSeconds);
311
+ }
312
+ }
313
+ const clientMetadata = (0, chain_helpers_1.calculateClientMetadata)(type);
314
+ const conditionalType = (0, chain_helpers_1.calculateConditionType)(type);
315
+ const conditionalOrderTriggerSubticks = (0, chain_helpers_1.calculateConditionalOrderTriggerSubticks)(type, atomicResolution, quantumConversionExponent, subticksPerTick, triggerPrice);
316
+ return this.validatorClient.post.composer.composeMsgPlaceOrder(subaccount.address, subaccount.subaccountNumber, clientId, clobPairId, orderFlags, desiredGoodTilBlock, goodTilBlockTime, orderSide, quantums, subticks, orderTimeInForce, reduceOnly !== null && reduceOnly !== void 0 ? reduceOnly : false, clientMetadata, conditionalType, conditionalOrderTriggerSubticks);
317
+ }
318
+ async retrieveMarketInfo(marketId, marketInfo) {
319
+ if (marketInfo) {
320
+ return Promise.resolve(marketInfo);
321
+ }
322
+ else {
323
+ const marketsResponse = await this.indexerClient.markets.getPerpetualMarkets(marketId);
324
+ const market = marketsResponse.markets[marketId];
325
+ const clobPairId = market.clobPairId;
326
+ const atomicResolution = market.atomicResolution;
327
+ const stepBaseQuantums = market.stepBaseQuantums;
328
+ const quantumConversionExponent = market.quantumConversionExponent;
329
+ const subticksPerTick = market.subticksPerTick;
330
+ return {
331
+ clobPairId,
332
+ atomicResolution,
333
+ stepBaseQuantums,
334
+ quantumConversionExponent,
335
+ subticksPerTick,
336
+ };
337
+ }
338
+ }
339
+ /**
340
+ * @description Calculate and create the short term place order message
341
+ *
342
+ * Use human readable form of input, including price and size
343
+ * The quantum and subticks are calculated and submitted
344
+ *
345
+ * @param subaccount The subaccount to place the order under
346
+ * @param marketId The market to place the order on
347
+ * @param side The side of the order to place
348
+ * @param price The price of the order to place
349
+ * @param size The size of the order to place
350
+ * @param clientId The client id of the order to place
351
+ * @param timeInForce The time in force of the order to place
352
+ * @param goodTilBlock The goodTilBlock of the order to place
353
+ * @param reduceOnly The reduceOnly of the order to place
354
+ *
355
+ *
356
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
357
+ * at any point.
358
+ * @returns The message to be passed into the protocol
359
+ */
360
+ async placeShortTermOrderMessage(subaccount, marketId, side, price, size, clientId, goodTilBlock, timeInForce, reduceOnly) {
361
+ await this.validateGoodTilBlock(goodTilBlock);
362
+ const marketsResponse = await this.indexerClient.markets.getPerpetualMarkets(marketId);
363
+ const market = marketsResponse.markets[marketId];
364
+ const clobPairId = market.clobPairId;
365
+ const atomicResolution = market.atomicResolution;
366
+ const stepBaseQuantums = market.stepBaseQuantums;
367
+ const quantumConversionExponent = market.quantumConversionExponent;
368
+ const subticksPerTick = market.subticksPerTick;
369
+ const orderSide = (0, chain_helpers_1.calculateSide)(side);
370
+ const quantums = (0, chain_helpers_1.calculateQuantums)(size, atomicResolution, stepBaseQuantums);
371
+ const subticks = (0, chain_helpers_1.calculateSubticks)(price, atomicResolution, quantumConversionExponent, subticksPerTick);
372
+ const orderFlags = types_1.OrderFlags.SHORT_TERM;
373
+ return this.validatorClient.post.composer.composeMsgPlaceOrder(subaccount.address, subaccount.subaccountNumber, clientId, clobPairId, orderFlags, goodTilBlock, 0, // Short term orders use goodTilBlock.
374
+ orderSide, quantums, subticks, timeInForce, reduceOnly, 0, // Client metadata is 0 for short term orders.
375
+ order_1.Order_ConditionType.CONDITION_TYPE_UNSPECIFIED, // Short term orders cannot be conditional.
376
+ long_1.default.fromInt(0));
377
+ }
378
+ /**
379
+ * @description Cancel an order with order information from web socket or REST.
380
+ *
381
+ * @param subaccount The subaccount to cancel the order from
382
+ * @param clientId The client id of the order to cancel
383
+ * @param orderFlags The order flags of the order to cancel
384
+ * @param clobPairId The clob pair id of the order to cancel
385
+ * @param goodTilBlock The goodTilBlock of the order to cancel
386
+ * @param goodTilBlockTime The goodTilBlockTime of the order to cancel
387
+ *
388
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
389
+ * at any point.
390
+ * @returns The transaction hash.
391
+ */
392
+ async cancelRawOrder(subaccount, clientId, orderFlags, clobPairId, goodTilBlock, goodTilBlockTime) {
393
+ return this.validatorClient.post.cancelOrder(subaccount, clientId, orderFlags, clobPairId, goodTilBlock, goodTilBlockTime);
394
+ }
395
+ /**
396
+ * @description Cancel an order with human readable input.
397
+ *
398
+ * @param subaccount The subaccount to cancel the order from
399
+ * @param clientId The client id of the order to cancel
400
+ * @param orderFlags The order flags of the order to cancel
401
+ * @param marketId The market to cancel the order on
402
+ * @param goodTilBlock The goodTilBlock of the order to cancel
403
+ * @param goodTilBlockTime The goodTilBlockTime of the order to cancel
404
+ *
405
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
406
+ * at any point.
407
+ * @returns The transaction hash.
408
+ */
409
+ async cancelOrder(subaccount, clientId, orderFlags, marketId, goodTilBlock, goodTilTimeInSeconds) {
410
+ const marketsResponse = await this.indexerClient.markets.getPerpetualMarkets(marketId);
411
+ const market = marketsResponse.markets[marketId];
412
+ const clobPairId = market.clobPairId;
413
+ if (!(0, validation_1.verifyOrderFlags)(orderFlags)) {
414
+ throw new Error(`Invalid order flags: ${orderFlags}`);
415
+ }
416
+ let goodTilBlockTime;
417
+ if ((0, validation_1.isStatefulOrder)(orderFlags)) {
418
+ if (goodTilTimeInSeconds === undefined || goodTilTimeInSeconds === 0) {
419
+ throw new Error('goodTilTimeInSeconds must be set for LONG_TERM or CONDITIONAL order');
420
+ }
421
+ if (goodTilBlock !== 0) {
422
+ throw new Error('goodTilBlock should be zero since LONG_TERM or CONDITIONAL orders ' +
423
+ 'use goodTilTimeInSeconds instead of goodTilBlock.');
424
+ }
425
+ goodTilBlockTime = this.calculateGoodTilBlockTime(goodTilTimeInSeconds);
426
+ }
427
+ else {
428
+ if (goodTilBlock === undefined || goodTilBlock === 0) {
429
+ throw new Error('goodTilBlock must be non-zero for SHORT_TERM orders');
430
+ }
431
+ if (goodTilTimeInSeconds !== undefined && goodTilTimeInSeconds !== 0) {
432
+ throw new Error('goodTilTimeInSeconds should be zero since SHORT_TERM orders use goodTilBlock instead of goodTilTimeInSeconds.');
433
+ }
434
+ }
435
+ return this.validatorClient.post.cancelOrder(subaccount, clientId, orderFlags, clobPairId, goodTilBlock, goodTilBlockTime);
436
+ }
437
+ /**
438
+ * @description Batch cancel short term orders using marketId to clobPairId translation.
439
+ *
440
+ * @param subaccount The subaccount to cancel the order from
441
+ * @param shortTermOrders The list of short term order batches to cancel with marketId
442
+ * @param goodTilBlock The goodTilBlock of the order to cancel
443
+ * @returns The transaction hash.
444
+ */
445
+ async batchCancelShortTermOrdersWithMarketId(subaccount, shortTermOrders, goodTilBlock, broadcastMode) {
446
+ const orderBatches = await Promise.all(shortTermOrders.map(async ({ marketId, clobPairId, clientIds }) => ({
447
+ clobPairId: (clobPairId !== null && clobPairId !== void 0 ? clobPairId : (await this.indexerClient.markets.getPerpetualMarkets(marketId)).markets[marketId]).clobPairId,
448
+ clientIds,
449
+ })));
450
+ return this.validatorClient.post.batchCancelShortTermOrders(subaccount, orderBatches, goodTilBlock, broadcastMode);
451
+ }
452
+ /**
453
+ * @description Batch cancel short term orders using clobPairId.
454
+ *
455
+ * @param subaccount The subaccount to cancel the order from
456
+ * @param shortTermOrders The list of short term order batches to cancel with clobPairId
457
+ * @param goodTilBlock The goodTilBlock of the order to cancel
458
+ * @returns The transaction hash.
459
+ */
460
+ async batchCancelShortTermOrdersWithClobPairId(subaccount, shortTermOrders, goodTilBlock, broadcastMode) {
461
+ return this.validatorClient.post.batchCancelShortTermOrders(subaccount, shortTermOrders, goodTilBlock, broadcastMode);
462
+ }
463
+ /**
464
+ * @description Transfer from a subaccount to another subaccount
465
+ *
466
+ * @param subaccount The subaccount to transfer from
467
+ * @param recipientAddress The recipient address
468
+ * @param recipientSubaccountNumber The recipient subaccount number
469
+ * @param amount The amount to transfer
470
+ *
471
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
472
+ * at any point.
473
+ * @returns The transaction hash.
474
+ */
475
+ async transferToSubaccount(subaccount, recipientAddress, recipientSubaccountNumber, amount, memo, broadcastMode) {
476
+ const msgs = new Promise((resolve) => {
477
+ const msg = this.transferToSubaccountMessage(subaccount, recipientAddress, recipientSubaccountNumber, amount);
478
+ resolve([msg]);
479
+ });
480
+ return this.send(subaccount.wallet, () => msgs, false, undefined, memo, broadcastMode !== null && broadcastMode !== void 0 ? broadcastMode : tendermint_rpc_1.Method.BroadcastTxCommit);
481
+ }
482
+ /**
483
+ * @description Create message to transfer from a subaccount to another subaccount
484
+ *
485
+ * @param subaccount The subaccount to transfer from
486
+ * @param recipientAddress The recipient address
487
+ * @param recipientSubaccountNumber The recipient subaccount number
488
+ * @param amount The amount to transfer
489
+ *
490
+ *
491
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
492
+ * at any point.
493
+ * @returns The message
494
+ */
495
+ transferToSubaccountMessage(subaccount, recipientAddress, recipientSubaccountNumber, amount) {
496
+ const validatorClient = this._validatorClient;
497
+ if (validatorClient === undefined) {
498
+ throw new Error('validatorClient not set');
499
+ }
500
+ const quantums = (0, ethers_1.parseUnits)(amount, validatorClient.config.denoms.USDC_DECIMALS);
501
+ if (quantums > BigInt(long_1.default.MAX_VALUE.toString())) {
502
+ throw new Error('amount to large');
503
+ }
504
+ if (quantums < 0) {
505
+ throw new Error('amount must be positive');
506
+ }
507
+ return this.validatorClient.post.composer.composeMsgTransfer(subaccount.address, subaccount.subaccountNumber, recipientAddress, recipientSubaccountNumber, 0, long_1.default.fromString(quantums.toString()));
508
+ }
509
+ /**
510
+ * @description Deposit from wallet to subaccount
511
+ *
512
+ * @param subaccount The subaccount to deposit to
513
+ * @param amount The amount to deposit
514
+ *
515
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
516
+ * at any point.
517
+ * @returns The transaction hash.
518
+ */
519
+ async depositToSubaccount(subaccount, amount, memo) {
520
+ const msgs = new Promise((resolve) => {
521
+ const msg = this.depositToSubaccountMessage(subaccount, amount);
522
+ resolve([msg]);
523
+ });
524
+ return this.validatorClient.post.send(subaccount.wallet, () => msgs, false, undefined, memo);
525
+ }
526
+ /**
527
+ * @description Create message to deposit from wallet to subaccount
528
+ *
529
+ * @param subaccount The subaccount to deposit to
530
+ * @param amount The amount to deposit
531
+ *
532
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
533
+ * at any point.
534
+ * @returns The message
535
+ */
536
+ depositToSubaccountMessage(subaccount, amount) {
537
+ const validatorClient = this._validatorClient;
538
+ if (validatorClient === undefined) {
539
+ throw new Error('validatorClient not set');
540
+ }
541
+ const quantums = (0, ethers_1.parseUnits)(amount, validatorClient.config.denoms.USDC_DECIMALS);
542
+ if (quantums > BigInt(long_1.default.MAX_VALUE.toString())) {
543
+ throw new Error('amount to large');
544
+ }
545
+ if (quantums < 0) {
546
+ throw new Error('amount must be positive');
547
+ }
548
+ return this.validatorClient.post.composer.composeMsgDepositToSubaccount(subaccount.address, subaccount.subaccountNumber, 0, long_1.default.fromString(quantums.toString()));
549
+ }
550
+ /**
551
+ * @description Withdraw from subaccount to wallet
552
+ *
553
+ * @param subaccount The subaccount to withdraw from
554
+ * @param amount The amount to withdraw
555
+ * @param recipient The recipient address, default to subaccount address
556
+ *
557
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
558
+ * at any point.
559
+ * @returns The transaction hash
560
+ */
561
+ async withdrawFromSubaccount(subaccount, amount, recipient, memo) {
562
+ const msgs = new Promise((resolve) => {
563
+ const msg = this.withdrawFromSubaccountMessage(subaccount, amount, recipient);
564
+ resolve([msg]);
565
+ });
566
+ return this.send(subaccount.wallet, () => msgs, false, undefined, memo);
567
+ }
568
+ /**
569
+ * @description Create message to withdraw from subaccount to wallet
570
+ * with human readable input.
571
+ *
572
+ * @param subaccount The subaccount to withdraw from
573
+ * @param amount The amount to withdraw
574
+ * @param recipient The recipient address
575
+ *
576
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
577
+ * at any point.
578
+ * @returns The message
579
+ */
580
+ withdrawFromSubaccountMessage(subaccount, amount, recipient) {
581
+ const validatorClient = this._validatorClient;
582
+ if (validatorClient === undefined) {
583
+ throw new Error('validatorClient not set');
584
+ }
585
+ const quantums = (0, ethers_1.parseUnits)(amount, validatorClient.config.denoms.USDC_DECIMALS);
586
+ if (quantums > BigInt(long_1.default.MAX_VALUE.toString())) {
587
+ throw new Error('amount to large');
588
+ }
589
+ if (quantums < 0) {
590
+ throw new Error('amount must be positive');
591
+ }
592
+ return this.validatorClient.post.composer.composeMsgWithdrawFromSubaccount(subaccount.address, subaccount.subaccountNumber, 0, long_1.default.fromString(quantums.toString()), recipient);
593
+ }
594
+ /**
595
+ * @description Create message to send chain token from subaccount to wallet
596
+ * with human readable input.
597
+ *
598
+ * @param subaccount The subaccount to withdraw from
599
+ * @param amount The amount to withdraw
600
+ * @param recipient The recipient address
601
+ *
602
+ * @throws UnexpectedClientError if a malformed response is returned with no GRPC error
603
+ * at any point.
604
+ * @returns The message
605
+ */
606
+ sendTokenMessage(wallet, amount, recipient) {
607
+ var _a;
608
+ const address = wallet.address;
609
+ if (address === undefined) {
610
+ throw new errors_1.UserError('wallet address is not set. Call connectWallet() first');
611
+ }
612
+ const { CHAINTOKEN_DENOM: chainTokenDenom, CHAINTOKEN_DECIMALS: chainTokenDecimals } = ((_a = this._validatorClient) === null || _a === void 0 ? void 0 : _a.config.denoms) || {};
613
+ if (chainTokenDenom === undefined || chainTokenDecimals === undefined) {
614
+ throw new Error('Chain token denom not set in validator config');
615
+ }
616
+ const quantums = (0, ethers_1.parseUnits)(amount, chainTokenDecimals);
617
+ return this.validatorClient.post.composer.composeMsgSendToken(address, recipient, chainTokenDenom, quantums.toString());
618
+ }
619
+ async signPlaceOrder(subaccount, marketId, type, side, price,
620
+ // trigger_price: number, // not used for MARKET and LIMIT
621
+ size, clientId, timeInForce, goodTilTimeInSeconds, execution, postOnly, reduceOnly) {
622
+ const msgs = new Promise((resolve) => {
623
+ const msg = this.placeOrderMessage(subaccount, marketId, type, side, price,
624
+ // trigger_price: number, // not used for MARKET and LIMIT
625
+ size, clientId, timeInForce, goodTilTimeInSeconds, execution, postOnly, reduceOnly);
626
+ msg
627
+ .then((it) => resolve([it]))
628
+ .catch((err) => {
629
+ console.log(err);
630
+ });
631
+ });
632
+ const signature = await this.sign(wallet, () => msgs, true);
633
+ return Buffer.from(signature).toString('base64');
634
+ }
635
+ async signCancelOrder(subaccount, clientId, orderFlags, clobPairId, goodTilBlock, goodTilBlockTime) {
636
+ const msgs = new Promise((resolve) => {
637
+ const msg = this.validatorClient.post.composer.composeMsgCancelOrder(subaccount.address, subaccount.subaccountNumber, clientId, clobPairId, orderFlags, goodTilBlock, goodTilBlockTime);
638
+ resolve([msg]);
639
+ });
640
+ const signature = await this.sign(subaccount.wallet, () => msgs, true);
641
+ return Buffer.from(signature).toString('base64');
642
+ }
643
+ async bulkCancelAndTransferAndPlaceStatefulOrders(subaccount,
644
+ // these are executed in this order, all in one block, and all succeed or all fail
645
+ cancelOrderPayloads, transferToSubaccountPayload, placeOrderPayloads, memo, broadcastMode) {
646
+ if (cancelOrderPayloads.some((c) => c.orderFlags === types_1.OrderFlags.SHORT_TERM)) {
647
+ throw new Error('SHORT_TERM cancels cannot be batched');
648
+ }
649
+ if (placeOrderPayloads.some((placePayload) => (0, chain_helpers_1.calculateOrderFlags)(placePayload.type, placePayload.timeInForce) ===
650
+ types_1.OrderFlags.SHORT_TERM)) {
651
+ throw new Error('SHORT_TERM orders cannot be batched');
652
+ }
653
+ const account = this.validatorClient.post.account(subaccount.address, undefined);
654
+ const msgs = (async () => {
655
+ const cancelMsgPromises = cancelOrderPayloads.map(async (cancelPayload) => {
656
+ const cancelSubaccount = new subaccount_1.SubaccountInfo(subaccount.wallet, cancelPayload.subaccountNumber);
657
+ return this.validatorClient.post.cancelOrderMsg(cancelSubaccount.address, cancelSubaccount.subaccountNumber, cancelPayload.clientId, cancelPayload.orderFlags, cancelPayload.clobPairId, cancelPayload.goodTilBlock, cancelPayload.goodTilBlockTime);
658
+ });
659
+ const transferMsg = (() => {
660
+ if (transferToSubaccountPayload == null) {
661
+ return undefined;
662
+ }
663
+ const transferSubaccount = new subaccount_1.SubaccountInfo(subaccount.wallet, transferToSubaccountPayload === null || transferToSubaccountPayload === void 0 ? void 0 : transferToSubaccountPayload.sourceSubaccountNumber);
664
+ return this.transferToSubaccountMessage(transferSubaccount, transferSubaccount.address, transferToSubaccountPayload.recipientSubaccountNumber, transferToSubaccountPayload.transferAmount);
665
+ })();
666
+ const placeOrderMsgPromises = placeOrderPayloads.map((placePayload) => {
667
+ const placeSubaccount = new subaccount_1.SubaccountInfo(subaccount.wallet, placePayload.subaccountNumber);
668
+ return this.placeOrderMessage(placeSubaccount, placePayload.marketId, placePayload.type, placePayload.side, placePayload.price, placePayload.size, placePayload.clientId, placePayload.timeInForce, placePayload.goodTilTimeInSeconds, placePayload.execution, placePayload.postOnly, placePayload.reduceOnly, placePayload.triggerPrice, placePayload.marketInfo, placePayload.currentHeight, placePayload.goodTilBlock);
669
+ });
670
+ return Promise.all([
671
+ ...cancelMsgPromises,
672
+ ...(transferMsg != null ? [transferMsg] : []),
673
+ ...placeOrderMsgPromises,
674
+ ]);
675
+ })();
676
+ return this.send(subaccount.wallet, () => msgs, true, undefined, memo, broadcastMode !== null && broadcastMode !== void 0 ? broadcastMode : tendermint_rpc_1.Method.BroadcastTxCommit, () => account);
677
+ }
678
+ // vaults
679
+ async depositToMegavault(subaccount, amountUsdc, broadcastMode) {
680
+ return this.validatorClient.post.depositToMegavault(subaccount, (0, helpers_1.bigIntToBytes)((0, chain_helpers_1.calculateVaultQuantums)(amountUsdc)), broadcastMode);
681
+ }
682
+ depositToMegavaultMessage(subaccount, amountUsdc) {
683
+ return this.validatorClient.post.depositToMegavaultMsg(subaccount.address, subaccount.subaccountNumber, (0, helpers_1.bigIntToBytes)((0, chain_helpers_1.calculateVaultQuantums)(amountUsdc)));
684
+ }
685
+ async withdrawFromMegavault(subaccount, shares, minAmount, broadcastMode) {
686
+ return this.validatorClient.post.withdrawFromMegavault(subaccount, (0, helpers_1.bigIntToBytes)(BigInt(Math.floor(shares))), (0, helpers_1.bigIntToBytes)((0, chain_helpers_1.calculateVaultQuantums)(minAmount)), broadcastMode);
687
+ }
688
+ withdrawFromMegavaultMessage(subaccount, shares, minAmount) {
689
+ return this.validatorClient.post.withdrawFromMegavaultMsg(subaccount.address, subaccount.subaccountNumber, (0, helpers_1.bigIntToBytes)(BigInt(Math.floor(shares))), (0, helpers_1.bigIntToBytes)((0, chain_helpers_1.calculateVaultQuantums)(minAmount)));
690
+ }
691
+ /**
692
+ * @description Submit a governance proposal to add a new market.
693
+ *
694
+ * @param params Parameters neeeded to create a new market.
695
+ * @param title Title of the gov proposal.
696
+ * @param summary Summary of the gov proposal.
697
+ * @param initialDepositAmount Initial deposit amount of the gov proposal.
698
+ * @param proposer proposer of the gov proposal.
699
+ *
700
+ * @returns the transaction hash.
701
+ */
702
+ async submitGovAddNewMarketProposal(wallet, params, title, summary, initialDepositAmount, memo, metadata, expedited) {
703
+ const msg = new Promise((resolve) => {
704
+ const composer = this.validatorClient.post.composer;
705
+ const registry = (0, registry_1.generateRegistry)();
706
+ const msgs = [];
707
+ const isDydxUsd = params.ticker.toLowerCase() === 'dydx-usd';
708
+ // x/prices.MsgCreateOracleMarket
709
+ const createOracleMarket = composer.composeMsgCreateOracleMarket(params.id, params.ticker, params.priceExponent, params.minExchanges, params.minPriceChange, params.exchangeConfigJson);
710
+ // x/perpetuals.MsgCreatePerpetual
711
+ const createPerpetual = composer.composeMsgCreatePerpetual(params.id, isDydxUsd ? 1000001 : params.id, params.ticker, params.atomicResolution, params.liquidityTier, params.marketType);
712
+ // x/clob.MsgCreateClobPair
713
+ const createClobPair = composer.composeMsgCreateClobPair(params.id, params.id, params.quantumConversionExponent, params.stepBaseQuantums, params.subticksPerTick);
714
+ // x/clob.MsgUpdateClobPair
715
+ const updateClobPair = composer.composeMsgUpdateClobPair(params.id, params.id, params.quantumConversionExponent, params.stepBaseQuantums, params.subticksPerTick);
716
+ // x/delaymsg.MsgDelayMessage
717
+ const delayMessage = composer.composeMsgDelayMessage(
718
+ // IMPORTANT: must wrap messages in Any type to fit into delaymsg.
719
+ composer.wrapMessageAsAny(registry, updateClobPair), params.delayBlocks);
720
+ // The order matters.
721
+ if (!isDydxUsd) {
722
+ msgs.push(createOracleMarket);
723
+ }
724
+ msgs.push(createPerpetual);
725
+ msgs.push(createClobPair);
726
+ msgs.push(delayMessage);
727
+ // x/gov.v1.MsgSubmitProposal
728
+ const submitProposal = composer.composeMsgSubmitProposal(title, initialDepositAmount, this.validatorClient.config.denoms, // use the client denom.
729
+ summary,
730
+ // IMPORTANT: must wrap messages in Any type for gov's submit proposal.
731
+ composer.wrapMessageArrAsAny(registry, msgs), wallet.address, // proposer
732
+ metadata, expedited);
733
+ resolve([submitProposal]);
734
+ });
735
+ return this.send(wallet, () => msg, false, undefined, memo);
736
+ }
737
+ async createMarketPermissionless(subaccount, ticker, broadcastMode, gasAdjustment, memo) {
738
+ return this.validatorClient.post.createMarketPermissionless(ticker, subaccount, broadcastMode, gasAdjustment, memo);
739
+ }
740
+ async addAuthenticator(subaccount, authenticatorType, data) {
741
+ // Validate the provided authenticators before sending to the validator
742
+ const authenticator = {
743
+ type: authenticatorType,
744
+ config: JSON.parse(new util_1.TextDecoder().decode(data)),
745
+ };
746
+ if (!this.validateAuthenticator(authenticator)) {
747
+ throw new Error('Invalid authenticator, please ensure the authenticator permissions are correct');
748
+ }
749
+ return this.validatorClient.post.addAuthenticator(subaccount, authenticatorType, data);
750
+ }
751
+ async removeAuthenticator(subaccount, id) {
752
+ return this.validatorClient.post.removeAuthenticator(subaccount, id);
753
+ }
754
+ async getAuthenticators(address) {
755
+ return this.validatorClient.get.getAuthenticators(address);
756
+ }
757
+ validateAuthenticator(authenticator) {
758
+ function checkAuthenticator(auth) {
759
+ if (auth.type === constants_1.AuthenticatorType.SIGNATURE_VERIFICATION) {
760
+ return true; // A SignatureVerification authenticator is safe.
761
+ }
762
+ if (!Array.isArray(auth.config)) {
763
+ return false; // Unsafe case: a non-array config for a composite authenticator
764
+ }
765
+ if (auth.type === constants_1.AuthenticatorType.ANY_OF) {
766
+ // ANY_OF is safe only if ALL sub-authenticators return true
767
+ return auth.config.every((nestedAuth) => checkAuthenticator(nestedAuth));
768
+ }
769
+ if (auth.type === constants_1.AuthenticatorType.ALL_OF) {
770
+ // ALL_OF is safe if at least one sub-authenticator returns true
771
+ return auth.config.some((nestedAuth) => checkAuthenticator(nestedAuth));
772
+ }
773
+ // If it's a base-case authenticator but not SignatureVerification, it's unsafe
774
+ return false;
775
+ }
776
+ // The top-level authenticator must pass validation
777
+ if (!checkAuthenticator(authenticator)) {
778
+ return false;
779
+ }
780
+ return true;
781
+ }
782
+ }
783
+ exports.CompositeClient = CompositeClient;
784
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGllbnRzL2NvbXBvc2l0ZS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0JBQW1DO0FBSW5DLDJEQUFnRDtBQU1oRCxzRkFHb0U7QUFDcEUsbUNBQW9DO0FBQ3BDLGdEQUF3QjtBQUN4Qiw0REFBa0M7QUFFbEMsNENBQStDO0FBQy9DLGtEQUFzRTtBQUN0RSxvQ0FBNkQ7QUFDN0QsMkNBV3FCO0FBQ3JCLDJEQVVpQztBQUNqQyxxREFBaUQ7QUFDakQseUNBQXlDO0FBQ3pDLDZDQUFrRDtBQUVsRCw2Q0FBOEM7QUFFOUMseURBQXFEO0FBRXJELG9FQUFvRTtBQUNwRSxxRUFBcUU7QUFDckUsd0VBQXdFO0FBQ3hFLGtFQUFrRTtBQUNsRSxvQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDO0FBQzFCLG9CQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7QUF1RHJCLE1BQWEsZUFBZTtJQU0xQixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFnQjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBb0IsT0FBZ0IsRUFBRSxVQUFtQjtRQVZsRCxhQUFRLEdBQXFCLDRCQUFnQixDQUFDLElBQUksQ0FBQztRQVd4RCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksOEJBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTyxLQUFLLENBQUMsVUFBVTtRQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcs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