@decibeltrade/sdk 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-lint$colon$check.log +5 -0
  3. package/.turbo/turbo-lint.log +5 -0
  4. package/decibel_transactions.md +1049 -0
  5. package/dist/abi/abi-manager.d.ts +13 -0
  6. package/dist/abi/abi-manager.d.ts.map +1 -0
  7. package/dist/abi/abi-manager.js +21 -0
  8. package/dist/abi/abis.json +1322 -0
  9. package/dist/abi/bytecode-manager.d.ts +57 -0
  10. package/dist/abi/bytecode-manager.d.ts.map +1 -0
  11. package/dist/abi/bytecode-manager.js +62 -0
  12. package/dist/abi/bytecode.json +24 -0
  13. package/dist/abi/fetch-abis.d.ts +7 -0
  14. package/dist/abi/fetch-abis.d.ts.map +1 -0
  15. package/dist/abi/fetch-abis.js +132 -0
  16. package/dist/abi/fetch-bytecode.d.ts +24 -0
  17. package/dist/abi/fetch-bytecode.d.ts.map +1 -0
  18. package/dist/abi/fetch-bytecode.js +123 -0
  19. package/dist/abi/generate-abis.d.ts +6 -0
  20. package/dist/abi/generate-abis.d.ts.map +1 -0
  21. package/dist/abi/generate-abis.js +170 -0
  22. package/dist/abi/json/netna.json +1323 -0
  23. package/dist/abi/json/testnet.json +1315 -0
  24. package/dist/abi/types.d.ts +22 -0
  25. package/dist/abi/types.d.ts.map +1 -0
  26. package/dist/abi/types.js +2 -0
  27. package/dist/admin.d.ts +29 -0
  28. package/dist/admin.d.ts.map +1 -0
  29. package/dist/admin.js +203 -0
  30. package/dist/base.d.ts +42 -0
  31. package/dist/base.d.ts.map +1 -0
  32. package/dist/base.js +176 -0
  33. package/dist/constants.d.ts +41 -0
  34. package/dist/constants.d.ts.map +1 -0
  35. package/dist/constants.js +78 -0
  36. package/dist/fee-pay.d.ts +11 -0
  37. package/dist/fee-pay.d.ts.map +1 -0
  38. package/dist/fee-pay.js +30 -0
  39. package/dist/gas/gas-price-manager.d.ts +35 -0
  40. package/dist/gas/gas-price-manager.d.ts.map +1 -0
  41. package/dist/gas/gas-price-manager.js +93 -0
  42. package/dist/gas-price-manager.d.ts +31 -0
  43. package/dist/gas-price-manager.d.ts.map +1 -0
  44. package/dist/gas-price-manager.js +84 -0
  45. package/dist/index.d.ts +11 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +26 -0
  48. package/dist/order-event.types.d.ts +55 -0
  49. package/dist/order-event.types.d.ts.map +1 -0
  50. package/dist/order-event.types.js +3 -0
  51. package/dist/order-status.d.ts +43 -0
  52. package/dist/order-status.d.ts.map +1 -0
  53. package/dist/order-status.js +86 -0
  54. package/dist/read/account-overview/account-overview.reader.d.ts +37 -0
  55. package/dist/read/account-overview/account-overview.reader.d.ts.map +1 -0
  56. package/dist/read/account-overview/account-overview.reader.js +35 -0
  57. package/dist/read/account-overview/account-overview.types.d.ts +52 -0
  58. package/dist/read/account-overview/account-overview.types.d.ts.map +1 -0
  59. package/dist/read/account-overview/account-overview.types.js +36 -0
  60. package/dist/read/api-wallets/api-wallets.reader.d.ts +17 -0
  61. package/dist/read/api-wallets/api-wallets.reader.d.ts.map +1 -0
  62. package/dist/read/api-wallets/api-wallets.reader.js +27 -0
  63. package/dist/read/api-wallets/api-wallets.types.d.ts +17 -0
  64. package/dist/read/api-wallets/api-wallets.types.d.ts.map +1 -0
  65. package/dist/read/api-wallets/api-wallets.types.js +13 -0
  66. package/dist/read/base-reader.d.ts +22 -0
  67. package/dist/read/base-reader.d.ts.map +1 -0
  68. package/dist/read/base-reader.js +29 -0
  69. package/dist/read/candlesticks/candlesticks.reader.d.ts +31 -0
  70. package/dist/read/candlesticks/candlesticks.reader.d.ts.map +1 -0
  71. package/dist/read/candlesticks/candlesticks.reader.js +43 -0
  72. package/dist/read/candlesticks/candlesticks.types.d.ts +45 -0
  73. package/dist/read/candlesticks/candlesticks.types.d.ts.map +1 -0
  74. package/dist/read/candlesticks/candlesticks.types.js +36 -0
  75. package/dist/read/delegations/delegations.reader.d.ts +15 -0
  76. package/dist/read/delegations/delegations.reader.d.ts.map +1 -0
  77. package/dist/read/delegations/delegations.reader.js +23 -0
  78. package/dist/read/delegations/delegations.types.d.ts +17 -0
  79. package/dist/read/delegations/delegations.types.d.ts.map +1 -0
  80. package/dist/read/delegations/delegations.types.js +13 -0
  81. package/dist/read/index.d.ts +105 -0
  82. package/dist/read/index.d.ts.map +1 -0
  83. package/dist/read/index.js +244 -0
  84. package/dist/read/leaderboard/leaderboard.reader.d.ts +21 -0
  85. package/dist/read/leaderboard/leaderboard.reader.d.ts.map +1 -0
  86. package/dist/read/leaderboard/leaderboard.reader.js +22 -0
  87. package/dist/read/leaderboard/leaderboard.types.d.ts +27 -0
  88. package/dist/read/leaderboard/leaderboard.types.d.ts.map +1 -0
  89. package/dist/read/leaderboard/leaderboard.types.js +14 -0
  90. package/dist/read/market-contexts/market-contexts.reader.d.ts +22 -0
  91. package/dist/read/market-contexts/market-contexts.reader.d.ts.map +1 -0
  92. package/dist/read/market-contexts/market-contexts.reader.js +27 -0
  93. package/dist/read/market-contexts/market-contexts.types.d.ts +26 -0
  94. package/dist/read/market-contexts/market-contexts.types.d.ts.map +1 -0
  95. package/dist/read/market-contexts/market-contexts.types.js +19 -0
  96. package/dist/read/market-depth/market-depth.reader.d.ts +30 -0
  97. package/dist/read/market-depth/market-depth.reader.d.ts.map +1 -0
  98. package/dist/read/market-depth/market-depth.reader.js +46 -0
  99. package/dist/read/market-depth/market-depth.types.d.ts +20 -0
  100. package/dist/read/market-depth/market-depth.types.d.ts.map +1 -0
  101. package/dist/read/market-depth/market-depth.types.js +16 -0
  102. package/dist/read/market-prices/market-prices.reader.d.ts +44 -0
  103. package/dist/read/market-prices/market-prices.reader.d.ts.map +1 -0
  104. package/dist/read/market-prices/market-prices.reader.js +51 -0
  105. package/dist/read/market-prices/market-prices.types.d.ts +48 -0
  106. package/dist/read/market-prices/market-prices.types.d.ts.map +1 -0
  107. package/dist/read/market-prices/market-prices.types.js +26 -0
  108. package/dist/read/market-trades/market-trades.reader.d.ts +33 -0
  109. package/dist/read/market-trades/market-trades.reader.d.ts.map +1 -0
  110. package/dist/read/market-trades/market-trades.reader.js +39 -0
  111. package/dist/read/market-trades/market-trades.types.d.ts +52 -0
  112. package/dist/read/market-trades/market-trades.types.d.ts.map +1 -0
  113. package/dist/read/market-trades/market-trades.types.js +23 -0
  114. package/dist/read/markets/markets.reader.d.ts +38 -0
  115. package/dist/read/markets/markets.reader.d.ts.map +1 -0
  116. package/dist/read/markets/markets.reader.js +80 -0
  117. package/dist/read/markets/markets.types.d.ts +82 -0
  118. package/dist/read/markets/markets.types.d.ts.map +1 -0
  119. package/dist/read/markets/markets.types.js +46 -0
  120. package/dist/read/pagination.types.d.ts +14 -0
  121. package/dist/read/pagination.types.d.ts.map +1 -0
  122. package/dist/read/pagination.types.js +12 -0
  123. package/dist/read/portfolio-chart/portfolio-chart.reader.d.ts +14 -0
  124. package/dist/read/portfolio-chart/portfolio-chart.reader.d.ts.map +1 -0
  125. package/dist/read/portfolio-chart/portfolio-chart.reader.js +21 -0
  126. package/dist/read/portfolio-chart/portfolio-chart.types.d.ts +14 -0
  127. package/dist/read/portfolio-chart/portfolio-chart.types.d.ts.map +1 -0
  128. package/dist/read/portfolio-chart/portfolio-chart.types.js +12 -0
  129. package/dist/read/public-vaults/public-vaults.reader.d.ts +38 -0
  130. package/dist/read/public-vaults/public-vaults.reader.d.ts.map +1 -0
  131. package/dist/read/public-vaults/public-vaults.reader.js +31 -0
  132. package/dist/read/public-vaults/public-vaults.types.d.ts +62 -0
  133. package/dist/read/public-vaults/public-vaults.types.d.ts.map +1 -0
  134. package/dist/read/public-vaults/public-vaults.types.js +33 -0
  135. package/dist/read/types.d.ts +178 -0
  136. package/dist/read/types.d.ts.map +1 -0
  137. package/dist/read/types.js +87 -0
  138. package/dist/read/user-active-twaps/user-active-twaps.reader.d.ts +31 -0
  139. package/dist/read/user-active-twaps/user-active-twaps.reader.d.ts.map +1 -0
  140. package/dist/read/user-active-twaps/user-active-twaps.reader.js +31 -0
  141. package/dist/read/user-active-twaps/user-active-twaps.types.d.ts +49 -0
  142. package/dist/read/user-active-twaps/user-active-twaps.types.d.ts.map +1 -0
  143. package/dist/read/user-active-twaps/user-active-twaps.types.js +25 -0
  144. package/dist/read/user-bulk-orders/user-bulk-orders.reader.d.ts +31 -0
  145. package/dist/read/user-bulk-orders/user-bulk-orders.reader.d.ts.map +1 -0
  146. package/dist/read/user-bulk-orders/user-bulk-orders.reader.js +32 -0
  147. package/dist/read/user-bulk-orders/user-bulk-orders.types.d.ts +46 -0
  148. package/dist/read/user-bulk-orders/user-bulk-orders.types.d.ts.map +1 -0
  149. package/dist/read/user-bulk-orders/user-bulk-orders.types.js +24 -0
  150. package/dist/read/user-funding-history/user-funding-history.reader.d.ts +28 -0
  151. package/dist/read/user-funding-history/user-funding-history.reader.d.ts.map +1 -0
  152. package/dist/read/user-funding-history/user-funding-history.reader.js +32 -0
  153. package/dist/read/user-funding-history/user-funding-history.types.d.ts +37 -0
  154. package/dist/read/user-funding-history/user-funding-history.types.d.ts.map +1 -0
  155. package/dist/read/user-funding-history/user-funding-history.types.js +21 -0
  156. package/dist/read/user-notifications/user-notifications.reader.d.ts +13 -0
  157. package/dist/read/user-notifications/user-notifications.reader.d.ts.map +1 -0
  158. package/dist/read/user-notifications/user-notifications.reader.js +19 -0
  159. package/dist/read/user-notifications/user-notifications.types.d.ts +49 -0
  160. package/dist/read/user-notifications/user-notifications.types.d.ts.map +1 -0
  161. package/dist/read/user-notifications/user-notifications.types.js +18 -0
  162. package/dist/read/user-open-orders/user-open-orders.reader.d.ts +40 -0
  163. package/dist/read/user-open-orders/user-open-orders.reader.d.ts.map +1 -0
  164. package/dist/read/user-open-orders/user-open-orders.reader.js +31 -0
  165. package/dist/read/user-open-orders/user-open-orders.types.d.ts +76 -0
  166. package/dist/read/user-open-orders/user-open-orders.types.d.ts.map +1 -0
  167. package/dist/read/user-open-orders/user-open-orders.types.js +34 -0
  168. package/dist/read/user-order-history/user-order-history.reader.d.ts +40 -0
  169. package/dist/read/user-order-history/user-order-history.reader.d.ts.map +1 -0
  170. package/dist/read/user-order-history/user-order-history.reader.js +28 -0
  171. package/dist/read/user-order-history/user-order-history.types.d.ts +85 -0
  172. package/dist/read/user-order-history/user-order-history.types.d.ts.map +1 -0
  173. package/dist/read/user-order-history/user-order-history.types.js +37 -0
  174. package/dist/read/user-positions/user-positions.reader.d.ts +37 -0
  175. package/dist/read/user-positions/user-positions.reader.d.ts.map +1 -0
  176. package/dist/read/user-positions/user-positions.reader.js +41 -0
  177. package/dist/read/user-positions/user-positions.types.d.ts +2590 -0
  178. package/dist/read/user-positions/user-positions.types.d.ts.map +1 -0
  179. package/dist/read/user-positions/user-positions.types.js +31 -0
  180. package/dist/read/user-subaccounts/user-subaccounts.reader.d.ts +18 -0
  181. package/dist/read/user-subaccounts/user-subaccounts.reader.d.ts.map +1 -0
  182. package/dist/read/user-subaccounts/user-subaccounts.reader.js +28 -0
  183. package/dist/read/user-subaccounts/user-subaccounts.types.d.ts +21 -0
  184. package/dist/read/user-subaccounts/user-subaccounts.types.d.ts.map +1 -0
  185. package/dist/read/user-subaccounts/user-subaccounts.types.js +15 -0
  186. package/dist/read/user-trade-history/user-trade-history.reader.d.ts +33 -0
  187. package/dist/read/user-trade-history/user-trade-history.reader.d.ts.map +1 -0
  188. package/dist/read/user-trade-history/user-trade-history.reader.js +32 -0
  189. package/dist/read/user-trade-history/user-trade-history.types.d.ts +52 -0
  190. package/dist/read/user-trade-history/user-trade-history.types.d.ts.map +1 -0
  191. package/dist/read/user-trade-history/user-trade-history.types.js +26 -0
  192. package/dist/read/user-vaults/user-vaults.reader.d.ts +26 -0
  193. package/dist/read/user-vaults/user-vaults.reader.d.ts.map +1 -0
  194. package/dist/read/user-vaults/user-vaults.reader.js +32 -0
  195. package/dist/read/user-vaults/user-vaults.types.d.ts +39 -0
  196. package/dist/read/user-vaults/user-vaults.types.d.ts.map +1 -0
  197. package/dist/read/user-vaults/user-vaults.types.js +21 -0
  198. package/dist/read/vault/vault.reader.d.ts +95 -0
  199. package/dist/read/vault/vault.reader.d.ts.map +1 -0
  200. package/dist/read/vault/vault.reader.js +168 -0
  201. package/dist/read/vault/vault.types.d.ts +49 -0
  202. package/dist/read/vault/vault.types.d.ts.map +1 -0
  203. package/dist/read/vault/vault.types.js +45 -0
  204. package/dist/read/vaults/vaults.reader.d.ts +72 -0
  205. package/dist/read/vaults/vaults.reader.d.ts.map +1 -0
  206. package/dist/read/vaults/vaults.reader.js +63 -0
  207. package/dist/read/vaults/vaults.types.d.ts +140 -0
  208. package/dist/read/vaults/vaults.types.d.ts.map +1 -0
  209. package/dist/read/vaults/vaults.types.js +71 -0
  210. package/dist/read/ws-subscription.d.ts +21 -0
  211. package/dist/read/ws-subscription.d.ts.map +1 -0
  212. package/dist/read/ws-subscription.js +170 -0
  213. package/dist/subaccount-types.d.ts +24 -0
  214. package/dist/subaccount-types.d.ts.map +1 -0
  215. package/dist/subaccount-types.js +11 -0
  216. package/dist/transaction-builder.d.ts +14 -0
  217. package/dist/transaction-builder.d.ts.map +1 -0
  218. package/dist/transaction-builder.js +40 -0
  219. package/dist/tsconfig.tsbuildinfo +1 -0
  220. package/dist/utils.d.ts +56 -0
  221. package/dist/utils.d.ts.map +1 -0
  222. package/dist/utils.js +164 -0
  223. package/dist/vault-types.d.ts +43 -0
  224. package/dist/vault-types.d.ts.map +1 -0
  225. package/dist/vault-types.js +11 -0
  226. package/dist/write.d.ts +271 -0
  227. package/dist/write.d.ts.map +1 -0
  228. package/dist/write.js +485 -0
  229. package/eslint.config.mjs +25 -0
  230. package/package.json +39 -0
  231. package/readme.md +257 -0
  232. package/sdk_reference.md +876 -0
  233. package/src/abi/generate-abis.ts +164 -0
  234. package/src/abi/json/netna.json +1323 -0
  235. package/src/abi/json/testnet.json +1315 -0
  236. package/src/abi/types.ts +23 -0
  237. package/src/admin.ts +284 -0
  238. package/src/base.ts +218 -0
  239. package/src/constants.ts +118 -0
  240. package/src/fee-pay.ts +39 -0
  241. package/src/gas/gas-price-manager.ts +115 -0
  242. package/src/index.ts +10 -0
  243. package/src/order-event.types.ts +65 -0
  244. package/src/order-status.ts +89 -0
  245. package/src/read/account-overview/account-overview.reader.ts +43 -0
  246. package/src/read/account-overview/account-overview.types.ts +45 -0
  247. package/src/read/base-reader.ts +41 -0
  248. package/src/read/candlesticks/candlesticks.reader.ts +61 -0
  249. package/src/read/candlesticks/candlesticks.types.ts +46 -0
  250. package/src/read/delegations/delegations.reader.ts +22 -0
  251. package/src/read/delegations/delegations.types.ts +19 -0
  252. package/src/read/index.ts +271 -0
  253. package/src/read/leaderboard/leaderboard.reader.ts +21 -0
  254. package/src/read/leaderboard/leaderboard.types.ts +26 -0
  255. package/src/read/market-contexts/market-contexts.reader.ts +26 -0
  256. package/src/read/market-contexts/market-contexts.types.ts +18 -0
  257. package/src/read/market-depth/market-depth.reader.ts +60 -0
  258. package/src/read/market-depth/market-depth.types.ts +24 -0
  259. package/src/read/market-prices/market-prices.reader.ts +61 -0
  260. package/src/read/market-prices/market-prices.types.ts +38 -0
  261. package/src/read/market-trades/market-trades.reader.ts +46 -0
  262. package/src/read/market-trades/market-trades.types.ts +34 -0
  263. package/src/read/markets/markets.reader.ts +82 -0
  264. package/src/read/markets/markets.types.ts +54 -0
  265. package/src/read/pagination.types.ts +18 -0
  266. package/src/read/portfolio-chart/portfolio-chart.reader.ts +20 -0
  267. package/src/read/portfolio-chart/portfolio-chart.types.ts +21 -0
  268. package/src/read/types.ts +129 -0
  269. package/src/read/user-active-twaps/user-active-twaps.reader.ts +36 -0
  270. package/src/read/user-active-twaps/user-active-twaps.types.ts +33 -0
  271. package/src/read/user-bulk-orders/user-bulk-orders.reader.ts +37 -0
  272. package/src/read/user-bulk-orders/user-bulk-orders.types.ts +32 -0
  273. package/src/read/user-funding-history/user-funding-history.reader.ts +38 -0
  274. package/src/read/user-funding-history/user-funding-history.types.ts +29 -0
  275. package/src/read/user-notifications/user-notifications.reader.ts +17 -0
  276. package/src/read/user-notifications/user-notifications.types.ts +61 -0
  277. package/src/read/user-open-orders/user-open-orders.reader.ts +36 -0
  278. package/src/read/user-open-orders/user-open-orders.types.ts +42 -0
  279. package/src/read/user-order-history/user-order-history.reader.ts +34 -0
  280. package/src/read/user-order-history/user-order-history.types.ts +44 -0
  281. package/src/read/user-positions/user-positions.reader.ts +55 -0
  282. package/src/read/user-positions/user-positions.types.ts +43 -0
  283. package/src/read/user-subaccounts/user-subaccounts.reader.ts +30 -0
  284. package/src/read/user-subaccounts/user-subaccounts.types.ts +21 -0
  285. package/src/read/user-trade-history/user-trade-history.reader.ts +38 -0
  286. package/src/read/user-trade-history/user-trade-history.types.ts +33 -0
  287. package/src/read/vaults/vaults.reader.ts +79 -0
  288. package/src/read/vaults/vaults.types.ts +106 -0
  289. package/src/read/ws-subscription.ts +200 -0
  290. package/src/subaccount-types.ts +31 -0
  291. package/src/transaction-builder.ts +75 -0
  292. package/src/utils.ts +255 -0
  293. package/src/write.ts +965 -0
  294. package/tsconfig.json +8 -0
