@lightconexyz/lightcone-sdk 0.5.2 → 0.7.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 (228) hide show
  1. package/README.md +39 -5
  2. package/dist/auth/client.d.ts.map +1 -1
  3. package/dist/auth/client.js +2 -0
  4. package/dist/auth/client.js.map +1 -1
  5. package/dist/auth/index.d.ts +15 -0
  6. package/dist/auth/index.d.ts.map +1 -1
  7. package/dist/auth/index.js +10 -1
  8. package/dist/auth/index.js.map +1 -1
  9. package/dist/client.d.ts +43 -4
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +70 -9
  12. package/dist/client.js.map +1 -1
  13. package/dist/context.d.ts +7 -1
  14. package/dist/context.d.ts.map +1 -1
  15. package/dist/context.js +60 -6
  16. package/dist/context.js.map +1 -1
  17. package/dist/domain/admin/client.d.ts +21 -2
  18. package/dist/domain/admin/client.d.ts.map +1 -1
  19. package/dist/domain/admin/client.js +90 -4
  20. package/dist/domain/admin/client.js.map +1 -1
  21. package/dist/domain/admin/wire.d.ts +292 -7
  22. package/dist/domain/admin/wire.d.ts.map +1 -1
  23. package/dist/domain/admin/wire.js.map +1 -1
  24. package/dist/domain/faucet.d.ts +25 -0
  25. package/dist/domain/faucet.d.ts.map +1 -0
  26. package/dist/domain/faucet.js +3 -0
  27. package/dist/domain/faucet.js.map +1 -0
  28. package/dist/domain/index.d.ts +2 -0
  29. package/dist/domain/index.d.ts.map +1 -1
  30. package/dist/domain/index.js +3 -1
  31. package/dist/domain/index.js.map +1 -1
  32. package/dist/domain/market/client.d.ts +23 -2
  33. package/dist/domain/market/client.d.ts.map +1 -1
  34. package/dist/domain/market/client.js +31 -1
  35. package/dist/domain/market/client.js.map +1 -1
  36. package/dist/domain/market/convert.d.ts +10 -0
  37. package/dist/domain/market/convert.d.ts.map +1 -1
  38. package/dist/domain/market/convert.js +44 -5
  39. package/dist/domain/market/convert.js.map +1 -1
  40. package/dist/domain/market/icon.d.ts +17 -0
  41. package/dist/domain/market/icon.d.ts.map +1 -0
  42. package/dist/domain/market/icon.js +25 -0
  43. package/dist/domain/market/icon.js.map +1 -0
  44. package/dist/domain/market/index.d.ts +21 -5
  45. package/dist/domain/market/index.d.ts.map +1 -1
  46. package/dist/domain/market/index.js +15 -1
  47. package/dist/domain/market/index.js.map +1 -1
  48. package/dist/domain/market/outcome.d.ts +4 -1
  49. package/dist/domain/market/outcome.d.ts.map +1 -1
  50. package/dist/domain/market/outcome.js +8 -7
  51. package/dist/domain/market/outcome.js.map +1 -1
  52. package/dist/domain/market/tokens.d.ts +55 -3
  53. package/dist/domain/market/tokens.d.ts.map +1 -1
  54. package/dist/domain/market/tokens.js +105 -9
  55. package/dist/domain/market/tokens.js.map +1 -1
  56. package/dist/domain/market/wire.d.ts +69 -10
  57. package/dist/domain/market/wire.d.ts.map +1 -1
  58. package/dist/domain/market/wire.js +5 -0
  59. package/dist/domain/market/wire.js.map +1 -1
  60. package/dist/domain/metrics/client.d.ts +66 -0
  61. package/dist/domain/metrics/client.d.ts.map +1 -0
  62. package/dist/domain/metrics/client.js +124 -0
  63. package/dist/domain/metrics/client.js.map +1 -0
  64. package/dist/domain/metrics/index.d.ts +3 -0
  65. package/dist/domain/metrics/index.d.ts.map +1 -0
  66. package/dist/domain/metrics/index.js +19 -0
  67. package/dist/domain/metrics/index.js.map +1 -0
  68. package/dist/domain/metrics/wire.d.ts +346 -0
  69. package/dist/domain/metrics/wire.d.ts.map +1 -0
  70. package/dist/domain/metrics/wire.js +3 -0
  71. package/dist/domain/metrics/wire.js.map +1 -0
  72. package/dist/domain/notification/client.d.ts +6 -0
  73. package/dist/domain/notification/client.d.ts.map +1 -1
  74. package/dist/domain/notification/client.js +10 -0
  75. package/dist/domain/notification/client.js.map +1 -1
  76. package/dist/domain/notification/index.d.ts +6 -2
  77. package/dist/domain/notification/index.d.ts.map +1 -1
  78. package/dist/domain/notification/index.js.map +1 -1
  79. package/dist/domain/order/client.d.ts +34 -6
  80. package/dist/domain/order/client.d.ts.map +1 -1
  81. package/dist/domain/order/client.js +88 -21
  82. package/dist/domain/order/client.js.map +1 -1
  83. package/dist/domain/order/convert.d.ts +5 -5
  84. package/dist/domain/order/convert.d.ts.map +1 -1
  85. package/dist/domain/order/convert.js +3 -3
  86. package/dist/domain/order/convert.js.map +1 -1
  87. package/dist/domain/order/index.d.ts +3 -2
  88. package/dist/domain/order/index.d.ts.map +1 -1
  89. package/dist/domain/order/index.js +11 -3
  90. package/dist/domain/order/index.js.map +1 -1
  91. package/dist/domain/order/state.d.ts +9 -7
  92. package/dist/domain/order/state.d.ts.map +1 -1
  93. package/dist/domain/order/state.js +81 -28
  94. package/dist/domain/order/state.js.map +1 -1
  95. package/dist/domain/orderbook/client.d.ts +6 -2
  96. package/dist/domain/orderbook/client.d.ts.map +1 -1
  97. package/dist/domain/orderbook/client.js +17 -0
  98. package/dist/domain/orderbook/client.js.map +1 -1
  99. package/dist/domain/orderbook/index.d.ts +1 -1
  100. package/dist/domain/orderbook/index.d.ts.map +1 -1
  101. package/dist/domain/orderbook/index.js +3 -8
  102. package/dist/domain/orderbook/index.js.map +1 -1
  103. package/dist/domain/orderbook/state.d.ts +30 -7
  104. package/dist/domain/orderbook/state.d.ts.map +1 -1
  105. package/dist/domain/orderbook/state.js +41 -12
  106. package/dist/domain/orderbook/state.js.map +1 -1
  107. package/dist/domain/position/builders.d.ts +11 -8
  108. package/dist/domain/position/builders.d.ts.map +1 -1
  109. package/dist/domain/position/builders.js +31 -25
  110. package/dist/domain/position/builders.js.map +1 -1
  111. package/dist/domain/position/client.d.ts +66 -5
  112. package/dist/domain/position/client.d.ts.map +1 -1
  113. package/dist/domain/position/client.js +101 -9
  114. package/dist/domain/position/client.js.map +1 -1
  115. package/dist/domain/position/index.d.ts +3 -2
  116. package/dist/domain/position/index.d.ts.map +1 -1
  117. package/dist/domain/position/index.js.map +1 -1
  118. package/dist/domain/price_history/client.d.ts +12 -1
  119. package/dist/domain/price_history/client.d.ts.map +1 -1
  120. package/dist/domain/price_history/client.js +14 -0
  121. package/dist/domain/price_history/client.js.map +1 -1
  122. package/dist/domain/price_history/wire.d.ts +27 -0
  123. package/dist/domain/price_history/wire.d.ts.map +1 -1
  124. package/dist/domain/price_history/wire.js.map +1 -1
  125. package/dist/domain/referral/client.d.ts +6 -0
  126. package/dist/domain/referral/client.d.ts.map +1 -1
  127. package/dist/domain/referral/client.js +22 -9
  128. package/dist/domain/referral/client.js.map +1 -1
  129. package/dist/domain/trade/client.d.ts +1 -0
  130. package/dist/domain/trade/client.d.ts.map +1 -1
  131. package/dist/domain/trade/client.js +14 -0
  132. package/dist/domain/trade/client.js.map +1 -1
  133. package/dist/domain/trade/wire.d.ts +6 -0
  134. package/dist/domain/trade/wire.d.ts.map +1 -1
  135. package/dist/domain/trade/wire.js.map +1 -1
  136. package/dist/env.d.ts +6 -1
  137. package/dist/env.d.ts.map +1 -1
  138. package/dist/env.js +19 -9
  139. package/dist/env.js.map +1 -1
  140. package/dist/http/client.d.ts +9 -0
  141. package/dist/http/client.d.ts.map +1 -1
  142. package/dist/http/client.js +29 -11
  143. package/dist/http/client.js.map +1 -1
  144. package/dist/index.d.ts +2 -2
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js.map +1 -1
  147. package/dist/prelude.d.ts +16 -7
  148. package/dist/prelude.d.ts.map +1 -1
  149. package/dist/prelude.js +10 -7
  150. package/dist/prelude.js.map +1 -1
  151. package/dist/privy/index.d.ts +1 -1
  152. package/dist/privy/index.js.map +1 -1
  153. package/dist/program/accounts.d.ts +12 -7
  154. package/dist/program/accounts.d.ts.map +1 -1
  155. package/dist/program/accounts.js +38 -16
  156. package/dist/program/accounts.js.map +1 -1
  157. package/dist/program/builder.d.ts +0 -4
  158. package/dist/program/builder.d.ts.map +1 -1
  159. package/dist/program/builder.js +0 -8
  160. package/dist/program/builder.js.map +1 -1
  161. package/dist/program/constants.d.ts +20 -7
  162. package/dist/program/constants.d.ts.map +1 -1
  163. package/dist/program/constants.js +21 -8
  164. package/dist/program/constants.js.map +1 -1
  165. package/dist/program/error.d.ts +25 -1
  166. package/dist/program/error.d.ts.map +1 -1
  167. package/dist/program/error.js +72 -0
  168. package/dist/program/error.js.map +1 -1
  169. package/dist/program/index.d.ts +7 -7
  170. package/dist/program/index.d.ts.map +1 -1
  171. package/dist/program/index.js +36 -9
  172. package/dist/program/index.js.map +1 -1
  173. package/dist/program/instructions.d.ts +184 -71
  174. package/dist/program/instructions.d.ts.map +1 -1
  175. package/dist/program/instructions.js +573 -140
  176. package/dist/program/instructions.js.map +1 -1
  177. package/dist/program/orders.js +2 -2
  178. package/dist/program/orders.js.map +1 -1
  179. package/dist/program/pda.d.ts +21 -3
  180. package/dist/program/pda.d.ts.map +1 -1
  181. package/dist/program/pda.js +43 -6
  182. package/dist/program/pda.js.map +1 -1
  183. package/dist/program/types.d.ts +139 -21
  184. package/dist/program/types.d.ts.map +1 -1
  185. package/dist/program/types.js.map +1 -1
  186. package/dist/program/utils.d.ts +31 -2
  187. package/dist/program/utils.d.ts.map +1 -1
  188. package/dist/program/utils.js +132 -5
  189. package/dist/program/utils.js.map +1 -1
  190. package/dist/rpc.d.ts +6 -1
  191. package/dist/rpc.d.ts.map +1 -1
  192. package/dist/rpc.js +9 -7
  193. package/dist/rpc.js.map +1 -1
  194. package/dist/rpcFailover.d.ts +22 -0
  195. package/dist/rpcFailover.d.ts.map +1 -0
  196. package/dist/rpcFailover.js +71 -0
  197. package/dist/rpcFailover.js.map +1 -0
  198. package/dist/shared/fmt/constants.d.ts +5 -0
  199. package/dist/shared/fmt/constants.d.ts.map +1 -0
  200. package/dist/shared/fmt/constants.js +25 -0
  201. package/dist/shared/fmt/constants.js.map +1 -0
  202. package/dist/shared/fmt/decimal.d.ts +7 -0
  203. package/dist/shared/fmt/decimal.d.ts.map +1 -1
  204. package/dist/shared/fmt/decimal.js +32 -24
  205. package/dist/shared/fmt/decimal.js.map +1 -1
  206. package/dist/shared/fmt/num.d.ts +7 -0
  207. package/dist/shared/fmt/num.d.ts.map +1 -1
  208. package/dist/shared/fmt/num.js +27 -15
  209. package/dist/shared/fmt/num.js.map +1 -1
  210. package/dist/shared/index.d.ts +1 -1
  211. package/dist/shared/index.d.ts.map +1 -1
  212. package/dist/shared/index.js +2 -1
  213. package/dist/shared/index.js.map +1 -1
  214. package/dist/shared/types.d.ts +1 -0
  215. package/dist/shared/types.d.ts.map +1 -1
  216. package/dist/shared/types.js +19 -0
  217. package/dist/shared/types.js.map +1 -1
  218. package/dist/ws/client.node.js +1 -1
  219. package/dist/ws/client.node.js.map +1 -1
  220. package/dist/ws/index.d.ts +12 -1
  221. package/dist/ws/index.d.ts.map +1 -1
  222. package/dist/ws/index.js +20 -0
  223. package/dist/ws/index.js.map +1 -1
  224. package/dist/ws/subscriptions.d.ts +6 -0
  225. package/dist/ws/subscriptions.d.ts.map +1 -1
  226. package/dist/ws/subscriptions.js +4 -0
  227. package/dist/ws/subscriptions.js.map +1 -1
  228. package/package.json +1 -1
