@ritbit/v4-client-js 2.4.1 → 2.4.2

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 (296) hide show
  1. package/build/cjs/src/clients/composite-client.js +10 -9
  2. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  3. package/build/esm/src/clients/composite-client.d.ts +3 -3
  4. package/build/esm/src/clients/composite-client.d.ts.map +1 -1
  5. package/build/esm/src/clients/composite-client.js +10 -9
  6. package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
  7. package/package.json +11 -3
  8. package/.env +0 -1
  9. package/.eslintignore +0 -2
  10. package/.eslintrc.js +0 -15
  11. package/.gitleaks.toml +0 -24
  12. package/.gitleaksignore +0 -1
  13. package/.nvmrc +0 -1
  14. package/.prettierignore +0 -3
  15. package/.prettierrc.json +0 -6
  16. package/.releaserc +0 -10
  17. package/.vscode/launch.json +0 -11
  18. package/__native__/__ios__/v4-native-client.js +0 -251395
  19. package/__native__/__ios__/v4-native-client.js.map +0 -1
  20. package/__tests__/clients/composite-client.test.ts +0 -140
  21. package/__tests__/helpers/baseClients.ts +0 -23
  22. package/__tests__/helpers/constants.ts +0 -131
  23. package/__tests__/lib/helpers.test.ts +0 -55
  24. package/__tests__/lib/util.test.ts +0 -77
  25. package/__tests__/lib/validation.test.ts +0 -289
  26. package/__tests__/modules/client/AccountEndpoints.test.ts +0 -236
  27. package/__tests__/modules/client/FaucetEndpoint.test.ts +0 -14
  28. package/__tests__/modules/client/MarketsEndpoints.test.ts +0 -84
  29. package/__tests__/modules/client/Transfers.test.ts +0 -44
  30. package/__tests__/modules/client/UtilityEndpoints.test.ts +0 -29
  31. package/__tests__/modules/client/ValidatorGetEndpoints.test.ts +0 -50
  32. package/__tests__/modules/client/ValidatorPostEndpoints.test.ts +0 -52
  33. package/__tests__/modules/client/constants.ts +0 -5
  34. package/__tests__/modules/onboarding.test.ts +0 -66
  35. package/build/cjs/__tests__/clients/composite-client.test.js +0 -130
  36. package/build/cjs/__tests__/helpers/baseClients.js +0 -29
  37. package/build/cjs/__tests__/helpers/constants.js +0 -110
  38. package/build/cjs/__tests__/lib/helpers.test.js +0 -46
  39. package/build/cjs/__tests__/lib/util.test.js +0 -67
  40. package/build/cjs/__tests__/lib/validation.test.js +0 -254
  41. package/build/cjs/__tests__/modules/client/AccountEndpoints.test.js +0 -171
  42. package/build/cjs/__tests__/modules/client/FaucetEndpoint.test.js +0 -15
  43. package/build/cjs/__tests__/modules/client/MarketsEndpoints.test.js +0 -69
  44. package/build/cjs/__tests__/modules/client/Transfers.test.js +0 -44
  45. package/build/cjs/__tests__/modules/client/UtilityEndpoints.test.js +0 -28
  46. package/build/cjs/__tests__/modules/client/ValidatorGetEndpoints.test.js +0 -46
  47. package/build/cjs/__tests__/modules/client/ValidatorPostEndpoints.test.js +0 -53
  48. package/build/cjs/__tests__/modules/client/constants.js +0 -7
  49. package/build/cjs/__tests__/modules/onboarding.test.js +0 -50
  50. package/build/cjs/examples/account_endpoints.js +0 -129
  51. package/build/cjs/examples/batch_cancel_orders_example.js +0 -93
  52. package/build/cjs/examples/composite_example.js +0 -50
  53. package/build/cjs/examples/constants.js +0 -35
  54. package/build/cjs/examples/faucet_endpoint.js +0 -23
  55. package/build/cjs/examples/gov_add_new_market.js +0 -77
  56. package/build/cjs/examples/human_readable_orders.json +0 -86
  57. package/build/cjs/examples/human_readable_short_term_orders.json +0 -42
  58. package/build/cjs/examples/json-encoding.js +0 -32
  59. package/build/cjs/examples/long_term_order_cancel_example.js +0 -63
  60. package/build/cjs/examples/markets_endpoints.js +0 -134
  61. package/build/cjs/examples/native_examples.js +0 -112
  62. package/build/cjs/examples/noble_example.js +0 -88
  63. package/build/cjs/examples/optimal_node.js +0 -70
  64. package/build/cjs/examples/permissioned_keys_example.js +0 -104
  65. package/build/cjs/examples/raw_orders.json +0 -130
  66. package/build/cjs/examples/short_term_order_cancel_example.js +0 -54
  67. package/build/cjs/examples/short_term_order_composite_example.js +0 -68
  68. package/build/cjs/examples/test.js +0 -50
  69. package/build/cjs/examples/transfer_example_deposit.js +0 -29
  70. package/build/cjs/examples/transfer_example_send.js +0 -42
  71. package/build/cjs/examples/transfer_example_subaccount_transfer.js +0 -29
  72. package/build/cjs/examples/transfer_example_withdraw.js +0 -30
  73. package/build/cjs/examples/transfer_example_withdraw_other.js +0 -42
  74. package/build/cjs/examples/utility_endpoints.js +0 -42
  75. package/build/cjs/examples/validator_get_example.js +0 -158
  76. package/build/cjs/examples/validator_post_example.js +0 -76
  77. package/build/cjs/examples/wallet_address.js +0 -22
  78. package/build/cjs/examples/websocket_example.js +0 -36
  79. package/build/cjs/examples/websocket_orderbook_example.js +0 -196
  80. package/build/esm/__tests__/clients/composite-client.test.d.ts +0 -2
  81. package/build/esm/__tests__/clients/composite-client.test.d.ts.map +0 -1
  82. package/build/esm/__tests__/clients/composite-client.test.js +0 -128
  83. package/build/esm/__tests__/helpers/baseClients.d.ts +0 -19
  84. package/build/esm/__tests__/helpers/baseClients.d.ts.map +0 -1
  85. package/build/esm/__tests__/helpers/baseClients.js +0 -22
  86. package/build/esm/__tests__/helpers/constants.d.ts +0 -19
  87. package/build/esm/__tests__/helpers/constants.d.ts.map +0 -1
  88. package/build/esm/__tests__/helpers/constants.js +0 -104
  89. package/build/esm/__tests__/lib/helpers.test.d.ts +0 -2
  90. package/build/esm/__tests__/lib/helpers.test.d.ts.map +0 -1
  91. package/build/esm/__tests__/lib/helpers.test.js +0 -41
  92. package/build/esm/__tests__/lib/util.test.d.ts +0 -2
  93. package/build/esm/__tests__/lib/util.test.d.ts.map +0 -1
  94. package/build/esm/__tests__/lib/util.test.js +0 -65
  95. package/build/esm/__tests__/lib/validation.test.d.ts +0 -2
  96. package/build/esm/__tests__/lib/validation.test.d.ts.map +0 -1
  97. package/build/esm/__tests__/lib/validation.test.js +0 -249
  98. package/build/esm/__tests__/modules/client/AccountEndpoints.test.d.ts +0 -2
  99. package/build/esm/__tests__/modules/client/AccountEndpoints.test.d.ts.map +0 -1
  100. package/build/esm/__tests__/modules/client/AccountEndpoints.test.js +0 -169
  101. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.d.ts +0 -2
  102. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.d.ts.map +0 -1
  103. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.js +0 -13
  104. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.d.ts +0 -2
  105. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.d.ts.map +0 -1
  106. package/build/esm/__tests__/modules/client/MarketsEndpoints.test.js +0 -66
  107. package/build/esm/__tests__/modules/client/Transfers.test.d.ts +0 -2
  108. package/build/esm/__tests__/modules/client/Transfers.test.d.ts.map +0 -1
  109. package/build/esm/__tests__/modules/client/Transfers.test.js +0 -39
  110. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.d.ts +0 -2
  111. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.d.ts.map +0 -1
  112. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.js +0 -26
  113. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.d.ts +0 -2
  114. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.d.ts.map +0 -1
  115. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.js +0 -44
  116. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.d.ts +0 -2
  117. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.d.ts.map +0 -1
  118. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.js +0 -48
  119. package/build/esm/__tests__/modules/client/constants.d.ts +0 -4
  120. package/build/esm/__tests__/modules/client/constants.d.ts.map +0 -1
  121. package/build/esm/__tests__/modules/client/constants.js +0 -4
  122. package/build/esm/__tests__/modules/onboarding.test.d.ts +0 -2
  123. package/build/esm/__tests__/modules/onboarding.test.d.ts.map +0 -1
  124. package/build/esm/__tests__/modules/onboarding.test.js +0 -48
  125. package/build/esm/examples/account_endpoints.d.ts +0 -5
  126. package/build/esm/examples/account_endpoints.d.ts.map +0 -1
  127. package/build/esm/examples/account_endpoints.js +0 -127
  128. package/build/esm/examples/batch_cancel_orders_example.d.ts +0 -2
  129. package/build/esm/examples/batch_cancel_orders_example.d.ts.map +0 -1
  130. package/build/esm/examples/batch_cancel_orders_example.js +0 -88
  131. package/build/esm/examples/composite_example.d.ts +0 -2
  132. package/build/esm/examples/composite_example.d.ts.map +0 -1
  133. package/build/esm/examples/composite_example.js +0 -45
  134. package/build/esm/examples/constants.d.ts +0 -13
  135. package/build/esm/examples/constants.d.ts.map +0 -1
  136. package/build/esm/examples/constants.js +0 -29
  137. package/build/esm/examples/faucet_endpoint.d.ts +0 -5
  138. package/build/esm/examples/faucet_endpoint.d.ts.map +0 -1
  139. package/build/esm/examples/faucet_endpoint.js +0 -21
  140. package/build/esm/examples/gov_add_new_market.d.ts +0 -2
  141. package/build/esm/examples/gov_add_new_market.d.ts.map +0 -1
  142. package/build/esm/examples/gov_add_new_market.js +0 -72
  143. package/build/esm/examples/human_readable_orders.json +0 -86
  144. package/build/esm/examples/human_readable_short_term_orders.json +0 -42
  145. package/build/esm/examples/json-encoding.d.ts +0 -2
  146. package/build/esm/examples/json-encoding.d.ts.map +0 -1
  147. package/build/esm/examples/json-encoding.js +0 -27
  148. package/build/esm/examples/long_term_order_cancel_example.d.ts +0 -2
  149. package/build/esm/examples/long_term_order_cancel_example.d.ts.map +0 -1
  150. package/build/esm/examples/long_term_order_cancel_example.js +0 -58
  151. package/build/esm/examples/markets_endpoints.d.ts +0 -5
  152. package/build/esm/examples/markets_endpoints.d.ts.map +0 -1
  153. package/build/esm/examples/markets_endpoints.js +0 -131
  154. package/build/esm/examples/native_examples.d.ts +0 -2
  155. package/build/esm/examples/native_examples.d.ts.map +0 -1
  156. package/build/esm/examples/native_examples.js +0 -110
  157. package/build/esm/examples/noble_example.d.ts +0 -2
  158. package/build/esm/examples/noble_example.d.ts.map +0 -1
  159. package/build/esm/examples/noble_example.js +0 -83
  160. package/build/esm/examples/optimal_node.d.ts +0 -2
  161. package/build/esm/examples/optimal_node.d.ts.map +0 -1
  162. package/build/esm/examples/optimal_node.js +0 -68
  163. package/build/esm/examples/permissioned_keys_example.d.ts +0 -2
  164. package/build/esm/examples/permissioned_keys_example.d.ts.map +0 -1
  165. package/build/esm/examples/permissioned_keys_example.js +0 -99
  166. package/build/esm/examples/raw_orders.json +0 -130
  167. package/build/esm/examples/short_term_order_cancel_example.d.ts +0 -2
  168. package/build/esm/examples/short_term_order_cancel_example.d.ts.map +0 -1
  169. package/build/esm/examples/short_term_order_cancel_example.js +0 -49
  170. package/build/esm/examples/short_term_order_composite_example.d.ts +0 -2
  171. package/build/esm/examples/short_term_order_composite_example.d.ts.map +0 -1
  172. package/build/esm/examples/short_term_order_composite_example.js +0 -63
  173. package/build/esm/examples/test.d.ts +0 -2
  174. package/build/esm/examples/test.d.ts.map +0 -1
  175. package/build/esm/examples/test.js +0 -45
  176. package/build/esm/examples/transfer_example_deposit.d.ts +0 -2
  177. package/build/esm/examples/transfer_example_deposit.d.ts.map +0 -1
  178. package/build/esm/examples/transfer_example_deposit.js +0 -24
  179. package/build/esm/examples/transfer_example_send.d.ts +0 -2
  180. package/build/esm/examples/transfer_example_send.d.ts.map +0 -1
  181. package/build/esm/examples/transfer_example_send.js +0 -37
  182. package/build/esm/examples/transfer_example_subaccount_transfer.d.ts +0 -2
  183. package/build/esm/examples/transfer_example_subaccount_transfer.d.ts.map +0 -1
  184. package/build/esm/examples/transfer_example_subaccount_transfer.js +0 -24
  185. package/build/esm/examples/transfer_example_withdraw.d.ts +0 -2
  186. package/build/esm/examples/transfer_example_withdraw.d.ts.map +0 -1
  187. package/build/esm/examples/transfer_example_withdraw.js +0 -25
  188. package/build/esm/examples/transfer_example_withdraw_other.d.ts +0 -2
  189. package/build/esm/examples/transfer_example_withdraw_other.d.ts.map +0 -1
  190. package/build/esm/examples/transfer_example_withdraw_other.js +0 -37
  191. package/build/esm/examples/utility_endpoints.d.ts +0 -5
  192. package/build/esm/examples/utility_endpoints.d.ts.map +0 -1
  193. package/build/esm/examples/utility_endpoints.js +0 -40
  194. package/build/esm/examples/validator_get_example.d.ts +0 -2
  195. package/build/esm/examples/validator_get_example.d.ts.map +0 -1
  196. package/build/esm/examples/validator_get_example.js +0 -156
  197. package/build/esm/examples/validator_post_example.d.ts +0 -2
  198. package/build/esm/examples/validator_post_example.d.ts.map +0 -1
  199. package/build/esm/examples/validator_post_example.js +0 -71
  200. package/build/esm/examples/wallet_address.d.ts +0 -2
  201. package/build/esm/examples/wallet_address.d.ts.map +0 -1
  202. package/build/esm/examples/wallet_address.js +0 -17
  203. package/build/esm/examples/websocket_example.d.ts +0 -2
  204. package/build/esm/examples/websocket_example.d.ts.map +0 -1
  205. package/build/esm/examples/websocket_example.js +0 -34
  206. package/build/esm/examples/websocket_orderbook_example.d.ts +0 -2
  207. package/build/esm/examples/websocket_orderbook_example.d.ts.map +0 -1
  208. package/build/esm/examples/websocket_orderbook_example.js +0 -194
  209. package/commitlint.config.js +0 -8
  210. package/examples/account_endpoints.ts +0 -129
  211. package/examples/batch_cancel_orders_example.ts +0 -130
  212. package/examples/composite_example.ts +0 -65
  213. package/examples/constants.ts +0 -42
  214. package/examples/faucet_endpoint.ts +0 -24
  215. package/examples/gov_add_new_market.json +0 -64
  216. package/examples/gov_add_new_market.ts +0 -95
  217. package/examples/human_readable_orders.json +0 -86
  218. package/examples/human_readable_short_term_orders.json +0 -42
  219. package/examples/json-encoding.ts +0 -33
  220. package/examples/long_term_order_cancel_example.ts +0 -87
  221. package/examples/markets_endpoints.ts +0 -134
  222. package/examples/native_examples.ts +0 -151
  223. package/examples/noble_example.ts +0 -107
  224. package/examples/optimal_node.ts +0 -70
  225. package/examples/permissioned_keys_example.ts +0 -162
  226. package/examples/raw_orders.json +0 -130
  227. package/examples/short_term_order_cancel_example.ts +0 -68
  228. package/examples/short_term_order_composite_example.ts +0 -80
  229. package/examples/test.ts +0 -65
  230. package/examples/transfer_example_deposit.ts +0 -28
  231. package/examples/transfer_example_send.ts +0 -60
  232. package/examples/transfer_example_subaccount_transfer.ts +0 -29
  233. package/examples/transfer_example_withdraw.ts +0 -31
  234. package/examples/transfer_example_withdraw_other.ts +0 -60
  235. package/examples/utility_endpoints.ts +0 -42
  236. package/examples/validator_get_example.ts +0 -160
  237. package/examples/validator_post_example.ts +0 -81
  238. package/examples/wallet_address.ts +0 -18
  239. package/examples/websocket_example.ts +0 -44
  240. package/examples/websocket_orderbook_example.ts +0 -239
  241. package/jest.config.js +0 -12
  242. package/jest.globalSetup.js +0 -5
  243. package/jest.setup.js +0 -1
  244. package/ritbit-v4-client-js-2.4.0.tgz +0 -0
  245. package/scripts/bump_version.sh +0 -16
  246. package/scripts/generate-cctp-protos.sh +0 -41
  247. package/scripts/mobile_build_pack.sh +0 -5
  248. package/scripts/publish-if-not-exists.sh +0 -21
  249. package/src/clients/composite-client.ts +0 -1469
  250. package/src/clients/constants.ts +0 -361
  251. package/src/clients/faucet-client.ts +0 -48
  252. package/src/clients/helpers/chain-helpers.ts +0 -231
  253. package/src/clients/helpers/request-helpers.ts +0 -71
  254. package/src/clients/indexer-client.ts +0 -61
  255. package/src/clients/lib/axios/axiosRequest.ts +0 -41
  256. package/src/clients/lib/axios/errors.ts +0 -41
  257. package/src/clients/lib/axios/index.ts +0 -7
  258. package/src/clients/lib/axios/types.ts +0 -6
  259. package/src/clients/lib/cctpProto.ts +0 -4197
  260. package/src/clients/lib/errors.ts +0 -63
  261. package/src/clients/lib/registry.ts +0 -93
  262. package/src/clients/modules/account.ts +0 -438
  263. package/src/clients/modules/composer.ts +0 -669
  264. package/src/clients/modules/get.ts +0 -791
  265. package/src/clients/modules/local-wallet.ts +0 -79
  266. package/src/clients/modules/markets.ts +0 -76
  267. package/src/clients/modules/post.ts +0 -1043
  268. package/src/clients/modules/proto-includes.ts +0 -34
  269. package/src/clients/modules/rest.ts +0 -40
  270. package/src/clients/modules/signer.ts +0 -139
  271. package/src/clients/modules/tendermintClient.ts +0 -168
  272. package/src/clients/modules/utility.ts +0 -47
  273. package/src/clients/modules/vault.ts +0 -23
  274. package/src/clients/native.ts +0 -1689
  275. package/src/clients/noble-client.ts +0 -108
  276. package/src/clients/socket-client.ts +0 -331
  277. package/src/clients/subaccount.ts +0 -57
  278. package/src/clients/types.ts +0 -191
  279. package/src/clients/validator-client.ts +0 -106
  280. package/src/index.ts +0 -19
  281. package/src/lib/constants.ts +0 -28
  282. package/src/lib/errors.ts +0 -38
  283. package/src/lib/helpers.ts +0 -99
  284. package/src/lib/onboarding.ts +0 -96
  285. package/src/lib/trading-key-utils.ts +0 -136
  286. package/src/lib/utils.ts +0 -84
  287. package/src/lib/validation.ts +0 -197
  288. package/src/network_optimizer.ts +0 -132
  289. package/src/types.ts +0 -44
  290. package/tasks.json +0 -16
  291. package/tsconfig.base.json +0 -21
  292. package/tsconfig.cjs.json +0 -10
  293. package/tsconfig.eslint.json +0 -14
  294. package/tsconfig.esm.json +0 -11
  295. package/tsconfig.json +0 -6
  296. package/webpack.config.js +0 -56
