@h2protocol/v4-client-js 1.3.17-h2.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 (456) hide show
  1. package/.env +1 -0
  2. package/.eslintignore +2 -0
  3. package/.eslintrc.js +15 -0
  4. package/.gitleaks.toml +24 -0
  5. package/.gitleaksignore +1 -0
  6. package/.nvmrc +1 -0
  7. package/.prettierignore +3 -0
  8. package/.prettierrc.json +6 -0
  9. package/.releaserc +10 -0
  10. package/.vscode/launch.json +11 -0
  11. package/LICENSE +13 -0
  12. package/README.md +83 -0
  13. package/__native__/__ios__/v4-native-client.js +235529 -0
  14. package/__tests__/clients/composite-client.test.ts +140 -0
  15. package/__tests__/helpers/baseClients.ts +23 -0
  16. package/__tests__/helpers/constants.ts +130 -0
  17. package/__tests__/lib/helpers.test.ts +53 -0
  18. package/__tests__/lib/util.test.ts +77 -0
  19. package/__tests__/lib/validation.test.ts +289 -0
  20. package/__tests__/modules/client/AccountEndpoints.test.ts +236 -0
  21. package/__tests__/modules/client/FaucetEndpoint.test.ts +14 -0
  22. package/__tests__/modules/client/MarketsEndpoints.test.ts +84 -0
  23. package/__tests__/modules/client/Transfers.test.ts +44 -0
  24. package/__tests__/modules/client/UtilityEndpoints.test.ts +29 -0
  25. package/__tests__/modules/client/ValidatorGetEndpoints.test.ts +50 -0
  26. package/__tests__/modules/client/ValidatorPostEndpoints.test.ts +52 -0
  27. package/__tests__/modules/client/constants.ts +5 -0
  28. package/__tests__/modules/onboarding.test.ts +66 -0
  29. package/build/cjs/__tests__/clients/composite-client.test.js +130 -0
  30. package/build/cjs/__tests__/helpers/baseClients.js +29 -0
  31. package/build/cjs/__tests__/helpers/constants.js +110 -0
  32. package/build/cjs/__tests__/lib/helpers.test.js +45 -0
  33. package/build/cjs/__tests__/lib/util.test.js +67 -0
  34. package/build/cjs/__tests__/lib/validation.test.js +254 -0
  35. package/build/cjs/__tests__/modules/client/AccountEndpoints.test.js +171 -0
  36. package/build/cjs/__tests__/modules/client/FaucetEndpoint.test.js +15 -0
  37. package/build/cjs/__tests__/modules/client/MarketsEndpoints.test.js +69 -0
  38. package/build/cjs/__tests__/modules/client/Transfers.test.js +44 -0
  39. package/build/cjs/__tests__/modules/client/UtilityEndpoints.test.js +28 -0
  40. package/build/cjs/__tests__/modules/client/ValidatorGetEndpoints.test.js +46 -0
  41. package/build/cjs/__tests__/modules/client/ValidatorPostEndpoints.test.js +53 -0
  42. package/build/cjs/__tests__/modules/client/constants.js +7 -0
  43. package/build/cjs/__tests__/modules/onboarding.test.js +50 -0
  44. package/build/cjs/examples/account_endpoints.js +129 -0
  45. package/build/cjs/examples/batch_cancel_orders_example.js +93 -0
  46. package/build/cjs/examples/composite_example.js +50 -0
  47. package/build/cjs/examples/constants.js +35 -0
  48. package/build/cjs/examples/faucet_endpoint.js +23 -0
  49. package/build/cjs/examples/gov_add_new_market.js +77 -0
  50. package/build/cjs/examples/human_readable_orders.json +86 -0
  51. package/build/cjs/examples/human_readable_short_term_orders.json +42 -0
  52. package/build/cjs/examples/json-encoding.js +32 -0
  53. package/build/cjs/examples/long_term_order_cancel_example.js +63 -0
  54. package/build/cjs/examples/markets_endpoints.js +134 -0
  55. package/build/cjs/examples/native_examples.js +112 -0
  56. package/build/cjs/examples/noble_example.js +88 -0
  57. package/build/cjs/examples/optimal_node.js +70 -0
  58. package/build/cjs/examples/permissioned_keys_example.js +104 -0
  59. package/build/cjs/examples/raw_orders.json +130 -0
  60. package/build/cjs/examples/short_term_order_cancel_example.js +54 -0
  61. package/build/cjs/examples/short_term_order_composite_example.js +68 -0
  62. package/build/cjs/examples/test.js +50 -0
  63. package/build/cjs/examples/transfer_example_deposit.js +29 -0
  64. package/build/cjs/examples/transfer_example_send.js +42 -0
  65. package/build/cjs/examples/transfer_example_subaccount_transfer.js +29 -0
  66. package/build/cjs/examples/transfer_example_withdraw.js +30 -0
  67. package/build/cjs/examples/transfer_example_withdraw_other.js +42 -0
  68. package/build/cjs/examples/utility_endpoints.js +42 -0
  69. package/build/cjs/examples/validator_get_example.js +158 -0
  70. package/build/cjs/examples/validator_post_example.js +76 -0
  71. package/build/cjs/examples/wallet_address.js +22 -0
  72. package/build/cjs/examples/websocket_example.js +36 -0
  73. package/build/cjs/examples/websocket_orderbook_example.js +196 -0
  74. package/build/cjs/package.json +1 -0
  75. package/build/cjs/src/clients/composite-client.js +788 -0
  76. package/build/cjs/src/clients/constants.js +303 -0
  77. package/build/cjs/src/clients/faucet-client.js +36 -0
  78. package/build/cjs/src/clients/helpers/chain-helpers.js +178 -0
  79. package/build/cjs/src/clients/helpers/request-helpers.js +65 -0
  80. package/build/cjs/src/clients/indexer-client.js +56 -0
  81. package/build/cjs/src/clients/lib/axios/axiosRequest.js +34 -0
  82. package/build/cjs/src/clients/lib/axios/errors.js +28 -0
  83. package/build/cjs/src/clients/lib/axios/index.js +23 -0
  84. package/build/cjs/src/clients/lib/axios/types.js +11 -0
  85. package/build/cjs/src/clients/lib/cctpProto.js +3242 -0
  86. package/build/cjs/src/clients/lib/errors.js +58 -0
  87. package/build/cjs/src/clients/lib/registry.js +51 -0
  88. package/build/cjs/src/clients/modules/account.js +223 -0
  89. package/build/cjs/src/clients/modules/composer.js +405 -0
  90. package/build/cjs/src/clients/modules/get.js +403 -0
  91. package/build/cjs/src/clients/modules/local-wallet.js +59 -0
  92. package/build/cjs/src/clients/modules/markets.js +54 -0
  93. package/build/cjs/src/clients/modules/post.js +391 -0
  94. package/build/cjs/src/clients/modules/proto-includes.js +69 -0
  95. package/build/cjs/src/clients/modules/rest.js +33 -0
  96. package/build/cjs/src/clients/modules/signer.js +93 -0
  97. package/build/cjs/src/clients/modules/tendermintClient.js +137 -0
  98. package/build/cjs/src/clients/modules/utility.js +44 -0
  99. package/build/cjs/src/clients/modules/vault.js +25 -0
  100. package/build/cjs/src/clients/native.js +1280 -0
  101. package/build/cjs/src/clients/noble-client.js +75 -0
  102. package/build/cjs/src/clients/socket-client.js +301 -0
  103. package/build/cjs/src/clients/subaccount.js +33 -0
  104. package/build/cjs/src/clients/types.js +43 -0
  105. package/build/cjs/src/clients/validator-client.js +81 -0
  106. package/build/cjs/src/index.js +73 -0
  107. package/build/cjs/src/lib/constants.js +23 -0
  108. package/build/cjs/src/lib/errors.js +37 -0
  109. package/build/cjs/src/lib/helpers.js +98 -0
  110. package/build/cjs/src/lib/onboarding.js +75 -0
  111. package/build/cjs/src/lib/trading-key-utils.js +108 -0
  112. package/build/cjs/src/lib/utils.js +79 -0
  113. package/build/cjs/src/lib/validation.js +150 -0
  114. package/build/cjs/src/network_optimizer.js +96 -0
  115. package/build/cjs/src/types.js +25 -0
  116. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  117. package/build/esm/__tests__/clients/composite-client.test.d.ts +2 -0
  118. package/build/esm/__tests__/clients/composite-client.test.d.ts.map +1 -0
  119. package/build/esm/__tests__/clients/composite-client.test.js +128 -0
  120. package/build/esm/__tests__/helpers/baseClients.d.ts +19 -0
  121. package/build/esm/__tests__/helpers/baseClients.d.ts.map +1 -0
  122. package/build/esm/__tests__/helpers/baseClients.js +22 -0
  123. package/build/esm/__tests__/helpers/constants.d.ts +19 -0
  124. package/build/esm/__tests__/helpers/constants.d.ts.map +1 -0
  125. package/build/esm/__tests__/helpers/constants.js +104 -0
  126. package/build/esm/__tests__/lib/helpers.test.d.ts +2 -0
  127. package/build/esm/__tests__/lib/helpers.test.d.ts.map +1 -0
  128. package/build/esm/__tests__/lib/helpers.test.js +40 -0
  129. package/build/esm/__tests__/lib/util.test.d.ts +2 -0
  130. package/build/esm/__tests__/lib/util.test.d.ts.map +1 -0
  131. package/build/esm/__tests__/lib/util.test.js +65 -0
  132. package/build/esm/__tests__/lib/validation.test.d.ts +2 -0
  133. package/build/esm/__tests__/lib/validation.test.d.ts.map +1 -0
  134. package/build/esm/__tests__/lib/validation.test.js +249 -0
  135. package/build/esm/__tests__/modules/client/AccountEndpoints.test.d.ts +2 -0
  136. package/build/esm/__tests__/modules/client/AccountEndpoints.test.d.ts.map +1 -0
  137. package/build/esm/__tests__/modules/client/AccountEndpoints.test.js +169 -0
  138. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.d.ts +2 -0
  139. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.d.ts.map +1 -0
  140. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.js +13 -0
  141. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.d.ts +2 -0
  142. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.d.ts.map +1 -0
  143. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.js +66 -0
  144. package/build/esm/__tests__/modules/client/Transfers.test.d.ts +2 -0
  145. package/build/esm/__tests__/modules/client/Transfers.test.d.ts.map +1 -0
  146. package/build/esm/__tests__/modules/client/Transfers.test.js +39 -0
  147. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.d.ts +2 -0
  148. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.d.ts.map +1 -0
  149. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.js +26 -0
  150. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.d.ts +2 -0
  151. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.d.ts.map +1 -0
  152. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.js +44 -0
  153. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.d.ts +2 -0
  154. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.d.ts.map +1 -0
  155. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.js +48 -0
  156. package/build/esm/__tests__/modules/client/constants.d.ts +4 -0
  157. package/build/esm/__tests__/modules/client/constants.d.ts.map +1 -0
  158. package/build/esm/__tests__/modules/client/constants.js +4 -0
  159. package/build/esm/__tests__/modules/onboarding.test.d.ts +2 -0
  160. package/build/esm/__tests__/modules/onboarding.test.d.ts.map +1 -0
  161. package/build/esm/__tests__/modules/onboarding.test.js +48 -0
  162. package/build/esm/examples/account_endpoints.d.ts +5 -0
  163. package/build/esm/examples/account_endpoints.d.ts.map +1 -0
  164. package/build/esm/examples/account_endpoints.js +127 -0
  165. package/build/esm/examples/batch_cancel_orders_example.d.ts +2 -0
  166. package/build/esm/examples/batch_cancel_orders_example.d.ts.map +1 -0
  167. package/build/esm/examples/batch_cancel_orders_example.js +88 -0
  168. package/build/esm/examples/composite_example.d.ts +2 -0
  169. package/build/esm/examples/composite_example.d.ts.map +1 -0
  170. package/build/esm/examples/composite_example.js +45 -0
  171. package/build/esm/examples/constants.d.ts +13 -0
  172. package/build/esm/examples/constants.d.ts.map +1 -0
  173. package/build/esm/examples/constants.js +29 -0
  174. package/build/esm/examples/faucet_endpoint.d.ts +5 -0
  175. package/build/esm/examples/faucet_endpoint.d.ts.map +1 -0
  176. package/build/esm/examples/faucet_endpoint.js +21 -0
  177. package/build/esm/examples/gov_add_new_market.d.ts +2 -0
  178. package/build/esm/examples/gov_add_new_market.d.ts.map +1 -0
  179. package/build/esm/examples/gov_add_new_market.js +72 -0
  180. package/build/esm/examples/human_readable_orders.json +86 -0
  181. package/build/esm/examples/human_readable_short_term_orders.json +42 -0
  182. package/build/esm/examples/json-encoding.d.ts +2 -0
  183. package/build/esm/examples/json-encoding.d.ts.map +1 -0
  184. package/build/esm/examples/json-encoding.js +27 -0
  185. package/build/esm/examples/long_term_order_cancel_example.d.ts +2 -0
  186. package/build/esm/examples/long_term_order_cancel_example.d.ts.map +1 -0
  187. package/build/esm/examples/long_term_order_cancel_example.js +58 -0
  188. package/build/esm/examples/markets_endpoints.d.ts +5 -0
  189. package/build/esm/examples/markets_endpoints.d.ts.map +1 -0
  190. package/build/esm/examples/markets_endpoints.js +131 -0
  191. package/build/esm/examples/native_examples.d.ts +2 -0
  192. package/build/esm/examples/native_examples.d.ts.map +1 -0
  193. package/build/esm/examples/native_examples.js +110 -0
  194. package/build/esm/examples/noble_example.d.ts +2 -0
  195. package/build/esm/examples/noble_example.d.ts.map +1 -0
  196. package/build/esm/examples/noble_example.js +83 -0
  197. package/build/esm/examples/optimal_node.d.ts +2 -0
  198. package/build/esm/examples/optimal_node.d.ts.map +1 -0
  199. package/build/esm/examples/optimal_node.js +68 -0
  200. package/build/esm/examples/permissioned_keys_example.d.ts +2 -0
  201. package/build/esm/examples/permissioned_keys_example.d.ts.map +1 -0
  202. package/build/esm/examples/permissioned_keys_example.js +99 -0
  203. package/build/esm/examples/raw_orders.json +130 -0
  204. package/build/esm/examples/short_term_order_cancel_example.d.ts +2 -0
  205. package/build/esm/examples/short_term_order_cancel_example.d.ts.map +1 -0
  206. package/build/esm/examples/short_term_order_cancel_example.js +49 -0
  207. package/build/esm/examples/short_term_order_composite_example.d.ts +2 -0
  208. package/build/esm/examples/short_term_order_composite_example.d.ts.map +1 -0
  209. package/build/esm/examples/short_term_order_composite_example.js +63 -0
  210. package/build/esm/examples/test.d.ts +2 -0
  211. package/build/esm/examples/test.d.ts.map +1 -0
  212. package/build/esm/examples/test.js +45 -0
  213. package/build/esm/examples/transfer_example_deposit.d.ts +2 -0
  214. package/build/esm/examples/transfer_example_deposit.d.ts.map +1 -0
  215. package/build/esm/examples/transfer_example_deposit.js +24 -0
  216. package/build/esm/examples/transfer_example_send.d.ts +2 -0
  217. package/build/esm/examples/transfer_example_send.d.ts.map +1 -0
  218. package/build/esm/examples/transfer_example_send.js +37 -0
  219. package/build/esm/examples/transfer_example_subaccount_transfer.d.ts +2 -0
  220. package/build/esm/examples/transfer_example_subaccount_transfer.d.ts.map +1 -0
  221. package/build/esm/examples/transfer_example_subaccount_transfer.js +24 -0
  222. package/build/esm/examples/transfer_example_withdraw.d.ts +2 -0
  223. package/build/esm/examples/transfer_example_withdraw.d.ts.map +1 -0
  224. package/build/esm/examples/transfer_example_withdraw.js +25 -0
  225. package/build/esm/examples/transfer_example_withdraw_other.d.ts +2 -0
  226. package/build/esm/examples/transfer_example_withdraw_other.d.ts.map +1 -0
  227. package/build/esm/examples/transfer_example_withdraw_other.js +37 -0
  228. package/build/esm/examples/utility_endpoints.d.ts +5 -0
  229. package/build/esm/examples/utility_endpoints.d.ts.map +1 -0
  230. package/build/esm/examples/utility_endpoints.js +40 -0
  231. package/build/esm/examples/validator_get_example.d.ts +2 -0
  232. package/build/esm/examples/validator_get_example.d.ts.map +1 -0
  233. package/build/esm/examples/validator_get_example.js +156 -0
  234. package/build/esm/examples/validator_post_example.d.ts +2 -0
  235. package/build/esm/examples/validator_post_example.d.ts.map +1 -0
  236. package/build/esm/examples/validator_post_example.js +71 -0
  237. package/build/esm/examples/wallet_address.d.ts +2 -0
  238. package/build/esm/examples/wallet_address.d.ts.map +1 -0
  239. package/build/esm/examples/wallet_address.js +17 -0
  240. package/build/esm/examples/websocket_example.d.ts +2 -0
  241. package/build/esm/examples/websocket_example.d.ts.map +1 -0
  242. package/build/esm/examples/websocket_example.js +34 -0
  243. package/build/esm/examples/websocket_orderbook_example.d.ts +2 -0
  244. package/build/esm/examples/websocket_orderbook_example.d.ts.map +1 -0
  245. package/build/esm/examples/websocket_orderbook_example.js +194 -0
  246. package/build/esm/src/clients/composite-client.d.ts +403 -0
  247. package/build/esm/src/clients/composite-client.d.ts.map +1 -0
  248. package/build/esm/src/clients/composite-client.js +781 -0
  249. package/build/esm/src/clients/constants.d.ts +172 -0
  250. package/build/esm/src/clients/constants.d.ts.map +1 -0
  251. package/build/esm/src/clients/constants.js +279 -0
  252. package/build/esm/src/clients/faucet-client.d.ts +18 -0
  253. package/build/esm/src/clients/faucet-client.d.ts.map +1 -0
  254. package/build/esm/src/clients/faucet-client.js +29 -0
  255. package/build/esm/src/clients/helpers/chain-helpers.d.ts +15 -0
  256. package/build/esm/src/clients/helpers/chain-helpers.d.ts.map +1 -0
  257. package/build/esm/src/clients/helpers/chain-helpers.js +163 -0
  258. package/build/esm/src/clients/helpers/request-helpers.d.ts +3 -0
  259. package/build/esm/src/clients/helpers/request-helpers.d.ts.map +1 -0
  260. package/build/esm/src/clients/helpers/request-helpers.js +58 -0
  261. package/build/esm/src/clients/indexer-client.d.ts +40 -0
  262. package/build/esm/src/clients/indexer-client.d.ts.map +1 -0
  263. package/build/esm/src/clients/indexer-client.js +49 -0
  264. package/build/esm/src/clients/lib/axios/axiosRequest.d.ts +9 -0
  265. package/build/esm/src/clients/lib/axios/axiosRequest.d.ts.map +1 -0
  266. package/build/esm/src/clients/lib/axios/axiosRequest.js +28 -0
  267. package/build/esm/src/clients/lib/axios/errors.d.ts +31 -0
  268. package/build/esm/src/clients/lib/axios/errors.d.ts.map +1 -0
  269. package/build/esm/src/clients/lib/axios/errors.js +23 -0
  270. package/build/esm/src/clients/lib/axios/index.d.ts +7 -0
  271. package/build/esm/src/clients/lib/axios/index.d.ts.map +1 -0
  272. package/build/esm/src/clients/lib/axios/index.js +7 -0
  273. package/build/esm/src/clients/lib/axios/types.d.ts +7 -0
  274. package/build/esm/src/clients/lib/axios/types.d.ts.map +1 -0
  275. package/build/esm/src/clients/lib/axios/types.js +8 -0
  276. package/build/esm/src/clients/lib/cctpProto.d.ts +670 -0
  277. package/build/esm/src/clients/lib/cctpProto.d.ts.map +1 -0
  278. package/build/esm/src/clients/lib/cctpProto.js +3234 -0
  279. package/build/esm/src/clients/lib/errors.d.ts +36 -0
  280. package/build/esm/src/clients/lib/errors.d.ts.map +1 -0
  281. package/build/esm/src/clients/lib/errors.js +50 -0
  282. package/build/esm/src/clients/lib/registry.d.ts +4 -0
  283. package/build/esm/src/clients/lib/registry.d.ts.map +1 -0
  284. package/build/esm/src/clients/lib/registry.js +47 -0
  285. package/build/esm/src/clients/modules/account.d.ts +30 -0
  286. package/build/esm/src/clients/modules/account.d.ts.map +1 -0
  287. package/build/esm/src/clients/modules/account.js +217 -0
  288. package/build/esm/src/clients/modules/composer.d.ts +37 -0
  289. package/build/esm/src/clients/modules/composer.d.ts.map +1 -0
  290. package/build/esm/src/clients/modules/composer.js +398 -0
  291. package/build/esm/src/clients/modules/get.d.ts +178 -0
  292. package/build/esm/src/clients/modules/get.d.ts.map +1 -0
  293. package/build/esm/src/clients/modules/get.js +363 -0
  294. package/build/esm/src/clients/modules/local-wallet.d.ts +19 -0
  295. package/build/esm/src/clients/modules/local-wallet.d.ts.map +1 -0
  296. package/build/esm/src/clients/modules/local-wallet.js +53 -0
  297. package/build/esm/src/clients/modules/markets.d.ts +14 -0
  298. package/build/esm/src/clients/modules/markets.d.ts.map +1 -0
  299. package/build/esm/src/clients/modules/markets.js +48 -0
  300. package/build/esm/src/clients/modules/post.d.ts +130 -0
  301. package/build/esm/src/clients/modules/post.d.ts.map +1 -0
  302. package/build/esm/src/clients/modules/post.js +384 -0
  303. package/build/esm/src/clients/modules/proto-includes.d.ts +30 -0
  304. package/build/esm/src/clients/modules/proto-includes.d.ts.map +1 -0
  305. package/build/esm/src/clients/modules/proto-includes.js +30 -0
  306. package/build/esm/src/clients/modules/rest.d.ts +12 -0
  307. package/build/esm/src/clients/modules/rest.d.ts.map +1 -0
  308. package/build/esm/src/clients/modules/rest.js +27 -0
  309. package/build/esm/src/clients/modules/signer.d.ts +19 -0
  310. package/build/esm/src/clients/modules/signer.d.ts.map +1 -0
  311. package/build/esm/src/clients/modules/signer.js +86 -0
  312. package/build/esm/src/clients/modules/tendermintClient.d.ts +52 -0
  313. package/build/esm/src/clients/modules/tendermintClient.d.ts.map +1 -0
  314. package/build/esm/src/clients/modules/tendermintClient.js +133 -0
  315. package/build/esm/src/clients/modules/utility.d.ts +27 -0
  316. package/build/esm/src/clients/modules/utility.d.ts.map +1 -0
  317. package/build/esm/src/clients/modules/utility.js +38 -0
  318. package/build/esm/src/clients/modules/vault.d.ts +12 -0
  319. package/build/esm/src/clients/modules/vault.d.ts.map +1 -0
  320. package/build/esm/src/clients/modules/vault.js +19 -0
  321. package/build/esm/src/clients/native.d.ts +72 -0
  322. package/build/esm/src/clients/native.d.ts.map +1 -0
  323. package/build/esm/src/clients/native.js +1190 -0
  324. package/build/esm/src/clients/noble-client.d.ts +18 -0
  325. package/build/esm/src/clients/noble-client.d.ts.map +1 -0
  326. package/build/esm/src/clients/noble-client.js +71 -0
  327. package/build/esm/src/clients/socket-client.d.ts +146 -0
  328. package/build/esm/src/clients/socket-client.d.ts.map +1 -0
  329. package/build/esm/src/clients/socket-client.js +294 -0
  330. package/build/esm/src/clients/subaccount.d.ts +14 -0
  331. package/build/esm/src/clients/subaccount.d.ts.map +1 -0
  332. package/build/esm/src/clients/subaccount.js +29 -0
  333. package/build/esm/src/clients/types.d.ts +137 -0
  334. package/build/esm/src/clients/types.d.ts.map +1 -0
  335. package/build/esm/src/clients/types.js +26 -0
  336. package/build/esm/src/clients/validator-client.d.ts +35 -0
  337. package/build/esm/src/clients/validator-client.d.ts.map +1 -0
  338. package/build/esm/src/clients/validator-client.js +74 -0
  339. package/build/esm/src/index.d.ts +17 -0
  340. package/build/esm/src/index.d.ts.map +1 -0
  341. package/build/esm/src/index.js +19 -0
  342. package/build/esm/src/lib/constants.d.ts +13 -0
  343. package/build/esm/src/lib/constants.d.ts.map +1 -0
  344. package/build/esm/src/lib/constants.js +20 -0
  345. package/build/esm/src/lib/errors.d.ts +23 -0
  346. package/build/esm/src/lib/errors.d.ts.map +1 -0
  347. package/build/esm/src/lib/errors.js +31 -0
  348. package/build/esm/src/lib/helpers.d.ts +22 -0
  349. package/build/esm/src/lib/helpers.d.ts.map +1 -0
  350. package/build/esm/src/lib/helpers.js +88 -0
  351. package/build/esm/src/lib/onboarding.d.ts +46 -0
  352. package/build/esm/src/lib/onboarding.d.ts.map +1 -0
  353. package/build/esm/src/lib/onboarding.js +69 -0
  354. package/build/esm/src/lib/trading-key-utils.d.ts +22 -0
  355. package/build/esm/src/lib/trading-key-utils.d.ts.map +1 -0
  356. package/build/esm/src/lib/trading-key-utils.js +99 -0
  357. package/build/esm/src/lib/utils.d.ts +39 -0
  358. package/build/esm/src/lib/utils.d.ts.map +1 -0
  359. package/build/esm/src/lib/utils.js +69 -0
  360. package/build/esm/src/lib/validation.d.ts +26 -0
  361. package/build/esm/src/lib/validation.d.ts.map +1 -0
  362. package/build/esm/src/lib/validation.js +138 -0
  363. package/build/esm/src/network_optimizer.d.ts +8 -0
  364. package/build/esm/src/network_optimizer.d.ts.map +1 -0
  365. package/build/esm/src/network_optimizer.js +91 -0
  366. package/build/esm/src/types.d.ts +26 -0
  367. package/build/esm/src/types.d.ts.map +1 -0
  368. package/build/esm/src/types.js +8 -0
  369. package/build/esm/tsconfig.esm.tsbuildinfo +1 -0
  370. package/commitlint.config.js +8 -0
  371. package/examples/account_endpoints.ts +129 -0
  372. package/examples/batch_cancel_orders_example.ts +130 -0
  373. package/examples/composite_example.ts +65 -0
  374. package/examples/constants.ts +42 -0
  375. package/examples/faucet_endpoint.ts +24 -0
  376. package/examples/gov_add_new_market.json +64 -0
  377. package/examples/gov_add_new_market.ts +95 -0
  378. package/examples/human_readable_orders.json +86 -0
  379. package/examples/human_readable_short_term_orders.json +42 -0
  380. package/examples/json-encoding.ts +33 -0
  381. package/examples/long_term_order_cancel_example.ts +87 -0
  382. package/examples/markets_endpoints.ts +134 -0
  383. package/examples/native_examples.ts +151 -0
  384. package/examples/noble_example.ts +107 -0
  385. package/examples/optimal_node.ts +70 -0
  386. package/examples/permissioned_keys_example.ts +162 -0
  387. package/examples/raw_orders.json +130 -0
  388. package/examples/short_term_order_cancel_example.ts +68 -0
  389. package/examples/short_term_order_composite_example.ts +80 -0
  390. package/examples/test.ts +65 -0
  391. package/examples/transfer_example_deposit.ts +28 -0
  392. package/examples/transfer_example_send.ts +60 -0
  393. package/examples/transfer_example_subaccount_transfer.ts +29 -0
  394. package/examples/transfer_example_withdraw.ts +31 -0
  395. package/examples/transfer_example_withdraw_other.ts +60 -0
  396. package/examples/utility_endpoints.ts +42 -0
  397. package/examples/validator_get_example.ts +160 -0
  398. package/examples/validator_post_example.ts +81 -0
  399. package/examples/wallet_address.ts +18 -0
  400. package/examples/websocket_example.ts +44 -0
  401. package/examples/websocket_orderbook_example.ts +239 -0
  402. package/jest.config.js +12 -0
  403. package/jest.globalSetup.js +5 -0
  404. package/jest.setup.js +1 -0
  405. package/package.json +108 -0
  406. package/scripts/bump_version.sh +16 -0
  407. package/scripts/generate-cctp-protos.sh +41 -0
  408. package/scripts/mobile_build_pack.sh +5 -0
  409. package/scripts/publish-if-not-exists.sh +21 -0
  410. package/src/clients/composite-client.ts +1432 -0
  411. package/src/clients/constants.ts +368 -0
  412. package/src/clients/faucet-client.ts +48 -0
  413. package/src/clients/helpers/chain-helpers.ts +231 -0
  414. package/src/clients/helpers/request-helpers.ts +71 -0
  415. package/src/clients/indexer-client.ts +61 -0
  416. package/src/clients/lib/axios/axiosRequest.ts +41 -0
  417. package/src/clients/lib/axios/errors.ts +41 -0
  418. package/src/clients/lib/axios/index.ts +7 -0
  419. package/src/clients/lib/axios/types.ts +6 -0
  420. package/src/clients/lib/cctpProto.ts +4197 -0
  421. package/src/clients/lib/errors.ts +61 -0
  422. package/src/clients/lib/registry.ts +88 -0
  423. package/src/clients/modules/account.ts +388 -0
  424. package/src/clients/modules/composer.ts +646 -0
  425. package/src/clients/modules/get.ts +637 -0
  426. package/src/clients/modules/local-wallet.ts +79 -0
  427. package/src/clients/modules/markets.ts +71 -0
  428. package/src/clients/modules/post.ts +1017 -0
  429. package/src/clients/modules/proto-includes.ts +31 -0
  430. package/src/clients/modules/rest.ts +40 -0
  431. package/src/clients/modules/signer.ts +139 -0
  432. package/src/clients/modules/tendermintClient.ts +164 -0
  433. package/src/clients/modules/utility.ts +47 -0
  434. package/src/clients/modules/vault.ts +23 -0
  435. package/src/clients/native.ts +1464 -0
  436. package/src/clients/noble-client.ts +108 -0
  437. package/src/clients/socket-client.ts +331 -0
  438. package/src/clients/subaccount.ts +57 -0
  439. package/src/clients/types.ts +191 -0
  440. package/src/clients/validator-client.ts +103 -0
  441. package/src/index.ts +20 -0
  442. package/src/lib/constants.ts +28 -0
  443. package/src/lib/errors.ts +38 -0
  444. package/src/lib/helpers.ts +99 -0
  445. package/src/lib/onboarding.ts +96 -0
  446. package/src/lib/trading-key-utils.ts +136 -0
  447. package/src/lib/utils.ts +84 -0
  448. package/src/lib/validation.ts +197 -0
  449. package/src/network_optimizer.ts +132 -0
  450. package/src/types.ts +44 -0
  451. package/tasks.json +16 -0
  452. package/tsconfig.base.json +16 -0
  453. package/tsconfig.cjs.json +9 -0
  454. package/tsconfig.eslint.json +14 -0
  455. package/tsconfig.esm.json +10 -0
  456. package/webpack.config.js +56 -0