@@ -26,12 +26,83 @@ class Positions {
26
26
  const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/markets/${encodeURIComponent(marketPubkey)}/positions`;
27
27
  return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
28
28
  }
29
+ /**
30
+ * Get all conditional-token positions for the authenticated user across
31
+ * every market. The wallet is resolved server-side from the auth cookie,
32
+ * so no parameter is required. Same response shape as `get()`.
33
+ *
34
+ * `GET /api/users/positions`
35
+ */
36
+ async positions() {
37
+ const url = `${this.client.http.baseUrl()}/api/users/positions`;
38
+ return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
39
+ }
40
+ /**
41
+ * Same as {@link positions}, but uses the supplied `cookieHeader` for this
42
+ * call instead of the SDK's process-wide cookie store.
43
+ *
44
+ * Intended for server-side cookie forwarding (SSR / server functions)
45
+ * where the per-request browser cookie can't propagate to the shared
46
+ * client. In a browser context this is equivalent to {@link positions}
47
+ * because the runtime is already attaching the cookie via
48
+ * `credentials: "include"`.
49
+ */
50
+ async positionsWithCookies(cookieHeader) {
51
+ const url = `${this.client.http.baseUrl()}/api/users/positions`;
52
+ return this.client.http.getWithCookies(url, http_1.RetryPolicy.Idempotent, cookieHeader);
53
+ }
54
+ /**
55
+ * Get the authenticated user's positions in a specific market. The wallet
56
+ * is resolved server-side from the auth cookie.
57
+ *
58
+ * `GET /api/users/markets/{market_pubkey}/positions`
59
+ */
60
+ async positionsForMarket(marketPubkey) {
61
+ const url = `${this.client.http.baseUrl()}/api/users/markets/${encodeURIComponent(marketPubkey)}/positions`;
62
+ return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
63
+ }
64
+ /**
65
+ * Same as {@link positionsForMarket}, but uses the supplied `cookieHeader`
66
+ * for this call instead of the SDK's process-wide cookie store. For
67
+ * server-side cookie forwarding (SSR / server functions).
68
+ */
69
+ async positionsForMarketWithCookies(marketPubkey, cookieHeader) {
70
+ const url = `${this.client.http.baseUrl()}/api/users/markets/${encodeURIComponent(marketPubkey)}/positions`;
71
+ return this.client.http.getWithCookies(url, http_1.RetryPolicy.Idempotent, cookieHeader);
72
+ }
73
+ /**
74
+ * Get SPL deposit-token balances for the authenticated user.
75
+ *
76
+ * The wallet is resolved server-side from the auth cookie, so no
77
+ * parameter is required. Returns balances keyed by mint pubkey for every
78
+ * deposit token registered in the backend's `deposit_token_metadata`.
79
+ * An empty object means the user has none of the tracked balances — this
80
+ * is not an error.
81
+ */
82
+ async depositTokenBalances() {
83
+ const url = `${this.client.http.baseUrl()}/api/users/deposit-token-balances`;
84
+ return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
85
+ }
86
+ /**
87
+ * Same as {@link depositTokenBalances}, but uses the supplied `cookieHeader`
88
+ * for this call instead of the SDK's process-wide cookie store.
89
+ *
90
+ * Intended for server-side cookie forwarding (SSR / server functions)
91
+ * where the per-request browser cookie can't propagate to the shared
92
+ * client. In a browser context this is equivalent to
93
+ * {@link depositTokenBalances} because the runtime is already attaching
94
+ * the cookie via `credentials: "include"`.
95
+ */
96
+ async depositTokenBalancesWithCookies(cookieHeader) {
97
+ const url = `${this.client.http.baseUrl()}/api/users/deposit-token-balances`;
98
+ return this.client.http.getWithCookies(url, http_1.RetryPolicy.Idempotent, cookieHeader);
99
+ }
29
100
  // ── On-chain transaction builders ────────────────────────────────────
30
- redeemWinningsIx(params, winningOutcome) {
31
- return (0, instructions_1.buildRedeemWinningsIx)(params, winningOutcome, this.client.programId);
101
+ redeemWinningsIx(params, outcomeIndex) {
102
+ return (0, instructions_1.buildRedeemWinningsIx)(params, outcomeIndex, this.client.programId);
32
103
  }
33
- withdrawFromPositionIx(params, isToken2022) {
34
- return (0, instructions_1.buildWithdrawFromPositionIx)(params, isToken2022, this.client.programId);
104
+ withdrawFromPositionIx(params) {
105
+ return (0, instructions_1.buildWithdrawFromPositionIx)(params, this.client.programId);
35
106
  }
36
107
  initPositionTokensIx(params, numOutcomes) {
37
108
  return (0, instructions_1.buildInitPositionTokensIx)(params, numOutcomes, this.client.programId);
@@ -42,19 +113,28 @@ class Positions {
42
113
  depositToGlobalIx(params) {
43
114
  return (0, instructions_1.buildDepositToGlobalIx)(params, this.client.programId);
44
115
  }
116
+ depositToGlobalIxWithAlt(params, altContext) {
117
+ return (0, instructions_1.buildDepositToGlobalIxWithAlt)(params, altContext, this.client.programId);
118
+ }
45
119
  globalToMarketDepositIx(params, numOutcomes) {
46
120
  return (0, instructions_1.buildGlobalToMarketDepositIx)(params, numOutcomes, this.client.programId);
47
121
  }
48
122
  withdrawFromGlobalIx(params) {
49
123
  return (0, instructions_1.buildWithdrawFromGlobalIx)(params, this.client.programId);
50
124
  }
125
+ closePositionAltIx(params) {
126
+ return (0, instructions_1.buildClosePositionAltIx)(params, this.client.programId);
127
+ }
128
+ closePositionTokenAccountsIx(params, numOutcomes) {
129
+ return (0, instructions_1.buildClosePositionTokenAccountsIx)(params, numOutcomes, this.client.programId);
130
+ }
51
131
  // ── Transaction builders (_tx convenience wrappers) ─────────────────
52
- redeemWinningsTx(params, winningOutcome) {
53
- const ix = this.redeemWinningsIx(params, winningOutcome);
132
+ redeemWinningsTx(params, outcomeIndex) {
133
+ const ix = this.redeemWinningsIx(params, outcomeIndex);
54
134
  return new web3_js_1.Transaction({ feePayer: params.user }).add(ix);
55
135
  }
56
- withdrawFromPositionTx(params, isToken2022) {
57
- const ix = this.withdrawFromPositionIx(params, isToken2022);
136
+ withdrawFromPositionTx(params) {
137
+ const ix = this.withdrawFromPositionIx(params);
58
138
  return new web3_js_1.Transaction({ feePayer: params.user }).add(ix);
59
139
  }
60
140
  initPositionTokensTx(params, numOutcomes) {
@@ -63,12 +143,16 @@ class Positions {
63
143
  }
64
144
  extendPositionTokensTx(params, numOutcomes) {
65
145
  const ix = this.extendPositionTokensIx(params, numOutcomes);
66
- return new web3_js_1.Transaction({ feePayer: params.payer }).add(ix);
146
+ return new web3_js_1.Transaction({ feePayer: params.operator }).add(ix);
67
147
  }
68
148
  depositToGlobalTx(params) {
69
149
  const ix = this.depositToGlobalIx(params);
70
150
  return new web3_js_1.Transaction({ feePayer: params.user }).add(ix);
71
151
  }
152
+ depositToGlobalTxWithAlt(params, altContext) {
153
+ const ix = this.depositToGlobalIxWithAlt(params, altContext);
154
+ return new web3_js_1.Transaction({ feePayer: params.user }).add(ix);
155
+ }
72
156
  globalToMarketDepositTx(params, numOutcomes) {
73
157
  const ix = this.globalToMarketDepositIx(params, numOutcomes);
74
158
  return new web3_js_1.Transaction({ feePayer: params.user }).add(ix);
@@ -77,6 +161,14 @@ class Positions {
77
161
  const ix = this.withdrawFromGlobalIx(params);
78
162
  return new web3_js_1.Transaction({ feePayer: params.user }).add(ix);
79
163
  }
164
+ closePositionAltTx(params) {
165
+ const ix = this.closePositionAltIx(params);
166
+ return new web3_js_1.Transaction({ feePayer: params.operator }).add(ix);
167
+ }
168
+ closePositionTokenAccountsTx(params, numOutcomes) {
169
+ const ix = this.closePositionTokenAccountsIx(params, numOutcomes);
170
+ return new web3_js_1.Transaction({ feePayer: params.operator }).add(ix);
171
+ }
80
172
  // ── Builder factories ──────────────────────────────────────────────
81
173
  deposit() {
82
174
  return new builders_1.DepositBuilder(this.client, this.client.depositSource);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/position/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey, Transaction, type TransactionInstruction } from \"@solana/web3.js\";\nimport type { ClientContext } from \"../../context\";\nimport { requireConnection } from \"../../context\";\nimport { RetryPolicy } from \"../../http\";\nimport {\n buildRedeemWinningsIx,\n buildWithdrawFromPositionIx,\n buildInitPositionTokensIx,\n buildExtendPositionTokensIx,\n buildDepositToGlobalIx,\n buildGlobalToMarketDepositIx,\n buildWithdrawFromGlobalIx,\n} from \"../../program/instructions\";\nimport { getPositionPda } from \"../../program/pda\";\nimport { deserializePosition as deserializeProgramPosition } from \"../../program/accounts\";\nimport type {\n Position as ProgramPosition,\n RedeemWinningsParams,\n WithdrawFromPositionParams,\n InitPositionTokensParams,\n ExtendPositionTokensParams,\n DepositToGlobalParams,\n GlobalToMarketDepositParams,\n WithdrawFromGlobalParams,\n} from \"../../program/types\";\nimport type { MarketPositionsResponse, PositionsResponse } from \"./wire\";\nimport {\n DepositBuilder,\n MergeBuilder,\n WithdrawBuilder,\n RedeemWinningsBuilder,\n WithdrawFromPositionBuilder,\n InitPositionTokensBuilder,\n ExtendPositionTokensBuilder,\n DepositToGlobalBuilder,\n WithdrawFromGlobalBuilder,\n GlobalToMarketDepositBuilder,\n} from \"./builders\";\n\nexport class Positions {\n constructor(private readonly client: ClientContext) {}\n\n // ── PDA helpers ──────────────────────────────────────────────────────\n\n pda(owner: PublicKey, market: PublicKey): PublicKey {\n return getPositionPda(owner, market, this.client.programId)[0];\n }\n\n // ── HTTP methods ─────────────────────────────────────────────────────\n\n async get(userPubkey: string): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/positions`;\n return this.client.http.get<PositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getForMarket(userPubkey: string, marketPubkey: string): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.get<MarketPositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n // ── On-chain transaction builders ────────────────────────────────────\n\n redeemWinningsIx(\n params: RedeemWinningsParams,\n winningOutcome: number\n ): TransactionInstruction {\n return buildRedeemWinningsIx(params, winningOutcome, this.client.programId);\n }\n\n withdrawFromPositionIx(\n params: WithdrawFromPositionParams,\n isToken2022: boolean\n ): TransactionInstruction {\n return buildWithdrawFromPositionIx(params, isToken2022, this.client.programId);\n }\n\n initPositionTokensIx(\n params: InitPositionTokensParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildInitPositionTokensIx(params, numOutcomes, this.client.programId);\n }\n\n extendPositionTokensIx(\n params: ExtendPositionTokensParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildExtendPositionTokensIx(params, numOutcomes, this.client.programId);\n }\n\n depositToGlobalIx(params: DepositToGlobalParams): TransactionInstruction {\n return buildDepositToGlobalIx(params, this.client.programId);\n }\n\n globalToMarketDepositIx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildGlobalToMarketDepositIx(params, numOutcomes, this.client.programId);\n }\n\n withdrawFromGlobalIx(params: WithdrawFromGlobalParams): TransactionInstruction {\n return buildWithdrawFromGlobalIx(params, this.client.programId);\n }\n\n // ── Transaction builders (_tx convenience wrappers) ─────────────────\n\n redeemWinningsTx(\n params: RedeemWinningsParams,\n winningOutcome: number\n ): Transaction {\n const ix = this.redeemWinningsIx(params, winningOutcome);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawFromPositionTx(\n params: WithdrawFromPositionParams,\n isToken2022: boolean\n ): Transaction {\n const ix = this.withdrawFromPositionIx(params, isToken2022);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n initPositionTokensTx(\n params: InitPositionTokensParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.initPositionTokensIx(params, numOutcomes);\n return new Transaction({ feePayer: params.payer }).add(ix);\n }\n\n extendPositionTokensTx(\n params: ExtendPositionTokensParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.extendPositionTokensIx(params, numOutcomes);\n return new Transaction({ feePayer: params.payer }).add(ix);\n }\n\n depositToGlobalTx(params: DepositToGlobalParams): Transaction {\n const ix = this.depositToGlobalIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n globalToMarketDepositTx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.globalToMarketDepositIx(params, numOutcomes);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawFromGlobalTx(params: WithdrawFromGlobalParams): Transaction {\n const ix = this.withdrawFromGlobalIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n // ── Builder factories ──────────────────────────────────────────────\n\n deposit(): DepositBuilder {\n return new DepositBuilder(this.client, this.client.depositSource);\n }\n\n merge(): MergeBuilder {\n return new MergeBuilder(this.client);\n }\n\n withdraw(): WithdrawBuilder {\n return new WithdrawBuilder(this.client, this.client.depositSource);\n }\n\n redeemWinnings(): RedeemWinningsBuilder {\n return new RedeemWinningsBuilder(this.client);\n }\n\n withdrawFromPosition(): WithdrawFromPositionBuilder {\n return new WithdrawFromPositionBuilder(this.client);\n }\n\n initPositionTokens(): InitPositionTokensBuilder {\n return new InitPositionTokensBuilder(this.client);\n }\n\n extendPositionTokens(): ExtendPositionTokensBuilder {\n return new ExtendPositionTokensBuilder(this.client);\n }\n\n depositToGlobal(): DepositToGlobalBuilder {\n return new DepositToGlobalBuilder(this.client);\n }\n\n withdrawFromGlobal(): WithdrawFromGlobalBuilder {\n return new WithdrawFromGlobalBuilder(this.client);\n }\n\n globalToMarketDeposit(): GlobalToMarketDepositBuilder {\n return new GlobalToMarketDepositBuilder(this.client);\n }\n\n // ── On-chain account fetchers (require Connection) ──────────────────\n\n async getOnchain(owner: PublicKey, market: PublicKey): Promise<ProgramPosition | null> {\n const connection = requireConnection(this.client);\n const positionPda = this.pda(owner, market);\n const accountInfo = await connection.getAccountInfo(positionPda);\n if (!accountInfo) {\n return null;\n }\n return deserializeProgramPosition(accountInfo.data as Buffer);\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/position/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey, Transaction, type TransactionInstruction } from \"@solana/web3.js\";\nimport type { ClientContext } from \"../../context\";\nimport { requireConnection } from \"../../context\";\nimport { RetryPolicy } from \"../../http\";\nimport {\n buildRedeemWinningsIx,\n buildWithdrawFromPositionIx,\n buildInitPositionTokensIx,\n buildExtendPositionTokensIx,\n buildDepositToGlobalIx,\n buildDepositToGlobalIxWithAlt,\n buildGlobalToMarketDepositIx,\n buildWithdrawFromGlobalIx,\n buildClosePositionAltIx,\n buildClosePositionTokenAccountsIx,\n} from \"../../program/instructions\";\nimport { getPositionPda } from \"../../program/pda\";\nimport { deserializePosition as deserializeProgramPosition } from \"../../program/accounts\";\nimport type {\n Position as ProgramPosition,\n RedeemWinningsParams,\n WithdrawFromPositionParams,\n InitPositionTokensParams,\n ExtendPositionTokensParams,\n DepositToGlobalParams,\n DepositToGlobalAltContext,\n GlobalToMarketDepositParams,\n WithdrawFromGlobalParams,\n ClosePositionAltParams,\n ClosePositionTokenAccountsParams,\n} from \"../../program/types\";\nimport type { PubkeyStr } from \"../../shared\";\nimport type { DepositTokenBalance } from \"./index\";\nimport type { MarketPositionsResponse, PositionsResponse } from \"./wire\";\nimport {\n DepositBuilder,\n MergeBuilder,\n WithdrawBuilder,\n RedeemWinningsBuilder,\n WithdrawFromPositionBuilder,\n InitPositionTokensBuilder,\n ExtendPositionTokensBuilder,\n DepositToGlobalBuilder,\n WithdrawFromGlobalBuilder,\n GlobalToMarketDepositBuilder,\n} from \"./builders\";\n\nexport class Positions {\n constructor(private readonly client: ClientContext) {}\n\n // ── PDA helpers ──────────────────────────────────────────────────────\n\n pda(owner: PublicKey, market: PublicKey): PublicKey {\n return getPositionPda(owner, market, this.client.programId)[0];\n }\n\n // ── HTTP methods ─────────────────────────────────────────────────────\n\n async get(userPubkey: string): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/positions`;\n return this.client.http.get<PositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getForMarket(userPubkey: string, marketPubkey: string): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/${encodeURIComponent(userPubkey)}/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.get<MarketPositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Get all conditional-token positions for the authenticated user across\n * every market. The wallet is resolved server-side from the auth cookie,\n * so no parameter is required. Same response shape as `get()`.\n *\n * `GET /api/users/positions`\n */\n async positions(): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/positions`;\n return this.client.http.get<PositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Same as {@link positions}, but uses the supplied `cookieHeader` for this\n * call instead of the SDK's process-wide cookie store.\n *\n * Intended for server-side cookie forwarding (SSR / server functions)\n * where the per-request browser cookie can't propagate to the shared\n * client. In a browser context this is equivalent to {@link positions}\n * because the runtime is already attaching the cookie via\n * `credentials: \"include\"`.\n */\n async positionsWithCookies(cookieHeader: string): Promise<PositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/positions`;\n return this.client.http.getWithCookies<PositionsResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Get the authenticated user's positions in a specific market. The wallet\n * is resolved server-side from the auth cookie.\n *\n * `GET /api/users/markets/{market_pubkey}/positions`\n */\n async positionsForMarket(marketPubkey: string): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.get<MarketPositionsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Same as {@link positionsForMarket}, but uses the supplied `cookieHeader`\n * for this call instead of the SDK's process-wide cookie store. For\n * server-side cookie forwarding (SSR / server functions).\n */\n async positionsForMarketWithCookies(\n marketPubkey: string,\n cookieHeader: string,\n ): Promise<MarketPositionsResponse> {\n const url = `${this.client.http.baseUrl()}/api/users/markets/${encodeURIComponent(marketPubkey)}/positions`;\n return this.client.http.getWithCookies<MarketPositionsResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Get SPL deposit-token balances for the authenticated user.\n *\n * The wallet is resolved server-side from the auth cookie, so no\n * parameter is required. Returns balances keyed by mint pubkey for every\n * deposit token registered in the backend's `deposit_token_metadata`.\n * An empty object means the user has none of the tracked balances — this\n * is not an error.\n */\n async depositTokenBalances(): Promise<Record<PubkeyStr, DepositTokenBalance>> {\n const url = `${this.client.http.baseUrl()}/api/users/deposit-token-balances`;\n return this.client.http.get<Record<PubkeyStr, DepositTokenBalance>>(\n url,\n RetryPolicy.Idempotent,\n );\n }\n\n /**\n * Same as {@link depositTokenBalances}, but uses the supplied `cookieHeader`\n * for this call instead of the SDK's process-wide cookie store.\n *\n * Intended for server-side cookie forwarding (SSR / server functions)\n * where the per-request browser cookie can't propagate to the shared\n * client. In a browser context this is equivalent to\n * {@link depositTokenBalances} because the runtime is already attaching\n * the cookie via `credentials: \"include\"`.\n */\n async depositTokenBalancesWithCookies(\n cookieHeader: string,\n ): Promise<Record<PubkeyStr, DepositTokenBalance>> {\n const url = `${this.client.http.baseUrl()}/api/users/deposit-token-balances`;\n return this.client.http.getWithCookies<Record<PubkeyStr, DepositTokenBalance>>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n // ── On-chain transaction builders ────────────────────────────────────\n\n redeemWinningsIx(\n params: RedeemWinningsParams,\n outcomeIndex: number\n ): TransactionInstruction {\n return buildRedeemWinningsIx(params, outcomeIndex, this.client.programId);\n }\n\n withdrawFromPositionIx(\n params: WithdrawFromPositionParams\n ): TransactionInstruction {\n return buildWithdrawFromPositionIx(params, this.client.programId);\n }\n\n initPositionTokensIx(\n params: InitPositionTokensParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildInitPositionTokensIx(params, numOutcomes, this.client.programId);\n }\n\n extendPositionTokensIx(\n params: ExtendPositionTokensParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildExtendPositionTokensIx(params, numOutcomes, this.client.programId);\n }\n\n depositToGlobalIx(params: DepositToGlobalParams): TransactionInstruction {\n return buildDepositToGlobalIx(params, this.client.programId);\n }\n\n depositToGlobalIxWithAlt(\n params: DepositToGlobalParams,\n altContext: DepositToGlobalAltContext\n ): TransactionInstruction {\n return buildDepositToGlobalIxWithAlt(params, altContext, this.client.programId);\n }\n\n globalToMarketDepositIx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildGlobalToMarketDepositIx(params, numOutcomes, this.client.programId);\n }\n\n withdrawFromGlobalIx(params: WithdrawFromGlobalParams): TransactionInstruction {\n return buildWithdrawFromGlobalIx(params, this.client.programId);\n }\n\n closePositionAltIx(params: ClosePositionAltParams): TransactionInstruction {\n return buildClosePositionAltIx(params, this.client.programId);\n }\n\n closePositionTokenAccountsIx(\n params: ClosePositionTokenAccountsParams,\n numOutcomes: number\n ): TransactionInstruction {\n return buildClosePositionTokenAccountsIx(\n params,\n numOutcomes,\n this.client.programId\n );\n }\n\n // ── Transaction builders (_tx convenience wrappers) ─────────────────\n\n redeemWinningsTx(\n params: RedeemWinningsParams,\n outcomeIndex: number\n ): Transaction {\n const ix = this.redeemWinningsIx(params, outcomeIndex);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawFromPositionTx(params: WithdrawFromPositionParams): Transaction {\n const ix = this.withdrawFromPositionIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n initPositionTokensTx(\n params: InitPositionTokensParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.initPositionTokensIx(params, numOutcomes);\n return new Transaction({ feePayer: params.payer }).add(ix);\n }\n\n extendPositionTokensTx(\n params: ExtendPositionTokensParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.extendPositionTokensIx(params, numOutcomes);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n depositToGlobalTx(params: DepositToGlobalParams): Transaction {\n const ix = this.depositToGlobalIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n depositToGlobalTxWithAlt(\n params: DepositToGlobalParams,\n altContext: DepositToGlobalAltContext\n ): Transaction {\n const ix = this.depositToGlobalIxWithAlt(params, altContext);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n globalToMarketDepositTx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.globalToMarketDepositIx(params, numOutcomes);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n withdrawFromGlobalTx(params: WithdrawFromGlobalParams): Transaction {\n const ix = this.withdrawFromGlobalIx(params);\n return new Transaction({ feePayer: params.user }).add(ix);\n }\n\n closePositionAltTx(params: ClosePositionAltParams): Transaction {\n const ix = this.closePositionAltIx(params);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n closePositionTokenAccountsTx(\n params: ClosePositionTokenAccountsParams,\n numOutcomes: number\n ): Transaction {\n const ix = this.closePositionTokenAccountsIx(params, numOutcomes);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n // ── Builder factories ──────────────────────────────────────────────\n\n deposit(): DepositBuilder {\n return new DepositBuilder(this.client, this.client.depositSource);\n }\n\n merge(): MergeBuilder {\n return new MergeBuilder(this.client);\n }\n\n withdraw(): WithdrawBuilder {\n return new WithdrawBuilder(this.client, this.client.depositSource);\n }\n\n redeemWinnings(): RedeemWinningsBuilder {\n return new RedeemWinningsBuilder(this.client);\n }\n\n withdrawFromPosition(): WithdrawFromPositionBuilder {\n return new WithdrawFromPositionBuilder(this.client);\n }\n\n initPositionTokens(): InitPositionTokensBuilder {\n return new InitPositionTokensBuilder(this.client);\n }\n\n extendPositionTokens(): ExtendPositionTokensBuilder {\n return new ExtendPositionTokensBuilder(this.client);\n }\n\n depositToGlobal(): DepositToGlobalBuilder {\n return new DepositToGlobalBuilder(this.client);\n }\n\n withdrawFromGlobal(): WithdrawFromGlobalBuilder {\n return new WithdrawFromGlobalBuilder(this.client);\n }\n\n globalToMarketDeposit(): GlobalToMarketDepositBuilder {\n return new GlobalToMarketDepositBuilder(this.client);\n }\n\n // ── On-chain account fetchers (require Connection) ──────────────────\n\n async getOnchain(owner: PublicKey, market: PublicKey): Promise<ProgramPosition | null> {\n const connection = requireConnection(this.client);\n const positionPda = this.pda(owner, market);\n const accountInfo = await connection.getAccountInfo(positionPda);\n if (!accountInfo) {\n return null;\n }\n return deserializeProgramPosition(accountInfo.data as Buffer);\n }\n}\n"]}
@@ -56,14 +56,15 @@ export interface DepositAssetMetadata {
56
56
  symbol: string;
57
57
  name: string;
58
58
  iconUrl: string;
59
- value: Decimal;
60
59
  }
61
60
  export interface DepositTokenBalance {
62
61
  mint: PubkeyStr;
63
62
  idle: string;
64
63
  symbol: string;
65
64
  name: string;
66
- iconUrl: string;
65
+ icon_url_low?: string;
66
+ icon_url_medium?: string;
67
+ icon_url_high?: string;
67
68
  }
68
69
  export declare function computedBase(balance: TokenBalance, conditionalPrice: Decimal): TokenBalanceComputedBase;
69
70
  export declare function computedQuote(balance: TokenBalance): string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/position/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG3D,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AAEvB,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,qBAAqB,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,gBAAgB,EAAE,OAAO,GACxB,wBAAwB,CAQ1B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAG3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/position/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG3D,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AAEvB,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,qBAAqB,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,gBAAgB,EAAE,OAAO,GACxB,wBAAwB,CAQ1B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAG3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/position/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AA+EA,oCAWC;AAED,sCAGC;AA/FD,4DAAiC;AAEjC,sDAAmD;AAEnD,6CAA2B;AAC3B,2CAAyB;AACzB,yCAAuB;AAyEvB,SAAgB,YAAY,CAC1B,OAAqB,EACrB,gBAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACzC,OAAO;QACL,KAAK,EAAE,IAAA,iBAAO,EAAC,KAAK,CAAC;QACrB,IAAI,EAAE,IAAA,iBAAO,EAAC,IAAI,CAAC;QACnB,KAAK,EAAE,IAAA,iBAAO,EAAC,gBAAgB,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,OAAqB;IACjD,MAAM,IAAI,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAC;AACvB,CAAC","sourcesContent":["import Decimal from \"decimal.js\";\nimport type { OrderBookId, PubkeyStr } from \"../../shared\";\nimport { display } from \"../../shared/fmt/decimal\";\n\nexport * from \"./builders\";\nexport * from \"./client\";\nexport * from \"./wire\";\n\nexport interface Portfolio {\n userAddress: PubkeyStr;\n walletHoldings: WalletHolding[];\n positions: Position[];\n totalWalletValue: string;\n totalPositionsValue: string;\n}\n\nexport interface Position {\n eventPubkey: PubkeyStr;\n eventName: string;\n eventImgSrc: string;\n outcomes: PositionOutcome[];\n totalValue: string;\n createdAt: Date;\n}\n\nexport interface PositionOutcome {\n conditionId: number;\n conditionName: string;\n tokenMint: PubkeyStr;\n amount: string;\n usdValue: string;\n}\n\nexport interface WalletHolding {\n tokenMint: PubkeyStr;\n symbol: string;\n amount: string;\n decimals: number;\n usdValue: string;\n imgSrc: string;\n}\n\nexport type TokenBalanceTokenType =\n | { kind: \"DepositAsset\" }\n | {\n kind: \"ConditionalToken\";\n orderbookId: OrderBookId;\n marketPubkey: PubkeyStr;\n outcomeIndex: number;\n };\n\nexport interface TokenBalance {\n mint: PubkeyStr;\n idle: string;\n onBook: string;\n tokenType: TokenBalanceTokenType;\n}\n\nexport interface TokenBalanceComputedBase {\n value: string;\n size: string;\n price: string;\n}\n\nexport interface DepositAssetMetadata {\n symbol: string;\n name: string;\n iconUrl: string;\n value: Decimal;\n}\n\nexport interface DepositTokenBalance {\n mint: PubkeyStr;\n idle: string;\n symbol: string;\n name: string;\n iconUrl: string;\n}\n\nexport function computedBase(\n balance: TokenBalance,\n conditionalPrice: Decimal\n): TokenBalanceComputedBase {\n const size = new Decimal(balance.idle).plus(balance.onBook);\n const value = size.mul(conditionalPrice);\n return {\n value: display(value),\n size: display(size),\n price: display(conditionalPrice),\n };\n}\n\nexport function computedQuote(balance: TokenBalance): string {\n const size = new Decimal(balance.idle).plus(balance.onBook);\n return display(size);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/position/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAgFA,oCAWC;AAED,sCAGC;AAhGD,4DAAiC;AAEjC,sDAAmD;AAEnD,6CAA2B;AAC3B,2CAAyB;AACzB,yCAAuB;AA0EvB,SAAgB,YAAY,CAC1B,OAAqB,EACrB,gBAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACzC,OAAO;QACL,KAAK,EAAE,IAAA,iBAAO,EAAC,KAAK,CAAC;QACrB,IAAI,EAAE,IAAA,iBAAO,EAAC,IAAI,CAAC;QACnB,KAAK,EAAE,IAAA,iBAAO,EAAC,gBAAgB,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,OAAqB;IACjD,MAAM,IAAI,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAC;AACvB,CAAC","sourcesContent":["import Decimal from \"decimal.js\";\nimport type { OrderBookId, PubkeyStr } from \"../../shared\";\nimport { display } from \"../../shared/fmt/decimal\";\n\nexport * from \"./builders\";\nexport * from \"./client\";\nexport * from \"./wire\";\n\nexport interface Portfolio {\n userAddress: PubkeyStr;\n walletHoldings: WalletHolding[];\n positions: Position[];\n totalWalletValue: string;\n totalPositionsValue: string;\n}\n\nexport interface Position {\n eventPubkey: PubkeyStr;\n eventName: string;\n eventImgSrc: string;\n outcomes: PositionOutcome[];\n totalValue: string;\n createdAt: Date;\n}\n\nexport interface PositionOutcome {\n conditionId: number;\n conditionName: string;\n tokenMint: PubkeyStr;\n amount: string;\n usdValue: string;\n}\n\nexport interface WalletHolding {\n tokenMint: PubkeyStr;\n symbol: string;\n amount: string;\n decimals: number;\n usdValue: string;\n imgSrc: string;\n}\n\nexport type TokenBalanceTokenType =\n | { kind: \"DepositAsset\" }\n | {\n kind: \"ConditionalToken\";\n orderbookId: OrderBookId;\n marketPubkey: PubkeyStr;\n outcomeIndex: number;\n };\n\nexport interface TokenBalance {\n mint: PubkeyStr;\n idle: string;\n onBook: string;\n tokenType: TokenBalanceTokenType;\n}\n\nexport interface TokenBalanceComputedBase {\n value: string;\n size: string;\n price: string;\n}\n\nexport interface DepositAssetMetadata {\n symbol: string;\n name: string;\n iconUrl: string;\n}\n\nexport interface DepositTokenBalance {\n mint: PubkeyStr;\n idle: string;\n symbol: string;\n name: string;\n icon_url_low?: string;\n icon_url_medium?: string;\n icon_url_high?: string;\n}\n\nexport function computedBase(\n balance: TokenBalance,\n conditionalPrice: Decimal\n): TokenBalanceComputedBase {\n const size = new Decimal(balance.idle).plus(balance.onBook);\n const value = size.mul(conditionalPrice);\n return {\n value: display(value),\n size: display(size),\n price: display(conditionalPrice),\n };\n}\n\nexport function computedQuote(balance: TokenBalance): string {\n const size = new Decimal(balance.idle).plus(balance.onBook);\n return display(size);\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Resolution } from "../../shared";
2
2
  import { type LightconeHttp } from "../../http";
3
- import type { DepositTokenPriceHistoryResponse, OrderbookPriceHistoryResponse } from "./wire";
3
+ import type { DepositAssetPricesSnapshotResponse, DepositTokenPriceHistoryResponse, OrderbookPriceHistoryResponse } from "./wire";
4
4
  interface ClientContext {
5
5
  http: LightconeHttp;
6
6
  }
@@ -26,6 +26,17 @@ export declare class PriceHistoryClient {
26
26
  get(orderbookId: string, query?: OrderbookPriceHistoryQuery): Promise<OrderbookPriceHistoryResponse>;
27
27
  getDepositAsset(depositAsset: string, resolution?: Resolution, from?: number, to?: number, cursor?: number, limit?: number): Promise<DepositTokenPriceHistoryResponse>;
28
28
  getDepositAsset(depositAsset: string, query?: DepositPriceHistoryQuery): Promise<DepositTokenPriceHistoryResponse>;
29
+ /**
30
+ * Snapshot of current prices for every active mint in `global_deposit_tokens`.
31
+ *
32
+ * No params. Returns a map of mint -> price (Decimal-as-string). The
33
+ * backend prefers the live tick from `deposit_token_prices` and falls
34
+ * back to the most recent 1m candle close. Assets with neither are
35
+ * silently absent.
36
+ *
37
+ * For live updates, subscribe via `subscribeDepositAssetPrice` per asset.
38
+ */
39
+ getDepositAssetPricesSnapshot(): Promise<DepositAssetPricesSnapshotResponse>;
29
40
  getLineData(orderbookId: string, resolution?: Resolution, from?: number, to?: number, cursor?: number, limit?: number): Promise<{
30
41
  time: number;
31
42
  value: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/price_history/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,gCAAgC,EAChC,6BAA6B,EAE9B,MAAM,QAAQ,CAAC;AAEhB,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,UAAU,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,6BAA6B,CAAC;IAEnC,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,6BAA6B,CAAC;IAkCnC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,UAAU,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gCAAgC,CAAC;IAEtC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,wBAAwB,GAC/B,OAAO,CAAC,gCAAgC,CAAC;IAsCtC,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,UAA+B,EAC3C,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAc9C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/price_history/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,gCAAgC,EAChC,6BAA6B,EAE9B,MAAM,QAAQ,CAAC;AAEhB,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,UAAU,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,6BAA6B,CAAC;IAEnC,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,6BAA6B,CAAC;IAkCnC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,UAAU,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gCAAgC,CAAC;IAEtC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,wBAAwB,GAC/B,OAAO,CAAC,gCAAgC,CAAC;IAsC5C;;;;;;;;;OASG;IACG,6BAA6B,IAAI,OAAO,CAAC,kCAAkC,CAAC;IAK5E,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,UAA+B,EAC3C,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAc9C"}
@@ -55,6 +55,20 @@ class PriceHistoryClient {
55
55
  const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;
56
56
  return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
57
57
  }
58
+ /**
59
+ * Snapshot of current prices for every active mint in `global_deposit_tokens`.
60
+ *
61
+ * No params. Returns a map of mint -> price (Decimal-as-string). The
62
+ * backend prefers the live tick from `deposit_token_prices` and falls
63
+ * back to the most recent 1m candle close. Assets with neither are
64
+ * silently absent.
65
+ *
66
+ * For live updates, subscribe via `subscribeDepositAssetPrice` per asset.
67
+ */
68
+ async getDepositAssetPricesSnapshot() {
69
+ const url = `${this.client.http.baseUrl()}/api/deposit-asset-prices-snapshot`;
70
+ return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
71
+ }
58
72
  async getLineData(orderbookId, resolution = shared_1.Resolution.Minute1, from, to, cursor, limit) {
59
73
  const response = await this.get(orderbookId, {
60
74
  resolution,
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/price_history/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { SdkError } from \"../../error\";\nimport { Resolution } from \"../../shared\";\nimport { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type {\n DepositTokenPriceHistoryResponse,\n OrderbookPriceHistoryResponse,\n PriceCandle,\n} from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport interface OrderbookPriceHistoryQuery {\n resolution?: Resolution;\n from?: number;\n to?: number;\n cursor?: number;\n limit?: number;\n includeOhlcv?: boolean;\n}\n\nexport interface DepositPriceHistoryQuery {\n resolution?: Resolution;\n from?: number;\n to?: number;\n cursor?: number;\n limit?: number;\n}\n\nexport class PriceHistoryClient {\n constructor(private readonly client: ClientContext) {}\n\n async get(\n orderbookId: string,\n resolution?: Resolution,\n from?: number,\n to?: number\n ): Promise<OrderbookPriceHistoryResponse>;\n\n async get(\n orderbookId: string,\n query?: OrderbookPriceHistoryQuery\n ): Promise<OrderbookPriceHistoryResponse>;\n\n // `from`/`to` are Unix timestamps in milliseconds.\n async get(\n orderbookId: string,\n resolutionOrQuery: Resolution | OrderbookPriceHistoryQuery = Resolution.Minute1,\n from?: number,\n to?: number\n ): Promise<OrderbookPriceHistoryResponse> {\n const query = normalizeOrderbookPriceHistoryQuery(resolutionOrQuery, from, to);\n const params = new URLSearchParams({\n orderbook_id: orderbookId,\n resolution: query.resolution,\n });\n if (query.from !== undefined) {\n params.set(\"from\", String(ensureUnixMilliseconds(\"from\", query.from)));\n }\n if (query.to !== undefined) {\n params.set(\"to\", String(ensureUnixMilliseconds(\"to\", query.to)));\n }\n if (query.cursor !== undefined) {\n params.set(\"cursor\", String(ensureUnixMilliseconds(\"cursor\", query.cursor)));\n }\n if (query.limit !== undefined) {\n params.set(\"limit\", String(ensurePageLimit(query.limit)));\n }\n if (query.includeOhlcv !== undefined) {\n params.set(\"include_ohlcv\", String(query.includeOhlcv));\n }\n\n const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;\n return this.client.http.get<OrderbookPriceHistoryResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getDepositAsset(\n depositAsset: string,\n resolution?: Resolution,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<DepositTokenPriceHistoryResponse>;\n\n async getDepositAsset(\n depositAsset: string,\n query?: DepositPriceHistoryQuery\n ): Promise<DepositTokenPriceHistoryResponse>;\n\n async getDepositAsset(\n depositAsset: string,\n resolutionOrQuery: Resolution | DepositPriceHistoryQuery = Resolution.Minute1,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<DepositTokenPriceHistoryResponse> {\n const query = normalizeDepositPriceHistoryQuery(\n resolutionOrQuery,\n from,\n to,\n cursor,\n limit\n );\n const params = new URLSearchParams({\n deposit_asset: depositAsset,\n resolution: query.resolution,\n });\n if (query.from !== undefined) {\n params.set(\"from\", String(ensureUnixMilliseconds(\"from\", query.from)));\n }\n if (query.to !== undefined) {\n params.set(\"to\", String(ensureUnixMilliseconds(\"to\", query.to)));\n }\n if (query.cursor !== undefined) {\n params.set(\"cursor\", String(ensureUnixMilliseconds(\"cursor\", query.cursor)));\n }\n if (query.limit !== undefined) {\n params.set(\"limit\", String(ensurePageLimit(query.limit)));\n }\n\n const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;\n return this.client.http.get<DepositTokenPriceHistoryResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getLineData(\n orderbookId: string,\n resolution: Resolution = Resolution.Minute1,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<{ time: number; value: string }[]> {\n const response = await this.get(orderbookId, {\n resolution,\n from,\n to,\n cursor,\n limit,\n includeOhlcv: false,\n });\n return response.prices.map((c: PriceCandle) => ({\n time: c.t,\n value: c.m ?? \"\",\n }));\n }\n}\n\nfunction normalizeOrderbookPriceHistoryQuery(\n resolutionOrQuery: Resolution | OrderbookPriceHistoryQuery,\n from?: number,\n to?: number\n): Required<Pick<OrderbookPriceHistoryQuery, \"resolution\">> & Omit<OrderbookPriceHistoryQuery, \"resolution\"> {\n if (typeof resolutionOrQuery === \"string\") {\n return {\n resolution: resolutionOrQuery,\n from,\n to,\n };\n }\n\n return {\n resolution: resolutionOrQuery.resolution ?? Resolution.Minute1,\n from: resolutionOrQuery.from,\n to: resolutionOrQuery.to,\n cursor: resolutionOrQuery.cursor,\n limit: resolutionOrQuery.limit,\n includeOhlcv: resolutionOrQuery.includeOhlcv,\n };\n}\n\nfunction normalizeDepositPriceHistoryQuery(\n resolutionOrQuery: Resolution | DepositPriceHistoryQuery,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n): Required<Pick<DepositPriceHistoryQuery, \"resolution\">> & Omit<DepositPriceHistoryQuery, \"resolution\"> {\n if (typeof resolutionOrQuery === \"string\") {\n return {\n resolution: resolutionOrQuery,\n from,\n to,\n cursor,\n limit,\n };\n }\n\n return {\n resolution: resolutionOrQuery.resolution ?? Resolution.Minute1,\n from: resolutionOrQuery.from,\n to: resolutionOrQuery.to,\n cursor: resolutionOrQuery.cursor,\n limit: resolutionOrQuery.limit,\n };\n}\n\nfunction ensureUnixMilliseconds(name: string, value: number): number {\n if (!Number.isFinite(value) || !Number.isInteger(value) || value < 0) {\n throw SdkError.validation(`${name} must be a non-negative Unix timestamp in milliseconds`);\n }\n if (value < 10_000_000_000) {\n throw SdkError.validation(`${name} must be a Unix timestamp in milliseconds, not seconds`);\n }\n return value;\n}\n\nfunction ensurePageLimit(value: number): number {\n if (!Number.isFinite(value) || !Number.isInteger(value) || value < 1 || value > 1_000) {\n throw SdkError.validation(\"limit must be an integer between 1 and 1000\");\n }\n return value;\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/price_history/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { SdkError } from \"../../error\";\nimport { Resolution } from \"../../shared\";\nimport { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type {\n DepositAssetPricesSnapshotResponse,\n DepositTokenPriceHistoryResponse,\n OrderbookPriceHistoryResponse,\n PriceCandle,\n} from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport interface OrderbookPriceHistoryQuery {\n resolution?: Resolution;\n from?: number;\n to?: number;\n cursor?: number;\n limit?: number;\n includeOhlcv?: boolean;\n}\n\nexport interface DepositPriceHistoryQuery {\n resolution?: Resolution;\n from?: number;\n to?: number;\n cursor?: number;\n limit?: number;\n}\n\nexport class PriceHistoryClient {\n constructor(private readonly client: ClientContext) {}\n\n async get(\n orderbookId: string,\n resolution?: Resolution,\n from?: number,\n to?: number\n ): Promise<OrderbookPriceHistoryResponse>;\n\n async get(\n orderbookId: string,\n query?: OrderbookPriceHistoryQuery\n ): Promise<OrderbookPriceHistoryResponse>;\n\n // `from`/`to` are Unix timestamps in milliseconds.\n async get(\n orderbookId: string,\n resolutionOrQuery: Resolution | OrderbookPriceHistoryQuery = Resolution.Minute1,\n from?: number,\n to?: number\n ): Promise<OrderbookPriceHistoryResponse> {\n const query = normalizeOrderbookPriceHistoryQuery(resolutionOrQuery, from, to);\n const params = new URLSearchParams({\n orderbook_id: orderbookId,\n resolution: query.resolution,\n });\n if (query.from !== undefined) {\n params.set(\"from\", String(ensureUnixMilliseconds(\"from\", query.from)));\n }\n if (query.to !== undefined) {\n params.set(\"to\", String(ensureUnixMilliseconds(\"to\", query.to)));\n }\n if (query.cursor !== undefined) {\n params.set(\"cursor\", String(ensureUnixMilliseconds(\"cursor\", query.cursor)));\n }\n if (query.limit !== undefined) {\n params.set(\"limit\", String(ensurePageLimit(query.limit)));\n }\n if (query.includeOhlcv !== undefined) {\n params.set(\"include_ohlcv\", String(query.includeOhlcv));\n }\n\n const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;\n return this.client.http.get<OrderbookPriceHistoryResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getDepositAsset(\n depositAsset: string,\n resolution?: Resolution,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<DepositTokenPriceHistoryResponse>;\n\n async getDepositAsset(\n depositAsset: string,\n query?: DepositPriceHistoryQuery\n ): Promise<DepositTokenPriceHistoryResponse>;\n\n async getDepositAsset(\n depositAsset: string,\n resolutionOrQuery: Resolution | DepositPriceHistoryQuery = Resolution.Minute1,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<DepositTokenPriceHistoryResponse> {\n const query = normalizeDepositPriceHistoryQuery(\n resolutionOrQuery,\n from,\n to,\n cursor,\n limit\n );\n const params = new URLSearchParams({\n deposit_asset: depositAsset,\n resolution: query.resolution,\n });\n if (query.from !== undefined) {\n params.set(\"from\", String(ensureUnixMilliseconds(\"from\", query.from)));\n }\n if (query.to !== undefined) {\n params.set(\"to\", String(ensureUnixMilliseconds(\"to\", query.to)));\n }\n if (query.cursor !== undefined) {\n params.set(\"cursor\", String(ensureUnixMilliseconds(\"cursor\", query.cursor)));\n }\n if (query.limit !== undefined) {\n params.set(\"limit\", String(ensurePageLimit(query.limit)));\n }\n\n const url = `${this.client.http.baseUrl()}/api/price-history?${params.toString()}`;\n return this.client.http.get<DepositTokenPriceHistoryResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Snapshot of current prices for every active mint in `global_deposit_tokens`.\n *\n * No params. Returns a map of mint -> price (Decimal-as-string). The\n * backend prefers the live tick from `deposit_token_prices` and falls\n * back to the most recent 1m candle close. Assets with neither are\n * silently absent.\n *\n * For live updates, subscribe via `subscribeDepositAssetPrice` per asset.\n */\n async getDepositAssetPricesSnapshot(): Promise<DepositAssetPricesSnapshotResponse> {\n const url = `${this.client.http.baseUrl()}/api/deposit-asset-prices-snapshot`;\n return this.client.http.get<DepositAssetPricesSnapshotResponse>(url, RetryPolicy.Idempotent);\n }\n\n async getLineData(\n orderbookId: string,\n resolution: Resolution = Resolution.Minute1,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n ): Promise<{ time: number; value: string }[]> {\n const response = await this.get(orderbookId, {\n resolution,\n from,\n to,\n cursor,\n limit,\n includeOhlcv: false,\n });\n return response.prices.map((c: PriceCandle) => ({\n time: c.t,\n value: c.m ?? \"\",\n }));\n }\n}\n\nfunction normalizeOrderbookPriceHistoryQuery(\n resolutionOrQuery: Resolution | OrderbookPriceHistoryQuery,\n from?: number,\n to?: number\n): Required<Pick<OrderbookPriceHistoryQuery, \"resolution\">> & Omit<OrderbookPriceHistoryQuery, \"resolution\"> {\n if (typeof resolutionOrQuery === \"string\") {\n return {\n resolution: resolutionOrQuery,\n from,\n to,\n };\n }\n\n return {\n resolution: resolutionOrQuery.resolution ?? Resolution.Minute1,\n from: resolutionOrQuery.from,\n to: resolutionOrQuery.to,\n cursor: resolutionOrQuery.cursor,\n limit: resolutionOrQuery.limit,\n includeOhlcv: resolutionOrQuery.includeOhlcv,\n };\n}\n\nfunction normalizeDepositPriceHistoryQuery(\n resolutionOrQuery: Resolution | DepositPriceHistoryQuery,\n from?: number,\n to?: number,\n cursor?: number,\n limit?: number\n): Required<Pick<DepositPriceHistoryQuery, \"resolution\">> & Omit<DepositPriceHistoryQuery, \"resolution\"> {\n if (typeof resolutionOrQuery === \"string\") {\n return {\n resolution: resolutionOrQuery,\n from,\n to,\n cursor,\n limit,\n };\n }\n\n return {\n resolution: resolutionOrQuery.resolution ?? Resolution.Minute1,\n from: resolutionOrQuery.from,\n to: resolutionOrQuery.to,\n cursor: resolutionOrQuery.cursor,\n limit: resolutionOrQuery.limit,\n };\n}\n\nfunction ensureUnixMilliseconds(name: string, value: number): number {\n if (!Number.isFinite(value) || !Number.isInteger(value) || value < 0) {\n throw SdkError.validation(`${name} must be a non-negative Unix timestamp in milliseconds`);\n }\n if (value < 10_000_000_000) {\n throw SdkError.validation(`${name} must be a Unix timestamp in milliseconds, not seconds`);\n }\n return value;\n}\n\nfunction ensurePageLimit(value: number): number {\n if (!Number.isFinite(value) || !Number.isInteger(value) || value < 1 || value > 1_000) {\n throw SdkError.validation(\"limit must be an integer between 1 and 1000\");\n }\n return value;\n}\n"]}
@@ -50,18 +50,21 @@ export interface DepositTokenCandle {
50
50
  tc: number;
51
51
  c: string;
52
52
  }
53
+ /** Initial batch of historical candles sent on subscription. */
53
54
  export interface DepositPriceSnapshot {
54
55
  event_type: "snapshot";
55
56
  deposit_asset: string;
56
57
  resolution: Resolution;
57
58
  prices: DepositTokenCandle[];
58
59
  }
60
+ /** Real-time spot price tick, broadcast to all resolutions. */
59
61
  export interface DepositPriceTick {
60
62
  event_type: "price";
61
63
  deposit_asset: string;
62
64
  price: string;
63
65
  event_time: number;
64
66
  }
67
+ /** A single candle update for a specific resolution (e.g. a 1m candle closed). */
65
68
  export interface DepositPriceCandleUpdate {
66
69
  event_type: "candle";
67
70
  deposit_asset: string;
@@ -96,5 +99,29 @@ export interface DepositTokenPriceHistoryResponse {
96
99
  next_cursor: number | null;
97
100
  has_more: boolean;
98
101
  }
102
+ /**
103
+ * REST response for `GET /api/deposit-asset-prices-snapshot`.
104
+ *
105
+ * Map of mint -> latest price (Decimal-as-string). Covers every active mint
106
+ * in `global_deposit_tokens` with a row in `deposit_token_prices` (live tick)
107
+ * or a recent 1m candle close (fallback). Mints with neither are absent.
108
+ */
109
+ export interface DepositAssetPricesSnapshotResponse {
110
+ prices: Record<string, string>;
111
+ }
112
+ /** Snapshot payload sent on subscribe to `deposit_asset_price` for one asset. */
113
+ export interface DepositAssetPriceSnapshot {
114
+ event_type: "snapshot";
115
+ deposit_asset: string;
116
+ price: string;
117
+ }
118
+ /** Live price tick for one deposit asset. */
119
+ export interface DepositAssetPriceTick {
120
+ event_type: "price";
121
+ deposit_asset: string;
122
+ price: string;
123
+ event_time: number;
124
+ }
125
+ export type DepositAssetPriceEvent = DepositAssetPriceSnapshot | DepositAssetPriceTick;
99
126
  export {};
100
127
  //# sourceMappingURL=wire.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/domain/price_history/wire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/domain/price_history/wire.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/domain/price_history/wire.ts"],"names":[],"mappings":"","sourcesContent":["import type { OrderBookId, Resolution } from \"../../shared\";\n\nexport interface MidpointPriceCandle {\n t: number;\n m: string | null;\n}\n\nexport interface OhlcvPriceCandle extends MidpointPriceCandle {\n o: string | null;\n h: string | null;\n l: string | null;\n c: string | null;\n v: string;\n bb: string | null;\n ba: string | null;\n}\n\nexport type PriceCandle = MidpointPriceCandle | OhlcvPriceCandle;\n\nexport interface PriceHistorySnapshot {\n orderbook_id: OrderBookId;\n resolution: Resolution;\n prices: PriceCandle[];\n last_timestamp?: number;\n server_time?: number;\n include_ohlcv?: boolean;\n}\n\nexport interface PriceHistoryUpdate {\n orderbook_id: OrderBookId;\n resolution: Resolution;\n t: number;\n m?: string;\n o?: string;\n h?: string;\n l?: string;\n c?: string;\n v?: string;\n bb?: string;\n ba?: string;\n}\n\nexport interface PriceHistoryHeartbeat {\n server_time: number;\n last_processed?: number;\n}\n\nexport type PriceHistory =\n | ({ event_type: \"snapshot\" } & PriceHistorySnapshot)\n | ({ event_type: \"update\" } & PriceHistoryUpdate)\n | ({ event_type: \"heartbeat\" } & PriceHistoryHeartbeat);\n\nexport interface DepositTokenCandle {\n t: number;\n tc: number;\n c: string;\n}\n\nexport interface DepositPriceSnapshot {\n event_type: \"snapshot\";\n deposit_asset: string;\n resolution: Resolution;\n prices: DepositTokenCandle[];\n}\n\nexport interface DepositPriceTick {\n event_type: \"price\";\n deposit_asset: string;\n price: string;\n event_time: number;\n}\n\nexport interface DepositPriceCandleUpdate {\n event_type: \"candle\";\n deposit_asset: string;\n resolution: Resolution;\n t: number;\n tc: number;\n c: string;\n}\n\nexport type DepositPrice =\n | DepositPriceSnapshot\n | DepositPriceTick\n | DepositPriceCandleUpdate;\n\ninterface OrderbookPriceHistoryResponseBase<TCandle extends PriceCandle> {\n orderbook_id: string;\n resolution: Resolution;\n prices: TCandle[];\n next_cursor: number | null;\n has_more: boolean;\n decimals: { price: number; volume: number };\n}\n\nexport type OrderbookPriceHistoryResponse =\n | (OrderbookPriceHistoryResponseBase<MidpointPriceCandle> & { include_ohlcv: false })\n | (OrderbookPriceHistoryResponseBase<OhlcvPriceCandle> & { include_ohlcv: true });\n\nexport type PriceHistoryRestResponse = OrderbookPriceHistoryResponse;\n\nexport interface DepositTokenPriceHistoryResponse {\n deposit_asset: string;\n binance_symbol: string;\n resolution: Resolution;\n prices: DepositTokenCandle[];\n next_cursor: number | null;\n has_more: boolean;\n}\n"]}
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/domain/price_history/wire.ts"],"names":[],"mappings":"","sourcesContent":["import type { OrderBookId, Resolution } from \"../../shared\";\n\nexport interface MidpointPriceCandle {\n t: number;\n m: string | null;\n}\n\nexport interface OhlcvPriceCandle extends MidpointPriceCandle {\n o: string | null;\n h: string | null;\n l: string | null;\n c: string | null;\n v: string;\n bb: string | null;\n ba: string | null;\n}\n\nexport type PriceCandle = MidpointPriceCandle | OhlcvPriceCandle;\n\nexport interface PriceHistorySnapshot {\n orderbook_id: OrderBookId;\n resolution: Resolution;\n prices: PriceCandle[];\n last_timestamp?: number;\n server_time?: number;\n include_ohlcv?: boolean;\n}\n\nexport interface PriceHistoryUpdate {\n orderbook_id: OrderBookId;\n resolution: Resolution;\n t: number;\n m?: string;\n o?: string;\n h?: string;\n l?: string;\n c?: string;\n v?: string;\n bb?: string;\n ba?: string;\n}\n\nexport interface PriceHistoryHeartbeat {\n server_time: number;\n last_processed?: number;\n}\n\nexport type PriceHistory =\n | ({ event_type: \"snapshot\" } & PriceHistorySnapshot)\n | ({ event_type: \"update\" } & PriceHistoryUpdate)\n | ({ event_type: \"heartbeat\" } & PriceHistoryHeartbeat);\n\nexport interface DepositTokenCandle {\n t: number;\n tc: number;\n c: string;\n}\n\n/** Initial batch of historical candles sent on subscription. */\nexport interface DepositPriceSnapshot {\n event_type: \"snapshot\";\n deposit_asset: string;\n resolution: Resolution;\n prices: DepositTokenCandle[];\n}\n\n/** Real-time spot price tick, broadcast to all resolutions. */\nexport interface DepositPriceTick {\n event_type: \"price\";\n deposit_asset: string;\n price: string;\n event_time: number;\n}\n\n/** A single candle update for a specific resolution (e.g. a 1m candle closed). */\nexport interface DepositPriceCandleUpdate {\n event_type: \"candle\";\n deposit_asset: string;\n resolution: Resolution;\n t: number;\n tc: number;\n c: string;\n}\n\nexport type DepositPrice =\n | DepositPriceSnapshot\n | DepositPriceTick\n | DepositPriceCandleUpdate;\n\ninterface OrderbookPriceHistoryResponseBase<TCandle extends PriceCandle> {\n orderbook_id: string;\n resolution: Resolution;\n prices: TCandle[];\n next_cursor: number | null;\n has_more: boolean;\n decimals: { price: number; volume: number };\n}\n\nexport type OrderbookPriceHistoryResponse =\n | (OrderbookPriceHistoryResponseBase<MidpointPriceCandle> & { include_ohlcv: false })\n | (OrderbookPriceHistoryResponseBase<OhlcvPriceCandle> & { include_ohlcv: true });\n\nexport type PriceHistoryRestResponse = OrderbookPriceHistoryResponse;\n\nexport interface DepositTokenPriceHistoryResponse {\n deposit_asset: string;\n binance_symbol: string;\n resolution: Resolution;\n prices: DepositTokenCandle[];\n next_cursor: number | null;\n has_more: boolean;\n}\n\n/**\n * REST response for `GET /api/deposit-asset-prices-snapshot`.\n *\n * Map of mint -> latest price (Decimal-as-string). Covers every active mint\n * in `global_deposit_tokens` with a row in `deposit_token_prices` (live tick)\n * or a recent 1m candle close (fallback). Mints with neither are absent.\n */\nexport interface DepositAssetPricesSnapshotResponse {\n prices: Record<string, string>;\n}\n\n/** Snapshot payload sent on subscribe to `deposit_asset_price` for one asset. */\nexport interface DepositAssetPriceSnapshot {\n event_type: \"snapshot\";\n deposit_asset: string;\n price: string;\n}\n\n/** Live price tick for one deposit asset. */\nexport interface DepositAssetPriceTick {\n event_type: \"price\";\n deposit_asset: string;\n price: string;\n event_time: number;\n}\n\nexport type DepositAssetPriceEvent =\n | DepositAssetPriceSnapshot\n | DepositAssetPriceTick;\n"]}
@@ -7,6 +7,12 @@ export declare class Referrals {
7
7
  private readonly client;
8
8
  constructor(client: ClientContext);
9
9
  getStatus(): Promise<ReferralStatus>;
10
+ /**
11
+ * Same as {@link getStatus}, but uses the supplied `cookieHeader` for this
12
+ * call instead of the SDK's process-wide cookie store. For server-side
13
+ * cookie forwarding (SSR / route handlers).
14
+ */
15
+ getStatusWithCookies(cookieHeader: string): Promise<ReferralStatus>;
10
16
  redeem(code: string): Promise<RedeemResult>;
11
17
  }
12
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/referral/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG5D,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAepC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAclD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/referral/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG5D,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAM1C;;;;OAIG;IACG,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAUnE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAclD"}
@@ -10,15 +10,17 @@ class Referrals {
10
10
  async getStatus() {
11
11
  const url = `${this.client.http.baseUrl()}/api/referral/status`;
12
12
  const response = await this.client.http.get(url, http_1.RetryPolicy.Idempotent);
13
- return {
14
- isBeta: response.is_beta,
15
- source: response.source,
16
- referralCodes: response.referral_codes.map((code) => ({
17
- code: code.code,
18
- maxUses: code.max_uses,
19
- useCount: code.use_count,
20
- })),
21
- };
13
+ return referralStatusFromWire(response);
14
+ }
15
+ /**
16
+ * Same as {@link getStatus}, but uses the supplied `cookieHeader` for this
17
+ * call instead of the SDK's process-wide cookie store. For server-side
18
+ * cookie forwarding (SSR / route handlers).
19
+ */
20
+ async getStatusWithCookies(cookieHeader) {
21
+ const url = `${this.client.http.baseUrl()}/api/referral/status`;
22
+ const response = await this.client.http.getWithCookies(url, http_1.RetryPolicy.Idempotent, cookieHeader);
23
+ return referralStatusFromWire(response);
22
24
  }
23
25
  async redeem(code) {
24
26
  const url = `${this.client.http.baseUrl()}/api/referral/redeem`;
@@ -31,4 +33,15 @@ class Referrals {
31
33
  }
32
34
  }
33
35
  exports.Referrals = Referrals;
36
+ function referralStatusFromWire(response) {
37
+ return {
38
+ isBeta: response.is_beta,
39
+ source: response.source,
40
+ referralCodes: response.referral_codes.map((code) => ({
41
+ code: code.code,
42
+ maxUses: code.max_uses,
43
+ useCount: code.use_count,
44
+ })),
45
+ };
46
+ }
34
47
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/referral/client.ts"],"names":[],"mappings":";;;AAAA,qCAA6D;AAQ7D,MAAa,SAAS;IACS;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,EAAE,kBAAW,CAAC,UAAU,CAAC,CAAC;QAEjG,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,OAAO;YACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,QAAQ,EAAE,IAAI,CAAC,SAAS;aACzB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,IAAI,GAAkB,EAAE,IAAI,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1C,GAAG,EACH,IAAI,EACJ,kBAAW,CAAC,IAAI,CACjB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,MAAM,EAAE,QAAQ,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;CACF;AAhCD,8BAgCC","sourcesContent":["import { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type { RedeemResult, ReferralStatus } from \"./index\";\nimport type { RedeemRequest, RedeemResponse, ReferralStatusResponse } from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport class Referrals {\n constructor(private readonly client: ClientContext) {}\n\n async getStatus(): Promise<ReferralStatus> {\n const url = `${this.client.http.baseUrl()}/api/referral/status`;\n const response = await this.client.http.get<ReferralStatusResponse>(url, RetryPolicy.Idempotent);\n\n return {\n isBeta: response.is_beta,\n source: response.source,\n referralCodes: response.referral_codes.map((code) => ({\n code: code.code,\n maxUses: code.max_uses,\n useCount: code.use_count,\n })),\n };\n }\n\n async redeem(code: string): Promise<RedeemResult> {\n const url = `${this.client.http.baseUrl()}/api/referral/redeem`;\n const body: RedeemRequest = { code };\n const response = await this.client.http.post<RedeemResponse, RedeemRequest>(\n url,\n body,\n RetryPolicy.None\n );\n\n return {\n success: response.success,\n isBeta: response.is_beta,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/referral/client.ts"],"names":[],"mappings":";;;AAAA,qCAA6D;AAQ7D,MAAa,SAAS;IACS;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,EAAE,kBAAW,CAAC,UAAU,CAAC,CAAC;QACjG,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,YAAoB;QAC7C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CACpD,GAAG,EACH,kBAAW,CAAC,UAAU,EACtB,YAAY,CACb,CAAC;QACF,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAChE,MAAM,IAAI,GAAkB,EAAE,IAAI,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1C,GAAG,EACH,IAAI,EACJ,kBAAW,CAAC,IAAI,CACjB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,MAAM,EAAE,QAAQ,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;CACF;AAtCD,8BAsCC;AAED,SAAS,sBAAsB,CAAC,QAAgC;IAC9D,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,OAAO;QACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC","sourcesContent":["import { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type { RedeemResult, ReferralStatus } from \"./index\";\nimport type { RedeemRequest, RedeemResponse, ReferralStatusResponse } from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport class Referrals {\n constructor(private readonly client: ClientContext) {}\n\n async getStatus(): Promise<ReferralStatus> {\n const url = `${this.client.http.baseUrl()}/api/referral/status`;\n const response = await this.client.http.get<ReferralStatusResponse>(url, RetryPolicy.Idempotent);\n return referralStatusFromWire(response);\n }\n\n /**\n * Same as {@link getStatus}, but uses the supplied `cookieHeader` for this\n * call instead of the SDK's process-wide cookie store. For server-side\n * cookie forwarding (SSR / route handlers).\n */\n async getStatusWithCookies(cookieHeader: string): Promise<ReferralStatus> {\n const url = `${this.client.http.baseUrl()}/api/referral/status`;\n const response = await this.client.http.getWithCookies<ReferralStatusResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n return referralStatusFromWire(response);\n }\n\n async redeem(code: string): Promise<RedeemResult> {\n const url = `${this.client.http.baseUrl()}/api/referral/redeem`;\n const body: RedeemRequest = { code };\n const response = await this.client.http.post<RedeemResponse, RedeemRequest>(\n url,\n body,\n RetryPolicy.None\n );\n\n return {\n success: response.success,\n isBeta: response.is_beta,\n };\n }\n}\n\nfunction referralStatusFromWire(response: ReferralStatusResponse): ReferralStatus {\n return {\n isBeta: response.is_beta,\n source: response.source,\n referralCodes: response.referral_codes.map((code) => ({\n code: code.code,\n maxUses: code.max_uses,\n useCount: code.use_count,\n })),\n };\n}\n"]}
@@ -7,6 +7,7 @@ export declare class Trades {
7
7
  private readonly client;
8
8
  constructor(client: ClientContext);
9
9
  get(orderbookId: string, limit?: number, cursor?: number): Promise<TradesPage>;
10
+ getByMarket(marketPubkey: string, limit?: number, cursor?: number): Promise<TradesPage>;
10
11
  }
11
12
  export {};
12
13
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAcrF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/trade/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAe9E,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;CAcvB"}
@@ -22,6 +22,20 @@ class Trades {
22
22
  hasMore: response.has_more ?? false,
23
23
  };
24
24
  }
25
+ async getByMarket(marketPubkey, limit, cursor) {
26
+ const params = new URLSearchParams({ market_pubkey: marketPubkey });
27
+ if (limit !== undefined)
28
+ params.set("limit", String(limit));
29
+ if (cursor !== undefined)
30
+ params.set("cursor", String(cursor));
31
+ const url = `${this.client.http.baseUrl()}/api/trades/market?${params.toString()}`;
32
+ const response = await this.client.http.get(url, http_1.RetryPolicy.Idempotent);
33
+ return {
34
+ trades: response.trades.map(convert_1.tradeFromResponse),
35
+ nextCursor: response.next_cursor,
36
+ hasMore: response.has_more ?? false,
37
+ };
38
+ }
25
39
  }
26
40
  exports.Trades = Trades;
27
41
  //# sourceMappingURL=client.js.map