@lightconexyz/lightcone-sdk 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +263 -34
  2. package/dist/auth/client.js.map +1 -1
  3. package/dist/client.d.ts +4 -0
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +8 -0
  6. package/dist/client.js.map +1 -1
  7. package/dist/domain/admin/client.d.ts +3 -1
  8. package/dist/domain/admin/client.d.ts.map +1 -1
  9. package/dist/domain/admin/client.js +8 -0
  10. package/dist/domain/admin/client.js.map +1 -1
  11. package/dist/domain/admin/wire.d.ts +53 -4
  12. package/dist/domain/admin/wire.d.ts.map +1 -1
  13. package/dist/domain/admin/wire.js.map +1 -1
  14. package/dist/domain/deposit_price/client.d.ts +13 -0
  15. package/dist/domain/deposit_price/client.d.ts.map +1 -0
  16. package/dist/domain/deposit_price/client.js +28 -0
  17. package/dist/domain/deposit_price/client.js.map +1 -0
  18. package/dist/domain/deposit_price/index.d.ts +9 -0
  19. package/dist/domain/deposit_price/index.d.ts.map +1 -0
  20. package/dist/domain/deposit_price/index.js +20 -0
  21. package/dist/domain/deposit_price/index.js.map +1 -0
  22. package/dist/domain/deposit_price/state.d.ts +17 -0
  23. package/dist/domain/deposit_price/state.d.ts.map +1 -0
  24. package/dist/domain/deposit_price/state.js +45 -0
  25. package/dist/domain/deposit_price/state.js.map +1 -0
  26. package/dist/domain/deposit_price/wire.d.ts +36 -0
  27. package/dist/domain/deposit_price/wire.d.ts.map +1 -0
  28. package/dist/domain/deposit_price/wire.js +3 -0
  29. package/dist/domain/deposit_price/wire.js.map +1 -0
  30. package/dist/domain/index.d.ts +2 -0
  31. package/dist/domain/index.d.ts.map +1 -1
  32. package/dist/domain/index.js +3 -1
  33. package/dist/domain/index.js.map +1 -1
  34. package/dist/domain/notification/client.d.ts +13 -0
  35. package/dist/domain/notification/client.d.ts.map +1 -0
  36. package/dist/domain/notification/client.js +21 -0
  37. package/dist/domain/notification/client.js.map +1 -0
  38. package/dist/domain/notification/index.d.ts +51 -0
  39. package/dist/domain/notification/index.d.ts.map +1 -0
  40. package/dist/domain/notification/index.js +29 -0
  41. package/dist/domain/notification/index.js.map +1 -0
  42. package/dist/domain/order/client.d.ts +2 -1
  43. package/dist/domain/order/client.d.ts.map +1 -1
  44. package/dist/domain/order/client.js +10 -2
  45. package/dist/domain/order/client.js.map +1 -1
  46. package/dist/domain/order/convert.js +3 -3
  47. package/dist/domain/order/convert.js.map +1 -1
  48. package/dist/domain/order/wire.d.ts +31 -25
  49. package/dist/domain/order/wire.d.ts.map +1 -1
  50. package/dist/domain/order/wire.js.map +1 -1
  51. package/dist/domain/orderbook/state.js +2 -2
  52. package/dist/domain/orderbook/state.js.map +1 -1
  53. package/dist/domain/position/wire.d.ts +7 -0
  54. package/dist/domain/position/wire.d.ts.map +1 -1
  55. package/dist/domain/position/wire.js.map +1 -1
  56. package/dist/domain/price_history/client.d.ts +2 -1
  57. package/dist/domain/price_history/client.d.ts.map +1 -1
  58. package/dist/domain/price_history/client.js +13 -2
  59. package/dist/domain/price_history/client.js.map +1 -1
  60. package/dist/domain/price_history/wire.d.ts +25 -0
  61. package/dist/domain/price_history/wire.d.ts.map +1 -1
  62. package/dist/domain/price_history/wire.js.map +1 -1
  63. package/dist/domain/trade/client.d.ts +1 -1
  64. package/dist/domain/trade/client.js +3 -3
  65. package/dist/domain/trade/client.js.map +1 -1
  66. package/dist/error.d.ts.map +1 -1
  67. package/dist/error.js +3 -0
  68. package/dist/error.js.map +1 -1
  69. package/dist/http/client.d.ts.map +1 -1
  70. package/dist/http/client.js +5 -4
  71. package/dist/http/client.js.map +1 -1
  72. package/dist/index.d.ts +1 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/prelude.d.ts +8 -1
  76. package/dist/prelude.d.ts.map +1 -1
  77. package/dist/prelude.js +8 -1
  78. package/dist/prelude.js.map +1 -1
  79. package/dist/privy/client.d.ts +4 -5
  80. package/dist/privy/client.d.ts.map +1 -1
  81. package/dist/privy/client.js +2 -11
  82. package/dist/privy/client.js.map +1 -1
  83. package/dist/privy/index.d.ts +41 -1
  84. package/dist/privy/index.d.ts.map +1 -1
  85. package/dist/privy/index.js +2 -0
  86. package/dist/privy/index.js.map +1 -1
  87. package/dist/program/accounts.d.ts.map +1 -1
  88. package/dist/program/accounts.js +7 -1
  89. package/dist/program/accounts.js.map +1 -1
  90. package/dist/program/builder.d.ts +5 -13
  91. package/dist/program/builder.d.ts.map +1 -1
  92. package/dist/program/builder.js +9 -13
  93. package/dist/program/builder.js.map +1 -1
  94. package/dist/program/client.d.ts +8 -4
  95. package/dist/program/client.d.ts.map +1 -1
  96. package/dist/program/client.js +12 -8
  97. package/dist/program/client.js.map +1 -1
  98. package/dist/program/constants.d.ts +2 -1
  99. package/dist/program/constants.d.ts.map +1 -1
  100. package/dist/program/constants.js +3 -2
  101. package/dist/program/constants.js.map +1 -1
  102. package/dist/program/envelope.d.ts +7 -2
  103. package/dist/program/envelope.d.ts.map +1 -1
  104. package/dist/program/envelope.js +29 -21
  105. package/dist/program/envelope.js.map +1 -1
  106. package/dist/program/index.d.ts +3 -3
  107. package/dist/program/index.d.ts.map +1 -1
  108. package/dist/program/index.js +5 -2
  109. package/dist/program/index.js.map +1 -1
  110. package/dist/program/instructions.d.ts +30 -6
  111. package/dist/program/instructions.d.ts.map +1 -1
  112. package/dist/program/instructions.js +162 -62
  113. package/dist/program/instructions.js.map +1 -1
  114. package/dist/program/orders.d.ts +20 -19
  115. package/dist/program/orders.d.ts.map +1 -1
  116. package/dist/program/orders.js +34 -22
  117. package/dist/program/orders.js.map +1 -1
  118. package/dist/program/types.d.ts +29 -9
  119. package/dist/program/types.d.ts.map +1 -1
  120. package/dist/program/types.js.map +1 -1
  121. package/dist/shared/index.d.ts +1 -1
  122. package/dist/shared/index.d.ts.map +1 -1
  123. package/dist/shared/index.js +2 -1
  124. package/dist/shared/index.js.map +1 -1
  125. package/dist/shared/types.d.ts +10 -3
  126. package/dist/shared/types.d.ts.map +1 -1
  127. package/dist/shared/types.js +6 -1
  128. package/dist/shared/types.js.map +1 -1
  129. package/dist/ws/client.browser.js +2 -2
  130. package/dist/ws/client.browser.js.map +1 -1
  131. package/dist/ws/client.node.js +2 -2
  132. package/dist/ws/client.node.js.map +1 -1
  133. package/dist/ws/index.d.ts +8 -0
  134. package/dist/ws/index.d.ts.map +1 -1
  135. package/dist/ws/index.js +49 -1
  136. package/dist/ws/index.js.map +1 -1
  137. package/dist/ws/subscriptions.d.ts +8 -0
  138. package/dist/ws/subscriptions.d.ts.map +1 -1
  139. package/dist/ws/subscriptions.js +5 -0
  140. package/dist/ws/subscriptions.js.map +1 -1
  141. package/package.json +3 -2
