@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,197 @@
1
+ import { decode } from 'bech32';
2
+ import Long from 'long';
3
+
4
+ import { BECH32_PREFIX, MAX_SUBACCOUNT_NUMBER, MAX_UINT_32 } from '../clients/constants';
5
+ import {
6
+ Transfer,
7
+ OrderFlags,
8
+ ICancelOrder,
9
+ IPlaceOrder,
10
+ IBatchCancelOrder,
11
+ } from '../clients/types';
12
+ import { UserError } from './errors';
13
+
14
+ /**
15
+ * @describe validatePlaceOrderMessage validates that an order to place has fields that would be
16
+ * valid on-chain.
17
+ */
18
+ export function validatePlaceOrderMessage(
19
+ subaccountNumber: number,
20
+ order: IPlaceOrder,
21
+ ): UserError | undefined {
22
+ if (!verifyNumberIsUint32(order.clientId)) {
23
+ return new UserError(`clientId: ${order.clientId} is not a valid uint32`);
24
+ }
25
+ if (order.quantums.lessThanOrEqual(Long.ZERO)) {
26
+ return new UserError(`quantums: ${order.quantums} cannot be <= 0`);
27
+ }
28
+ if (order.subticks.lessThanOrEqual(Long.ZERO)) {
29
+ return new UserError(`subticks: ${order.subticks} cannot be <= 0`);
30
+ }
31
+ if (!verifySubaccountNumber(subaccountNumber)) {
32
+ return new UserError(
33
+ `subaccountNumber: ${subaccountNumber} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
34
+ );
35
+ }
36
+ if (!isStatefulOrder(order.orderFlags) && !verifyGoodTilBlock(order.goodTilBlock)) {
37
+ return new UserError(`goodTilBlock: ${order.goodTilBlock} is not a valid uint32 or is 0`);
38
+ }
39
+ if (isStatefulOrder(order.orderFlags) && !verifyGoodTilBlockTime(order.goodTilBlockTime)) {
40
+ return new UserError(
41
+ `goodTilBlockTime: ${order.goodTilBlockTime} is not a valid uint32 or is 0`,
42
+ );
43
+ }
44
+
45
+ return undefined;
46
+ }
47
+
48
+ /**
49
+ * @describe validateCancelOrderMessage validates that an order to cancel has fields that would be
50
+ * valid on-chain.
51
+ */
52
+ export function validateCancelOrderMessage(
53
+ subaccountNumber: number,
54
+ order: ICancelOrder,
55
+ ): UserError | undefined {
56
+ if (!verifyNumberIsUint32(order.clientId)) {
57
+ return new UserError(`clientId: ${order.clientId} is not a valid uint32`);
58
+ }
59
+ if (!isStatefulOrder(order.orderFlags) && !verifyGoodTilBlock(order.goodTilBlock)) {
60
+ return new UserError(`goodTilBlock: ${order.goodTilBlock} is not a valid uint32 or is 0`);
61
+ }
62
+ if (!isStatefulOrder(order.orderFlags) && order.goodTilBlockTime !== undefined) {
63
+ return new UserError(
64
+ `goodTilBlockTime is ${order.goodTilBlockTime}, but should not be set for non-stateful orders`,
65
+ );
66
+ }
67
+ if (isStatefulOrder(order.orderFlags) && !verifyGoodTilBlockTime(order.goodTilBlockTime)) {
68
+ return new UserError(
69
+ `goodTilBlockTime: ${order.goodTilBlockTime} is not a valid uint32 or is 0`,
70
+ );
71
+ }
72
+ if (isStatefulOrder(order.orderFlags) && order.goodTilBlock !== undefined) {
73
+ return new UserError(
74
+ `goodTilBlock is ${order.goodTilBlock}, but should not be set for stateful orders`,
75
+ );
76
+ }
77
+ if (!verifySubaccountNumber(subaccountNumber)) {
78
+ return new UserError(
79
+ `subaccountNumber: ${subaccountNumber} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
80
+ );
81
+ }
82
+
83
+ return undefined;
84
+ }
85
+
86
+ /**
87
+ * @describe validateBatchCancelOrderMessage validates that orders to batch cancel have fields that would be
88
+ * valid on-chain.
89
+ */
90
+ export function validateBatchCancelOrderMessage(
91
+ subaccountNumber: number,
92
+ orders: IBatchCancelOrder,
93
+ ): UserError | undefined {
94
+ for (const orderBatch of orders.shortTermOrders) {
95
+ for (const clientId of orderBatch.clientIds) {
96
+ if (!verifyNumberIsUint32(clientId)) {
97
+ return new UserError(`clientId: ${clientId} is not a valid uint32`);
98
+ }
99
+ }
100
+ }
101
+
102
+ if (!verifyGoodTilBlock(orders.goodTilBlock)) {
103
+ return new UserError(`goodTilBlock: ${orders.goodTilBlock} is not a valid uint32 or is 0`);
104
+ }
105
+
106
+ if (!verifySubaccountNumber(subaccountNumber)) {
107
+ return new UserError(
108
+ `subaccountNumber: ${subaccountNumber} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
109
+ );
110
+ }
111
+
112
+ return undefined;
113
+ }
114
+
115
+ /**
116
+ * @describe validateTransferMessage validates that a transfer to place has fields that would be
117
+ * valid on-chain.
118
+ */
119
+ export function validateTransferMessage(transfer: Transfer): UserError | undefined {
120
+ if (!verifySubaccountNumber(transfer.sender!!.number || 0)) {
121
+ return new UserError(
122
+ `senderSubaccountNumber: ${
123
+ transfer.sender!!.number || 0
124
+ } cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
125
+ );
126
+ }
127
+ if (!verifySubaccountNumber(transfer.recipient!!.number || 0)) {
128
+ return new UserError(
129
+ `recipientSubaccountNumber: ${
130
+ transfer.recipient!!.number || 0
131
+ } cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
132
+ );
133
+ }
134
+ if (transfer.assetId !== 0) {
135
+ return new UserError(`asset id: ${transfer.assetId} not supported`);
136
+ }
137
+ if (transfer.amount.lessThanOrEqual(Long.ZERO)) {
138
+ return new UserError(`amount: ${transfer.amount} cannot be <= 0`);
139
+ }
140
+
141
+ const addressError: Error | undefined = verifyIsBech32(transfer.recipient!!.owner);
142
+ if (addressError !== undefined) {
143
+ return new UserError(addressError.toString());
144
+ }
145
+ return undefined;
146
+ }
147
+
148
+ function verifyGoodTilBlock(goodTilBlock: number | undefined): boolean {
149
+ if (goodTilBlock === undefined) {
150
+ return false;
151
+ }
152
+
153
+ return verifyNumberIsUint32(goodTilBlock) && goodTilBlock > 0;
154
+ }
155
+
156
+ function verifyGoodTilBlockTime(goodTilBlockTime: number | undefined): boolean {
157
+ if (goodTilBlockTime === undefined) {
158
+ return false;
159
+ }
160
+
161
+ return verifyNumberIsUint32(goodTilBlockTime) && goodTilBlockTime > 0;
162
+ }
163
+
164
+ function verifySubaccountNumber(subaccountNumber: number): boolean {
165
+ return subaccountNumber >= 0 && subaccountNumber <= MAX_SUBACCOUNT_NUMBER;
166
+ }
167
+
168
+ function verifyNumberIsUint32(num: number): boolean {
169
+ return num >= 0 && num <= MAX_UINT_32;
170
+ }
171
+
172
+ export function verifyOrderFlags(orderFlags: OrderFlags): boolean {
173
+ return (
174
+ orderFlags === OrderFlags.SHORT_TERM ||
175
+ orderFlags === OrderFlags.LONG_TERM ||
176
+ orderFlags === OrderFlags.CONDITIONAL
177
+ );
178
+ }
179
+
180
+ export function isStatefulOrder(orderFlags: OrderFlags): boolean {
181
+ return orderFlags === OrderFlags.LONG_TERM || orderFlags === OrderFlags.CONDITIONAL;
182
+ }
183
+
184
+ function verifyIsBech32(address: string): Error | undefined {
185
+ try {
186
+ decode(address);
187
+ } catch (error) {
188
+ return error;
189
+ }
190
+
191
+ return undefined;
192
+ }
193
+
194
+ export function isValidAddress(address: string): boolean {
195
+ // An address is valid if it starts with the BECH32 prefix and is Bech32 format.
196
+ return address.startsWith(BECH32_PREFIX + '1') && verifyIsBech32(address) === undefined;
197
+ }
@@ -0,0 +1,132 @@
1
+ import { IndexerClient } from './clients/indexer-client';
2
+ import { ValidatorClient } from './clients/validator-client';
3
+ import { encodeJson } from './lib/helpers';
4
+ import { IndexerConfig, ValidatorConfig } from './types';
5
+
6
+ class PingResponse {
7
+ public readonly height: number;
8
+ public readonly responseTime: Date;
9
+ public endpoint?: string;
10
+
11
+ constructor(height: number) {
12
+ this.height = height;
13
+ this.responseTime = new Date();
14
+ }
15
+ }
16
+
17
+ export const isTruthy = <T>(n?: T | false | null | undefined | 0): n is T => Boolean(n);
18
+
19
+ export class NetworkOptimizer {
20
+ private async validatorClients(
21
+ endpointUrls: string[],
22
+ chainId: string,
23
+ ): Promise<ValidatorClient[]> {
24
+ return (
25
+ await Promise.all(
26
+ endpointUrls.map((endpointUrl) =>
27
+ ValidatorClient.connect(
28
+ new ValidatorConfig(endpointUrl, chainId, {
29
+ CHAINTOKEN_DENOM: 'placeholder',
30
+ CHAINTOKEN_DECIMALS: 18,
31
+ USDC_DENOM: 'uusdc',
32
+ USDC_DECIMALS: 6,
33
+ }),
34
+ ).catch((_) => undefined),
35
+ ),
36
+ )
37
+ ).filter(isTruthy);
38
+ }
39
+
40
+ private indexerClients(endpointUrls: string[]): IndexerClient[] {
41
+ return endpointUrls
42
+ .map(
43
+ (endpointUrl) =>
44
+ new IndexerClient(
45
+ // socket is not used for finding optimal indexer, but required as a parameter to the config
46
+ new IndexerConfig(
47
+ endpointUrl,
48
+ endpointUrl.replace('https://', 'wss://').replace('http://', 'ws://'),
49
+ ),
50
+ ),
51
+ )
52
+ .filter(isTruthy);
53
+ }
54
+
55
+ async findOptimalNode(endpointUrls: string[], chainId: string): Promise<string> {
56
+ if (endpointUrls.length === 0) {
57
+ const errorResponse = {
58
+ error: {
59
+ message: 'No nodes provided',
60
+ },
61
+ };
62
+ return encodeJson(errorResponse);
63
+ }
64
+ const clients = await this.validatorClients(endpointUrls, chainId);
65
+ const responses = (
66
+ await Promise.all(
67
+ clients
68
+ .map(async (client) => {
69
+ const block = await client.get.latestBlock();
70
+ const response = new PingResponse(block.header.height);
71
+ return {
72
+ endpoint: client.config.restEndpoint,
73
+ height: response.height,
74
+ time: response.responseTime.getTime(),
75
+ };
76
+ })
77
+ .map((promise) => promise.catch((_) => undefined)),
78
+ )
79
+ ).filter(isTruthy);
80
+
81
+ if (responses.length === 0) {
82
+ throw new Error('Could not connect to endpoints');
83
+ }
84
+ const maxHeight = Math.max(...responses.map(({ height }) => height));
85
+ return (
86
+ responses
87
+ // Only consider nodes at `maxHeight` or `maxHeight - 1`
88
+ .filter(({ height }) => height === maxHeight || height === maxHeight - 1)
89
+ // Return the endpoint with the fastest response time
90
+ .sort((a, b) => a.time - b.time)[0].endpoint
91
+ );
92
+ }
93
+
94
+ async findOptimalIndexer(endpointUrls: string[]): Promise<string> {
95
+ if (endpointUrls.length === 0) {
96
+ const errorResponse = {
97
+ error: {
98
+ message: 'No URL provided',
99
+ },
100
+ };
101
+ return encodeJson(errorResponse);
102
+ }
103
+ const clients = this.indexerClients(endpointUrls);
104
+ const responses = (
105
+ await Promise.all(
106
+ clients
107
+ .map(async (client) => {
108
+ const block = await client.utility.getHeight();
109
+ const response = new PingResponse(+block.height);
110
+ return {
111
+ endpoint: client.config.restEndpoint,
112
+ height: response.height,
113
+ time: response.responseTime.getTime(),
114
+ };
115
+ })
116
+ .map((promise) => promise.catch((_) => undefined)),
117
+ )
118
+ ).filter(isTruthy);
119
+
120
+ if (responses.length === 0) {
121
+ throw new Error('Could not connect to endpoints');
122
+ }
123
+ const maxHeight = Math.max(...responses.map(({ height }) => height));
124
+ return (
125
+ responses
126
+ // Only consider nodes at `maxHeight` or `maxHeight - 1`
127
+ .filter(({ height }) => height === maxHeight || height === maxHeight - 1)
128
+ // Return the endpoint with the fastest response time
129
+ .sort((a, b) => a.time - b.time)[0].endpoint
130
+ );
131
+ }
132
+ }
package/src/types.ts ADDED
@@ -0,0 +1,44 @@
1
+ import { StdFee } from '@cosmjs/amino';
2
+ import { Method } from '@cosmjs/tendermint-rpc';
3
+
4
+ import { TransactionOptions } from './clients/types';
5
+
6
+ export * from './clients/types';
7
+ export * from './clients/constants';
8
+
9
+ // How long to wait and how often to check when calling Broadcast with
10
+ // Method.BroadcastTxCommit
11
+ export interface BroadcastOptions {
12
+ broadcastPollIntervalMs: number;
13
+ broadcastTimeoutMs: number;
14
+ }
15
+
16
+ // Options for connecting to centralized APIs like indexer or faucet.
17
+ export interface ApiOptions {
18
+ faucetHost?: string;
19
+ indexerHost?: string;
20
+ timeout?: number;
21
+ }
22
+
23
+ // Specify when a broadcast should return:
24
+ // 1. Immediately
25
+ // 2. Once the transaction is added to the memPool
26
+ // 3. Once the transaction is committed to a block
27
+ // See https://docs.cosmos.network/master/run-node/txs.html for more information
28
+ export type BroadcastMode =
29
+ | Method.BroadcastTxAsync
30
+ | Method.BroadcastTxSync
31
+ | Method.BroadcastTxCommit;
32
+
33
+ // Defines the options for a transaction.
34
+ export interface Options {
35
+ transactionOptions?: TransactionOptions;
36
+ memo?: string;
37
+ broadcastMode?: BroadcastMode;
38
+ fee?: StdFee;
39
+ }
40
+
41
+ export enum ClobPairId {
42
+ PERPETUAL_PAIR_BTC_USD = 0,
43
+ PERPETUAL_PAIR_ETH_USD = 1,
44
+ }
package/tasks.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
3
+ // for the documentation about the tasks.json format
4
+ "version": "0.1.0",
5
+ "command": "npm",
6
+ "isShellCommand": true,
7
+ "showOutput": "always",
8
+ "suppressTaskName": true,
9
+ "tasks": [
10
+ {
11
+ "isBuildCommand": true,
12
+ "taskName": "build",
13
+ "args": ["run", "build"]
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "extends": "./node_modules/@dydxprotocol/node-service-base-dev/tsconfig.json",
3
+ "exclude": ["src/codegen/**/*.ts", "__native__/*.js", "__native__/__ios__/*.js"],
4
+ "include": [
5
+ "__tests__",
6
+ "examples",
7
+ "scripts",
8
+ "src",
9
+ "node_modules/@ritbit/v4-proto/**/**.ts"
10
+ ],
11
+ "compilerOptions": {
12
+ "noFallthroughCasesInSwitch": false,
13
+ "target": "ES2019"
14
+ }
15
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "extends": "./tsconfig.base.json",
3
+ "include": ["src/**/*"],
4
+ "exclude": [
5
+ "src/codegen/**/*.ts",
6
+ "__native__/*.js",
7
+ "__native__/__ios__/*.js",
8
+ "node_modules/@ritbit/v4-proto/**/bundle.ts",
9
+ "src/clients/native.ts",
10
+ "examples/native_examples.ts",
11
+ "__tests__/**/*",
12
+ "examples/**/*"
13
+ ],
14
+ "compilerOptions": {
15
+ "outDir": "build/cjs",
16
+ "module": "NodeNext",
17
+ "moduleResolution": "NodeNext",
18
+ "declaration": false
19
+ }
20
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "./tsconfig.base.json",
3
+ "exclude": ["__native__/*.js", "__native__/__ios__/*.js"],
4
+ "include": [
5
+ // Repeat included files from tsconfig.json.
6
+ "__tests__",
7
+ "examples",
8
+ "scripts",
9
+ "src",
10
+ // Include e.g. configuration files.
11
+ "./.*.js",
12
+ "./*.js"
13
+ ]
14
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "./tsconfig.base.json",
3
+ "include": ["src/**/*", "__tests__/**/*", "examples/**/*"],
4
+ "compilerOptions": {
5
+ "outDir": "build/esm",
6
+ "module": "ESNext",
7
+ "moduleResolution": "bundler",
8
+ "declaration": true,
9
+ "declarationMap": true
10
+ }
11
+ }
@@ -0,0 +1,56 @@
1
+ const path = require('path');
2
+
3
+ const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');
4
+ const webpack = require('webpack');
5
+
6
+ module.exports = {
7
+ mode: 'development',
8
+ target: ['web', 'es5'], // Set the target to 'web' for browser environment
9
+ entry: './src/clients/native.ts',
10
+ devtool: 'source-map',
11
+ output: {
12
+ filename: 'v4-native-client.js',
13
+ path: path.resolve(__dirname, '__native__/__ios__'),
14
+ pathinfo: true,
15
+ libraryTarget: 'umd', // Set the libraryTarget to 'umd' for better compatibility
16
+ globalObject: 'this', // Ensure 'window' is not used in the UMD module for universal compatibility
17
+ },
18
+ module: {
19
+ rules: [
20
+ {
21
+ test: /\.tsx?$/,
22
+ use: {
23
+ loader: 'ts-loader',
24
+ options: {
25
+ configFile: 'tsconfig.cjs.json',
26
+ },
27
+ },
28
+ },
29
+ ],
30
+ },
31
+ resolve: {
32
+ extensions: ['.tsx', '.ts', '.js'],
33
+ fallback: {
34
+ stream: require.resolve('stream-browserify'),
35
+ zlib: require.resolve('browserify-zlib'),
36
+ https: require.resolve('https-browserify'),
37
+ http: require.resolve('stream-http'),
38
+ path: require.resolve('path-browserify'),
39
+ crypto: require.resolve('crypto-browserify'),
40
+ util: require.resolve('util'),
41
+ },
42
+ },
43
+ plugins: [
44
+ new webpack.ProvidePlugin({
45
+ Buffer: ['buffer', 'Buffer'],
46
+ }),
47
+ new webpack.DefinePlugin({
48
+ process: {
49
+ env: {
50
+ NODE_ENV: JSON.stringify('production'),
51
+ },
52
+ },
53
+ }),
54
+ new NodePolyfillPlugin(),
55
+ ],
56
+ };