@ritbit/v4-client-js 1.3.17

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 (412) 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 +209891 -0
  14. package/__native__/__ios__/v4-native-client.js.map +1 -0
  15. package/__tests__/clients/composite-client.test.ts +140 -0
  16. package/__tests__/helpers/baseClients.ts +23 -0
  17. package/__tests__/helpers/constants.ts +130 -0
  18. package/__tests__/lib/helpers.test.ts +53 -0
  19. package/__tests__/lib/util.test.ts +77 -0
  20. package/__tests__/lib/validation.test.ts +289 -0
  21. package/__tests__/modules/client/AccountEndpoints.test.ts +236 -0
  22. package/__tests__/modules/client/FaucetEndpoint.test.ts +14 -0
  23. package/__tests__/modules/client/MarketsEndpoints.test.ts +84 -0
  24. package/__tests__/modules/client/Transfers.test.ts +44 -0
  25. package/__tests__/modules/client/UtilityEndpoints.test.ts +29 -0
  26. package/__tests__/modules/client/ValidatorGetEndpoints.test.ts +50 -0
  27. package/__tests__/modules/client/ValidatorPostEndpoints.test.ts +52 -0
  28. package/__tests__/modules/client/constants.ts +5 -0
  29. package/__tests__/modules/onboarding.test.ts +66 -0
  30. package/build/cjs/clients/composite-client.js +788 -0
  31. package/build/cjs/clients/constants.js +293 -0
  32. package/build/cjs/clients/faucet-client.js +36 -0
  33. package/build/cjs/clients/helpers/chain-helpers.js +178 -0
  34. package/build/cjs/clients/helpers/request-helpers.js +65 -0
  35. package/build/cjs/clients/indexer-client.js +56 -0
  36. package/build/cjs/clients/lib/axios/axiosRequest.js +34 -0
  37. package/build/cjs/clients/lib/axios/errors.js +28 -0
  38. package/build/cjs/clients/lib/axios/index.js +23 -0
  39. package/build/cjs/clients/lib/axios/types.js +11 -0
  40. package/build/cjs/clients/lib/cctpProto.js +3242 -0
  41. package/build/cjs/clients/lib/errors.js +58 -0
  42. package/build/cjs/clients/lib/registry.js +51 -0
  43. package/build/cjs/clients/modules/account.js +223 -0
  44. package/build/cjs/clients/modules/composer.js +404 -0
  45. package/build/cjs/clients/modules/get.js +469 -0
  46. package/build/cjs/clients/modules/local-wallet.js +59 -0
  47. package/build/cjs/clients/modules/markets.js +54 -0
  48. package/build/cjs/clients/modules/post.js +391 -0
  49. package/build/cjs/clients/modules/proto-includes.js +72 -0
  50. package/build/cjs/clients/modules/rest.js +33 -0
  51. package/build/cjs/clients/modules/signer.js +93 -0
  52. package/build/cjs/clients/modules/tendermintClient.js +137 -0
  53. package/build/cjs/clients/modules/utility.js +44 -0
  54. package/build/cjs/clients/modules/vault.js +25 -0
  55. package/build/cjs/clients/noble-client.js +75 -0
  56. package/build/cjs/clients/socket-client.js +301 -0
  57. package/build/cjs/clients/subaccount.js +33 -0
  58. package/build/cjs/clients/types.js +43 -0
  59. package/build/cjs/clients/validator-client.js +81 -0
  60. package/build/cjs/index.js +73 -0
  61. package/build/cjs/lib/constants.js +23 -0
  62. package/build/cjs/lib/errors.js +37 -0
  63. package/build/cjs/lib/helpers.js +98 -0
  64. package/build/cjs/lib/onboarding.js +75 -0
  65. package/build/cjs/lib/trading-key-utils.js +108 -0
  66. package/build/cjs/lib/utils.js +79 -0
  67. package/build/cjs/lib/validation.js +150 -0
  68. package/build/cjs/network_optimizer.js +96 -0
  69. package/build/cjs/package.json +1 -0
  70. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  71. package/build/cjs/types.js +25 -0
  72. package/build/esm/__tests__/clients/composite-client.test.d.ts +2 -0
  73. package/build/esm/__tests__/clients/composite-client.test.d.ts.map +1 -0
  74. package/build/esm/__tests__/clients/composite-client.test.js +128 -0
  75. package/build/esm/__tests__/helpers/baseClients.d.ts +19 -0
  76. package/build/esm/__tests__/helpers/baseClients.d.ts.map +1 -0
  77. package/build/esm/__tests__/helpers/baseClients.js +22 -0
  78. package/build/esm/__tests__/helpers/constants.d.ts +19 -0
  79. package/build/esm/__tests__/helpers/constants.d.ts.map +1 -0
  80. package/build/esm/__tests__/helpers/constants.js +104 -0
  81. package/build/esm/__tests__/lib/helpers.test.d.ts +2 -0
  82. package/build/esm/__tests__/lib/helpers.test.d.ts.map +1 -0
  83. package/build/esm/__tests__/lib/helpers.test.js +40 -0
  84. package/build/esm/__tests__/lib/util.test.d.ts +2 -0
  85. package/build/esm/__tests__/lib/util.test.d.ts.map +1 -0
  86. package/build/esm/__tests__/lib/util.test.js +65 -0
  87. package/build/esm/__tests__/lib/validation.test.d.ts +2 -0
  88. package/build/esm/__tests__/lib/validation.test.d.ts.map +1 -0
  89. package/build/esm/__tests__/lib/validation.test.js +249 -0
  90. package/build/esm/__tests__/modules/client/AccountEndpoints.test.d.ts +2 -0
  91. package/build/esm/__tests__/modules/client/AccountEndpoints.test.d.ts.map +1 -0
  92. package/build/esm/__tests__/modules/client/AccountEndpoints.test.js +169 -0
  93. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.d.ts +2 -0
  94. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.d.ts.map +1 -0
  95. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.js +13 -0
  96. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.d.ts +2 -0
  97. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.d.ts.map +1 -0
  98. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.js +66 -0
  99. package/build/esm/__tests__/modules/client/Transfers.test.d.ts +2 -0
  100. package/build/esm/__tests__/modules/client/Transfers.test.d.ts.map +1 -0
  101. package/build/esm/__tests__/modules/client/Transfers.test.js +39 -0
  102. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.d.ts +2 -0
  103. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.d.ts.map +1 -0
  104. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.js +26 -0
  105. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.d.ts +2 -0
  106. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.d.ts.map +1 -0
  107. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.js +44 -0
  108. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.d.ts +2 -0
  109. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.d.ts.map +1 -0
  110. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.js +48 -0
  111. package/build/esm/__tests__/modules/client/constants.d.ts +4 -0
  112. package/build/esm/__tests__/modules/client/constants.d.ts.map +1 -0
  113. package/build/esm/__tests__/modules/client/constants.js +4 -0
  114. package/build/esm/__tests__/modules/onboarding.test.d.ts +2 -0
  115. package/build/esm/__tests__/modules/onboarding.test.d.ts.map +1 -0
  116. package/build/esm/__tests__/modules/onboarding.test.js +48 -0
  117. package/build/esm/examples/account_endpoints.d.ts +5 -0
  118. package/build/esm/examples/account_endpoints.d.ts.map +1 -0
  119. package/build/esm/examples/account_endpoints.js +127 -0
  120. package/build/esm/examples/batch_cancel_orders_example.d.ts +2 -0
  121. package/build/esm/examples/batch_cancel_orders_example.d.ts.map +1 -0
  122. package/build/esm/examples/batch_cancel_orders_example.js +88 -0
  123. package/build/esm/examples/composite_example.d.ts +2 -0
  124. package/build/esm/examples/composite_example.d.ts.map +1 -0
  125. package/build/esm/examples/composite_example.js +45 -0
  126. package/build/esm/examples/constants.d.ts +13 -0
  127. package/build/esm/examples/constants.d.ts.map +1 -0
  128. package/build/esm/examples/constants.js +29 -0
  129. package/build/esm/examples/faucet_endpoint.d.ts +5 -0
  130. package/build/esm/examples/faucet_endpoint.d.ts.map +1 -0
  131. package/build/esm/examples/faucet_endpoint.js +21 -0
  132. package/build/esm/examples/gov_add_new_market.d.ts +2 -0
  133. package/build/esm/examples/gov_add_new_market.d.ts.map +1 -0
  134. package/build/esm/examples/gov_add_new_market.js +72 -0
  135. package/build/esm/examples/human_readable_orders.json +86 -0
  136. package/build/esm/examples/human_readable_short_term_orders.json +42 -0
  137. package/build/esm/examples/json-encoding.d.ts +2 -0
  138. package/build/esm/examples/json-encoding.d.ts.map +1 -0
  139. package/build/esm/examples/json-encoding.js +27 -0
  140. package/build/esm/examples/long_term_order_cancel_example.d.ts +2 -0
  141. package/build/esm/examples/long_term_order_cancel_example.d.ts.map +1 -0
  142. package/build/esm/examples/long_term_order_cancel_example.js +58 -0
  143. package/build/esm/examples/markets_endpoints.d.ts +5 -0
  144. package/build/esm/examples/markets_endpoints.d.ts.map +1 -0
  145. package/build/esm/examples/markets_endpoints.js +131 -0
  146. package/build/esm/examples/native_examples.d.ts +2 -0
  147. package/build/esm/examples/native_examples.d.ts.map +1 -0
  148. package/build/esm/examples/native_examples.js +110 -0
  149. package/build/esm/examples/noble_example.d.ts +2 -0
  150. package/build/esm/examples/noble_example.d.ts.map +1 -0
  151. package/build/esm/examples/noble_example.js +83 -0
  152. package/build/esm/examples/optimal_node.d.ts +2 -0
  153. package/build/esm/examples/optimal_node.d.ts.map +1 -0
  154. package/build/esm/examples/optimal_node.js +68 -0
  155. package/build/esm/examples/permissioned_keys_example.d.ts +2 -0
  156. package/build/esm/examples/permissioned_keys_example.d.ts.map +1 -0
  157. package/build/esm/examples/permissioned_keys_example.js +99 -0
  158. package/build/esm/examples/raw_orders.json +130 -0
  159. package/build/esm/examples/short_term_order_cancel_example.d.ts +2 -0
  160. package/build/esm/examples/short_term_order_cancel_example.d.ts.map +1 -0
  161. package/build/esm/examples/short_term_order_cancel_example.js +49 -0
  162. package/build/esm/examples/short_term_order_composite_example.d.ts +2 -0
  163. package/build/esm/examples/short_term_order_composite_example.d.ts.map +1 -0
  164. package/build/esm/examples/short_term_order_composite_example.js +63 -0
  165. package/build/esm/examples/test.d.ts +2 -0
  166. package/build/esm/examples/test.d.ts.map +1 -0
  167. package/build/esm/examples/test.js +45 -0
  168. package/build/esm/examples/transfer_example_deposit.d.ts +2 -0
  169. package/build/esm/examples/transfer_example_deposit.d.ts.map +1 -0
  170. package/build/esm/examples/transfer_example_deposit.js +24 -0
  171. package/build/esm/examples/transfer_example_send.d.ts +2 -0
  172. package/build/esm/examples/transfer_example_send.d.ts.map +1 -0
  173. package/build/esm/examples/transfer_example_send.js +37 -0
  174. package/build/esm/examples/transfer_example_subaccount_transfer.d.ts +2 -0
  175. package/build/esm/examples/transfer_example_subaccount_transfer.d.ts.map +1 -0
  176. package/build/esm/examples/transfer_example_subaccount_transfer.js +24 -0
  177. package/build/esm/examples/transfer_example_withdraw.d.ts +2 -0
  178. package/build/esm/examples/transfer_example_withdraw.d.ts.map +1 -0
  179. package/build/esm/examples/transfer_example_withdraw.js +25 -0
  180. package/build/esm/examples/transfer_example_withdraw_other.d.ts +2 -0
  181. package/build/esm/examples/transfer_example_withdraw_other.d.ts.map +1 -0
  182. package/build/esm/examples/transfer_example_withdraw_other.js +37 -0
  183. package/build/esm/examples/utility_endpoints.d.ts +5 -0
  184. package/build/esm/examples/utility_endpoints.d.ts.map +1 -0
  185. package/build/esm/examples/utility_endpoints.js +40 -0
  186. package/build/esm/examples/validator_get_example.d.ts +2 -0
  187. package/build/esm/examples/validator_get_example.d.ts.map +1 -0
  188. package/build/esm/examples/validator_get_example.js +156 -0
  189. package/build/esm/examples/validator_post_example.d.ts +2 -0
  190. package/build/esm/examples/validator_post_example.d.ts.map +1 -0
  191. package/build/esm/examples/validator_post_example.js +71 -0
  192. package/build/esm/examples/wallet_address.d.ts +2 -0
  193. package/build/esm/examples/wallet_address.d.ts.map +1 -0
  194. package/build/esm/examples/wallet_address.js +17 -0
  195. package/build/esm/examples/websocket_example.d.ts +2 -0
  196. package/build/esm/examples/websocket_example.d.ts.map +1 -0
  197. package/build/esm/examples/websocket_example.js +34 -0
  198. package/build/esm/examples/websocket_orderbook_example.d.ts +2 -0
  199. package/build/esm/examples/websocket_orderbook_example.d.ts.map +1 -0
  200. package/build/esm/examples/websocket_orderbook_example.js +194 -0
  201. package/build/esm/src/clients/composite-client.d.ts +406 -0
  202. package/build/esm/src/clients/composite-client.d.ts.map +1 -0
  203. package/build/esm/src/clients/composite-client.js +781 -0
  204. package/build/esm/src/clients/constants.d.ts +170 -0
  205. package/build/esm/src/clients/constants.d.ts.map +1 -0
  206. package/build/esm/src/clients/constants.js +269 -0
  207. package/build/esm/src/clients/faucet-client.d.ts +18 -0
  208. package/build/esm/src/clients/faucet-client.d.ts.map +1 -0
  209. package/build/esm/src/clients/faucet-client.js +29 -0
  210. package/build/esm/src/clients/helpers/chain-helpers.d.ts +15 -0
  211. package/build/esm/src/clients/helpers/chain-helpers.d.ts.map +1 -0
  212. package/build/esm/src/clients/helpers/chain-helpers.js +163 -0
  213. package/build/esm/src/clients/helpers/request-helpers.d.ts +3 -0
  214. package/build/esm/src/clients/helpers/request-helpers.d.ts.map +1 -0
  215. package/build/esm/src/clients/helpers/request-helpers.js +58 -0
  216. package/build/esm/src/clients/indexer-client.d.ts +40 -0
  217. package/build/esm/src/clients/indexer-client.d.ts.map +1 -0
  218. package/build/esm/src/clients/indexer-client.js +49 -0
  219. package/build/esm/src/clients/lib/axios/axiosRequest.d.ts +9 -0
  220. package/build/esm/src/clients/lib/axios/axiosRequest.d.ts.map +1 -0
  221. package/build/esm/src/clients/lib/axios/axiosRequest.js +28 -0
  222. package/build/esm/src/clients/lib/axios/errors.d.ts +31 -0
  223. package/build/esm/src/clients/lib/axios/errors.d.ts.map +1 -0
  224. package/build/esm/src/clients/lib/axios/errors.js +23 -0
  225. package/build/esm/src/clients/lib/axios/index.d.ts +7 -0
  226. package/build/esm/src/clients/lib/axios/index.d.ts.map +1 -0
  227. package/build/esm/src/clients/lib/axios/index.js +7 -0
  228. package/build/esm/src/clients/lib/axios/types.d.ts +7 -0
  229. package/build/esm/src/clients/lib/axios/types.d.ts.map +1 -0
  230. package/build/esm/src/clients/lib/axios/types.js +8 -0
  231. package/build/esm/src/clients/lib/cctpProto.d.ts +670 -0
  232. package/build/esm/src/clients/lib/cctpProto.d.ts.map +1 -0
  233. package/build/esm/src/clients/lib/cctpProto.js +3234 -0
  234. package/build/esm/src/clients/lib/errors.d.ts +38 -0
  235. package/build/esm/src/clients/lib/errors.d.ts.map +1 -0
  236. package/build/esm/src/clients/lib/errors.js +50 -0
  237. package/build/esm/src/clients/lib/registry.d.ts +4 -0
  238. package/build/esm/src/clients/lib/registry.d.ts.map +1 -0
  239. package/build/esm/src/clients/lib/registry.js +47 -0
  240. package/build/esm/src/clients/modules/account.d.ts +30 -0
  241. package/build/esm/src/clients/modules/account.d.ts.map +1 -0
  242. package/build/esm/src/clients/modules/account.js +217 -0
  243. package/build/esm/src/clients/modules/composer.d.ts +37 -0
  244. package/build/esm/src/clients/modules/composer.d.ts.map +1 -0
  245. package/build/esm/src/clients/modules/composer.js +397 -0
  246. package/build/esm/src/clients/modules/get.d.ts +193 -0
  247. package/build/esm/src/clients/modules/get.d.ts.map +1 -0
  248. package/build/esm/src/clients/modules/get.js +429 -0
  249. package/build/esm/src/clients/modules/local-wallet.d.ts +19 -0
  250. package/build/esm/src/clients/modules/local-wallet.d.ts.map +1 -0
  251. package/build/esm/src/clients/modules/local-wallet.js +53 -0
  252. package/build/esm/src/clients/modules/markets.d.ts +14 -0
  253. package/build/esm/src/clients/modules/markets.d.ts.map +1 -0
  254. package/build/esm/src/clients/modules/markets.js +48 -0
  255. package/build/esm/src/clients/modules/post.d.ts +133 -0
  256. package/build/esm/src/clients/modules/post.d.ts.map +1 -0
  257. package/build/esm/src/clients/modules/post.js +384 -0
  258. package/build/esm/src/clients/modules/proto-includes.d.ts +30 -0
  259. package/build/esm/src/clients/modules/proto-includes.d.ts.map +1 -0
  260. package/build/esm/src/clients/modules/proto-includes.js +32 -0
  261. package/build/esm/src/clients/modules/rest.d.ts +12 -0
  262. package/build/esm/src/clients/modules/rest.d.ts.map +1 -0
  263. package/build/esm/src/clients/modules/rest.js +27 -0
  264. package/build/esm/src/clients/modules/signer.d.ts +19 -0
  265. package/build/esm/src/clients/modules/signer.d.ts.map +1 -0
  266. package/build/esm/src/clients/modules/signer.js +86 -0
  267. package/build/esm/src/clients/modules/tendermintClient.d.ts +54 -0
  268. package/build/esm/src/clients/modules/tendermintClient.d.ts.map +1 -0
  269. package/build/esm/src/clients/modules/tendermintClient.js +133 -0
  270. package/build/esm/src/clients/modules/utility.d.ts +27 -0
  271. package/build/esm/src/clients/modules/utility.d.ts.map +1 -0
  272. package/build/esm/src/clients/modules/utility.js +38 -0
  273. package/build/esm/src/clients/modules/vault.d.ts +12 -0
  274. package/build/esm/src/clients/modules/vault.d.ts.map +1 -0
  275. package/build/esm/src/clients/modules/vault.js +19 -0
  276. package/build/esm/src/clients/native.d.ts +75 -0
  277. package/build/esm/src/clients/native.d.ts.map +1 -0
  278. package/build/esm/src/clients/native.js +1237 -0
  279. package/build/esm/src/clients/noble-client.d.ts +18 -0
  280. package/build/esm/src/clients/noble-client.d.ts.map +1 -0
  281. package/build/esm/src/clients/noble-client.js +71 -0
  282. package/build/esm/src/clients/socket-client.d.ts +146 -0
  283. package/build/esm/src/clients/socket-client.d.ts.map +1 -0
  284. package/build/esm/src/clients/socket-client.js +294 -0
  285. package/build/esm/src/clients/subaccount.d.ts +14 -0
  286. package/build/esm/src/clients/subaccount.d.ts.map +1 -0
  287. package/build/esm/src/clients/subaccount.js +29 -0
  288. package/build/esm/src/clients/types.d.ts +137 -0
  289. package/build/esm/src/clients/types.d.ts.map +1 -0
  290. package/build/esm/src/clients/types.js +26 -0
  291. package/build/esm/src/clients/validator-client.d.ts +35 -0
  292. package/build/esm/src/clients/validator-client.d.ts.map +1 -0
  293. package/build/esm/src/clients/validator-client.js +74 -0
  294. package/build/esm/src/index.d.ts +17 -0
  295. package/build/esm/src/index.d.ts.map +1 -0
  296. package/build/esm/src/index.js +19 -0
  297. package/build/esm/src/lib/constants.d.ts +13 -0
  298. package/build/esm/src/lib/constants.d.ts.map +1 -0
  299. package/build/esm/src/lib/constants.js +20 -0
  300. package/build/esm/src/lib/errors.d.ts +23 -0
  301. package/build/esm/src/lib/errors.d.ts.map +1 -0
  302. package/build/esm/src/lib/errors.js +31 -0
  303. package/build/esm/src/lib/helpers.d.ts +22 -0
  304. package/build/esm/src/lib/helpers.d.ts.map +1 -0
  305. package/build/esm/src/lib/helpers.js +88 -0
  306. package/build/esm/src/lib/onboarding.d.ts +46 -0
  307. package/build/esm/src/lib/onboarding.d.ts.map +1 -0
  308. package/build/esm/src/lib/onboarding.js +69 -0
  309. package/build/esm/src/lib/trading-key-utils.d.ts +22 -0
  310. package/build/esm/src/lib/trading-key-utils.d.ts.map +1 -0
  311. package/build/esm/src/lib/trading-key-utils.js +99 -0
  312. package/build/esm/src/lib/utils.d.ts +39 -0
  313. package/build/esm/src/lib/utils.d.ts.map +1 -0
  314. package/build/esm/src/lib/utils.js +69 -0
  315. package/build/esm/src/lib/validation.d.ts +26 -0
  316. package/build/esm/src/lib/validation.d.ts.map +1 -0
  317. package/build/esm/src/lib/validation.js +138 -0
  318. package/build/esm/src/network_optimizer.d.ts +8 -0
  319. package/build/esm/src/network_optimizer.d.ts.map +1 -0
  320. package/build/esm/src/network_optimizer.js +91 -0
  321. package/build/esm/src/types.d.ts +26 -0
  322. package/build/esm/src/types.d.ts.map +1 -0
  323. package/build/esm/src/types.js +8 -0
  324. package/build/esm/tsconfig.esm.tsbuildinfo +1 -0
  325. package/commitlint.config.js +8 -0
  326. package/examples/account_endpoints.ts +129 -0
  327. package/examples/batch_cancel_orders_example.ts +130 -0
  328. package/examples/composite_example.ts +65 -0
  329. package/examples/constants.ts +42 -0
  330. package/examples/faucet_endpoint.ts +24 -0
  331. package/examples/gov_add_new_market.json +64 -0
  332. package/examples/gov_add_new_market.ts +95 -0
  333. package/examples/human_readable_orders.json +86 -0
  334. package/examples/human_readable_short_term_orders.json +42 -0
  335. package/examples/json-encoding.ts +33 -0
  336. package/examples/long_term_order_cancel_example.ts +87 -0
  337. package/examples/markets_endpoints.ts +134 -0
  338. package/examples/native_examples.ts +151 -0
  339. package/examples/noble_example.ts +107 -0
  340. package/examples/optimal_node.ts +70 -0
  341. package/examples/permissioned_keys_example.ts +162 -0
  342. package/examples/raw_orders.json +130 -0
  343. package/examples/short_term_order_cancel_example.ts +68 -0
  344. package/examples/short_term_order_composite_example.ts +80 -0
  345. package/examples/test.ts +65 -0
  346. package/examples/transfer_example_deposit.ts +28 -0
  347. package/examples/transfer_example_send.ts +60 -0
  348. package/examples/transfer_example_subaccount_transfer.ts +29 -0
  349. package/examples/transfer_example_withdraw.ts +31 -0
  350. package/examples/transfer_example_withdraw_other.ts +60 -0
  351. package/examples/utility_endpoints.ts +42 -0
  352. package/examples/validator_get_example.ts +160 -0
  353. package/examples/validator_post_example.ts +81 -0
  354. package/examples/wallet_address.ts +18 -0
  355. package/examples/websocket_example.ts +44 -0
  356. package/examples/websocket_orderbook_example.ts +239 -0
  357. package/jest.config.js +12 -0
  358. package/jest.globalSetup.js +5 -0
  359. package/jest.setup.js +1 -0
  360. package/package.json +113 -0
  361. package/ritbit-v4-client-js-1.3.17.tgz +0 -0
  362. package/scripts/bump_version.sh +16 -0
  363. package/scripts/generate-cctp-protos.sh +41 -0
  364. package/scripts/mobile_build_pack.sh +5 -0
  365. package/scripts/publish-if-not-exists.sh +21 -0
  366. package/src/clients/composite-client.ts +1431 -0
  367. package/src/clients/constants.ts +358 -0
  368. package/src/clients/faucet-client.ts +48 -0
  369. package/src/clients/helpers/chain-helpers.ts +231 -0
  370. package/src/clients/helpers/request-helpers.ts +71 -0
  371. package/src/clients/indexer-client.ts +61 -0
  372. package/src/clients/lib/axios/axiosRequest.ts +41 -0
  373. package/src/clients/lib/axios/errors.ts +41 -0
  374. package/src/clients/lib/axios/index.ts +7 -0
  375. package/src/clients/lib/axios/types.ts +6 -0
  376. package/src/clients/lib/cctpProto.ts +4197 -0
  377. package/src/clients/lib/errors.ts +63 -0
  378. package/src/clients/lib/registry.ts +88 -0
  379. package/src/clients/modules/account.ts +388 -0
  380. package/src/clients/modules/composer.ts +645 -0
  381. package/src/clients/modules/get.ts +740 -0
  382. package/src/clients/modules/local-wallet.ts +79 -0
  383. package/src/clients/modules/markets.ts +71 -0
  384. package/src/clients/modules/post.ts +1016 -0
  385. package/src/clients/modules/proto-includes.ts +33 -0
  386. package/src/clients/modules/rest.ts +40 -0
  387. package/src/clients/modules/signer.ts +139 -0
  388. package/src/clients/modules/tendermintClient.ts +168 -0
  389. package/src/clients/modules/utility.ts +47 -0
  390. package/src/clients/modules/vault.ts +23 -0
  391. package/src/clients/native.ts +1508 -0
  392. package/src/clients/noble-client.ts +108 -0
  393. package/src/clients/socket-client.ts +331 -0
  394. package/src/clients/subaccount.ts +57 -0
  395. package/src/clients/types.ts +191 -0
  396. package/src/clients/validator-client.ts +103 -0
  397. package/src/index.ts +20 -0
  398. package/src/lib/constants.ts +28 -0
  399. package/src/lib/errors.ts +38 -0
  400. package/src/lib/helpers.ts +99 -0
  401. package/src/lib/onboarding.ts +96 -0
  402. package/src/lib/trading-key-utils.ts +136 -0
  403. package/src/lib/utils.ts +84 -0
  404. package/src/lib/validation.ts +197 -0
  405. package/src/network_optimizer.ts +132 -0
  406. package/src/types.ts +44 -0
  407. package/tasks.json +16 -0
  408. package/tsconfig.base.json +15 -0
  409. package/tsconfig.cjs.json +20 -0
  410. package/tsconfig.eslint.json +14 -0
  411. package/tsconfig.esm.json +11 -0
  412. package/webpack.config.js +56 -0