package/README.md CHANGED
@@ -1,6 +1,21 @@
1
- # Lightcone TypeScript SDK v2
1
+ # Lightcone SDK
2
2
 
3
- TypeScript SDK v2 for the Lightcone protocol, rebuilt to mirror the Rust v2 layered architecture.
3
+ TypeScript SDK for the Lightcone impact market protocol on Solana.
4
+
5
+ ## Table of Contents
6
+ - [Installation](#installation)
7
+ - [Quick Start](#quick-start)
8
+ - [Start Trading](#start-trading)
9
+ - [Step 1: Find a Market](#step-1-find-a-market)
10
+ - [Step 2: Deposit Collateral](#step-2-deposit-collateral)
11
+ - [Step 3: Place an Order](#step-3-place-an-order)
12
+ - [Step 4: Monitor](#step-4-monitor)
13
+ - [Step 5: Cancel an Order](#step-5-cancel-an-order)
14
+ - [Step 6: Exit a Position](#step-6-exit-a-position)
15
+ - [Examples](#examples)
16
+ - [Authentication](#authentication)
17
+ - [Error Handling](#error-handling)
18
+ - [Retry Strategy](#retry-strategy)
4
19
 
5
20
  ## Installation
6
21
 
@@ -8,52 +23,266 @@ TypeScript SDK v2 for the Lightcone protocol, rebuilt to mirror the Rust v2 laye
8
23
  npm install @lightconexyz/lightcone-sdk
9
24
  ```
10
25
 
11
- ## Architecture
26
+ ## Quick Start
12
27
 
13
- The SDK is organized in 5 layers:
28
+ ```typescript
29
+ import { Keypair, PublicKey } from "@solana/web3.js";
30
+ import {
31
+ LightconeClient,
32
+ LimitOrderEnvelope,
33
+ auth,
34
+ program,
35
+ } from "@lightconexyz/lightcone-sdk";
14
36
 
15
- 1. `shared`, `domain`, `program`, `error`, `network`
16
- 2. `auth`, `privy`
17
- 3. `http`
18
- 4. `ws`
19
- 5. `client` (`LightconeClient`)
37
+ async function main() {
38
+ const client = LightconeClient.builder().build();
39
+ const rpc = program.LightconePinocchioClient.new("https://api.devnet.solana.com");
40
+ const keypair = Keypair.generate();
20
41
 
21
- ## Quick Start
42
+ // 1. Authenticate
43
+ {
44
+ const nonce = await client.auth().getNonce();
45
+ const signed = auth.signLoginMessage(keypair, nonce);
46
+ const user = await client.auth().loginWithMessage(
47
+ signed.message,
48
+ signed.signature_bs58,
49
+ signed.pubkey_bytes
50
+ );
51
+ }
52
+
53
+ // 2. Find a market
54
+ const market = await client.markets().getBySlug("some-market");
55
+ const orderbook = market.orderbookPairs[0];
56
+
57
+ // 3. Get orderbook decimals for price scaling
58
+ const raw = await client.orderbooks().decimals(orderbook.orderbookId);
59
+ const decimals = {
60
+ orderbookId: raw.orderbook_id,
61
+ baseDecimals: raw.base_decimals,
62
+ quoteDecimals: raw.quote_decimals,
63
+ priceDecimals: raw.price_decimals,
64
+ tickSize: BigInt(Math.max(orderbook.tickSize, 0)),
65
+ };
66
+
67
+ // 4. Build, sign, and submit a limit order
68
+ const nonce = await rpc.getCurrentNonce(keypair.publicKey);
69
+ const request = LimitOrderEnvelope.new()
70
+ .maker(keypair.publicKey)
71
+ .market(new PublicKey(market.pubkey))
72
+ .baseMint(new PublicKey(orderbook.base.pubkey))
73
+ .quoteMint(new PublicKey(orderbook.quote.pubkey))
74
+ .bid()
75
+ .price("0.55")
76
+ .size("100")
77
+ .nonce(nonce)
78
+ .applyScaling(decimals)
79
+ .sign(keypair, orderbook.orderbookId);
80
+
81
+ const response = await client.orders().submit(request);
82
+ console.log("Order submitted:", response);
83
+
84
+ // 5. Stream real-time updates
85
+ const ws = client.ws();
86
+ await ws.connect();
87
+ ws.subscribe({ type: "book_update", orderbook_ids: [orderbook.orderbookId] });
88
+ }
89
+
90
+ main().catch(console.error);
91
+ ```
92
+
93
+ ## Start Trading
94
+
95
+ ```typescript
96
+ import * as fs from "fs";
97
+ import * as path from "path";
98
+ import { Keypair, PublicKey } from "@solana/web3.js";
99
+ import { LightconeClient, program } from "@lightconexyz/lightcone-sdk";
100
+
101
+ function readKeypairFile(filePath: string): Keypair {
102
+ const resolved = filePath.startsWith("~")
103
+ ? path.join(process.env.HOME ?? "", filePath.slice(1))
104
+ : filePath;
105
+ const secret = JSON.parse(fs.readFileSync(resolved, "utf-8"));
106
+ return Keypair.fromSecretKey(Uint8Array.from(secret));
107
+ }
108
+
109
+ const client = LightconeClient.builder().build();
110
+ const rpc = program.LightconePinocchioClient.new("https://api.devnet.solana.com");
111
+ const keypair = readKeypairFile("~/.config/solana/id.json");
112
+ ```
113
+
114
+ ### Step 1: Find a Market
22
115
 
23
116
  ```typescript
24
- import { LightconeClient, Resolution } from "@lightconexyz/lightcone-sdk";
117
+ const market = await client.markets().getBySlug("some-market");
118
+ const orderbook =
119
+ market.orderbookPairs.find((pair) => pair.active) ?? market.orderbookPairs[0];
120
+ ```
25
121
 
26
- const client = LightconeClient.builder()
27
- .baseUrl("https://tapi.lightcone.xyz")
28
- .wsUrl("wss://tws.lightcone.xyz/ws")
29
- .build();
122
+ ### Step 2: Deposit Collateral
30
123
 
31
- const markets = await client.markets().get(undefined, 20);
32
- const orderbook = await client.orderbooks().get("orderbook_id", 20);
33
- const trades = await client.trades().get("orderbook_id", 50);
34
- const candles = await client.priceHistory().get("orderbook_id", Resolution.Minute1);
124
+ ```typescript
125
+ const marketPubkey = new PublicKey(market.pubkey);
126
+ const depositMint = new PublicKey(market.depositAssets[0].pubkey);
127
+ const numOutcomes = market.outcomes.length;
128
+ const mintResult = await rpc.mintCompleteSet(
129
+ {
130
+ user: keypair.publicKey,
131
+ market: marketPubkey,
132
+ depositMint,
133
+ amount: 1_000_000n,
134
+ },
135
+ numOutcomes
136
+ );
137
+ mintResult.transaction.sign(keypair);
35
138
  ```
36
139
 
37
- ## Main Entry Points
140
+ ### Step 3: Place an Order
141
+
142
+ ```typescript
143
+ import { LimitOrderEnvelope } from "@lightconexyz/lightcone-sdk";
144
+
145
+ const decimals = await client.orderbooks().decimals(orderbook.orderbookId);
146
+ const scales = {
147
+ orderbookId: decimals.orderbook_id,
148
+ baseDecimals: decimals.base_decimals,
149
+ quoteDecimals: decimals.quote_decimals,
150
+ priceDecimals: decimals.price_decimals,
151
+ tickSize: BigInt(Math.max(orderbook.tickSize, 0)),
152
+ };
153
+ const request = LimitOrderEnvelope.new()
154
+ .maker(keypair.publicKey)
155
+ .market(new PublicKey(market.pubkey))
156
+ .baseMint(new PublicKey(orderbook.base.pubkey))
157
+ .quoteMint(new PublicKey(orderbook.quote.pubkey))
158
+ .bid()
159
+ .price("0.55")
160
+ .size("1")
161
+ .nonce(await rpc.getCurrentNonce(keypair.publicKey))
162
+ .applyScaling(scales)
163
+ .sign(keypair, orderbook.orderbookId);
164
+ const order = await client.orders().submit(request);
165
+ ```
166
+
167
+ ### Step 4: Monitor
168
+
169
+ ```typescript
170
+ import { asPubkeyStr } from "@lightconexyz/lightcone-sdk";
171
+
172
+ const open = await client
173
+ .orders()
174
+ .getUserOrders(keypair.publicKey.toBase58(), 50);
175
+ const ws = client.ws();
176
+ await ws.connect();
177
+ ws.subscribe({ type: "book_update", orderbook_ids: [orderbook.orderbookId] });
178
+ ws.subscribe({
179
+ type: "user",
180
+ wallet_address: asPubkeyStr(keypair.publicKey.toBase58()),
181
+ });
182
+ ```
183
+
184
+ ### Step 5: Cancel an Order
185
+
186
+ ```typescript
187
+ import { program, asPubkeyStr } from "@lightconexyz/lightcone-sdk";
188
+
189
+ const signature = program.signCancelOrder(order.order_hash, keypair);
190
+ await client.orders().cancel({
191
+ order_hash: order.order_hash,
192
+ maker: asPubkeyStr(keypair.publicKey.toBase58()),
193
+ signature,
194
+ });
195
+ ```
196
+
197
+ ### Step 6: Exit a Position
198
+
199
+ ```typescript
200
+ const mergeResult = await rpc.mergeCompleteSet(
201
+ {
202
+ user: keypair.publicKey,
203
+ market: new PublicKey(market.pubkey),
204
+ depositMint,
205
+ amount: 1_000_000n,
206
+ },
207
+ numOutcomes
208
+ );
209
+ mergeResult.transaction.sign(keypair);
210
+ ```
211
+
212
+ ## Authentication
213
+ Authentication is only required for user-specific endpoints. Authentication is session-based using ED25519 signed messages. The flow is: request a nonce, sign it with your wallet, and exchange it for a session token.
214
+
215
+ ## Examples
216
+ All examples are runnable with `npx tsx examples/<name>.ts`. Set environment variables in a `.env` file - see [`.env.example`](.env.example) for the template.
217
+
218
+ ### Setup & Authentication
219
+
220
+ | Example | Description |
221
+ |---------|-------------|
222
+ | [`login`](examples/login.ts) | Full auth lifecycle: sign message, login, check session, logout |
223
+
224
+ ### Market Discovery & Data
225
+
226
+ | Example | Description |
227
+ |---------|-------------|
228
+ | [`markets`](examples/markets.ts) | Featured markets, paginated listing, fetch by pubkey, search |
229
+ | [`orderbook`](examples/orderbook.ts) | Fetch orderbook depth (bids/asks) and decimal precision metadata |
230
+ | [`trades`](examples/trades.ts) | Recent trade history with cursor-based pagination |
231
+ | [`price_history`](examples/price_history.ts) | Historical candlestick data (OHLCV) at various resolutions |
232
+ | [`positions`](examples/positions.ts) | User positions across all markets and per-market |
233
+
234
+ ### Placing Orders
235
+
236
+ | Example | Description |
237
+ |---------|-------------|
238
+ | [`submit_order`](examples/submit_order.ts) | `LimitOrderEnvelope` with human-readable price/size, auto-scaling, and fill tracking |
239
+
240
+ ### Cancelling Orders
241
+
242
+ | Example | Description |
243
+ |---------|-------------|
244
+ | [`cancel_order`](examples/cancel_order.ts) | Cancel a single order by hash and cancel all orders in an orderbook |
245
+ | [`user_orders`](examples/user_orders.ts) | Fetch open orders for an authenticated user |
246
+
247
+ ### On-Chain Operations
248
+
249
+ | Example | Description |
250
+ |---------|-------------|
251
+ | [`read_onchain`](examples/read_onchain.ts) | Read exchange state, market state, user nonce, and PDA derivations via RPC |
252
+ | [`onchain_transactions`](examples/onchain_transactions.ts) | Build, sign, and submit mint/merge complete set and increment nonce on-chain |
253
+
254
+ ### WebSocket Streaming
38
255
 
39
- - `LightconeClient` + `LightconeClientBuilder`
40
- - `client.markets()`, `client.orderbooks()`, `client.orders()`, `client.positions()`
41
- - `client.trades()`, `client.priceHistory()`, `client.admin()`, `client.auth()`, `client.privy()`, `client.referrals()`
42
- - `client.ws()` for WebSocket streaming with typed subscribe/unsubscribe payloads
256
+ | Example | Description |
257
+ |---------|-------------|
258
+ | [`ws_book_and_trades`](examples/ws_book_and_trades.ts) | Live orderbook depth with `OrderbookSnapshot` state + rolling `TradeHistory` buffer |
259
+ | [`ws_ticker_and_prices`](examples/ws_ticker_and_prices.ts) | Best bid/ask ticker + price history candles with `PriceHistoryState` |
260
+ | [`ws_user_and_market`](examples/ws_user_and_market.ts) | Authenticated user stream (orders, balances) + market lifecycle events |
43
261
 
44
- ## Program Module
262
+ ## Error Handling
45
263
 
46
- `program/` remains the on-chain toolkit (PDAs, instructions, account deserialization, order utilities), with v2 envelope builders now exposed:
264
+ All SDK operations return promises that reject with `SdkError`:
47
265
 
48
- - `LimitOrderEnvelope`
49
- - `TriggerOrderEnvelope`
266
+ | Variant | When |
267
+ |---------|------|
268
+ | `SdkError.Http(HttpError)` | REST request failures |
269
+ | `SdkError.Ws(WsError)` | WebSocket connection/protocol errors |
270
+ | `SdkError.Auth(AuthError)` | Authentication failures |
271
+ | `SdkError.Validation(string)` | Domain type conversion failures |
272
+ | `SdkError.Serde(Error)` | Serialization errors |
273
+ | `SdkError.Other(string)` | Catch-all |
50
274
 
51
- ## Notes
275
+ Notable `HttpError` variants:
52
276
 
53
- - Browser cookie-based auth is supported via `credentials: "include"`.
54
- - Native/Node auth token injection uses `Cookie: auth_token=...` internally.
55
- - Orderbook decimals are memoized in the high-level client cache.
277
+ | Variant | Meaning |
278
+ |---------|---------|
279
+ | `ServerError { status, body }` | Non-2xx response from the backend |
280
+ | `RateLimited { retryAfterMs }` | 429 - back off and retry |
281
+ | `Unauthorized` | 401 - session expired or missing |
282
+ | `MaxRetriesExceeded { attempts, lastError }` | All retry attempts exhausted |
56
283
 
57
- ## License
284
+ ## Retry Strategy
58
285
 
59
- MIT
286
+ - **GET requests**: `RetryPolicy.Idempotent` - retries on transport failures and 502/503/504, backs off on 429 with exponential backoff + jitter.
287
+ - **POST requests** (order submit, cancel, auth): `RetryPolicy.None` - no automatic retry. Non-idempotent actions are never retried to prevent duplicate side effects.
288
+ - Customizable per-call with `RetryPolicy.custom(config)`.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/auth/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { AuthError, SdkError } from \"../error\";\nimport { RetryPolicy, type LightconeHttp } from \"../http\";\nimport { asPubkeyStr } from \"../shared\";\nimport type { AuthCredentials, LoginRequest, LoginResponse, MeResponse, NonceResponse, User } from \"./index\";\n\ninterface AuthState {\n getCredentials(): AuthCredentials | undefined;\n setCredentials(credentials: AuthCredentials | undefined): void;\n clearCaches(): Promise<void>;\n}\n\ninterface ClientContext {\n http: LightconeHttp;\n authState: AuthState;\n}\n\nexport class Auth {\n constructor(private readonly client: ClientContext) {}\n\n async getNonce(): Promise<string> {\n const url = `${this.client.http.baseUrl()}/api/auth/nonce`;\n const response = await this.client.http.get<NonceResponse>(url, RetryPolicy.None);\n return response.nonce;\n }\n\n async loginWithMessage(\n message: string,\n signatureBs58: string,\n pubkeyBytes: Uint8Array,\n useEmbeddedWallet?: boolean\n ): Promise<User> {\n const url = `${this.client.http.baseUrl()}/api/auth/login_or_register_with_message`;\n const body: LoginRequest = {\n message,\n signature_bs58: signatureBs58,\n pubkey_bytes: Array.from(pubkeyBytes),\n use_embedded_wallet: useEmbeddedWallet,\n };\n\n let response: LoginResponse;\n try {\n response = await this.client.http.post<LoginResponse, LoginRequest>(\n url,\n body,\n RetryPolicy.None\n );\n } catch (error) {\n throw SdkError.from(new AuthError(\"LoginFailed\", error instanceof Error ? error.message : String(error)));\n }\n\n if (response.token) {\n await this.client.http.setAuthToken(response.token);\n }\n\n const credentials: AuthCredentials = {\n user_id: response.user_id,\n wallet_address: asPubkeyStr(response.wallet_address),\n expires_at: parseExpiry(response.expires_at),\n };\n this.client.authState.setCredentials(credentials);\n\n return {\n id: response.user_id,\n wallet_address: response.wallet_address,\n linked_account: response.linked_account,\n privy_id: response.privy_id,\n embedded_wallet: response.embedded_wallet,\n x_username: response.x_username,\n x_user_id: response.x_user_id,\n x_display_name: response.x_display_name,\n };\n }\n\n async checkSession(): Promise<User> {\n const url = `${this.client.http.baseUrl()}/api/auth/me`;\n\n let response: MeResponse;\n try {\n response = await this.client.http.get<MeResponse>(url, RetryPolicy.Idempotent);\n } catch (error) {\n this.client.authState.setCredentials(undefined);\n throw SdkError.from(error);\n }\n\n this.client.authState.setCredentials({\n user_id: response.user_id,\n wallet_address: asPubkeyStr(response.wallet_address),\n expires_at: parseExpiry(response.expires_at),\n });\n\n return {\n id: response.user_id,\n wallet_address: response.wallet_address,\n linked_account: response.linked_account,\n privy_id: response.privy_id,\n embedded_wallet: response.embedded_wallet,\n x_username: response.x_username,\n x_user_id: response.x_user_id,\n x_display_name: response.x_display_name,\n };\n }\n\n async logout(): Promise<void> {\n const url = `${this.client.http.baseUrl()}/api/auth/logout`;\n try {\n await this.client.http.post<unknown, Record<string, never>>(url, {}, RetryPolicy.None);\n } catch {\n // Backend cookie clear can fail in local/dev setups; still clear local state.\n }\n\n await this.client.http.clearAuthToken();\n this.client.authState.setCredentials(undefined);\n await this.client.authState.clearCaches();\n }\n\n async disconnectX(): Promise<void> {\n const url = `${this.client.http.baseUrl()}/api/auth/disconnect_x`;\n await this.client.http.post<unknown, Record<string, never>>(url, {}, RetryPolicy.None);\n }\n\n async connectX(\n xUserId: string,\n xUsername: string,\n xDisplayName?: string\n ): Promise<void> {\n const url = `${this.client.http.baseUrl()}/api/auth/connect_x`;\n await this.client.http.post<unknown, { x_user_id: string; x_username: string; x_display_name?: string }>(\n url,\n {\n x_user_id: xUserId,\n x_username: xUsername,\n x_display_name: xDisplayName,\n },\n RetryPolicy.None\n );\n }\n\n credentials(): AuthCredentials | undefined {\n return this.client.authState.getCredentials();\n }\n\n isAuthenticated(): boolean {\n const credentials = this.credentials();\n if (!credentials) {\n return false;\n }\n return Date.now() < credentials.expires_at.getTime();\n }\n}\n\nfunction parseExpiry(timestamp: number): Date {\n if (timestamp > 1_000_000_000_000) {\n return new Date(timestamp);\n }\n return new Date(timestamp * 1000);\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/auth/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { AuthError, SdkError } from \"../error\";\nimport { RetryPolicy, type LightconeHttp } from \"../http\";\nimport { asPubkeyStr } from \"../shared\";\nimport type { AuthCredentials, LoginRequest, LoginResponse, MeResponse, NonceResponse, User } from \"./index\";\n\ninterface AuthState {\n getCredentials(): AuthCredentials | undefined;\n setCredentials(credentials: AuthCredentials | undefined): void;\n clearCaches(): Promise<void>;\n}\n\ninterface ClientContext {\n http: LightconeHttp;\n authState: AuthState;\n}\n\nexport class Auth {\n constructor(private readonly client: ClientContext) {}\n\n async getNonce(): Promise<string> {\n const url = `${this.client.http.baseUrl()}/api/auth/nonce`;\n const response = await this.client.http.get<NonceResponse>(url, RetryPolicy.None);\n return response.nonce;\n }\n\n async loginWithMessage(\n message: string,\n signatureBs58: string,\n pubkeyBytes: Uint8Array,\n useEmbeddedWallet?: boolean\n ): Promise<User> {\n const url = `${this.client.http.baseUrl()}/api/auth/login_or_register_with_message`;\n const body: LoginRequest = {\n message,\n signature_bs58: signatureBs58,\n pubkey_bytes: Array.from(pubkeyBytes),\n use_embedded_wallet: useEmbeddedWallet,\n };\n\n let response: LoginResponse;\n try {\n response = await this.client.http.post<LoginResponse, LoginRequest>(\n url,\n body,\n RetryPolicy.None\n );\n } catch (error) {\n throw SdkError.from(new AuthError(\"LoginFailed\", error instanceof Error ? error.message : String(error)));\n }\n\n if (response.token) {\n await this.client.http.setAuthToken(response.token);\n }\n\n const credentials: AuthCredentials = {\n user_id: response.user_id,\n wallet_address: asPubkeyStr(response.wallet_address),\n expires_at: parseExpiry(response.expires_at),\n };\n this.client.authState.setCredentials(credentials);\n\n return {\n id: response.user_id,\n wallet_address: response.wallet_address,\n linked_account: response.linked_account,\n privy_id: response.privy_id,\n embedded_wallet: response.embedded_wallet,\n x_username: response.x_username,\n x_user_id: response.x_user_id,\n x_display_name: response.x_display_name,\n };\n }\n\n async checkSession(): Promise<User> {\n const url = `${this.client.http.baseUrl()}/api/auth/me`;\n\n let response: MeResponse;\n try {\n response = await this.client.http.get<MeResponse>(url, RetryPolicy.Idempotent);\n } catch (error) {\n this.client.authState.setCredentials(undefined);\n throw SdkError.from(error);\n }\n\n this.client.authState.setCredentials({\n user_id: response.user_id,\n wallet_address: asPubkeyStr(response.wallet_address),\n expires_at: parseExpiry(response.expires_at),\n });\n\n return {\n id: response.user_id,\n wallet_address: response.wallet_address,\n linked_account: response.linked_account,\n privy_id: response.privy_id,\n embedded_wallet: response.embedded_wallet,\n x_username: response.x_username,\n x_user_id: response.x_user_id,\n x_display_name: response.x_display_name,\n };\n }\n\n async logout(): Promise<void> {\n const url = `${this.client.http.baseUrl()}/api/auth/logout`;\n try {\n await this.client.http.post<{ success: boolean }, Record<string, never>>(url, {}, RetryPolicy.None);\n } catch {\n // Backend cookie clear can fail in local/dev setups; still clear local state.\n }\n\n await this.client.http.clearAuthToken();\n this.client.authState.setCredentials(undefined);\n await this.client.authState.clearCaches();\n }\n\n async disconnectX(): Promise<void> {\n const url = `${this.client.http.baseUrl()}/api/auth/disconnect_x`;\n await this.client.http.post<{ success: boolean }, Record<string, never>>(url, {}, RetryPolicy.None);\n }\n\n async connectX(\n xUserId: string,\n xUsername: string,\n xDisplayName?: string\n ): Promise<void> {\n const url = `${this.client.http.baseUrl()}/api/auth/connect_x`;\n await this.client.http.post<{ success: boolean }, { x_user_id: string; x_username: string; x_display_name?: string }>(\n url,\n {\n x_user_id: xUserId,\n x_username: xUsername,\n x_display_name: xDisplayName,\n },\n RetryPolicy.None\n );\n }\n\n credentials(): AuthCredentials | undefined {\n return this.client.authState.getCredentials();\n }\n\n isAuthenticated(): boolean {\n const credentials = this.credentials();\n if (!credentials) {\n return false;\n }\n return Date.now() < credentials.expires_at.getTime();\n }\n}\n\nfunction parseExpiry(timestamp: number): Date {\n if (timestamp > 1_000_000_000_000) {\n return new Date(timestamp);\n }\n return new Date(timestamp * 1000);\n}\n"]}
package/dist/client.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import { Auth, type AuthCredentials } from "./auth";
2
2
  import { Admin } from "./domain/admin";
3
3
  import { Markets } from "./domain/market";
4
+ import { Notifications } from "./domain/notification";
4
5
  import { Orders } from "./domain/order";
5
6
  import { Orderbooks } from "./domain/orderbook";
6
7
  import type { DecimalsResponse } from "./domain/orderbook";
7
8
  import { Positions } from "./domain/position";
9
+ import { DepositPriceClient } from "./domain/deposit_price";
8
10
  import { PriceHistoryClient } from "./domain/price_history";
9
11
  import { Referrals } from "./domain/referral";
10
12
  import { Trades } from "./domain/trade";
@@ -44,6 +46,8 @@ export declare class LightconeClient {
44
46
  positions(): Positions;
45
47
  trades(): Trades;
46
48
  priceHistory(): PriceHistoryClient;
49
+ depositPrice(): DepositPriceClient;
50
+ notifications(): Notifications;
47
51
  admin(): Admin;
48
52
  auth(): Auth;
49
53
  privy(): Privy;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -4,9 +4,11 @@ exports.LightconeClientBuilder = exports.LightconeClient = void 0;
4
4
  const auth_1 = require("./auth");
5
5
  const admin_1 = require("./domain/admin");
6
6
  const market_1 = require("./domain/market");
7
+ const notification_1 = require("./domain/notification");
7
8
  const order_1 = require("./domain/order");
8
9
  const orderbook_1 = require("./domain/orderbook");
9
10
  const position_1 = require("./domain/position");
11
+ const deposit_price_1 = require("./domain/deposit_price");
10
12
  const price_history_1 = require("./domain/price_history");
11
13
  const referral_1 = require("./domain/referral");
12
14
  const trade_1 = require("./domain/trade");
@@ -80,6 +82,12 @@ class LightconeClient {
80
82
  priceHistory() {
81
83
  return new price_history_1.PriceHistoryClient(this);
82
84
  }
85
+ depositPrice() {
86
+ return new deposit_price_1.DepositPriceClient(this);
87
+ }
88
+ notifications() {
89
+ return new notification_1.Notifications(this);
90
+ }
83
91
  admin() {
84
92
  return new admin_1.Admin(this);
85
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,iCAAoD;AACpD,0CAAuC;AACvC,4CAA0C;AAC1C,0CAAwC;AACxC,kDAAgD;AAEhD,gDAA8C;AAC9C,0DAA4D;AAC5D,gDAA8C;AAC9C,0CAAwC;AACxC,iCAAuC;AACvC,uCAA4D;AAC5D,mCAAgC;AAChC,6BAA+C;AAE/C,MAAM,aAAa;IACA,GAAG,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE3D,GAAG,CAAC,WAAmB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,WAAmB,EAAE,QAA0B;QACjD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;CACF;AAED,MAAM,SAAS;IAIM;IAHX,gBAAgB,CAA8B;IAEtD,YACmB,aAAkC,EACnD,OAAyB;QADR,kBAAa,GAAb,aAAa,CAAqB;QAGnD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAClC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,WAAwC;QACrD,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,MAAa,eAAe;IACjB,IAAI,CAAgB;IACZ,aAAa,CAAW;IACxB,kBAAkB,CAAgB;IAClC,cAAc,CAAY;IAE3C,YAAY,MAMX;QACC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,aAAa,EAAE,CAAC;QACtE,IAAI,CAAC,cAAc;YACjB,MAAM,CAAC,SAAS;gBAChB,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,sBAAsB,EAAE,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,gBAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,sBAAU,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,kBAAkB;SACvC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,cAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,cAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,kCAAkB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,WAAI,CAAC;YACd,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,cAAc;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,OAAO,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,EAAE;QACA,OAAO,IAAI,aAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,eAAe,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;YACnC,aAAa,EAAE,IAAI,CAAC,kBAAkB;YACtC,SAAS,EAAE,IAAI,CAAC,cAAc;SAC/B,CAAC,CAAC;IACL,CAAC;CACF;AA3FD,0CA2FC;AAED,MAAa,sBAAsB;IACzB,YAAY,GAAW,yBAAe,CAAC;IACvC,UAAU,GAAW,wBAAc,CAAC;IACpC,eAAe,CAAmB;IAE1C,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,WAA4B;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,WAA4B;QACnC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,IAAI,eAAe,CAAC;YACzB,IAAI,EAAE,IAAI,oBAAa,CAAC,IAAI,CAAC,YAAY,CAAC;YAC1C,QAAQ,EAAE;gBACR,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,SAAS,EAAE,IAAI;gBACf,oBAAoB,EAAE,EAAE;gBACxB,oBAAoB,EAAE,KAAK;gBAC3B,cAAc,EAAE,MAAM;gBACtB,aAAa,EAAE,KAAK;aACrB;YACD,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAC;IACL,CAAC;CACF;AA9CD,wDA8CC","sourcesContent":["import { Auth, type AuthCredentials } from \"./auth\";\nimport { Admin } from \"./domain/admin\";\nimport { Markets } from \"./domain/market\";\nimport { Orders } from \"./domain/order\";\nimport { Orderbooks } from \"./domain/orderbook\";\nimport type { DecimalsResponse } from \"./domain/orderbook\";\nimport { Positions } from \"./domain/position\";\nimport { PriceHistoryClient } from \"./domain/price_history\";\nimport { Referrals } from \"./domain/referral\";\nimport { Trades } from \"./domain/trade\";\nimport { LightconeHttp } from \"./http\";\nimport { DEFAULT_API_URL, DEFAULT_WS_URL } from \"./network\";\nimport { Privy } from \"./privy\";\nimport { WsClient, type WsConfig } from \"./ws\";\n\nclass DecimalsCache {\n private readonly map = new Map<string, DecimalsResponse>();\n\n get(orderbookId: string): DecimalsResponse | undefined {\n return this.map.get(orderbookId);\n }\n\n set(orderbookId: string, response: DecimalsResponse): void {\n this.map.set(orderbookId, response);\n }\n\n clear(): void {\n this.map.clear();\n }\n}\n\nclass AuthState {\n private credentialsValue: AuthCredentials | undefined;\n\n constructor(\n private readonly clearCachesFn: () => Promise<void>,\n initial?: AuthCredentials\n ) {\n this.credentialsValue = initial;\n }\n\n getCredentials(): AuthCredentials | undefined {\n return this.credentialsValue;\n }\n\n setCredentials(credentials: AuthCredentials | undefined): void {\n this.credentialsValue = credentials;\n }\n\n async clearCaches(): Promise<void> {\n await this.clearCachesFn();\n }\n}\n\nexport class LightconeClient {\n readonly http: LightconeHttp;\n private readonly wsConfigValue: WsConfig;\n private readonly decimalsCacheStore: DecimalsCache;\n private readonly authStateStore: AuthState;\n\n constructor(params: {\n http: LightconeHttp;\n wsConfig: WsConfig;\n authCredentials?: AuthCredentials;\n decimalsCache?: DecimalsCache;\n authState?: AuthState;\n }) {\n this.http = params.http;\n this.wsConfigValue = params.wsConfig;\n this.decimalsCacheStore = params.decimalsCache ?? new DecimalsCache();\n this.authStateStore =\n params.authState ??\n new AuthState(async () => this.clearDecimalsCache(), params.authCredentials);\n }\n\n static builder(): LightconeClientBuilder {\n return new LightconeClientBuilder();\n }\n\n markets(): Markets {\n return new Markets(this);\n }\n\n orderbooks(): Orderbooks {\n return new Orderbooks({\n http: this.http,\n decimalsCache: this.decimalsCacheStore,\n });\n }\n\n orders(): Orders {\n return new Orders(this);\n }\n\n positions(): Positions {\n return new Positions(this);\n }\n\n trades(): Trades {\n return new Trades(this);\n }\n\n priceHistory(): PriceHistoryClient {\n return new PriceHistoryClient(this);\n }\n\n admin(): Admin {\n return new Admin(this);\n }\n\n auth(): Auth {\n return new Auth({\n http: this.http,\n authState: this.authStateStore,\n });\n }\n\n privy(): Privy {\n return new Privy(this);\n }\n\n referrals(): Referrals {\n return new Referrals(this);\n }\n\n wsConfig(): WsConfig {\n return this.wsConfigValue;\n }\n\n ws(): WsClient {\n return new WsClient(this.wsConfigValue, this.http.authTokenRef());\n }\n\n async clearDecimalsCache(): Promise<void> {\n this.decimalsCacheStore.clear();\n }\n\n clone(): LightconeClient {\n return new LightconeClient({\n http: this.http,\n wsConfig: { ...this.wsConfigValue },\n decimalsCache: this.decimalsCacheStore,\n authState: this.authStateStore,\n });\n }\n}\n\nexport class LightconeClientBuilder {\n private baseUrlValue: string = DEFAULT_API_URL;\n private wsUrlValue: string = DEFAULT_WS_URL;\n private authCredentials?: AuthCredentials;\n\n baseUrl(url: string): LightconeClientBuilder {\n return this.withBaseUrl(url);\n }\n\n withBaseUrl(url: string): LightconeClientBuilder {\n this.baseUrlValue = url;\n return this;\n }\n\n wsUrl(url: string): LightconeClientBuilder {\n return this.withWsUrl(url);\n }\n\n withWsUrl(url: string): LightconeClientBuilder {\n this.wsUrlValue = url;\n return this;\n }\n\n auth(credentials: AuthCredentials): LightconeClientBuilder {\n return this.withAuth(credentials);\n }\n\n withAuth(credentials: AuthCredentials): LightconeClientBuilder {\n this.authCredentials = credentials;\n return this;\n }\n\n build(): LightconeClient {\n return new LightconeClient({\n http: new LightconeHttp(this.baseUrlValue),\n wsConfig: {\n url: this.wsUrlValue,\n reconnect: true,\n maxReconnectAttempts: 10,\n baseReconnectDelayMs: 1_000,\n pingIntervalMs: 30_000,\n pongTimeoutMs: 1_000,\n },\n authCredentials: this.authCredentials,\n });\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Auth, type AuthCredentials } from \"./auth\";\nimport { Admin } from \"./domain/admin\";\nimport { Markets } from \"./domain/market\";\nimport { Notifications } from \"./domain/notification\";\nimport { Orders } from \"./domain/order\";\nimport { Orderbooks } from \"./domain/orderbook\";\nimport type { DecimalsResponse } from \"./domain/orderbook\";\nimport { Positions } from \"./domain/position\";\nimport { DepositPriceClient } from \"./domain/deposit_price\";\nimport { PriceHistoryClient } from \"./domain/price_history\";\nimport { Referrals } from \"./domain/referral\";\nimport { Trades } from \"./domain/trade\";\nimport { LightconeHttp } from \"./http\";\nimport { DEFAULT_API_URL, DEFAULT_WS_URL } from \"./network\";\nimport { Privy } from \"./privy\";\nimport { WsClient, type WsConfig } from \"./ws\";\n\nclass DecimalsCache {\n private readonly map = new Map<string, DecimalsResponse>();\n\n get(orderbookId: string): DecimalsResponse | undefined {\n return this.map.get(orderbookId);\n }\n\n set(orderbookId: string, response: DecimalsResponse): void {\n this.map.set(orderbookId, response);\n }\n\n clear(): void {\n this.map.clear();\n }\n}\n\nclass AuthState {\n private credentialsValue: AuthCredentials | undefined;\n\n constructor(\n private readonly clearCachesFn: () => Promise<void>,\n initial?: AuthCredentials\n ) {\n this.credentialsValue = initial;\n }\n\n getCredentials(): AuthCredentials | undefined {\n return this.credentialsValue;\n }\n\n setCredentials(credentials: AuthCredentials | undefined): void {\n this.credentialsValue = credentials;\n }\n\n async clearCaches(): Promise<void> {\n await this.clearCachesFn();\n }\n}\n\nexport class LightconeClient {\n readonly http: LightconeHttp;\n private readonly wsConfigValue: WsConfig;\n private readonly decimalsCacheStore: DecimalsCache;\n private readonly authStateStore: AuthState;\n\n constructor(params: {\n http: LightconeHttp;\n wsConfig: WsConfig;\n authCredentials?: AuthCredentials;\n decimalsCache?: DecimalsCache;\n authState?: AuthState;\n }) {\n this.http = params.http;\n this.wsConfigValue = params.wsConfig;\n this.decimalsCacheStore = params.decimalsCache ?? new DecimalsCache();\n this.authStateStore =\n params.authState ??\n new AuthState(async () => this.clearDecimalsCache(), params.authCredentials);\n }\n\n static builder(): LightconeClientBuilder {\n return new LightconeClientBuilder();\n }\n\n markets(): Markets {\n return new Markets(this);\n }\n\n orderbooks(): Orderbooks {\n return new Orderbooks({\n http: this.http,\n decimalsCache: this.decimalsCacheStore,\n });\n }\n\n orders(): Orders {\n return new Orders(this);\n }\n\n positions(): Positions {\n return new Positions(this);\n }\n\n trades(): Trades {\n return new Trades(this);\n }\n\n priceHistory(): PriceHistoryClient {\n return new PriceHistoryClient(this);\n }\n\n depositPrice(): DepositPriceClient {\n return new DepositPriceClient(this);\n }\n\n notifications(): Notifications {\n return new Notifications(this);\n }\n\n admin(): Admin {\n return new Admin(this);\n }\n\n auth(): Auth {\n return new Auth({\n http: this.http,\n authState: this.authStateStore,\n });\n }\n\n privy(): Privy {\n return new Privy(this);\n }\n\n referrals(): Referrals {\n return new Referrals(this);\n }\n\n wsConfig(): WsConfig {\n return this.wsConfigValue;\n }\n\n ws(): WsClient {\n return new WsClient(this.wsConfigValue, this.http.authTokenRef());\n }\n\n async clearDecimalsCache(): Promise<void> {\n this.decimalsCacheStore.clear();\n }\n\n clone(): LightconeClient {\n return new LightconeClient({\n http: this.http,\n wsConfig: { ...this.wsConfigValue },\n decimalsCache: this.decimalsCacheStore,\n authState: this.authStateStore,\n });\n }\n}\n\nexport class LightconeClientBuilder {\n private baseUrlValue: string = DEFAULT_API_URL;\n private wsUrlValue: string = DEFAULT_WS_URL;\n private authCredentials?: AuthCredentials;\n\n baseUrl(url: string): LightconeClientBuilder {\n return this.withBaseUrl(url);\n }\n\n withBaseUrl(url: string): LightconeClientBuilder {\n this.baseUrlValue = url;\n return this;\n }\n\n wsUrl(url: string): LightconeClientBuilder {\n return this.withWsUrl(url);\n }\n\n withWsUrl(url: string): LightconeClientBuilder {\n this.wsUrlValue = url;\n return this;\n }\n\n auth(credentials: AuthCredentials): LightconeClientBuilder {\n return this.withAuth(credentials);\n }\n\n withAuth(credentials: AuthCredentials): LightconeClientBuilder {\n this.authCredentials = credentials;\n return this;\n }\n\n build(): LightconeClient {\n return new LightconeClient({\n http: new LightconeHttp(this.baseUrlValue),\n wsConfig: {\n url: this.wsUrlValue,\n reconnect: true,\n maxReconnectAttempts: 10,\n baseReconnectDelayMs: 1_000,\n pingIntervalMs: 30_000,\n pongTimeoutMs: 1_000,\n },\n authCredentials: this.authCredentials,\n });\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type LightconeHttp } from "../../http";
2
2
  import type { AdminEnvelope } from "./index";
3
- import type { AllocateCodesRequest, AllocateCodesResponse, RevokeRequest, RevokeResponse, UnifiedMetadataRequest, UnifiedMetadataResponse, UnrevokeRequest, UnrevokeResponse, WhitelistRequest, WhitelistResponse } from "./wire";
3
+ import type { AllocateCodesRequest, AllocateCodesResponse, CreateNotificationRequest, CreateNotificationResponse, DismissNotificationRequest, DismissNotificationResponse, RevokeRequest, RevokeResponse, UnifiedMetadataRequest, UnifiedMetadataResponse, UnrevokeRequest, UnrevokeResponse, WhitelistRequest, WhitelistResponse } from "./wire";
4
4
  interface ClientContext {
5
5
  http: LightconeHttp;
6
6
  }
@@ -12,6 +12,8 @@ export declare class Admin {
12
12
  whitelist(envelope: AdminEnvelope<WhitelistRequest>): Promise<WhitelistResponse>;
13
13
  revoke(envelope: AdminEnvelope<RevokeRequest>): Promise<RevokeResponse>;
14
14
  unrevoke(envelope: AdminEnvelope<UnrevokeRequest>): Promise<UnrevokeResponse>;
15
+ createNotification(envelope: AdminEnvelope<CreateNotificationRequest>): Promise<CreateNotificationResponse>;
16
+ dismissNotification(envelope: AdminEnvelope<DismissNotificationRequest>): Promise<DismissNotificationResponse>;
15
17
  }
16
18
  export {};
17
19
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/admin/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,QAAQ,CAAC;AAEhB,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,KAAK;IACJ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,cAAc,CAClB,QAAQ,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAC9C,OAAO,CAAC,uBAAuB,CAAC;IAS7B,aAAa,CACjB,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAC5C,OAAO,CAAC,qBAAqB,CAAC;IAS3B,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAShF,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IASvE,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAQpF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/domain/admin/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC3B,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,QAAQ,CAAC;AAEhB,UAAU,aAAa;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,KAAK;IACJ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,cAAc,CAClB,QAAQ,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAC9C,OAAO,CAAC,uBAAuB,CAAC;IAS7B,aAAa,CACjB,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAC5C,OAAO,CAAC,qBAAqB,CAAC;IAS3B,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAShF,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IASvE,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS7E,kBAAkB,CACtB,QAAQ,EAAE,aAAa,CAAC,yBAAyB,CAAC,GACjD,OAAO,CAAC,0BAA0B,CAAC;IAShC,mBAAmB,CACvB,QAAQ,EAAE,aAAa,CAAC,0BAA0B,CAAC,GAClD,OAAO,CAAC,2BAA2B,CAAC;CAQxC"}
@@ -27,6 +27,14 @@ class Admin {
27
27
  const url = `${this.client.http.baseUrl()}/api/admin/referral/unrevoke`;
28
28
  return this.client.http.post(url, envelope, http_1.RetryPolicy.None);
29
29
  }
30
+ async createNotification(envelope) {
31
+ const url = `${this.client.http.baseUrl()}/api/admin/notifications`;
32
+ return this.client.http.post(url, envelope, http_1.RetryPolicy.None);
33
+ }
34
+ async dismissNotification(envelope) {
35
+ const url = `${this.client.http.baseUrl()}/api/admin/notifications/dismiss`;
36
+ return this.client.http.post(url, envelope, http_1.RetryPolicy.None);
37
+ }
30
38
  }
31
39
  exports.Admin = Admin;
32
40
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/admin/client.ts"],"names":[],"mappings":";;;AAAA,qCAA6D;AAmB7D,MAAa,KAAK;IACa;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,cAAc,CAClB,QAA+C;QAE/C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAA6C;QAE7C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC;QACxE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAyC;QACvD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,+BAA+B,CAAC;QACzE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAsC;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC;QACtE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAwC;QACrD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC;QACxE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;CACF;AAnDD,sBAmDC","sourcesContent":["import { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type { AdminEnvelope } from \"./index\";\nimport type {\n AllocateCodesRequest,\n AllocateCodesResponse,\n RevokeRequest,\n RevokeResponse,\n UnifiedMetadataRequest,\n UnifiedMetadataResponse,\n UnrevokeRequest,\n UnrevokeResponse,\n WhitelistRequest,\n WhitelistResponse,\n} from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport class Admin {\n constructor(private readonly client: ClientContext) {}\n\n async upsertMetadata(\n envelope: AdminEnvelope<UnifiedMetadataRequest>\n ): Promise<UnifiedMetadataResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/metadata`;\n return this.client.http.post<UnifiedMetadataResponse, AdminEnvelope<UnifiedMetadataRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async allocateCodes(\n envelope: AdminEnvelope<AllocateCodesRequest>\n ): Promise<AllocateCodesResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/referral/allocate`;\n return this.client.http.post<AllocateCodesResponse, AdminEnvelope<AllocateCodesRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async whitelist(envelope: AdminEnvelope<WhitelistRequest>): Promise<WhitelistResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/referral/whitelist`;\n return this.client.http.post<WhitelistResponse, AdminEnvelope<WhitelistRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async revoke(envelope: AdminEnvelope<RevokeRequest>): Promise<RevokeResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/referral/revoke`;\n return this.client.http.post<RevokeResponse, AdminEnvelope<RevokeRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async unrevoke(envelope: AdminEnvelope<UnrevokeRequest>): Promise<UnrevokeResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/referral/unrevoke`;\n return this.client.http.post<UnrevokeResponse, AdminEnvelope<UnrevokeRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/admin/client.ts"],"names":[],"mappings":";;;AAAA,qCAA6D;AAuB7D,MAAa,KAAK;IACa;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,cAAc,CAClB,QAA+C;QAE/C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAA6C;QAE7C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC;QACxE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAyC;QACvD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,+BAA+B,CAAC;QACzE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAsC;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC;QACtE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAwC;QACrD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC;QACxE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAkD;QAElD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC;QACpE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,QAAmD;QAEnD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,kCAAkC,CAAC;QAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,EACH,QAAQ,EACR,kBAAW,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC;CACF;AAzED,sBAyEC","sourcesContent":["import { RetryPolicy, type LightconeHttp } from \"../../http\";\nimport type { AdminEnvelope } from \"./index\";\nimport type {\n AllocateCodesRequest,\n AllocateCodesResponse,\n CreateNotificationRequest,\n CreateNotificationResponse,\n DismissNotificationRequest,\n DismissNotificationResponse,\n RevokeRequest,\n RevokeResponse,\n UnifiedMetadataRequest,\n UnifiedMetadataResponse,\n UnrevokeRequest,\n UnrevokeResponse,\n WhitelistRequest,\n WhitelistResponse,\n} from \"./wire\";\n\ninterface ClientContext {\n http: LightconeHttp;\n}\n\nexport class Admin {\n constructor(private readonly client: ClientContext) {}\n\n async upsertMetadata(\n envelope: AdminEnvelope<UnifiedMetadataRequest>\n ): Promise<UnifiedMetadataResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/metadata`;\n return this.client.http.post<UnifiedMetadataResponse, AdminEnvelope<UnifiedMetadataRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async allocateCodes(\n envelope: AdminEnvelope<AllocateCodesRequest>\n ): Promise<AllocateCodesResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/referral/allocate`;\n return this.client.http.post<AllocateCodesResponse, AdminEnvelope<AllocateCodesRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async whitelist(envelope: AdminEnvelope<WhitelistRequest>): Promise<WhitelistResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/referral/whitelist`;\n return this.client.http.post<WhitelistResponse, AdminEnvelope<WhitelistRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async revoke(envelope: AdminEnvelope<RevokeRequest>): Promise<RevokeResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/referral/revoke`;\n return this.client.http.post<RevokeResponse, AdminEnvelope<RevokeRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async unrevoke(envelope: AdminEnvelope<UnrevokeRequest>): Promise<UnrevokeResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/referral/unrevoke`;\n return this.client.http.post<UnrevokeResponse, AdminEnvelope<UnrevokeRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async createNotification(\n envelope: AdminEnvelope<CreateNotificationRequest>\n ): Promise<CreateNotificationResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/notifications`;\n return this.client.http.post<CreateNotificationResponse, AdminEnvelope<CreateNotificationRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n\n async dismissNotification(\n envelope: AdminEnvelope<DismissNotificationRequest>\n ): Promise<DismissNotificationResponse> {\n const url = `${this.client.http.baseUrl()}/api/admin/notifications/dismiss`;\n return this.client.http.post<DismissNotificationResponse, AdminEnvelope<DismissNotificationRequest>>(\n url,\n envelope,\n RetryPolicy.None\n );\n }\n}\n"]}
@@ -59,13 +59,48 @@ export interface DepositTokenMetadataPayload {
59
59
  s3_synced?: boolean;
60
60
  s3_synced_at?: string;
61
61
  s3_error?: string;
62
+ binance_symbol?: string;
63
+ binance_enabled?: boolean;
64
+ }
65
+ export interface MarketMetadataResponse extends MarketMetadataPayload {
66
+ id: number;
67
+ created_at: string;
68
+ updated_at: string;
69
+ }
70
+ export interface OutcomeMetadataResponse extends OutcomeMetadataPayload {
71
+ id: number;
72
+ created_at: string;
73
+ updated_at: string;
74
+ }
75
+ export interface ConditionalTokenMetadataResponse extends ConditionalTokenMetadataPayload {
76
+ id: number;
77
+ created_at: string;
78
+ updated_at: string;
79
+ }
80
+ export interface DepositTokenMetadataResponse {
81
+ id: number;
82
+ deposit_asset: string;
83
+ display_name: string;
84
+ symbol: string;
85
+ token_symbol: string | null;
86
+ binance_symbol: string | null;
87
+ binance_enabled: boolean;
88
+ description: string | null;
89
+ icon_url: string | null;
90
+ metadata_uri: string | null;
91
+ decimals: number | null;
92
+ s3_synced: boolean;
93
+ s3_synced_at: string | null;
94
+ s3_error: string | null;
95
+ created_at: string;
96
+ updated_at: string;
62
97
  }
63
98
  export interface UnifiedMetadataResponse {
64
99
  status: string;
65
- markets?: unknown[];
66
- outcomes?: unknown[];
67
- conditional_tokens?: unknown[];
68
- deposit_tokens?: unknown[];
100
+ markets?: MarketMetadataResponse[];
101
+ outcomes?: OutcomeMetadataResponse[];
102
+ conditional_tokens?: ConditionalTokenMetadataResponse[];
103
+ deposit_tokens?: DepositTokenMetadataResponse[];
69
104
  }
70
105
  export type TargetSpec = "all" | {
71
106
  user_id: string;
@@ -114,4 +149,18 @@ export interface UnrevokeResponse {
114
149
  restored_count: number;
115
150
  user_ids: string[];
116
151
  }
152
+ export interface CreateNotificationRequest {
153
+ title: string;
154
+ message: string;
155
+ expires_at?: string;
156
+ }
157
+ export interface CreateNotificationResponse {
158
+ status: string;
159
+ }
160
+ export interface DismissNotificationRequest {
161
+ notification_id: string;
162
+ }
163
+ export interface DismissNotificationResponse {
164
+ status: string;
165
+ }
117
166
  //# sourceMappingURL=wire.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/domain/admin/wire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/domain/admin/wire.ts"],"names":[],"mappings":"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"}