@@ -0,0 +1,368 @@
1
+ import { PageRequest } from '@dydxprotocol/v4-proto/src/codegen/cosmos/base/query/v1beta1/pagination';
2
+ import { AxiosProxyConfig } from 'axios';
3
+ import Long from 'long';
4
+
5
+ import { BroadcastOptions, DenomConfig } from './types';
6
+
7
+ export * from '../lib/constants';
8
+
9
+ /**
10
+ * Disclaimer: Note that as of the date hereof, the testnet and dYdX Chain deployment by DYDX
11
+ * token holders are the only known deployments of the dYdX v4 software, and other deployment
12
+ * options may be added.
13
+ * For more information, please see https://dydx.exchange/dydx-chain-front-end-options
14
+ */
15
+
16
+ // Chain ID
17
+ export const DEV_CHAIN_ID = 'dydxprotocol-testnet';
18
+ export const STAGING_CHAIN_ID = 'dydxprotocol-testnet';
19
+ export const TESTNET_CHAIN_ID = 'dydx-testnet-4';
20
+ export const LOCAL_CHAIN_ID = 'localdydxprotocol';
21
+ // For the deployment by DYDX token holders
22
+ export const MAINNET_CHAIN_ID = 'dydx-mainnet-1';
23
+
24
+ // ------------ API URLs ------------
25
+ export enum IndexerApiHost {
26
+ TESTNET = 'https://indexer.v4testnet.dydx.exchange/',
27
+ STAGING = 'https://indexer.v4staging.dydx.exchange/',
28
+ LOCAL = 'http://localhost:3002',
29
+ // For the deployment by DYDX token holders
30
+ MAINNET = 'https://indexer.dydx.trade',
31
+ }
32
+
33
+ export enum IndexerWSHost {
34
+ TESTNET = 'wss://indexer.v4testnet.dydx.exchange/v4/ws',
35
+ STAGING = 'wss://indexer.v4staging.dydx.exchange/v4/ws',
36
+ LOCAL = 'ws://localhost:3003',
37
+ // For the deployment by DYDX token holders
38
+ MAINNET = 'wss://indexer.dydx.trade/v4/ws',
39
+ }
40
+
41
+ export enum FaucetApiHost {
42
+ TESTNET = 'https://faucet.v4testnet.dydx.exchange',
43
+ }
44
+
45
+ export enum ValidatorApiHost {
46
+ TESTNET = 'https://test-dydx-rpc.kingnodes.com',
47
+ STAGING = 'https://validator.v4staging.dydx.exchange',
48
+ LOCAL = 'http://localhost:26657',
49
+ // For the deployment by DYDX token holders
50
+ MAINNET = 'https://dydx-ops-rpc.kingnodes.com:443',
51
+ }
52
+
53
+ // ------------ Network IDs ------------
54
+
55
+ export enum NetworkId {
56
+ TESTNET = 'dydx-testnet-4',
57
+ // For the deployment by DYDX token holders
58
+ MAINNET = 'dydx-mainnet-1',
59
+ }
60
+ export const NETWORK_ID_TESTNET: string = 'dydxprotocol-testnet';
61
+ // For the deployment by DYDX token holders
62
+ export const NETWORK_ID_MAINNET: string = 'dydx-mainnet-1';
63
+
64
+ // ------------ Gas Denoms ------------
65
+ export enum SelectedGasDenom {
66
+ NATIVE = 'NATIVE',
67
+ USDC = 'USDC',
68
+ }
69
+
70
+ // ------------ MsgType URLs ------------
71
+ // Default CosmosSDK
72
+ // x/bank
73
+ export const TYPE_URL_MSG_SEND = '/cosmos.bank.v1beta1.MsgSend';
74
+
75
+ // x/gov
76
+ export const TYPE_URL_MSG_SUBMIT_PROPOSAL = '/cosmos.gov.v1.MsgSubmitProposal';
77
+
78
+ // dYdX Specific
79
+ // x/clob
80
+ export const TYPE_URL_MSG_PLACE_ORDER = '/dydxprotocol.clob.MsgPlaceOrder';
81
+ export const TYPE_URL_MSG_CANCEL_ORDER = '/dydxprotocol.clob.MsgCancelOrder';
82
+ export const TYPE_URL_BATCH_CANCEL = '/dydxprotocol.clob.MsgBatchCancel';
83
+ export const TYPE_URL_MSG_CREATE_CLOB_PAIR = '/dydxprotocol.clob.MsgCreateClobPair';
84
+ export const TYPE_URL_MSG_UPDATE_CLOB_PAIR = '/dydxprotocol.clob.MsgUpdateClobPair';
85
+
86
+ // x/delaymsg
87
+ export const TYPE_URL_MSG_DELAY_MESSAGE = '/dydxprotocol.delaymsg.MsgDelayMessage';
88
+
89
+ // x/listing
90
+ export const TYPE_URL_MSG_CREATE_MARKET_PERMISSIONLESS =
91
+ '/dydxprotocol.listing.MsgCreateMarketPermissionless';
92
+
93
+ // x/perpetuals
94
+ export const TYPE_URL_MSG_CREATE_PERPETUAL = '/dydxprotocol.perpetuals.MsgCreatePerpetual';
95
+
96
+ // x/prices
97
+ export const TYPE_URL_MSG_CREATE_ORACLE_MARKET = '/dydxprotocol.prices.MsgCreateOracleMarket';
98
+
99
+ // x/sending
100
+ export const TYPE_URL_MSG_CREATE_TRANSFER = '/dydxprotocol.sending.MsgCreateTransfer';
101
+ export const TYPE_URL_MSG_WITHDRAW_FROM_SUBACCOUNT =
102
+ '/dydxprotocol.sending.MsgWithdrawFromSubaccount';
103
+ export const TYPE_URL_MSG_DEPOSIT_TO_SUBACCOUNT = '/dydxprotocol.sending.MsgDepositToSubaccount';
104
+
105
+ // x/affiliates
106
+ export const TYPE_URL_MSG_REGISTER_AFFILIATE = '/dydxprotocol.affiliates.MsgRegisterAffiliate';
107
+
108
+ // x/vault
109
+ export const TYPE_URL_MSG_DEPOSIT_TO_MEGAVAULT = '/dydxprotocol.vault.MsgDepositToMegavault';
110
+ export const TYPE_URL_MSG_WITHDRAW_FROM_MEGAVAULT = '/dydxprotocol.vault.MsgWithdrawFromMegavault';
111
+
112
+ // x/staking
113
+ export const TYPE_URL_MSG_DELEGATE = '/cosmos.staking.v1beta1.MsgDelegate';
114
+ export const TYPE_URL_MSG_UNDELEGATE = '/cosmos.staking.v1beta1.MsgUndelegate';
115
+
116
+ // x/distribution
117
+ export const TYPE_URL_MSG_WITHDRAW_DELEGATOR_REWARD =
118
+ '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward';
119
+
120
+ // x/accountplus
121
+ export const TYPE_URL_MSG_ADD_AUTHENTICATOR = '/dydxprotocol.accountplus.MsgAddAuthenticator';
122
+ export const TYPE_URL_MSG_REMOVE_AUTHENTICATOR = '/dydxprotocol.accountplus.MsgRemoveAuthenticator';
123
+
124
+ // ------------ Chain Constants ------------
125
+ // The following are same across different networks / deployments.
126
+ export const GOV_MODULE_ADDRESS = 'dydx10d07y265gmmuvt4z0w9aw880jnsr700jnmapky';
127
+ export const DELAYMSG_MODULE_ADDRESS = 'dydx1mkkvp26dngu6n8rmalaxyp3gwkjuzztq5zx6tr';
128
+ export const MEGAVAULT_MODULE_ADDRESS = 'dydx18tkxrnrkqc2t0lr3zxr5g6a4hdvqksylxqje4r';
129
+
130
+ // ------------ Market Statistic Day Types ------------
131
+ export enum MarketStatisticDay {
132
+ ONE = '1',
133
+ SEVEN = '7',
134
+ THIRTY = '30',
135
+ }
136
+
137
+ // ------------ Order Types ------------
138
+ // This should match OrderType in Abacus
139
+ export enum OrderType {
140
+ LIMIT = 'LIMIT',
141
+ MARKET = 'MARKET',
142
+ STOP_LIMIT = 'STOP_LIMIT',
143
+ TAKE_PROFIT_LIMIT = 'TAKE_PROFIT',
144
+ STOP_MARKET = 'STOP_MARKET',
145
+ TAKE_PROFIT_MARKET = 'TAKE_PROFIT_MARKET',
146
+ }
147
+
148
+ // ------------ Order Side ------------
149
+ // This should match OrderSide in Abacus
150
+ export enum OrderSide {
151
+ BUY = 'BUY',
152
+ SELL = 'SELL',
153
+ }
154
+
155
+ // ------------ Order TimeInForce ------------
156
+ // This should match OrderTimeInForce in Abacus
157
+ export enum OrderTimeInForce {
158
+ GTT = 'GTT',
159
+ IOC = 'IOC',
160
+ FOK = 'FOK',
161
+ }
162
+
163
+ // ------------ Order Execution ------------
164
+ // This should match OrderExecution in Abacus
165
+ export enum OrderExecution {
166
+ DEFAULT = 'DEFAULT',
167
+ IOC = 'IOC',
168
+ FOK = 'FOK',
169
+ POST_ONLY = 'POST_ONLY',
170
+ }
171
+
172
+ // ------------ Order Status ------------
173
+ // This should match OrderStatus in Abacus
174
+ export enum OrderStatus {
175
+ BEST_EFFORT_OPENED = 'BEST_EFFORT_OPENED',
176
+ OPEN = 'OPEN',
177
+ FILLED = 'FILLED',
178
+ BEST_EFFORT_CANCELED = 'BEST_EFFORT_CANCELED',
179
+ CANCELED = 'CANCELED',
180
+ }
181
+
182
+ export enum TickerType {
183
+ PERPETUAL = 'PERPETUAL', // Only PERPETUAL is supported right now
184
+ }
185
+
186
+ export enum PositionStatus {
187
+ OPEN = 'OPEN',
188
+ CLOSED = 'CLOSED',
189
+ LIQUIDATED = 'LIQUIDATED',
190
+ }
191
+
192
+ // ----------- Time Period for Sparklines -------------
193
+
194
+ export enum TimePeriod {
195
+ ONE_DAY = 'ONE_DAY',
196
+ SEVEN_DAYS = 'SEVEN_DAYS',
197
+ }
198
+
199
+ export enum PnlTickInterval {
200
+ HOUR = 'hour',
201
+ day = 'day',
202
+ }
203
+
204
+ // ----------- Authenticators -------------
205
+
206
+ export enum AuthenticatorType {
207
+ ALL_OF = 'AllOf',
208
+ ANY_OF = 'AnyOf',
209
+ SIGNATURE_VERIFICATION = 'SignatureVerification',
210
+ MESSAGE_FILTER = 'MessageFilter',
211
+ CLOB_PAIR_ID_FILTER = 'ClobPairIdFilter',
212
+ SUBACCOUNT_FILTER = 'SubaccountFilter',
213
+ }
214
+
215
+ export interface Authenticator {
216
+ type: AuthenticatorType;
217
+ config: string | Authenticator[];
218
+ }
219
+
220
+ export enum TradingRewardAggregationPeriod {
221
+ DAILY = 'DAILY',
222
+ WEEKLY = 'WEEKLY',
223
+ MONTHLY = 'MONTHLY',
224
+ }
225
+
226
+ // ------------ API Defaults ------------
227
+ export const DEFAULT_API_TIMEOUT: number = 3_000;
228
+
229
+ export const MAX_MEMO_CHARACTERS: number = 256;
230
+
231
+ export const SHORT_BLOCK_WINDOW: number = 20;
232
+
233
+ export const SHORT_BLOCK_FORWARD: number = 15;
234
+
235
+ // Querying
236
+ export const PAGE_REQUEST: PageRequest = {
237
+ key: new Uint8Array(),
238
+ offset: Long.UZERO,
239
+ limit: Long.MAX_UNSIGNED_VALUE,
240
+ countTotal: true,
241
+ reverse: false,
242
+ };
243
+
244
+ export class IndexerConfig {
245
+ public restEndpoint: string;
246
+ public websocketEndpoint: string;
247
+ public proxy?: AxiosProxyConfig;
248
+
249
+ constructor(restEndpoint: string, websocketEndpoint: string, proxy?: AxiosProxyConfig) {
250
+ this.restEndpoint = restEndpoint;
251
+ this.websocketEndpoint = websocketEndpoint;
252
+ this.proxy = proxy;
253
+ }
254
+ }
255
+
256
+ export class ValidatorConfig {
257
+ public restEndpoint: string;
258
+ public chainId: string;
259
+ public denoms: DenomConfig;
260
+ public broadcastOptions?: BroadcastOptions;
261
+ public defaultClientMemo?: string;
262
+ public useTimestampNonce?: boolean;
263
+ public timestampNonceOffsetMs?: number;
264
+
265
+ constructor(
266
+ restEndpoint: string,
267
+ chainId: string,
268
+ denoms: DenomConfig,
269
+ broadcastOptions?: BroadcastOptions,
270
+ defaultClientMemo?: string,
271
+ useTimestampNonce?: boolean,
272
+ timestampNonceOffsetMs?: number,
273
+ ) {
274
+ this.restEndpoint = restEndpoint?.endsWith('/') ? restEndpoint.slice(0, -1) : restEndpoint;
275
+ this.chainId = chainId;
276
+
277
+ this.denoms = denoms;
278
+ this.broadcastOptions = broadcastOptions;
279
+ this.defaultClientMemo = defaultClientMemo;
280
+ this.useTimestampNonce = useTimestampNonce;
281
+ this.timestampNonceOffsetMs = timestampNonceOffsetMs;
282
+ }
283
+ }
284
+
285
+ export class Network {
286
+ constructor(
287
+ public env: string,
288
+ public indexerConfig: IndexerConfig,
289
+ public validatorConfig: ValidatorConfig,
290
+ ) {}
291
+
292
+ static testnet(): Network {
293
+ const indexerConfig = new IndexerConfig(IndexerApiHost.TESTNET, IndexerWSHost.TESTNET);
294
+ const validatorConfig = new ValidatorConfig(
295
+ ValidatorApiHost.TESTNET,
296
+ TESTNET_CHAIN_ID,
297
+ {
298
+ CHAINTOKEN_DENOM: 'adv4tnt',
299
+ USDC_DENOM: 'ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5',
300
+ USDC_GAS_DENOM: 'uusdc',
301
+ USDC_DECIMALS: 6,
302
+ CHAINTOKEN_DECIMALS: 18,
303
+ },
304
+ undefined,
305
+ 'Client Example',
306
+ );
307
+ return new Network('testnet', indexerConfig, validatorConfig);
308
+ }
309
+
310
+ static staging(): Network {
311
+ const indexerConfig = new IndexerConfig(IndexerApiHost.STAGING, IndexerWSHost.STAGING);
312
+ const validatorConfig = new ValidatorConfig(
313
+ ValidatorApiHost.STAGING,
314
+ STAGING_CHAIN_ID,
315
+ {
316
+ CHAINTOKEN_DENOM: 'adv4tnt',
317
+ USDC_DENOM: 'ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5',
318
+ USDC_GAS_DENOM: 'uusdc',
319
+ USDC_DECIMALS: 6,
320
+ CHAINTOKEN_DECIMALS: 18,
321
+ },
322
+ undefined,
323
+ 'Client Example',
324
+ );
325
+ return new Network('staging', indexerConfig, validatorConfig);
326
+ }
327
+
328
+ static local(): Network {
329
+ const indexerConfig = new IndexerConfig(IndexerApiHost.LOCAL, IndexerWSHost.LOCAL);
330
+ const validatorConfig = new ValidatorConfig(
331
+ ValidatorApiHost.LOCAL,
332
+ LOCAL_CHAIN_ID,
333
+ {
334
+ CHAINTOKEN_DENOM: 'adv4tnt',
335
+ USDC_DENOM: 'ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5',
336
+ USDC_GAS_DENOM: 'uusdc',
337
+ USDC_DECIMALS: 6,
338
+ CHAINTOKEN_DECIMALS: 18,
339
+ },
340
+ undefined,
341
+ 'Client Example',
342
+ );
343
+ return new Network('local', indexerConfig, validatorConfig);
344
+ }
345
+
346
+ // For the deployment by DYDX token holders.
347
+ static mainnet(): Network {
348
+ const indexerConfig = new IndexerConfig(IndexerApiHost.MAINNET, IndexerWSHost.MAINNET);
349
+ const validatorConfig = new ValidatorConfig(
350
+ ValidatorApiHost.MAINNET,
351
+ MAINNET_CHAIN_ID,
352
+ {
353
+ CHAINTOKEN_DENOM: 'adydx',
354
+ USDC_DENOM: 'ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5',
355
+ USDC_GAS_DENOM: 'uusdc',
356
+ USDC_DECIMALS: 6,
357
+ CHAINTOKEN_DECIMALS: 18,
358
+ },
359
+ undefined,
360
+ 'Client Example',
361
+ );
362
+ return new Network('mainnet', indexerConfig, validatorConfig);
363
+ }
364
+
365
+ getString(): string {
366
+ return this.env;
367
+ }
368
+ }
@@ -0,0 +1,48 @@
1
+ import { Response } from './lib/axios';
2
+ import RestClient from './modules/rest';
3
+
4
+ export class FaucetClient extends RestClient {
5
+ /**
6
+ * @description For testnet only, add USDC to an subaccount
7
+ *
8
+ * @returns The HTTP response.
9
+ */
10
+ public async fill(
11
+ address: string,
12
+ subaccountNumber: number,
13
+ amount: number,
14
+ headers?: {},
15
+ ): Promise<Response> {
16
+ const uri = '/faucet/tokens';
17
+
18
+ return this.post(
19
+ uri,
20
+ {},
21
+ {
22
+ address,
23
+ subaccountNumber,
24
+ amount,
25
+ },
26
+ headers,
27
+ );
28
+ }
29
+
30
+ /**
31
+ * @description For testnet only, add native tokens to an address
32
+ * @param address destination address for native tokens
33
+ * @param headers requestHeaders
34
+ * @returns The HTTP response.
35
+ */
36
+ public async fillNative(address: string, headers?: {}): Promise<Response> {
37
+ const uri = '/faucet/native-token';
38
+
39
+ return this.post(
40
+ uri,
41
+ {},
42
+ {
43
+ address,
44
+ },
45
+ headers,
46
+ );
47
+ }
48
+ }
@@ -0,0 +1,231 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import Long from 'long';
3
+
4
+ import { OrderType, OrderSide, OrderTimeInForce, OrderExecution } from '../constants';
5
+ import { Order_ConditionType, Order_Side, Order_TimeInForce } from '../modules/proto-includes';
6
+ import { OrderFlags } from '../types';
7
+
8
+ export function round(input: number, base: number): number {
9
+ return BigNumber(input)
10
+ .div(BigNumber(base))
11
+ .integerValue(BigNumber.ROUND_FLOOR)
12
+ .times(BigNumber(base))
13
+ .toNumber();
14
+ }
15
+
16
+ export function calculateQuantums(
17
+ size: number,
18
+ atomicResolution: number,
19
+ stepBaseQuantums: number,
20
+ ): Long {
21
+ const rawQuantums = BigNumber(size).times(
22
+ BigNumber(10).pow(BigNumber(atomicResolution).negated()),
23
+ );
24
+ const quantums = round(rawQuantums.toNumber(), stepBaseQuantums);
25
+ // stepBaseQuantums functions as minimum order size
26
+ const result = Math.max(quantums, stepBaseQuantums);
27
+ return Long.fromNumber(result);
28
+ }
29
+
30
+ export function calculateVaultQuantums(size: number): bigint {
31
+ return BigInt(BigNumber(size).times(1_000_000).toFixed(0, BigNumber.ROUND_FLOOR));
32
+ }
33
+
34
+ export function calculateSubticks(
35
+ price: number,
36
+ atomicResolution: number,
37
+ quantumConversionExponent: number,
38
+ subticksPerTick: number,
39
+ ): Long {
40
+ const QUOTE_QUANTUMS_ATOMIC_RESOLUTION = -6;
41
+ const exponent = atomicResolution - quantumConversionExponent - QUOTE_QUANTUMS_ATOMIC_RESOLUTION;
42
+ const rawSubticks = BigNumber(price).times(BigNumber(10).pow(exponent));
43
+ const subticks = round(rawSubticks.toNumber(), subticksPerTick);
44
+ const result = Math.max(subticks, subticksPerTick);
45
+ return Long.fromNumber(result);
46
+ }
47
+
48
+ export function calculateSide(side: OrderSide): Order_Side {
49
+ return side === OrderSide.BUY ? Order_Side.SIDE_BUY : Order_Side.SIDE_SELL;
50
+ }
51
+
52
+ export function calculateTimeInForce(
53
+ type: OrderType,
54
+ timeInForce?: OrderTimeInForce,
55
+ execution?: OrderExecution,
56
+ postOnly?: boolean,
57
+ ): Order_TimeInForce {
58
+ switch (type) {
59
+ case OrderType.MARKET:
60
+ switch (timeInForce) {
61
+ case OrderTimeInForce.FOK:
62
+ return Order_TimeInForce.TIME_IN_FORCE_FILL_OR_KILL;
63
+
64
+ default:
65
+ return Order_TimeInForce.TIME_IN_FORCE_IOC;
66
+ }
67
+
68
+ case OrderType.LIMIT:
69
+ switch (timeInForce) {
70
+ case OrderTimeInForce.GTT:
71
+ if (postOnly == null) {
72
+ throw new Error('postOnly must be set if order type is LIMIT and timeInForce is GTT');
73
+ }
74
+ return postOnly
75
+ ? Order_TimeInForce.TIME_IN_FORCE_POST_ONLY
76
+ : Order_TimeInForce.TIME_IN_FORCE_UNSPECIFIED;
77
+
78
+ case OrderTimeInForce.FOK:
79
+ return Order_TimeInForce.TIME_IN_FORCE_FILL_OR_KILL;
80
+
81
+ case OrderTimeInForce.IOC:
82
+ return Order_TimeInForce.TIME_IN_FORCE_IOC;
83
+
84
+ default:
85
+ throw new Error('Unexpected code path: timeInForce');
86
+ }
87
+
88
+ case OrderType.STOP_LIMIT:
89
+ case OrderType.TAKE_PROFIT_LIMIT:
90
+ if (execution == null) {
91
+ throw new Error('execution must be set if order type is STOP_LIMIT or TAKE_PROFIT_LIMIT');
92
+ }
93
+ switch (execution) {
94
+ case OrderExecution.DEFAULT:
95
+ return Order_TimeInForce.TIME_IN_FORCE_UNSPECIFIED;
96
+
97
+ case OrderExecution.POST_ONLY:
98
+ return Order_TimeInForce.TIME_IN_FORCE_POST_ONLY;
99
+
100
+ case OrderExecution.FOK:
101
+ return Order_TimeInForce.TIME_IN_FORCE_FILL_OR_KILL;
102
+
103
+ case OrderExecution.IOC:
104
+ return Order_TimeInForce.TIME_IN_FORCE_IOC;
105
+
106
+ default:
107
+ throw new Error('Unexpected code path: timeInForce');
108
+ }
109
+
110
+ case OrderType.STOP_MARKET:
111
+ case OrderType.TAKE_PROFIT_MARKET:
112
+ if (execution == null) {
113
+ throw new Error('execution must be set if order type is STOP_MARKET or TAKE_PROFIT_MARKET');
114
+ }
115
+ switch (execution) {
116
+ case OrderExecution.DEFAULT:
117
+ throw new Error(
118
+ 'Execution value DEFAULT not supported for STOP_MARKET or TAKE_PROFIT_MARKET',
119
+ );
120
+
121
+ case OrderExecution.POST_ONLY:
122
+ throw new Error(
123
+ 'Execution value POST_ONLY not supported for STOP_MARKET or TAKE_PROFIT_MARKET',
124
+ );
125
+
126
+ case OrderExecution.FOK:
127
+ return Order_TimeInForce.TIME_IN_FORCE_FILL_OR_KILL;
128
+
129
+ case OrderExecution.IOC:
130
+ return Order_TimeInForce.TIME_IN_FORCE_IOC;
131
+
132
+ default:
133
+ throw new Error('Unexpected code path: timeInForce');
134
+ }
135
+
136
+ default:
137
+ throw new Error('Unexpected code path: timeInForce');
138
+ }
139
+ }
140
+
141
+ export function calculateOrderFlags(type: OrderType, timeInForce?: OrderTimeInForce): OrderFlags {
142
+ switch (type) {
143
+ case OrderType.MARKET:
144
+ return OrderFlags.SHORT_TERM;
145
+
146
+ case OrderType.LIMIT:
147
+ if (timeInForce === undefined) {
148
+ throw new Error('timeInForce must be set if orderType is LIMIT');
149
+ }
150
+ if (timeInForce === OrderTimeInForce.GTT) {
151
+ return OrderFlags.LONG_TERM;
152
+ } else {
153
+ return OrderFlags.SHORT_TERM;
154
+ }
155
+
156
+ case OrderType.STOP_LIMIT:
157
+ case OrderType.TAKE_PROFIT_LIMIT:
158
+ case OrderType.STOP_MARKET:
159
+ case OrderType.TAKE_PROFIT_MARKET:
160
+ return OrderFlags.CONDITIONAL;
161
+
162
+ default:
163
+ throw new Error('Unexpected code path: orderFlags');
164
+ }
165
+ }
166
+
167
+ export function calculateClientMetadata(orderType: OrderType): number {
168
+ switch (orderType) {
169
+ case OrderType.MARKET:
170
+ case OrderType.STOP_MARKET:
171
+ case OrderType.TAKE_PROFIT_MARKET:
172
+ return 1;
173
+
174
+ default:
175
+ return 0;
176
+ }
177
+ }
178
+
179
+ export function calculateConditionType(orderType: OrderType): Order_ConditionType {
180
+ switch (orderType) {
181
+ case OrderType.LIMIT:
182
+ return Order_ConditionType.CONDITION_TYPE_UNSPECIFIED;
183
+
184
+ case OrderType.MARKET:
185
+ return Order_ConditionType.CONDITION_TYPE_UNSPECIFIED;
186
+
187
+ case OrderType.STOP_LIMIT:
188
+ case OrderType.STOP_MARKET:
189
+ return Order_ConditionType.CONDITION_TYPE_STOP_LOSS;
190
+
191
+ case OrderType.TAKE_PROFIT_LIMIT:
192
+ case OrderType.TAKE_PROFIT_MARKET:
193
+ return Order_ConditionType.CONDITION_TYPE_TAKE_PROFIT;
194
+
195
+ default:
196
+ return Order_ConditionType.CONDITION_TYPE_UNSPECIFIED;
197
+ }
198
+ }
199
+
200
+ export function calculateConditionalOrderTriggerSubticks(
201
+ orderType: OrderType,
202
+ atomicResolution: number,
203
+ quantumConversionExponent: number,
204
+ subticksPerTick: number,
205
+ triggerPrice?: number,
206
+ ): Long {
207
+ switch (orderType) {
208
+ case OrderType.LIMIT:
209
+ case OrderType.MARKET:
210
+ return Long.fromNumber(0);
211
+
212
+ case OrderType.STOP_LIMIT:
213
+ case OrderType.STOP_MARKET:
214
+ case OrderType.TAKE_PROFIT_LIMIT:
215
+ case OrderType.TAKE_PROFIT_MARKET:
216
+ if (triggerPrice === undefined) {
217
+ throw new Error(
218
+ 'triggerPrice must be set if orderType is STOP_LIMIT, STOP_MARKET, TAKE_PROFIT_LIMIT, or TAKE_PROFIT_MARKET',
219
+ );
220
+ }
221
+ return calculateSubticks(
222
+ triggerPrice,
223
+ atomicResolution,
224
+ quantumConversionExponent,
225
+ subticksPerTick,
226
+ );
227
+
228
+ default:
229
+ return Long.fromNumber(0);
230
+ }
231
+ }