@@ -1,194 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable no-param-reassign */
3
- import { Network } from '../src/clients/constants';
4
- import { SocketClient } from '../src/clients/socket-client';
5
- function test() {
6
- let orderBookBidList = [];
7
- let orderBookAskList = [];
8
- const mySocket = new SocketClient(Network.mainnet().indexerConfig, () => {
9
- console.log('socket opened');
10
- mySocket.subscribeToOrderbook('ETH-USD');
11
- }, () => {
12
- console.log('socket closed');
13
- }, (message) => {
14
- try {
15
- if (typeof message.data === 'string') {
16
- const jsonString = message.data;
17
- const parsingData = JSON.parse(jsonString);
18
- const messageId = parsingData.message_id;
19
- const orderBookDataList = parsingData.contents;
20
- if (orderBookDataList instanceof Array) {
21
- // common orderBook data;
22
- [orderBookBidList, orderBookAskList] = updateOrderBook(orderBookDataList, orderBookBidList, orderBookAskList, messageId);
23
- // sort
24
- orderBookBidList = sortByNthElementDesc(orderBookBidList, 0);
25
- orderBookAskList = sortByNthElementAsc(orderBookAskList, 0);
26
- // resolving crossed orderBook
27
- if (orderBookBidList.length > 0 &&
28
- orderBookAskList.length > 0 &&
29
- orderBookBidList[0][0] >= orderBookAskList[0][0]) {
30
- [orderBookBidList, orderBookAskList] = resolveCrossedOrderBook(orderBookBidList, orderBookAskList);
31
- }
32
- printOrderBook(orderBookBidList, orderBookAskList);
33
- if (orderBookBidList.length > 300) {
34
- orderBookBidList.splice(50);
35
- }
36
- if (orderBookAskList.length > 300) {
37
- orderBookAskList.splice(50);
38
- }
39
- }
40
- else if (orderBookDataList !== null && orderBookDataList !== undefined) {
41
- // initial OrderBook data
42
- setInitialOrderBook(orderBookDataList, orderBookBidList, orderBookAskList, messageId);
43
- }
44
- }
45
- }
46
- catch (e) {
47
- console.error('Error parsing JSON message:', e);
48
- }
49
- }, (event) => {
50
- console.error('Encountered error:', event.message);
51
- });
52
- mySocket.connect();
53
- }
54
- const sortByNthElementAsc = (arr, n) => {
55
- return arr.sort((a, b) => {
56
- if (a[n] < b[n])
57
- return -1;
58
- if (a[n] > b[n])
59
- return 1;
60
- return 0;
61
- });
62
- };
63
- const sortByNthElementDesc = (arr, n) => {
64
- return arr.sort((a, b) => {
65
- if (a[n] > b[n])
66
- return -1;
67
- if (a[n] < b[n])
68
- return 1;
69
- return 0;
70
- });
71
- };
72
- const printOrderBook = (orderBookBidList, orderBookAskList) => {
73
- // print
74
- console.log(`OrderBook for ETH-USD:`);
75
- console.log(`Price Qty`);
76
- for (let i = 4; i > -1; i--) {
77
- const priceStr = String(orderBookAskList[i][0]);
78
- const spaces = createSpaces(10 - priceStr.length);
79
- console.log(`${priceStr}${spaces}${orderBookAskList[i][1]}`);
80
- }
81
- console.log('---------------------');
82
- for (let i = 0; i < 5; i++) {
83
- const priceStr = String(orderBookBidList[i][0]);
84
- const spaces = createSpaces(10 - priceStr.length);
85
- console.log(`${priceStr}${spaces}${orderBookBidList[i][1]}`);
86
- }
87
- console.log('');
88
- };
89
- function createSpaces(count) {
90
- if (count <= 0) {
91
- return '';
92
- }
93
- let spaces = '';
94
- for (let i = 0; i < count; i++) {
95
- spaces += ' ';
96
- }
97
- return spaces;
98
- }
99
- const resolveCrossedOrderBook = (orderBookBidList, orderBookAskList) => {
100
- while (orderBookBidList[0][0] >= orderBookAskList[0][0]) {
101
- if (orderBookBidList[0][2] < orderBookAskList[0][2]) {
102
- orderBookBidList.shift();
103
- }
104
- else if (orderBookBidList[0][2] > orderBookAskList[0][2]) {
105
- orderBookAskList.shift();
106
- }
107
- else {
108
- if (orderBookBidList[0][1] > orderBookAskList[0][1]) {
109
- orderBookBidList[0][1] -= orderBookAskList[0][1];
110
- orderBookAskList.shift();
111
- }
112
- else if (orderBookBidList[0][1] < orderBookAskList[0][1]) {
113
- orderBookAskList[0][1] -= orderBookBidList[0][1];
114
- orderBookBidList.shift();
115
- }
116
- else {
117
- orderBookAskList.shift();
118
- orderBookBidList.shift();
119
- }
120
- }
121
- }
122
- return [orderBookBidList, orderBookAskList];
123
- };
124
- const setInitialOrderBook = (orderBookDataList, orderBookBidList, orderBookAskList, messageId) => {
125
- orderBookDataList.bids.forEach((item) => {
126
- orderBookBidList.push([Number(item.price), Number(item.size), messageId]);
127
- });
128
- orderBookDataList.asks.forEach((item) => {
129
- orderBookAskList.push([Number(item.price), Number(item.size), messageId]);
130
- });
131
- };
132
- const updateOrderBook = (orderBookDataList, orderBookBidList, orderBookAskList, messageId) => {
133
- orderBookDataList.forEach((entry) => {
134
- if (entry.bids !== null && entry.bids !== undefined) {
135
- const flattened = entry.bids.reduce((acc, val) => acc.concat(val), []);
136
- const entryBidPrice = Number(flattened[0]);
137
- const entryBidSize = Number(flattened[1]);
138
- // remove prices with zero Qty
139
- if (entryBidSize === 0) {
140
- for (let i = orderBookBidList.length - 1; i >= 0; i--) {
141
- if (orderBookBidList[i][0] === entryBidPrice) {
142
- orderBookBidList.splice(i, 1);
143
- }
144
- }
145
- }
146
- else {
147
- // The price that already exists in the order book is modified only Qty
148
- if (orderBookBidList.some((innerArray) => innerArray[0] === entryBidPrice)) {
149
- orderBookBidList.forEach((item, index) => {
150
- if (item[0] === entryBidPrice) {
151
- orderBookBidList[index][1] = entryBidSize;
152
- orderBookBidList[index][2] = messageId;
153
- }
154
- });
155
- }
156
- else {
157
- // Add new data to order book
158
- orderBookBidList.push([entryBidPrice, entryBidSize, messageId]);
159
- }
160
- }
161
- }
162
- if (entry.asks !== null && entry.asks !== undefined) {
163
- const flattened = entry.asks.reduce((acc, val) => acc.concat(val), []);
164
- const entryAskPrice = Number(flattened[0]);
165
- const entryAskSize = Number(flattened[1]);
166
- if (entryAskSize === 0) {
167
- // remove prices with zero Qty
168
- for (let i = orderBookAskList.length - 1; i >= 0; i--) {
169
- if (orderBookAskList[i][0] === entryAskPrice) {
170
- orderBookAskList.splice(i, 1);
171
- }
172
- }
173
- }
174
- else {
175
- // The price that already exists in the order book is modified only Qty
176
- if (orderBookAskList.some((innerArray) => innerArray[0] === entryAskPrice)) {
177
- orderBookAskList.forEach((item, index) => {
178
- if (item[0] === entryAskPrice) {
179
- orderBookAskList[index][1] = entryAskSize;
180
- orderBookAskList[index][2] = messageId;
181
- }
182
- });
183
- }
184
- else {
185
- // Add new data to order book
186
- orderBookAskList.push([entryAskPrice, entryAskSize, messageId]);
187
- }
188
- }
189
- }
190
- });
191
- return [orderBookBidList, orderBookAskList];
192
- };
193
- test();
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0X29yZGVyYm9va19leGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXhhbXBsZXMvd2Vic29ja2V0X29yZGVyYm9va19leGFtcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxzQ0FBc0M7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RCxTQUFTLElBQUk7SUFDWCxJQUFJLGdCQUFnQixHQUErQixFQUFFLENBQUM7SUFDdEQsSUFBSSxnQkFBZ0IsR0FBK0IsRUFBRSxDQUFDO0lBRXRELE1BQU0sUUFBUSxHQUFHLElBQUksWUFBWSxDQUMvQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUMvQixHQUFHLEVBQUU7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTdCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDLEVBQ0QsR0FBRyxFQUFFO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQixDQUFDLEVBQ0QsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNWLElBQUksQ0FBQztZQUNILElBQUksT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO2dCQUN6QyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBRS9DLElBQUksaUJBQWlCLFlBQVksS0FBSyxFQUFF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
@@ -1,8 +0,0 @@
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
- };
@@ -1,129 +0,0 @@
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 { TEST_ADDRESS } from './constants';
8
-
9
- async function test(): Promise<void> {
10
- const client = new IndexerClient(Network.testnet().indexerConfig);
11
- const address = 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
- });
@@ -1,130 +0,0 @@
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 { 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(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
- });
@@ -1,65 +0,0 @@
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 { 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(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
- });
@@ -1,42 +0,0 @@
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 TEST_ADDRESS = 'ritbit14zzueazeh0hj67cghhf9jypslcf9sh2n5k6art';
10
- export const TEST_PRIVATE_KEY =
11
- 'e92a6595c934c991d3b3e987ea9b3125bf61a076deab3a9cb519787b7b3e8d77';
12
- export const 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 RITBIT_LOCAL_ADDRESS = 'ritbit199tqg4wdlnu4qjlxchpd7seg454937hjrknju4';
15
- export const 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 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
- // ritbit1fxu2ndxwju2evh28js0cflkxn5wxzvlhw4gec5
21
- export const 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
- };
@@ -1,24 +0,0 @@
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 { TEST_ADDRESS } from './constants';
8
-
9
- async function test(): Promise<void> {
10
- const client = new FaucetClient(FaucetApiHost.TESTNET);
11
- const address = 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
- });
@@ -1,64 +0,0 @@
1
- {
2
- "title": "Add BONK-USD perpetual market",
3
- "deposit": "10000000000000urit",
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": "rit10d07y265gmmuvt4z0w9aw880jnsr700j086rvs",
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": "rit10d07y265gmmuvt4z0w9aw880jnsr700j086rvs",
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": "rit10d07y265gmmuvt4z0w9aw880jnsr700j086rvs",
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": "rit10d07y265gmmuvt4z0w9aw880jnsr700j086rvs",
47
- "msg": {
48
- "@type": "/ritbit.clob.MsgUpdateClobPair",
49
- "authority": "rit1mkkvp26dngu6n8rmalaxyp3gwkjuzztq5zx6tr",
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
- }