@@ -0,0 +1,8 @@
1
+ module.exports = {
2
+ extends: ['@commitlint/config-conventional'],
3
+ rules: {
4
+ 'subject-case': [0, 'never'],
5
+ 'header-max-length': [2, 'always', 120],
6
+ 'body-max-line-length': [0, 'always', 120],
7
+ },
8
+ };
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Simple JS example demostrating accessing subaccount data with Indexer REST endpoints
3
+ */
4
+
5
+ import { Network } from '../src/clients/constants';
6
+ import { IndexerClient } from '../src/clients/indexer-client';
7
+ import { DYDX_TEST_ADDRESS } from './constants';
8
+
9
+ async function test(): Promise<void> {
10
+ const client = new IndexerClient(Network.testnet().indexerConfig);
11
+ const address = DYDX_TEST_ADDRESS;
12
+
13
+ // Get subaccounts
14
+ try {
15
+ const response = await client.account.getSubaccounts(address);
16
+ console.log(response);
17
+ const subaccounts = response.subaccounts;
18
+ console.log(subaccounts);
19
+ const subaccount = subaccounts[0];
20
+ const subaccountNumber = subaccount.subaccountNumber;
21
+ console.log(subaccountNumber);
22
+ } catch (error) {
23
+ console.log(error.message);
24
+ }
25
+
26
+ // Get subaccount 0
27
+ try {
28
+ const response = await client.account.getSubaccount(address, 0);
29
+ console.log(response);
30
+ const subaccount = response.subaccount;
31
+ console.log(subaccount);
32
+ const subaccountNumber = subaccount.subaccountNumber;
33
+ console.log(subaccountNumber);
34
+ } catch (error) {
35
+ console.log(error.message);
36
+ }
37
+
38
+ // Get asset positions
39
+ try {
40
+ const response = await client.account.getSubaccountAssetPositions(address, 0);
41
+ console.log(response);
42
+ const positions = response.positions;
43
+ console.log(positions);
44
+ if (positions.length > 0) {
45
+ const positions0 = positions[0];
46
+ console.log(positions0);
47
+ }
48
+ } catch (error) {
49
+ console.log(error.message);
50
+ }
51
+
52
+ // Get perp positions
53
+ try {
54
+ const response = await client.account.getSubaccountPerpetualPositions(address, 0);
55
+ console.log(response);
56
+ const positions = response.positions;
57
+ console.log(positions);
58
+ if (positions.length > 0) {
59
+ const positions0 = positions[0];
60
+ console.log(positions0);
61
+ }
62
+ } catch (error) {
63
+ console.log(error.message);
64
+ }
65
+
66
+ // Get transfers
67
+ try {
68
+ const response = await client.account.getSubaccountTransfers(address, 0);
69
+ console.log(response);
70
+ const transfers = response.transfers;
71
+ console.log(transfers);
72
+ if (transfers.length > 0) {
73
+ const transfer0 = transfers[0];
74
+ console.log(transfer0);
75
+ }
76
+ } catch (error) {
77
+ console.log(error.message);
78
+ }
79
+
80
+ // Get orders
81
+ try {
82
+ const response = await client.account.getSubaccountOrders(address, 0);
83
+ console.log(response);
84
+ const orders = response;
85
+ console.log(orders);
86
+ if (orders.length > 0) {
87
+ const order0 = orders[0];
88
+ console.log(order0);
89
+ const order0Id = order0.id;
90
+ console.log(order0Id);
91
+ }
92
+ } catch (error) {
93
+ console.log(error.message);
94
+ }
95
+
96
+ // Get fills
97
+ try {
98
+ const response = await client.account.getSubaccountFills(address, 0);
99
+ console.log(response);
100
+ const fills = response.fills;
101
+ console.log(fills);
102
+ if (fills.length > 0) {
103
+ const fill0 = fills[0];
104
+ console.log(fill0);
105
+ }
106
+ } catch (error) {
107
+ console.log(error.message);
108
+ }
109
+
110
+ // Get historical pnl
111
+ try {
112
+ const response = await client.account.getSubaccountHistoricalPNLs(address, 0);
113
+ console.log(response);
114
+ const historicalPnl = response.historicalPnl;
115
+ console.log(historicalPnl);
116
+ if (historicalPnl.length > 0) {
117
+ const historicalPnl0 = historicalPnl[0];
118
+ console.log(historicalPnl0);
119
+ }
120
+ } catch (error) {
121
+ console.log(error.message);
122
+ }
123
+ }
124
+
125
+ test()
126
+ .then(() => {})
127
+ .catch((error) => {
128
+ console.log(error.message);
129
+ });
@@ -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 '@ritbit/v4-proto/src/codegen/ritbit/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": "/ritbit.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": "/ritbit.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": "/ritbit.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": "/ritbit.delaymsg.MsgDelayMessage",
46
+ "authority": "dydx10d07y265gmmuvt4z0w9aw880jnsr700jnmapky",
47
+ "msg": {
48
+ "@type": "/ritbit.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 '@ritbit/v4-proto/src/codegen/ritbit/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
+ // ritbitd tx gov submit-proposal gov_add_new_market.json \
51
+ // --from alice --keyring-backend test --gas auto --fees 9553225000000000adv4tnt
52
+ // ritbitd 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
+ // ritbitd 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
+ ]