@@ -0,0 +1,42 @@
1
+ import z from "zod/v4";
2
+
3
+ import { BaseRequestArgs } from "../base-reader";
4
+
5
+ export interface UserOpenOrdersRequestArgs extends BaseRequestArgs {
6
+ subAddr: string;
7
+ }
8
+
9
+ export const UserOpenOrderSchema = z.object({
10
+ parent: z.string(),
11
+ market: z.string(),
12
+ order_id: z.string(),
13
+ client_order_id: z.string().nullable(),
14
+ orig_size: z.number().nullable(),
15
+ remaining_size: z.number().nullable(),
16
+ size_delta: z.number().nullable(),
17
+ price: z.number().nullable(),
18
+ is_buy: z.boolean(),
19
+ details: z.string(),
20
+ transaction_version: z.number(),
21
+ unix_ms: z.number(),
22
+ tp_order_id: z.string().nullable(),
23
+ tp_trigger_price: z.number().nullable(),
24
+ tp_limit_price: z.number().nullable(),
25
+ sl_order_id: z.string().nullable(),
26
+ sl_trigger_price: z.number().nullable(),
27
+ sl_limit_price: z.number().nullable(),
28
+ order_type: z.string().optional(),
29
+ trigger_condition: z.string().optional(),
30
+ order_direction: z.string().optional(),
31
+ is_reduce_only: z.boolean().optional(),
32
+ });
33
+
34
+ export const UserOpenOrdersSchema = z.array(UserOpenOrderSchema);
35
+
36
+ export const UserOpenOrdersWsMessageSchema = z.object({
37
+ orders: z.array(UserOpenOrderSchema),
38
+ });
39
+
40
+ export type UserOpenOrder = z.infer<typeof UserOpenOrderSchema>;
41
+ export type UserOpenOrders = z.infer<typeof UserOpenOrdersSchema>;
42
+ export type UserOpenOrdersWsMessage = z.infer<typeof UserOpenOrdersWsMessageSchema>;
@@ -0,0 +1,34 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import {
3
+ UserOrderHistoryRequestArgs,
4
+ UserOrdersSchema,
5
+ UserOrdersWsMessage,
6
+ UserOrdersWsMessageSchema,
7
+ } from "./user-order-history.types";
8
+
9
+ export class UserOrderHistoryReader extends BaseReader {
10
+ async getByAddr({ subAddr, fetchOptions }: UserOrderHistoryRequestArgs) {
11
+ const response = await this.getRequest({
12
+ schema: UserOrdersSchema,
13
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/order_history`,
14
+ queryParams: {
15
+ user: subAddr,
16
+ },
17
+ options: fetchOptions,
18
+ });
19
+
20
+ return response.data;
21
+ }
22
+
23
+ /**
24
+ * Subscribe to user order history updates
25
+ * @param subAddr The subaccount address of the user to subscribe to
26
+ * @param onData Callback function for received user order history data
27
+ * @returns A function to unsubscribe from the user order history updates
28
+ */
29
+ subscribeByAddr(subAddr: string, onData: (data: UserOrdersWsMessage) => void) {
30
+ const topic = `user_order_history:${subAddr}`;
31
+
32
+ return this.deps.ws.subscribe(topic, UserOrdersWsMessageSchema, onData);
33
+ }
34
+ }
@@ -0,0 +1,44 @@
1
+ import z from "zod/v4";
2
+
3
+ import { BaseRequestArgs } from "../base-reader";
4
+ import { PaginatedResponseSchema } from "../pagination.types";
5
+
6
+ export interface UserOrderHistoryRequestArgs extends BaseRequestArgs {
7
+ subAddr: string;
8
+ }
9
+
10
+ export const UserOrderSchema = z.object({
11
+ parent: z.string(),
12
+ market: z.string(),
13
+ client_order_id: z.string(),
14
+ order_id: z.string(),
15
+ status: z.string(),
16
+ order_type: z.string(),
17
+ trigger_condition: z.string(),
18
+ order_direction: z.string(),
19
+ orig_size: z.number(),
20
+ remaining_size: z.number(),
21
+ size_delta: z.number(),
22
+ price: z.number(),
23
+ is_buy: z.boolean(),
24
+ is_reduce_only: z.boolean(),
25
+ details: z.string(),
26
+ tp_order_id: z.string().nullable(),
27
+ tp_trigger_price: z.number().nullable(),
28
+ tp_limit_price: z.number().nullable(),
29
+ sl_order_id: z.string().nullable(),
30
+ sl_trigger_price: z.number().nullable(),
31
+ sl_limit_price: z.number().nullable(),
32
+ transaction_version: z.number(),
33
+ unix_ms: z.number(),
34
+ });
35
+
36
+ export const UserOrdersSchema = PaginatedResponseSchema(UserOrderSchema);
37
+
38
+ export const UserOrdersWsMessageSchema = z.object({
39
+ orders: z.array(UserOrderSchema),
40
+ });
41
+
42
+ export type UserOrder = z.infer<typeof UserOrderSchema>;
43
+ export type UserOrders = z.infer<typeof UserOrdersSchema>;
44
+ export type UserOrdersWsMessage = z.infer<typeof UserOrdersWsMessageSchema>;
@@ -0,0 +1,55 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import {
3
+ UserPositionsRequestArgs,
4
+ UserPositionsSchema,
5
+ UserPositionsWsMessage,
6
+ UserPositionsWsMessageSchema,
7
+ } from "./user-positions.types";
8
+
9
+ export class UserPositionsReader extends BaseReader {
10
+ /**
11
+ * Get the positions for a given user
12
+ * @param userAddr The address of the user to get positions for
13
+ * @param includeDeleted Whether to include deleted positions in the response
14
+ * @returns The positions for the given user
15
+ */
16
+ async getByAddr({
17
+ subAddr,
18
+ marketAddr,
19
+ includeDeleted = false,
20
+ limit = 10,
21
+ fetchOptions,
22
+ }: UserPositionsRequestArgs) {
23
+ const queryParams = new URLSearchParams({
24
+ user: subAddr,
25
+ include_deleted: includeDeleted.toString(),
26
+ limit: limit.toString(),
27
+ });
28
+
29
+ if (marketAddr) {
30
+ queryParams.set("market_address", marketAddr);
31
+ }
32
+
33
+ const response = await this.getRequest({
34
+ schema: UserPositionsSchema,
35
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/user_positions`,
36
+ queryParams,
37
+ options: fetchOptions,
38
+ });
39
+
40
+ return response.data;
41
+ }
42
+
43
+ /**
44
+ * Subscribe to user positions updates
45
+ * @param subAddr The subaccount address of the user to subscribe to
46
+ * @param apiUrl The WebSocket server URL
47
+ * @param onData Callback function for received user positions data
48
+ * @returns A function to unsubscribe from the user positions updates
49
+ */
50
+ subscribeByAddr(subAddr: string, onData: (data: UserPositionsWsMessage) => void) {
51
+ const topic = `user_positions:${subAddr}`;
52
+
53
+ return this.deps.ws.subscribe(topic, UserPositionsWsMessageSchema, onData);
54
+ }
55
+ }
@@ -0,0 +1,43 @@
1
+ import z from "zod/v4";
2
+
3
+ import { BaseRequestArgs } from "../base-reader";
4
+
5
+ export interface UserPositionsRequestArgs extends BaseRequestArgs {
6
+ subAddr: string;
7
+ marketAddr?: string;
8
+ includeDeleted?: boolean;
9
+ limit?: number;
10
+ }
11
+
12
+ export const UserPositionSchema = z.object({
13
+ market: z.string(),
14
+ user: z.string(),
15
+ size: z.number(),
16
+ // margin: z.number(),
17
+ max_allowed_leverage: z.number(),
18
+ user_leverage: z.number(),
19
+ entry_price: z.number(),
20
+ is_isolated: z.boolean(),
21
+ unrealized_funding: z.number(),
22
+ estimated_liquidation_price: z.number(),
23
+ tp_order_id: z.string().nullable(),
24
+ tp_trigger_price: z.number().nullable(),
25
+ tp_limit_price: z.number().nullable(),
26
+ sl_order_id: z.string().nullable(),
27
+ sl_trigger_price: z.number().nullable(),
28
+ sl_limit_price: z.number().nullable(),
29
+ has_fixed_sized_tpsls: z.boolean(),
30
+ });
31
+
32
+ export const UserPositionsSchema = z.array(UserPositionSchema);
33
+
34
+ export const UserPositionWsMessageSchema = z.object(UserPositionSchema);
35
+
36
+ export const UserPositionsWsMessageSchema = z.object({
37
+ positions: UserPositionsSchema,
38
+ });
39
+
40
+ export type UserPosition = z.infer<typeof UserPositionSchema>;
41
+ export type UserPositions = z.infer<typeof UserPositionsSchema>;
42
+ export type UserPositionWsMessage = z.infer<typeof UserPositionWsMessageSchema>;
43
+ export type UserPositionsWsMessage = z.infer<typeof UserPositionsWsMessageSchema>;
@@ -0,0 +1,30 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import { UserSubaccountsRequestArgs, UserSubaccountsSchema } from "./user-subaccounts.types";
3
+
4
+ export class UserSubaccountsReader extends BaseReader {
5
+ /**
6
+ * Get the subaccounts for a given user
7
+ * @param ownerAddr The address of the owner to get subaccounts for
8
+ * @param limit The number of subaccounts to get (default: 10)
9
+ * @returns The subaccounts for the given user
10
+ */
11
+ async getByAddr({
12
+ ownerAddr,
13
+ // limit = 10,
14
+ fetchOptions,
15
+ }: UserSubaccountsRequestArgs) {
16
+ const queryParams = new URLSearchParams({
17
+ owner: ownerAddr,
18
+ // limit: limit.toString(),
19
+ });
20
+
21
+ const response = await this.getRequest({
22
+ schema: UserSubaccountsSchema,
23
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/subaccounts`, // TODO: update to /user_subaccounts?
24
+ queryParams,
25
+ options: fetchOptions,
26
+ });
27
+
28
+ return response.data;
29
+ }
30
+ }
@@ -0,0 +1,21 @@
1
+ import z from "zod/v4";
2
+
3
+ import { BaseRequestArgs } from "../base-reader";
4
+
5
+ export interface UserSubaccountsRequestArgs extends BaseRequestArgs {
6
+ ownerAddr: string;
7
+ // limit?: number; // TODO: Add limit
8
+ }
9
+
10
+ export const UserSubaccountSchema = z.object({
11
+ subaccount_address: z.string(),
12
+ primary_account_address: z.string(),
13
+ is_primary: z.boolean(),
14
+ is_active: z.boolean().optional(),
15
+ custom_label: z.string().nullable(),
16
+ });
17
+
18
+ export const UserSubaccountsSchema = z.array(UserSubaccountSchema);
19
+
20
+ export type UserSubaccount = z.infer<typeof UserSubaccountSchema>;
21
+ export type UserSubaccounts = UserSubaccount[];
@@ -0,0 +1,38 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import {
3
+ UserTradeHistoryRequestArgs,
4
+ UserTradesSchema,
5
+ UserTradesWsMessage,
6
+ UserTradesWsMessageSchema,
7
+ } from "./user-trade-history.types";
8
+
9
+ export class UserTradeHistoryReader extends BaseReader {
10
+ /**
11
+ * Get the trade history for a given user
12
+ * @param subAddr The subaccount address of the user to get trade history for
13
+ * @param limit The number of trades to get (default: 10)
14
+ * @returns The trade history for the given user
15
+ */
16
+ async getByAddr({ subAddr, limit = 10, fetchOptions }: UserTradeHistoryRequestArgs) {
17
+ const response = await this.getRequest({
18
+ schema: UserTradesSchema,
19
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/trade_history`,
20
+ queryParams: { user: subAddr, limit: limit.toString() },
21
+ options: fetchOptions,
22
+ });
23
+
24
+ return response.data;
25
+ }
26
+
27
+ /**
28
+ * Subscribe to trade history updates
29
+ * @param subAddr The subaccount address of the user to subscribe to
30
+ * @param onData Callback function for received trade history data
31
+ * @returns A function to unsubscribe from the trade history updates
32
+ */
33
+ subscribeByAddr(subAddr: string, onData: (data: UserTradesWsMessage) => void) {
34
+ const topic = `user_trade_history:${subAddr}`;
35
+
36
+ return this.deps.ws.subscribe(topic, UserTradesWsMessageSchema, onData);
37
+ }
38
+ }
@@ -0,0 +1,33 @@
1
+ import z from "zod/v4";
2
+
3
+ import { BaseRequestArgs } from "../base-reader";
4
+
5
+ export interface UserTradeHistoryRequestArgs extends BaseRequestArgs {
6
+ subAddr: string;
7
+ limit?: number;
8
+ }
9
+
10
+ export const UserTradeSchema = z.object({
11
+ account: z.string(),
12
+ market: z.string(),
13
+ action: z.string(),
14
+ size: z.number(),
15
+ price: z.number(),
16
+ is_profit: z.boolean(),
17
+ realized_pnl_amount: z.number(),
18
+ is_funding_positive: z.boolean(),
19
+ realized_funding_amount: z.number(),
20
+ is_rebate: z.boolean(),
21
+ fee_amount: z.number(),
22
+ transaction_unix_ms: z.number(),
23
+ transaction_version: z.number(),
24
+ });
25
+
26
+ export const UserTradesSchema = z.array(UserTradeSchema);
27
+ export const UserTradesWsMessageSchema = z.object({
28
+ trades: z.array(UserTradeSchema),
29
+ });
30
+
31
+ export type UserTrade = z.infer<typeof UserTradeSchema>;
32
+ export type UserTrades = z.infer<typeof UserTradesSchema>;
33
+ export type UserTradesWsMessage = z.infer<typeof UserTradesWsMessageSchema>;
@@ -0,0 +1,79 @@
1
+ import { BaseReader } from "../base-reader";
2
+ import {
3
+ PublicVaultsRequestArgs,
4
+ UserOwnedVaultsRequestArgs,
5
+ UserOwnedVaultsResponseSchema,
6
+ UserPerformancesOnVaultsRequestArgs,
7
+ UserPerformancesOnVaultsResponseSchema,
8
+ VaultsResponseSchema,
9
+ } from "./vaults.types";
10
+
11
+ export class VaultsReader extends BaseReader {
12
+ /**
13
+ * Get all vaults
14
+ * @returns All vaults
15
+ */
16
+ async getVaults({ fetchOptions, ...args }: PublicVaultsRequestArgs = {}) {
17
+ const queryParams = new URLSearchParams();
18
+
19
+ if (args.vaultType) queryParams.set("vault_type", args.vaultType);
20
+ if (args.limit) queryParams.set("limit", args.limit.toString());
21
+ if (args.offset) queryParams.set("offset", args.offset.toString());
22
+
23
+ const response = await this.getRequest({
24
+ schema: VaultsResponseSchema,
25
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/vaults`,
26
+ queryParams,
27
+ options: fetchOptions,
28
+ });
29
+
30
+ return response.data;
31
+ }
32
+
33
+ /**
34
+ * Get vaults by owner address
35
+ * @param user The user address to filter vaults by
36
+ * @returns The vaults for the given owner address
37
+ */
38
+ async getUserOwnedVaults({ fetchOptions, ...args }: UserOwnedVaultsRequestArgs) {
39
+ const queryParams = new URLSearchParams({
40
+ user: args.ownerAddr,
41
+ });
42
+
43
+ if (args.limit) queryParams.set("limit", args.limit.toString());
44
+
45
+ if (args.offset) queryParams.set("offset", args.offset.toString());
46
+
47
+ const response = await this.getRequest({
48
+ schema: UserOwnedVaultsResponseSchema,
49
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/user_owned_vaults`,
50
+ queryParams,
51
+ options: fetchOptions,
52
+ });
53
+
54
+ return response.data;
55
+ }
56
+
57
+ /**
58
+ * Get user performance
59
+ * @param args The arguments for the user performance
60
+ * @returns The user performance
61
+ */
62
+ async getUserPerformancesOnVaults({
63
+ fetchOptions,
64
+ ...args
65
+ }: UserPerformancesOnVaultsRequestArgs) {
66
+ const queryParams = new URLSearchParams({
67
+ user_address: args.ownerAddr,
68
+ });
69
+
70
+ const response = await this.getRequest({
71
+ schema: UserPerformancesOnVaultsResponseSchema,
72
+ url: `${this.deps.config.tradingHttpUrl}/api/v1/user_vault_performance`,
73
+ queryParams,
74
+ options: fetchOptions,
75
+ });
76
+
77
+ return response.data;
78
+ }
79
+ }
@@ -0,0 +1,106 @@
1
+ import z from "zod/v4";
2
+
3
+ import { BaseRequestArgs } from "../base-reader";
4
+ import { PaginatedResponseSchema } from "../pagination.types";
5
+
6
+ /**
7
+ * Arguments for fetching vaults owned by a specific user
8
+ */
9
+ export interface UserOwnedVaultsRequestArgs extends BaseRequestArgs {
10
+ ownerAddr: string;
11
+ limit?: number;
12
+ offset?: number;
13
+ }
14
+
15
+ export interface PublicVaultsRequestArgs extends BaseRequestArgs {
16
+ limit?: number;
17
+ offset?: number;
18
+ vaultType?: "user" | "protocol";
19
+ address?: string;
20
+ }
21
+
22
+ /**
23
+ * Arguments for fetching user performance metrics for a specific subaccount
24
+ */
25
+ export interface UserPerformancesOnVaultsRequestArgs extends BaseRequestArgs {
26
+ ownerAddr: string;
27
+ }
28
+
29
+ /**
30
+ * Schema for a vault in the protocol
31
+ * Represents both protocol-wide vaults and user-managed vaults
32
+ */
33
+ export const VaultSchema = z.object({
34
+ address: z.string(),
35
+ name: z.string(),
36
+ description: z.string().nullable(),
37
+ manager: z.string(),
38
+ status: z.string(),
39
+ created_at: z.number(),
40
+ tvl: z.number().nullable(),
41
+ volume: z.number().nullable(),
42
+ all_time_return: z.number().nullable(),
43
+ past_month_return: z.number().nullable(),
44
+ sharpe_ratio: z.number().nullable(),
45
+ max_drawdown: z.number().nullable(),
46
+ weekly_win_rate_12w: z.number().nullable(),
47
+ profit_share: z.number().nullable(),
48
+ pnl_90d: z.number().nullable(),
49
+ manager_avg_cash: z.number().nullable(),
50
+ average_leverage: z.number().nullable(),
51
+ depositors: z.number().nullable(),
52
+ perp_equity: z.number().nullable(),
53
+ vault_type: z.string(),
54
+ pnl_history: z.array(z.string()).nullable(),
55
+ social_links: z.array(z.string()).nullable(),
56
+ });
57
+
58
+ export const VaultsResponseSchema = PaginatedResponseSchema(VaultSchema).extend({
59
+ total_value_locked: z.number(),
60
+ total_volume: z.number(),
61
+ });
62
+ export type VaultsResponse = z.infer<typeof VaultsResponseSchema>;
63
+ export type Vault = z.infer<typeof VaultSchema>;
64
+ export type Vaults = Vault[];
65
+
66
+ /**
67
+ * Schema for vaults owned/managed by a specific user
68
+ * Contains summary information about vaults the user manages
69
+ */
70
+ export const UserOwnedVaultSchema = z.object({
71
+ vault_address: z.string(),
72
+ vault_name: z.string(),
73
+ vault_share_symbol: z.string(),
74
+ status: z.string(),
75
+ age_days: z.number(),
76
+ num_managers: z.number(),
77
+ tvl: z.number().nullable(),
78
+ apr: z.number().nullable(),
79
+ manager_equity: z.number().nullable(),
80
+ manager_stake: z.number().nullable(),
81
+ });
82
+
83
+ export const UserOwnedVaultsResponseSchema = PaginatedResponseSchema(UserOwnedVaultSchema);
84
+ export type UserOwnedVaultsResponse = z.infer<typeof UserOwnedVaultsResponseSchema>;
85
+ export type UserOwnedVault = z.infer<typeof UserOwnedVaultSchema>;
86
+ export type UserOwnedVaults = UserOwnedVault[];
87
+
88
+ /**
89
+ * Schema for user performance metrics within a vault
90
+ * Tracks a user's deposits, shares, returns, and PnL for a specific vault
91
+ */
92
+ export const UserPerformanceOnVaultSchema = z.object({
93
+ vault_address: z.string(),
94
+ user_address: z.string(),
95
+ net_deposits: z.number().nullable(),
96
+ current_num_shares: z.number().nullable(),
97
+ current_value_of_shares: z.number().nullable(),
98
+ all_time_return: z.number().nullable(),
99
+ unrealized_pnl: z.number().nullable(),
100
+ share_price: z.number(),
101
+ volume: z.number(),
102
+ weekly_win_rate_12w: z.number().nullable(),
103
+ });
104
+ export const UserPerformancesOnVaultsResponseSchema = z.array(UserPerformanceOnVaultSchema);
105
+ export type UserPerformanceOnVault = z.infer<typeof UserPerformanceOnVaultSchema>;
106
+ export type UserPerformancesOnVaults = UserPerformanceOnVault[];