@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,130 @@
1
+ import _ from 'lodash';
2
+
3
+ import { BECH32_PREFIX, Order_TimeInForce } from '../src';
4
+ import { CompositeClient, OrderBatchWithMarketId } from '../src/clients/composite-client';
5
+ import { Network, OrderSide } from '../src/clients/constants';
6
+ import LocalWallet from '../src/clients/modules/local-wallet';
7
+ import { SubaccountInfo } from '../src/clients/subaccount';
8
+ import { randomInt, sleep } from '../src/lib/utils';
9
+ import { DYDX_TEST_MNEMONIC, MAX_CLIENT_ID } from './constants';
10
+
11
+ type OrderInfo = {
12
+ marketId: string;
13
+ clientId: number;
14
+ side: OrderSide;
15
+ price: number;
16
+ size: number;
17
+ };
18
+
19
+ const generateShortTermOrdersInfo = (): OrderInfo[] => [
20
+ {
21
+ marketId: 'ETH-USD',
22
+ clientId: randomInt(MAX_CLIENT_ID),
23
+ side: OrderSide.SELL,
24
+ price: 4000,
25
+ size: 0.01,
26
+ },
27
+ {
28
+ marketId: 'ETH-USD',
29
+ clientId: randomInt(MAX_CLIENT_ID),
30
+ side: OrderSide.SELL,
31
+ price: 4200,
32
+ size: 0.02,
33
+ },
34
+ {
35
+ marketId: 'BTC-USD',
36
+ clientId: randomInt(MAX_CLIENT_ID),
37
+ side: OrderSide.BUY,
38
+ price: 40000,
39
+ size: 0.01,
40
+ },
41
+ ];
42
+
43
+ const generateBatchCancelShortTermOrders = (ordersInfo: OrderInfo[]): OrderBatchWithMarketId[] => {
44
+ const ordersGroupedByMarketIds = _.groupBy(ordersInfo, (info) => info.marketId);
45
+ return Object.keys(ordersGroupedByMarketIds).map((marketId) => ({
46
+ marketId,
47
+ clientIds: ordersGroupedByMarketIds[marketId].map((info) => info.clientId),
48
+ }));
49
+ };
50
+
51
+ async function test(): Promise<void> {
52
+ try {
53
+ const wallet = await LocalWallet.fromMnemonic(DYDX_TEST_MNEMONIC, BECH32_PREFIX);
54
+ console.log('**Wallet**', wallet);
55
+
56
+ const network = Network.testnet();
57
+ const client = await CompositeClient.connect(network);
58
+ console.log('**Client**', client);
59
+
60
+ const subaccount = SubaccountInfo.forLocalWallet(wallet, 0);
61
+ const currentBlock = await client.validatorClient.get.latestBlockHeight();
62
+ const goodTilBlock = currentBlock + 10;
63
+
64
+ const shortTermOrdersInfo = generateShortTermOrdersInfo();
65
+ await placeShortTermOrders(client, subaccount, shortTermOrdersInfo, goodTilBlock);
66
+ await sleep(5000);
67
+ await batchCancelOrders(client, subaccount, shortTermOrdersInfo, goodTilBlock);
68
+ } catch (error) {
69
+ console.error('**Test Failed**', error.message);
70
+ }
71
+ }
72
+
73
+ const placeShortTermOrders = async (
74
+ client: CompositeClient,
75
+ subaccount: SubaccountInfo,
76
+ shortTermOrdersInfo: OrderInfo[],
77
+ goodTilBlock: number,
78
+ ): Promise<void> => {
79
+ const orderPromises = shortTermOrdersInfo.map(async (order) => {
80
+ try {
81
+ const tx = await client.placeShortTermOrder(
82
+ subaccount,
83
+ order.marketId,
84
+ order.side,
85
+ order.price,
86
+ order.size,
87
+ order.clientId,
88
+ goodTilBlock,
89
+ Order_TimeInForce.TIME_IN_FORCE_UNSPECIFIED,
90
+ false,
91
+ );
92
+ console.log('**Short Term Order Tx**', tx.hash);
93
+ } catch (error) {
94
+ console.error(
95
+ `**Short Term Order Failed for Market ${order.marketId}, Client ID ${order.clientId}**`,
96
+ error.message,
97
+ );
98
+ }
99
+ });
100
+
101
+ // Wait for all order placements to complete
102
+ await Promise.all(orderPromises);
103
+ };
104
+
105
+ const batchCancelOrders = async (
106
+ client: CompositeClient,
107
+ subaccount: SubaccountInfo,
108
+ shortTermOrdersInfo: OrderInfo[],
109
+ goodTilBlock: number,
110
+ ): Promise<void> => {
111
+ const shortTermOrdersPayload = generateBatchCancelShortTermOrders(shortTermOrdersInfo);
112
+ try {
113
+ const tx = await client.batchCancelShortTermOrdersWithMarketId(
114
+ subaccount,
115
+ shortTermOrdersPayload,
116
+ goodTilBlock + 10,
117
+ );
118
+ console.log('**Batch Cancel Short Term Orders Tx**', tx);
119
+ } catch (error) {
120
+ console.error('**Batch Cancel Short Term Orders Failed**', error.message);
121
+ }
122
+ };
123
+
124
+ test()
125
+ .then(() => {
126
+ console.log('**Batch Cancel Test Completed Successfully**');
127
+ })
128
+ .catch((error) => {
129
+ console.error('**Batch Cancel Test Execution Error**', error.message);
130
+ });
@@ -0,0 +1,65 @@
1
+ import { BECH32_PREFIX } from '../src';
2
+ import { CompositeClient } from '../src/clients/composite-client';
3
+ import {
4
+ Network,
5
+ OrderExecution,
6
+ OrderSide,
7
+ OrderTimeInForce,
8
+ OrderType,
9
+ } from '../src/clients/constants';
10
+ import LocalWallet from '../src/clients/modules/local-wallet';
11
+ import { SubaccountInfo } from '../src/clients/subaccount';
12
+ import { randomInt } from '../src/lib/utils';
13
+ import { DYDX_TEST_MNEMONIC, MAX_CLIENT_ID } from './constants';
14
+ import ordersParams from './human_readable_orders.json';
15
+
16
+ async function sleep(ms: number): Promise<void> {
17
+ return new Promise((resolve) => setTimeout(resolve, ms));
18
+ }
19
+
20
+ async function test(): Promise<void> {
21
+ const wallet = await LocalWallet.fromMnemonic(DYDX_TEST_MNEMONIC, BECH32_PREFIX);
22
+ console.log(wallet);
23
+ const network = Network.testnet();
24
+ const client = await CompositeClient.connect(network);
25
+ console.log('**Client**');
26
+ console.log(client);
27
+ const subaccount = SubaccountInfo.forLocalWallet(wallet, 0);
28
+ for (const orderParams of ordersParams) {
29
+ try {
30
+ const type = OrderType[orderParams.type as keyof typeof OrderType];
31
+ const side = OrderSide[orderParams.side as keyof typeof OrderSide];
32
+ const timeInForceString = orderParams.timeInForce ?? 'GTT';
33
+ const timeInForce = OrderTimeInForce[timeInForceString as keyof typeof OrderTimeInForce];
34
+ const price = orderParams.price ?? 1350;
35
+ const timeInForceSeconds = timeInForce === OrderTimeInForce.GTT ? 60 : 0;
36
+ const postOnly = orderParams.postOnly ?? false;
37
+ const tx = await client.placeOrder(
38
+ subaccount,
39
+ 'ETH-USD',
40
+ type,
41
+ side,
42
+ price,
43
+ 0.01,
44
+ randomInt(MAX_CLIENT_ID),
45
+ timeInForce,
46
+ timeInForceSeconds,
47
+ OrderExecution.DEFAULT,
48
+ postOnly,
49
+ false,
50
+ );
51
+ console.log('**Order Tx**');
52
+ console.log(tx);
53
+ } catch (error) {
54
+ console.log(error.message);
55
+ }
56
+
57
+ await sleep(5000); // wait for placeOrder to complete
58
+ }
59
+ }
60
+
61
+ test()
62
+ .then(() => {})
63
+ .catch((error) => {
64
+ console.log(error.message);
65
+ });
@@ -0,0 +1,42 @@
1
+ import {
2
+ Order_Side,
3
+ Order_TimeInForce,
4
+ } from '@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/order';
5
+ import Long from 'long';
6
+
7
+ import { IPlaceOrder, OrderFlags } from '../src/clients/types';
8
+
9
+ export const DYDX_TEST_ADDRESS = 'dydx14zzueazeh0hj67cghhf9jypslcf9sh2n5k6art';
10
+ export const DYDX_TEST_PRIVATE_KEY =
11
+ 'e92a6595c934c991d3b3e987ea9b3125bf61a076deab3a9cb519787b7b3e8d77';
12
+ export const DYDX_TEST_MNEMONIC =
13
+ 'mirror actor skill push coach wait confirm orchard lunch mobile athlete gossip awake miracle matter bus reopen team ladder lazy list timber render wait';
14
+ export const DYDX_LOCAL_ADDRESS = 'dydx199tqg4wdlnu4qjlxchpd7seg454937hjrknju4';
15
+ export const DYDX_LOCAL_MNEMONIC =
16
+ 'merge panther lobster crazy road hollow amused security before critic about cliff exhibit cause coyote talent happy where lion river tobacco option coconut small';
17
+
18
+ export const DYDX_TEST_MNEMONIC_2 = 'movie yard still copper exile wear brisk chest ride dizzy novel future menu finish radar lunar claim hub middle force turtle mouse frequent embark';
19
+
20
+ // dydx1fxu2ndxwju2evh28js0cflkxn5wxzvlhw4gec5
21
+ export const DYDX_TEST_MNEMONIC_3 = 'crane poverty boil edit response weasel quick almost fringe able upon benefit boil boat narrow innocent enter cradle tongue toward luggage awful mention column';
22
+
23
+ export const MARKET_BTC_USD: string = 'BTC-USD';
24
+ export const PERPETUAL_PAIR_BTC_USD: number = 0;
25
+
26
+ const quantums: Long = new Long(1_000_000_000);
27
+ const subticks: Long = new Long(1_000_000_000);
28
+
29
+ export const MAX_CLIENT_ID = 2 ** 32 - 1;
30
+
31
+ // PlaceOrder variables
32
+ export const defaultOrder: IPlaceOrder = {
33
+ clientId: 0,
34
+ orderFlags: OrderFlags.SHORT_TERM,
35
+ clobPairId: PERPETUAL_PAIR_BTC_USD,
36
+ side: Order_Side.SIDE_BUY,
37
+ quantums,
38
+ subticks,
39
+ timeInForce: Order_TimeInForce.TIME_IN_FORCE_UNSPECIFIED,
40
+ reduceOnly: false,
41
+ clientMetadata: 0,
42
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Simple JS example demostrating filling subaccount with Faucet API
3
+ */
4
+
5
+ import { FaucetApiHost } from '../src/clients/constants';
6
+ import { FaucetClient } from '../src/clients/faucet-client';
7
+ import { DYDX_TEST_ADDRESS } from './constants';
8
+
9
+ async function test(): Promise<void> {
10
+ const client = new FaucetClient(FaucetApiHost.TESTNET);
11
+ const address = DYDX_TEST_ADDRESS;
12
+
13
+ // Use faucet to fill subaccount
14
+ const faucetResponse = await client?.fill(address, 0, 2000);
15
+ console.log(faucetResponse);
16
+ const status = faucetResponse.status;
17
+ console.log(status);
18
+ }
19
+
20
+ test()
21
+ .then(() => {})
22
+ .catch((error) => {
23
+ console.log(error.message);
24
+ });
@@ -0,0 +1,64 @@
1
+ {
2
+ "title": "Add BONK-USD perpetual market",
3
+ "deposit": "10000000000000adv4tnt",
4
+ "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a BONK-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 5 blocks.",
5
+ "messages": [
6
+ {
7
+ "@type": "/dydxprotocol.prices.MsgCreateOracleMarket",
8
+ "authority": "dydx10d07y265gmmuvt4z0w9aw880jnsr700jnmapky",
9
+ "params": {
10
+ "id": 34,
11
+ "pair": "BONK-USD",
12
+ "exponent": -14,
13
+ "minExchanges": 3,
14
+ "minPriceChangePpm": 4000,
15
+ "exchangeConfigJson": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"BONKUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"BONKUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"BONK-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BONK-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"BONK-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"BONK_USDT\",\"adjustByMarket\":\"USDT-USD\"}]}"
16
+ }
17
+ },
18
+ {
19
+ "@type": "/dydxprotocol.perpetuals.MsgCreatePerpetual",
20
+ "authority": "dydx10d07y265gmmuvt4z0w9aw880jnsr700jnmapky",
21
+ "params": {
22
+ "id": 34,
23
+ "marketId": 34,
24
+ "ticker": "BONK-USD",
25
+ "atomicResolution": -1,
26
+ "defaultFundingPpm": 0,
27
+ "liquidityTier": 2
28
+ }
29
+ },
30
+ {
31
+ "@type": "/dydxprotocol.clob.MsgCreateClobPair",
32
+ "authority": "dydx10d07y265gmmuvt4z0w9aw880jnsr700jnmapky",
33
+ "clob_pair": {
34
+ "id": 34,
35
+ "perpetual_clob_metadata": {
36
+ "perpetual_id": 34
37
+ },
38
+ "quantum_conversion_exponent": -9,
39
+ "status": "STATUS_INITIALIZING",
40
+ "step_base_quantums": 1000000,
41
+ "subticks_per_tick": 1000000
42
+ }
43
+ },
44
+ {
45
+ "@type": "/dydxprotocol.delaymsg.MsgDelayMessage",
46
+ "authority": "dydx10d07y265gmmuvt4z0w9aw880jnsr700jnmapky",
47
+ "msg": {
48
+ "@type": "/dydxprotocol.clob.MsgUpdateClobPair",
49
+ "authority": "dydx1mkkvp26dngu6n8rmalaxyp3gwkjuzztq5zx6tr",
50
+ "clob_pair": {
51
+ "id": 34,
52
+ "perpetual_clob_metadata": {
53
+ "perpetual_id": 34
54
+ },
55
+ "quantum_conversion_exponent": -9,
56
+ "status": "STATUS_ACTIVE",
57
+ "step_base_quantums": 1000000,
58
+ "subticks_per_tick": 1000000
59
+ }
60
+ },
61
+ "delay_blocks": 5
62
+ }
63
+ ]
64
+ }
@@ -0,0 +1,95 @@
1
+ import { PerpetualMarketType } from '@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/perpetual';
2
+ import Long from 'long';
3
+
4
+ import { GovAddNewMarketParams, LocalWallet, ProposalStatus } from '../src';
5
+ import { CompositeClient } from '../src/clients/composite-client';
6
+ import { BECH32_PREFIX, Network } from '../src/clients/constants';
7
+ import { getGovAddNewMarketSummary, getGovAddNewMarketTitle, sleep } from '../src/lib/utils';
8
+ import { DYDX_LOCAL_MNEMONIC } from './constants';
9
+
10
+ const INITIAL_DEPOSIT_AMOUNT = 10_000_000_000_000; // 10,000 whole native tokens.
11
+ const MOCK_DATA: GovAddNewMarketParams = {
12
+ // common
13
+ id: 34,
14
+ ticker: 'BONK-USD',
15
+
16
+ // x/prices
17
+ priceExponent: -14,
18
+ minExchanges: 3,
19
+ minPriceChange: 4_000,
20
+ exchangeConfigJson: JSON.stringify({
21
+ exchanges: [
22
+ { exchangeName: 'Binance', ticker: 'BONKUSDT', adjustByMarket: 'USDT-USD' },
23
+ { exchangeName: 'Bybit', ticker: 'BONKUSDT', adjustByMarket: 'USDT-USD' },
24
+ { exchangeName: 'CoinbasePro', ticker: 'BONK-USD' },
25
+ { exchangeName: 'Kucoin', ticker: 'BONK-USDT', adjustByMarket: 'USDT-USD' },
26
+ { exchangeName: 'Okx', ticker: 'BONK-USDT', adjustByMarket: 'USDT-USD' },
27
+ { exchangeName: 'Mexc', ticker: 'BONK_USDT', adjustByMarket: 'USDT-USD' },
28
+ ],
29
+ }),
30
+
31
+ // x/perpetuals
32
+ liquidityTier: 2,
33
+ atomicResolution: -1,
34
+ marketType: PerpetualMarketType.PERPETUAL_MARKET_TYPE_CROSS,
35
+
36
+ // x/clob
37
+ quantumConversionExponent: -9,
38
+ stepBaseQuantums: Long.fromNumber(1_000_000),
39
+ subticksPerTick: 1_000_000,
40
+
41
+ // x/delaymsg
42
+ delayBlocks: 5,
43
+ };
44
+
45
+ // To run this test:
46
+ // npm run build && node build/examples/gov_add_new_market.js
47
+ //
48
+ // Confirmed that the proposals have the exact same content.
49
+ // 1. submit using an example json file
50
+ // dydxprotocold tx gov submit-proposal gov_add_new_market.json \
51
+ // --from alice --keyring-backend test --gas auto --fees 9553225000000000adv4tnt
52
+ // dydxprotocold query gov proposals
53
+ // 2. submit using the file's mock data
54
+ // npm run build && node build/examples/gov_add_new_market.js
55
+ // dydxprotocold query gov proposals
56
+ // 3. then compare the two proposals and ensure they match
57
+ async function test(): Promise<void> {
58
+ console.log('**Start**');
59
+
60
+ const wallet = await LocalWallet.fromMnemonic(DYDX_LOCAL_MNEMONIC, BECH32_PREFIX);
61
+ console.log(wallet);
62
+
63
+ const network = Network.local();
64
+ const client = await CompositeClient.connect(network);
65
+ console.log('**Client**');
66
+ console.log(client);
67
+
68
+ const tx = await client.submitGovAddNewMarketProposal(
69
+ wallet,
70
+ MOCK_DATA,
71
+ getGovAddNewMarketTitle(MOCK_DATA.ticker),
72
+ getGovAddNewMarketSummary(MOCK_DATA.ticker, MOCK_DATA.delayBlocks),
73
+ BigInt(INITIAL_DEPOSIT_AMOUNT).toString(),
74
+ );
75
+ console.log('**Tx**');
76
+ console.log(tx);
77
+
78
+ await sleep(5000);
79
+
80
+ const depositProposals = await client.validatorClient.get.getAllGovProposals(
81
+ ProposalStatus.PROPOSAL_STATUS_DEPOSIT_PERIOD,
82
+ );
83
+ console.log('**Deposit Proposals**');
84
+ console.log(depositProposals);
85
+
86
+ const votingProposals = await client.validatorClient.get.getAllGovProposals(
87
+ ProposalStatus.PROPOSAL_STATUS_VOTING_PERIOD,
88
+ );
89
+ console.log('**Voting Proposals**');
90
+ console.log(votingProposals);
91
+ }
92
+
93
+ test().catch((error) => {
94
+ console.error(error);
95
+ });
@@ -0,0 +1,86 @@
1
+ [
2
+ {
3
+ "type": "LIMIT",
4
+ "timeInForce": "GTT",
5
+ "postOnly": true,
6
+ "side": "BUY",
7
+ "price": 40000
8
+ },
9
+ {
10
+ "type": "LIMIT",
11
+ "timeInForce": "GTT",
12
+ "postOnly": true,
13
+ "side": "SELL",
14
+ "price": 1000
15
+ },
16
+ {
17
+ "type": "LIMIT",
18
+ "timeInForce": "GTT",
19
+ "postOnly": false,
20
+ "side": "BUY",
21
+ "price": 40000
22
+ },
23
+ {
24
+ "type": "LIMIT",
25
+ "timeInForce": "GTT",
26
+ "postOnly": false,
27
+ "side": "SELL",
28
+ "price": 1000
29
+ },
30
+ {
31
+ "type": "LIMIT",
32
+ "timeInForce": "IOC",
33
+ "postOnly": true,
34
+ "side": "BUY",
35
+ "price": 40000
36
+ },
37
+ {
38
+ "type": "LIMIT",
39
+ "timeInForce": "IOC",
40
+ "postOnly": true,
41
+ "side": "SELL",
42
+ "price": 1000
43
+ },
44
+ {
45
+ "type": "LIMIT",
46
+ "timeInForce": "IOC",
47
+ "postOnly": false,
48
+ "side": "BUY",
49
+ "price": 40000
50
+ },
51
+ {
52
+ "type": "LIMIT",
53
+ "timeInForce": "IOC",
54
+ "postOnly": false,
55
+ "side": "SELL",
56
+ "price": 1000
57
+ },
58
+ {
59
+ "type": "LIMIT",
60
+ "timeInForce": "FOK",
61
+ "postOnly": true,
62
+ "side": "BUY",
63
+ "price": 40000
64
+ },
65
+ {
66
+ "type": "LIMIT",
67
+ "timeInForce": "FOK",
68
+ "postOnly": true,
69
+ "side": "SELL",
70
+ "price": 1000
71
+ },
72
+ {
73
+ "type": "LIMIT",
74
+ "timeInForce": "FOK",
75
+ "postOnly": false,
76
+ "side": "BUY",
77
+ "price": 40000
78
+ },
79
+ {
80
+ "type": "LIMIT",
81
+ "timeInForce": "FOK",
82
+ "postOnly": false,
83
+ "side": "SELL",
84
+ "price": 1000
85
+ }
86
+ ]
@@ -0,0 +1,42 @@
1
+ [
2
+ {
3
+ "timeInForce": "DEFAULT",
4
+ "side": "BUY",
5
+ "price": 40000
6
+ },
7
+ {
8
+ "timeInForce": "DEFAULT",
9
+ "side": "SELL",
10
+ "price": 1000
11
+ },
12
+ {
13
+ "timeInForce": "FOK",
14
+ "side": "BUY",
15
+ "price": 1000
16
+ },
17
+ {
18
+ "timeInForce": "FOK",
19
+ "side": "SELL",
20
+ "price": 40000
21
+ },
22
+ {
23
+ "timeInForce": "IOC",
24
+ "side": "BUY",
25
+ "price": 40000
26
+ },
27
+ {
28
+ "timeInForce": "IOC",
29
+ "side": "SELL",
30
+ "price": 1000
31
+ },
32
+ {
33
+ "timeInForce": "POST_ONLY",
34
+ "side": "BUY",
35
+ "price": 1000
36
+ },
37
+ {
38
+ "timeInForce": "POST_ONLY",
39
+ "side": "SELL",
40
+ "price": 40000
41
+ }
42
+ ]
@@ -0,0 +1,33 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import Long from 'long';
3
+
4
+ import { encodeJson } from '../src/lib/helpers';
5
+
6
+ const longValue = Long.fromInt(1, true);
7
+ const objWithLong = {
8
+ longValue,
9
+ };
10
+
11
+ const jsonedWithLong = encodeJson(objWithLong);
12
+ console.log(jsonedWithLong);
13
+
14
+ const bigNumberValue = BigNumber(1);
15
+ const objWithBigNumber = {
16
+ bigNumberValue,
17
+ };
18
+ const jsonedWithBigNumber = encodeJson(objWithBigNumber);
19
+ console.log(jsonedWithBigNumber);
20
+
21
+ const buffer = Buffer.from('this is a tést');
22
+ const objWithBuffer = {
23
+ buffer,
24
+ };
25
+
26
+ // Object.keys(objWithBuffer).forEach((k) => {
27
+ // console.log(k, objWithBuffer[k]); // ERROR!!
28
+ // });
29
+ const isBuffer2 = objWithBuffer.buffer instanceof Uint8Array;
30
+ console.log(isBuffer2);
31
+
32
+ const jsonedWithBuffer = encodeJson(objWithBuffer);
33
+ console.log(jsonedWithBuffer);
@@ -0,0 +1,87 @@
1
+ import { BECH32_PREFIX, OrderFlags } from '../src';
2
+ import { CompositeClient } from '../src/clients/composite-client';
3
+ import {
4
+ Network,
5
+ OrderExecution,
6
+ OrderSide,
7
+ OrderTimeInForce,
8
+ OrderType,
9
+ } from '../src/clients/constants';
10
+ import LocalWallet from '../src/clients/modules/local-wallet';
11
+ import { SubaccountInfo } from '../src/clients/subaccount';
12
+ import { randomInt } from '../src/lib/utils';
13
+ import { DYDX_TEST_MNEMONIC, MAX_CLIENT_ID } from './constants';
14
+
15
+ async function sleep(ms: number): Promise<void> {
16
+ return new Promise((resolve) => setTimeout(resolve, ms));
17
+ }
18
+
19
+ async function test(): Promise<void> {
20
+ const wallet = await LocalWallet.fromMnemonic(DYDX_TEST_MNEMONIC, BECH32_PREFIX);
21
+ console.log(wallet);
22
+ const network = Network.testnet();
23
+ const client = await CompositeClient.connect(network);
24
+ console.log('**Client**');
25
+ console.log(client);
26
+ const subaccount = SubaccountInfo.forLocalWallet(wallet, 0);
27
+
28
+ /*
29
+ Note this example places a stateful order.
30
+ Programmatic traders should generally not use stateful orders for following reasons:
31
+ - Stateful orders received out of order by validators will fail sequence number validation
32
+ and be dropped.
33
+ - Stateful orders have worse time priority since they are only matched after they are included
34
+ on the block.
35
+ - Stateful order rate limits are more restrictive than Short-Term orders, specifically max 2 per
36
+ block / 20 per 100 blocks.
37
+ - Stateful orders can only be canceled after they’ve been included in a block.
38
+ */
39
+ const longTermOrderClientId = randomInt(MAX_CLIENT_ID);
40
+ try {
41
+ // place a long term order
42
+ const tx = await client.placeOrder(
43
+ subaccount,
44
+ 'ETH-USD',
45
+ OrderType.LIMIT,
46
+ OrderSide.SELL,
47
+ 40000,
48
+ 0.01,
49
+ longTermOrderClientId,
50
+ OrderTimeInForce.GTT,
51
+ 60,
52
+ OrderExecution.DEFAULT,
53
+ false,
54
+ false,
55
+ );
56
+ console.log('**Long Term Order Tx**');
57
+ console.log(tx.hash);
58
+ } catch (error) {
59
+ console.log('**Long Term Order Failed**');
60
+ console.log(error.message);
61
+ }
62
+
63
+ await sleep(5000); // wait for placeOrder to complete
64
+
65
+ try {
66
+ // cancel the long term order
67
+ const tx = await client.cancelOrder(
68
+ subaccount,
69
+ longTermOrderClientId,
70
+ OrderFlags.LONG_TERM,
71
+ 'ETH-USD',
72
+ 0,
73
+ 120,
74
+ );
75
+ console.log('**Cancel Long Term Order Tx**');
76
+ console.log(tx);
77
+ } catch (error) {
78
+ console.log('**Cancel Long Term Order Failed**');
79
+ console.log(error.message);
80
+ }
81
+ }
82
+
83
+ test()
84
+ .then(() => {})
85
+ .catch((error) => {
86
+ console.log(error.message);
87
+ });