@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.
- package/README.md +39 -5
- package/dist/auth/client.d.ts.map +1 -1
- package/dist/auth/client.js +2 -0
- package/dist/auth/client.js.map +1 -1
- package/dist/auth/index.d.ts +15 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +10 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/client.d.ts +43 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +70 -9
- package/dist/client.js.map +1 -1
- package/dist/context.d.ts +7 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +60 -6
- package/dist/context.js.map +1 -1
- package/dist/domain/admin/client.d.ts +21 -2
- package/dist/domain/admin/client.d.ts.map +1 -1
- package/dist/domain/admin/client.js +90 -4
- package/dist/domain/admin/client.js.map +1 -1
- package/dist/domain/admin/wire.d.ts +292 -7
- package/dist/domain/admin/wire.d.ts.map +1 -1
- package/dist/domain/admin/wire.js.map +1 -1
- package/dist/domain/faucet.d.ts +25 -0
- package/dist/domain/faucet.d.ts.map +1 -0
- package/dist/domain/faucet.js +3 -0
- package/dist/domain/faucet.js.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +3 -1
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/market/client.d.ts +23 -2
- package/dist/domain/market/client.d.ts.map +1 -1
- package/dist/domain/market/client.js +31 -1
- package/dist/domain/market/client.js.map +1 -1
- package/dist/domain/market/convert.d.ts +10 -0
- package/dist/domain/market/convert.d.ts.map +1 -1
- package/dist/domain/market/convert.js +44 -5
- package/dist/domain/market/convert.js.map +1 -1
- package/dist/domain/market/icon.d.ts +17 -0
- package/dist/domain/market/icon.d.ts.map +1 -0
- package/dist/domain/market/icon.js +25 -0
- package/dist/domain/market/icon.js.map +1 -0
- package/dist/domain/market/index.d.ts +21 -5
- package/dist/domain/market/index.d.ts.map +1 -1
- package/dist/domain/market/index.js +15 -1
- package/dist/domain/market/index.js.map +1 -1
- package/dist/domain/market/outcome.d.ts +4 -1
- package/dist/domain/market/outcome.d.ts.map +1 -1
- package/dist/domain/market/outcome.js +8 -7
- package/dist/domain/market/outcome.js.map +1 -1
- package/dist/domain/market/tokens.d.ts +55 -3
- package/dist/domain/market/tokens.d.ts.map +1 -1
- package/dist/domain/market/tokens.js +105 -9
- package/dist/domain/market/tokens.js.map +1 -1
- package/dist/domain/market/wire.d.ts +69 -10
- package/dist/domain/market/wire.d.ts.map +1 -1
- package/dist/domain/market/wire.js +5 -0
- package/dist/domain/market/wire.js.map +1 -1
- package/dist/domain/metrics/client.d.ts +66 -0
- package/dist/domain/metrics/client.d.ts.map +1 -0
- package/dist/domain/metrics/client.js +124 -0
- package/dist/domain/metrics/client.js.map +1 -0
- package/dist/domain/metrics/index.d.ts +3 -0
- package/dist/domain/metrics/index.d.ts.map +1 -0
- package/dist/domain/metrics/index.js +19 -0
- package/dist/domain/metrics/index.js.map +1 -0
- package/dist/domain/metrics/wire.d.ts +346 -0
- package/dist/domain/metrics/wire.d.ts.map +1 -0
- package/dist/domain/metrics/wire.js +3 -0
- package/dist/domain/metrics/wire.js.map +1 -0
- package/dist/domain/notification/client.d.ts +6 -0
- package/dist/domain/notification/client.d.ts.map +1 -1
- package/dist/domain/notification/client.js +10 -0
- package/dist/domain/notification/client.js.map +1 -1
- package/dist/domain/notification/index.d.ts +6 -2
- package/dist/domain/notification/index.d.ts.map +1 -1
- package/dist/domain/notification/index.js.map +1 -1
- package/dist/domain/order/client.d.ts +34 -6
- package/dist/domain/order/client.d.ts.map +1 -1
- package/dist/domain/order/client.js +88 -21
- package/dist/domain/order/client.js.map +1 -1
- package/dist/domain/order/convert.d.ts +5 -5
- package/dist/domain/order/convert.d.ts.map +1 -1
- package/dist/domain/order/convert.js +3 -3
- package/dist/domain/order/convert.js.map +1 -1
- package/dist/domain/order/index.d.ts +3 -2
- package/dist/domain/order/index.d.ts.map +1 -1
- package/dist/domain/order/index.js +11 -3
- package/dist/domain/order/index.js.map +1 -1
- package/dist/domain/order/state.d.ts +9 -7
- package/dist/domain/order/state.d.ts.map +1 -1
- package/dist/domain/order/state.js +81 -28
- package/dist/domain/order/state.js.map +1 -1
- package/dist/domain/orderbook/client.d.ts +6 -2
- package/dist/domain/orderbook/client.d.ts.map +1 -1
- package/dist/domain/orderbook/client.js +17 -0
- package/dist/domain/orderbook/client.js.map +1 -1
- package/dist/domain/orderbook/index.d.ts +1 -1
- package/dist/domain/orderbook/index.d.ts.map +1 -1
- package/dist/domain/orderbook/index.js +3 -8
- package/dist/domain/orderbook/index.js.map +1 -1
- package/dist/domain/orderbook/state.d.ts +30 -7
- package/dist/domain/orderbook/state.d.ts.map +1 -1
- package/dist/domain/orderbook/state.js +41 -12
- package/dist/domain/orderbook/state.js.map +1 -1
- package/dist/domain/position/builders.d.ts +11 -8
- package/dist/domain/position/builders.d.ts.map +1 -1
- package/dist/domain/position/builders.js +31 -25
- package/dist/domain/position/builders.js.map +1 -1
- package/dist/domain/position/client.d.ts +66 -5
- package/dist/domain/position/client.d.ts.map +1 -1
- package/dist/domain/position/client.js +101 -9
- package/dist/domain/position/client.js.map +1 -1
- package/dist/domain/position/index.d.ts +3 -2
- package/dist/domain/position/index.d.ts.map +1 -1
- package/dist/domain/position/index.js.map +1 -1
- package/dist/domain/price_history/client.d.ts +12 -1
- package/dist/domain/price_history/client.d.ts.map +1 -1
- package/dist/domain/price_history/client.js +14 -0
- package/dist/domain/price_history/client.js.map +1 -1
- package/dist/domain/price_history/wire.d.ts +27 -0
- package/dist/domain/price_history/wire.d.ts.map +1 -1
- package/dist/domain/price_history/wire.js.map +1 -1
- package/dist/domain/referral/client.d.ts +6 -0
- package/dist/domain/referral/client.d.ts.map +1 -1
- package/dist/domain/referral/client.js +22 -9
- package/dist/domain/referral/client.js.map +1 -1
- package/dist/domain/trade/client.d.ts +1 -0
- package/dist/domain/trade/client.d.ts.map +1 -1
- package/dist/domain/trade/client.js +14 -0
- package/dist/domain/trade/client.js.map +1 -1
- package/dist/domain/trade/wire.d.ts +6 -0
- package/dist/domain/trade/wire.d.ts.map +1 -1
- package/dist/domain/trade/wire.js.map +1 -1
- package/dist/env.d.ts +6 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +19 -9
- package/dist/env.js.map +1 -1
- package/dist/http/client.d.ts +9 -0
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +29 -11
- package/dist/http/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/prelude.d.ts +16 -7
- package/dist/prelude.d.ts.map +1 -1
- package/dist/prelude.js +10 -7
- package/dist/prelude.js.map +1 -1
- package/dist/privy/index.d.ts +1 -1
- package/dist/privy/index.js.map +1 -1
- package/dist/program/accounts.d.ts +12 -7
- package/dist/program/accounts.d.ts.map +1 -1
- package/dist/program/accounts.js +38 -16
- package/dist/program/accounts.js.map +1 -1
- package/dist/program/builder.d.ts +0 -4
- package/dist/program/builder.d.ts.map +1 -1
- package/dist/program/builder.js +0 -8
- package/dist/program/builder.js.map +1 -1
- package/dist/program/constants.d.ts +20 -7
- package/dist/program/constants.d.ts.map +1 -1
- package/dist/program/constants.js +21 -8
- package/dist/program/constants.js.map +1 -1
- package/dist/program/error.d.ts +25 -1
- package/dist/program/error.d.ts.map +1 -1
- package/dist/program/error.js +72 -0
- package/dist/program/error.js.map +1 -1
- package/dist/program/index.d.ts +7 -7
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/index.js +36 -9
- package/dist/program/index.js.map +1 -1
- package/dist/program/instructions.d.ts +184 -71
- package/dist/program/instructions.d.ts.map +1 -1
- package/dist/program/instructions.js +573 -140
- package/dist/program/instructions.js.map +1 -1
- package/dist/program/orders.js +2 -2
- package/dist/program/orders.js.map +1 -1
- package/dist/program/pda.d.ts +21 -3
- package/dist/program/pda.d.ts.map +1 -1
- package/dist/program/pda.js +43 -6
- package/dist/program/pda.js.map +1 -1
- package/dist/program/types.d.ts +139 -21
- package/dist/program/types.d.ts.map +1 -1
- package/dist/program/types.js.map +1 -1
- package/dist/program/utils.d.ts +31 -2
- package/dist/program/utils.d.ts.map +1 -1
- package/dist/program/utils.js +132 -5
- package/dist/program/utils.js.map +1 -1
- package/dist/rpc.d.ts +6 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +9 -7
- package/dist/rpc.js.map +1 -1
- package/dist/rpcFailover.d.ts +22 -0
- package/dist/rpcFailover.d.ts.map +1 -0
- package/dist/rpcFailover.js +71 -0
- package/dist/rpcFailover.js.map +1 -0
- package/dist/shared/fmt/constants.d.ts +5 -0
- package/dist/shared/fmt/constants.d.ts.map +1 -0
- package/dist/shared/fmt/constants.js +25 -0
- package/dist/shared/fmt/constants.js.map +1 -0
- package/dist/shared/fmt/decimal.d.ts +7 -0
- package/dist/shared/fmt/decimal.d.ts.map +1 -1
- package/dist/shared/fmt/decimal.js +32 -24
- package/dist/shared/fmt/decimal.js.map +1 -1
- package/dist/shared/fmt/num.d.ts +7 -0
- package/dist/shared/fmt/num.d.ts.map +1 -1
- package/dist/shared/fmt/num.js +27 -15
- package/dist/shared/fmt/num.js.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +2 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +19 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/ws/client.node.js +1 -1
- package/dist/ws/client.node.js.map +1 -1
- package/dist/ws/index.d.ts +12 -1
- package/dist/ws/index.d.ts.map +1 -1
- package/dist/ws/index.js +20 -0
- package/dist/ws/index.js.map +1 -1
- package/dist/ws/subscriptions.d.ts +6 -0
- package/dist/ws/subscriptions.d.ts.map +1 -1
- package/dist/ws/subscriptions.js +4 -0
- package/dist/ws/subscriptions.js.map +1 -1
- package/package.json +1 -1
|
@@ -105,25 +105,49 @@ class Orders {
|
|
|
105
105
|
const url = `${this.client.http.baseUrl()}/api/orders/cancel`;
|
|
106
106
|
return this.client.http.post(url, body, http_1.RetryPolicy.None);
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const url = `${this.client.http.baseUrl()}/api/users/orders?${params.toString()}`;
|
|
108
|
+
/**
|
|
109
|
+
* Fetch the authenticated user's open orders. Wallet is resolved
|
|
110
|
+
* server-side from the auth cookie, so no parameter is required.
|
|
111
|
+
*/
|
|
112
|
+
async getUserOrders(limit, cursor) {
|
|
113
|
+
const url = buildUserOrdersAuthenticatedUrl(this.client.http.baseUrl(), limit, cursor);
|
|
115
114
|
const response = await this.client.http.get(url, http_1.RetryPolicy.Idempotent);
|
|
116
115
|
return (0, wire_1.normalizeUserOrdersPayload)(response);
|
|
117
116
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Same as {@link getUserOrders}, but uses the supplied `cookieHeader` for
|
|
119
|
+
* this call instead of the SDK's process-wide cookie store. For
|
|
120
|
+
* server-side cookie forwarding (SSR / route handlers).
|
|
121
|
+
*/
|
|
122
|
+
async getUserOrdersWithCookies(limit, cursor, cookieHeader) {
|
|
123
|
+
const url = buildUserOrdersAuthenticatedUrl(this.client.http.baseUrl(), limit, cursor);
|
|
124
|
+
const response = await this.client.http.getWithCookies(url, http_1.RetryPolicy.Idempotent, cookieHeader);
|
|
125
|
+
return (0, wire_1.normalizeUserOrdersPayload)(response);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Fetch the authenticated user's filled orders with nested fill events.
|
|
129
|
+
* Wallet is resolved server-side from the auth cookie.
|
|
130
|
+
*/
|
|
131
|
+
async getUserOrderFills(marketPubkey, limit, cursor) {
|
|
132
|
+
const url = buildUserOrderFillsAuthenticatedUrl(this.client.http.baseUrl(), marketPubkey, limit, cursor);
|
|
133
|
+
return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Same as {@link getUserOrderFills}, but uses the supplied `cookieHeader`
|
|
137
|
+
* for this call instead of the SDK's process-wide cookie store. For
|
|
138
|
+
* server-side cookie forwarding (SSR / route handlers).
|
|
139
|
+
*/
|
|
140
|
+
async getUserOrderFillsWithCookies(marketPubkey, limit, cursor, cookieHeader) {
|
|
141
|
+
const url = buildUserOrderFillsAuthenticatedUrl(this.client.http.baseUrl(), marketPubkey, limit, cursor);
|
|
142
|
+
return this.client.http.getWithCookies(url, http_1.RetryPolicy.Idempotent, cookieHeader);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Public variant of {@link getUserOrderFills}. Takes the user's wallet
|
|
146
|
+
* via the URL path (`GET /api/users/{wallet}/order-fills`) and requires
|
|
147
|
+
* no auth.
|
|
148
|
+
*/
|
|
149
|
+
async getUserOrderFillsByWallet(walletAddress, marketPubkey, limit, cursor) {
|
|
150
|
+
const url = buildUserOrderFillsByWalletUrl(this.client.http.baseUrl(), walletAddress, marketPubkey, limit, cursor);
|
|
127
151
|
return this.client.http.get(url, http_1.RetryPolicy.Idempotent);
|
|
128
152
|
}
|
|
129
153
|
// ── Unified cancel (dispatches based on client signing strategy) ────
|
|
@@ -222,21 +246,28 @@ class Orders {
|
|
|
222
246
|
}
|
|
223
247
|
}
|
|
224
248
|
// ── On-chain transaction builders ────────────────────────────────────
|
|
225
|
-
cancelOrderIx(
|
|
226
|
-
return (0, instructions_1.buildCancelOrderIx)(
|
|
249
|
+
cancelOrderIx(operator, market, order) {
|
|
250
|
+
return (0, instructions_1.buildCancelOrderIx)(operator, market, order, this.client.programId);
|
|
227
251
|
}
|
|
228
252
|
incrementNonceIx(user) {
|
|
229
253
|
return (0, instructions_1.buildIncrementNonceIx)(user, this.client.programId);
|
|
230
254
|
}
|
|
255
|
+
closeOrderStatusIx(params) {
|
|
256
|
+
return (0, instructions_1.buildCloseOrderStatusIx)(params, this.client.programId);
|
|
257
|
+
}
|
|
231
258
|
// ── Transaction builders (_tx convenience wrappers) ─────────────────
|
|
232
|
-
cancelOrderTx(
|
|
233
|
-
const ix = this.cancelOrderIx(
|
|
234
|
-
return new web3_js_1.Transaction({ feePayer:
|
|
259
|
+
cancelOrderTx(operator, market, order) {
|
|
260
|
+
const ix = this.cancelOrderIx(operator, market, order);
|
|
261
|
+
return new web3_js_1.Transaction({ feePayer: operator }).add(ix);
|
|
235
262
|
}
|
|
236
263
|
incrementNonceTx(user) {
|
|
237
264
|
const ix = this.incrementNonceIx(user);
|
|
238
265
|
return new web3_js_1.Transaction({ feePayer: user }).add(ix);
|
|
239
266
|
}
|
|
267
|
+
closeOrderStatusTx(params) {
|
|
268
|
+
const ix = this.closeOrderStatusIx(params);
|
|
269
|
+
return new web3_js_1.Transaction({ feePayer: params.operator }).add(ix);
|
|
270
|
+
}
|
|
240
271
|
// ── Order helpers ────────────────────────────────────────────────────
|
|
241
272
|
createBidOrder(params) {
|
|
242
273
|
return (0, orders_1.createBidOrder)(params);
|
|
@@ -288,4 +319,40 @@ class Orders {
|
|
|
288
319
|
}
|
|
289
320
|
}
|
|
290
321
|
exports.Orders = Orders;
|
|
322
|
+
function buildUserOrdersAuthenticatedUrl(baseUrl, limit, cursor) {
|
|
323
|
+
const params = new URLSearchParams();
|
|
324
|
+
if (limit !== undefined)
|
|
325
|
+
params.set("limit", String(limit));
|
|
326
|
+
if (cursor)
|
|
327
|
+
params.set("cursor", cursor);
|
|
328
|
+
const qs = params.toString();
|
|
329
|
+
return qs.length === 0
|
|
330
|
+
? `${baseUrl}/api/users/orders`
|
|
331
|
+
: `${baseUrl}/api/users/orders?${qs}`;
|
|
332
|
+
}
|
|
333
|
+
function buildUserOrderFillsAuthenticatedUrl(baseUrl, marketPubkey, limit, cursor) {
|
|
334
|
+
const params = new URLSearchParams();
|
|
335
|
+
if (marketPubkey)
|
|
336
|
+
params.set("market_pubkey", marketPubkey);
|
|
337
|
+
if (limit !== undefined)
|
|
338
|
+
params.set("limit", String(limit));
|
|
339
|
+
if (cursor)
|
|
340
|
+
params.set("cursor", cursor);
|
|
341
|
+
const qs = params.toString();
|
|
342
|
+
return qs.length === 0
|
|
343
|
+
? `${baseUrl}/api/users/order-fills`
|
|
344
|
+
: `${baseUrl}/api/users/order-fills?${qs}`;
|
|
345
|
+
}
|
|
346
|
+
function buildUserOrderFillsByWalletUrl(baseUrl, walletAddress, marketPubkey, limit, cursor) {
|
|
347
|
+
const params = new URLSearchParams();
|
|
348
|
+
if (marketPubkey)
|
|
349
|
+
params.set("market_pubkey", marketPubkey);
|
|
350
|
+
if (limit !== undefined)
|
|
351
|
+
params.set("limit", String(limit));
|
|
352
|
+
if (cursor)
|
|
353
|
+
params.set("cursor", cursor);
|
|
354
|
+
const qs = params.toString();
|
|
355
|
+
const path = `${baseUrl}/api/users/${encodeURIComponent(walletAddress)}/order-fills`;
|
|
356
|
+
return qs.length === 0 ? path : `${path}?${qs}`;
|
|
357
|
+
}
|
|
291
358
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/order/client.ts"],"names":[],"mappings":"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","sourcesContent":["import bs58 from \"bs58\";\nimport { Keypair, Transaction, type PublicKey, type TransactionInstruction } from \"@solana/web3.js\";\nimport type { ClientContext } from \"../../context\";\nimport { requireConnection, requireSigningStrategy } from \"../../context\";\nimport { SdkError } from \"../../error\";\nimport { ProgramSdkError } from \"../../program/error\";\nimport { RetryPolicy } from \"../../http\";\nimport { Privy } from \"../../privy\";\nimport { isUserCancellation } from \"../../shared/signing\";\nimport {\n buildCancelOrderIx,\n buildIncrementNonceIx,\n} from \"../../program/instructions\";\nimport {\n hashOrder as programHashOrder,\n signOrder as programSignOrder,\n signOrderFull,\n createBidOrder as programCreateBidOrder,\n createAskOrder as programCreateAskOrder,\n createSignedBidOrder as programCreateSignedBidOrder,\n createSignedAskOrder as programCreateSignedAskOrder,\n signCancelOrder,\n signCancelTriggerOrder,\n signCancelAll,\n cancelOrderMessage,\n cancelTriggerOrderMessage,\n cancelAllMessage,\n generateCancelAllSalt as programGenerateCancelAllSalt,\n} from \"../../program/orders\";\nimport {\n getOrderStatusPda,\n getUserNoncePda,\n} from \"../../program/pda\";\nimport {\n deserializeOrderStatus,\n deserializeUserNonce,\n} from \"../../program/accounts\";\nimport type {\n SignedOrder,\n BidOrderParams,\n AskOrderParams,\n OrderStatus as ProgramOrderStatus,\n} from \"../../program/types\";\nimport { asOrderBookId, asPubkeyStr, type OrderBookId, type PubkeyStr } from \"../../shared\";\nimport { LimitOrderEnvelope, TriggerOrderEnvelope } from \"../../program/envelope\";\nimport {\n normalizeUserOrdersPayload,\n type UserSnapshotBalance,\n type UserSnapshotOrder,\n type UserOrderFillsResponse,\n} from \"./wire\";\n\n// ─── Request types ───────────────────────────────────────────────────────────\n\nexport interface CancelBody {\n order_hash: string;\n maker: PubkeyStr;\n signature: string;\n}\n\nexport function cancelBodyFromBase58(\n orderHash: string,\n maker: PubkeyStr,\n signatureBase58: string\n): CancelBody {\n return {\n order_hash: orderHash,\n maker,\n signature: Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\"),\n };\n}\n\nexport function cancelBodySigned(\n orderHash: string,\n maker: PubkeyStr,\n keypair: Keypair\n): CancelBody {\n const signature = signCancelOrder(orderHash, keypair);\n return { order_hash: orderHash, maker, signature };\n}\n\nexport interface CancelAllBody {\n user_pubkey: PubkeyStr;\n orderbook_id: OrderBookId;\n signature: string;\n timestamp: number;\n salt: string;\n}\n\nexport function cancelAllBodyFromBase58(\n userPubkey: PubkeyStr,\n orderbookId: OrderBookId,\n timestamp: number,\n salt: string,\n signatureBase58: string\n): CancelAllBody {\n return {\n user_pubkey: userPubkey,\n orderbook_id: orderbookId,\n signature: Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\"),\n timestamp,\n salt,\n };\n}\n\nexport function cancelAllBodySigned(\n userPubkey: PubkeyStr,\n orderbookId: OrderBookId,\n timestamp: number,\n salt: string,\n keypair: Keypair\n): CancelAllBody {\n const signature = signCancelAll(userPubkey, orderbookId, timestamp, salt, keypair);\n return { user_pubkey: userPubkey, orderbook_id: orderbookId, signature, timestamp, salt };\n}\n\nexport interface CancelTriggerBody {\n trigger_order_id: string;\n maker: PubkeyStr;\n signature: string;\n}\n\nexport function cancelTriggerBodyFromBase58(\n triggerOrderId: string,\n maker: PubkeyStr,\n signatureBase58: string\n): CancelTriggerBody {\n return {\n trigger_order_id: triggerOrderId,\n maker,\n signature: Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\"),\n };\n}\n\nexport function cancelTriggerBodySigned(\n triggerOrderId: string,\n maker: PubkeyStr,\n keypair: Keypair\n): CancelTriggerBody {\n const signature = signCancelTriggerOrder(triggerOrderId, keypair);\n return { trigger_order_id: triggerOrderId, maker, signature };\n}\n\n// ─── Response types ──────────────────────────────────────────────────────────\n\nexport interface FillInfo {\n counterparty: PubkeyStr;\n counterparty_order_hash: string;\n fill_amount: string;\n price: string;\n is_maker: boolean;\n}\n\nexport interface SubmitOrderResponse {\n order_hash: string;\n remaining: string;\n filled: string;\n fills: FillInfo[];\n}\n\nexport interface CancelSuccess {\n order_hash: string;\n remaining: number;\n}\n\nexport interface CancelAllSuccess {\n cancelled_order_hashes: string[];\n count: number;\n user_pubkey: PubkeyStr;\n orderbook_id: OrderBookId;\n message: string;\n}\n\nexport interface TriggerOrderResponse {\n trigger_order_id: string;\n order_hash: string;\n}\n\nexport interface CancelTriggerSuccess {\n trigger_order_id: string;\n}\n\nexport interface UserOrdersResponse {\n user_pubkey: PubkeyStr;\n orders: UserSnapshotOrder[];\n balances: UserSnapshotBalance[];\n next_cursor?: string;\n has_more: boolean;\n}\n\n// ─── Sub-client ──────────────────────────────────────────────────────────────\n\nexport class Orders {\n constructor(private readonly client: ClientContext) {}\n\n // ── PDA helpers ──────────────────────────────────────────────────────\n\n statusPda(orderHash: Buffer): PublicKey {\n return getOrderStatusPda(orderHash, this.client.programId)[0];\n }\n\n noncePda(user: PublicKey): PublicKey {\n return getUserNoncePda(user, this.client.programId)[0];\n }\n\n // ── Envelope factories ────────────────────────────────────────────────\n\n limitOrder(): LimitOrderEnvelope {\n return LimitOrderEnvelope.new().depositSource(this.client.depositSource);\n }\n\n triggerOrder(): TriggerOrderEnvelope {\n return TriggerOrderEnvelope.new().depositSource(this.client.depositSource);\n }\n\n // ── Helpers ──────────────────────────────────────────────────────────\n\n generateCancelAllSalt(): string {\n return programGenerateCancelAllSalt();\n }\n\n // ── HTTP methods ─────────────────────────────────────────────────────\n\n async submit(request: object): Promise<SubmitOrderResponse> {\n const url = `${this.client.http.baseUrl()}/api/orders/submit`;\n return this.client.http.post<SubmitOrderResponse, object>(url, request, RetryPolicy.None);\n }\n\n async cancel(body: CancelBody): Promise<CancelSuccess> {\n const url = `${this.client.http.baseUrl()}/api/orders/cancel`;\n return this.client.http.post<CancelSuccess, CancelBody>(url, body, RetryPolicy.None);\n }\n\n async cancelAll(body: CancelAllBody): Promise<CancelAllSuccess> {\n const url = `${this.client.http.baseUrl()}/api/orders/cancel-all`;\n return this.client.http.post<CancelAllSuccess, CancelAllBody>(\n url,\n body,\n RetryPolicy.None\n );\n }\n\n async submitTrigger(request: object): Promise<TriggerOrderResponse> {\n const url = `${this.client.http.baseUrl()}/api/orders/submit`;\n return this.client.http.post<TriggerOrderResponse, object>(\n url,\n request,\n RetryPolicy.None\n );\n }\n\n async cancelTrigger(body: CancelTriggerBody): Promise<CancelTriggerSuccess> {\n const url = `${this.client.http.baseUrl()}/api/orders/cancel`;\n return this.client.http.post<CancelTriggerSuccess, CancelTriggerBody>(\n url,\n body,\n RetryPolicy.None\n );\n }\n\n async getUserOrders(\n walletAddress: string,\n limit?: number,\n cursor?: string\n ): Promise<UserOrdersResponse> {\n const params = new URLSearchParams({ wallet_address: walletAddress });\n if (limit !== undefined) params.set(\"limit\", String(limit));\n if (cursor) params.set(\"cursor\", cursor);\n\n const url = `${this.client.http.baseUrl()}/api/users/orders?${params.toString()}`;\n const response = await this.client.http.get<{\n user_pubkey: PubkeyStr;\n orders?: UserSnapshotOrder[];\n balances?: UserSnapshotBalance[];\n next_cursor?: string | null;\n has_more?: boolean;\n }>(url, RetryPolicy.Idempotent);\n return normalizeUserOrdersPayload(response);\n }\n\n async getUserOrderFills(\n walletAddress: string,\n marketPubkey?: string,\n limit?: number,\n cursor?: string,\n ): Promise<UserOrderFillsResponse> {\n const params = new URLSearchParams({ wallet_address: walletAddress });\n if (marketPubkey) params.set(\"market_pubkey\", marketPubkey);\n if (limit !== undefined) params.set(\"limit\", String(limit));\n if (cursor) params.set(\"cursor\", cursor);\n\n const url = `${this.client.http.baseUrl()}/api/users/order-fills?${params.toString()}`;\n return this.client.http.get<UserOrderFillsResponse>(url, RetryPolicy.Idempotent);\n }\n\n // ── Unified cancel (dispatches based on client signing strategy) ────\n\n async cancelOrderSigned(\n orderHash: string,\n maker: PubkeyStr\n ): Promise<CancelSuccess> {\n const strategy = requireSigningStrategy(this.client);\n\n switch (strategy.type) {\n case \"native\": {\n const body = cancelBodySigned(orderHash, maker, strategy.keypair);\n return this.cancel(body);\n }\n case \"walletAdapter\": {\n const message = cancelOrderMessage(orderHash);\n const sigBytes = await strategy.signer\n .signMessage(message)\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n const sigBs58 = bs58.encode(sigBytes);\n const body = cancelBodyFromBase58(orderHash, maker, sigBs58);\n return this.cancel(body);\n }\n case \"privy\": {\n const privy = new Privy(this.client);\n const result = await privy.signAndCancelOrder(\n strategy.walletId,\n orderHash,\n maker as string\n );\n return {\n order_hash: result.order_hash,\n remaining: result.remaining,\n };\n }\n }\n }\n\n async cancelAllSigned(\n userPubkey: PubkeyStr,\n timestamp: number,\n salt: string,\n orderbookId?: OrderBookId\n ): Promise<CancelAllSuccess> {\n const strategy = requireSigningStrategy(this.client);\n const resolvedOrderbookId = orderbookId ?? (\"\" as OrderBookId);\n\n switch (strategy.type) {\n case \"native\": {\n const body = cancelAllBodySigned(\n userPubkey,\n resolvedOrderbookId,\n timestamp,\n salt,\n strategy.keypair\n );\n return this.cancelAll(body);\n }\n case \"walletAdapter\": {\n const message = cancelAllMessage(\n userPubkey as string,\n resolvedOrderbookId as string,\n timestamp,\n salt\n );\n const sigBytes = await strategy.signer\n .signMessage(new TextEncoder().encode(message))\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n const sigBs58 = bs58.encode(sigBytes);\n const body = cancelAllBodyFromBase58(\n userPubkey,\n resolvedOrderbookId,\n timestamp,\n salt,\n sigBs58\n );\n return this.cancelAll(body);\n }\n case \"privy\": {\n const privy = new Privy(this.client);\n const result = await privy.signAndCancelAllOrders(\n strategy.walletId,\n userPubkey as string,\n resolvedOrderbookId as string,\n timestamp,\n salt\n );\n return {\n cancelled_order_hashes: result.cancelled_order_hashes,\n count: result.count,\n user_pubkey: asPubkeyStr(result.user_pubkey),\n orderbook_id: asOrderBookId(result.orderbook_id),\n message: result.message,\n };\n }\n }\n }\n\n async cancelTriggerSigned(\n triggerOrderId: string,\n maker: PubkeyStr\n ): Promise<CancelTriggerSuccess> {\n const strategy = requireSigningStrategy(this.client);\n\n switch (strategy.type) {\n case \"native\": {\n const body = cancelTriggerBodySigned(triggerOrderId, maker, strategy.keypair);\n return this.cancelTrigger(body);\n }\n case \"walletAdapter\": {\n const message = cancelTriggerOrderMessage(triggerOrderId);\n const sigBytes = await strategy.signer\n .signMessage(message)\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n const sigBs58 = bs58.encode(sigBytes);\n const body = cancelTriggerBodyFromBase58(triggerOrderId, maker, sigBs58);\n return this.cancelTrigger(body);\n }\n case \"privy\": {\n const privy = new Privy(this.client);\n const result = await privy.signAndCancelTriggerOrder(\n strategy.walletId,\n triggerOrderId,\n maker as string\n );\n return { trigger_order_id: result.trigger_order_id };\n }\n }\n }\n\n // ── On-chain transaction builders ────────────────────────────────────\n\n cancelOrderIx(\n maker: PublicKey,\n market: PublicKey,\n order: SignedOrder\n ): TransactionInstruction {\n return buildCancelOrderIx(maker, market, order, this.client.programId);\n }\n\n incrementNonceIx(user: PublicKey): TransactionInstruction {\n return buildIncrementNonceIx(user, this.client.programId);\n }\n\n // ── Transaction builders (_tx convenience wrappers) ─────────────────\n\n cancelOrderTx(\n maker: PublicKey,\n market: PublicKey,\n order: SignedOrder\n ): Transaction {\n const ix = this.cancelOrderIx(maker, market, order);\n return new Transaction({ feePayer: maker }).add(ix);\n }\n\n incrementNonceTx(user: PublicKey): Transaction {\n const ix = this.incrementNonceIx(user);\n return new Transaction({ feePayer: user }).add(ix);\n }\n\n // ── Order helpers ────────────────────────────────────────────────────\n\n createBidOrder(params: BidOrderParams): Omit<SignedOrder, \"signature\"> {\n return programCreateBidOrder(params);\n }\n\n createAskOrder(params: AskOrderParams): Omit<SignedOrder, \"signature\"> {\n return programCreateAskOrder(params);\n }\n\n createSignedBidOrder(params: BidOrderParams, signer: Keypair): SignedOrder {\n return programCreateSignedBidOrder(params, signer);\n }\n\n createSignedAskOrder(params: AskOrderParams, signer: Keypair): SignedOrder {\n return programCreateSignedAskOrder(params, signer);\n }\n\n hashOrder(order: SignedOrder): Buffer {\n return programHashOrder(order);\n }\n\n signOrder(order: SignedOrder, signer: Keypair): Buffer {\n return programSignOrder(order, signer);\n }\n\n signFullOrder(\n order: Omit<SignedOrder, \"signature\">,\n signer: Keypair\n ): SignedOrder {\n return signOrderFull(order, signer);\n }\n\n // ── On-chain account fetchers (require Connection) ──────────────────\n\n async getStatus(orderHash: Buffer): Promise<ProgramOrderStatus | null> {\n const connection = requireConnection(this.client);\n const pda = this.statusPda(orderHash);\n const accountInfo = await connection.getAccountInfo(pda);\n if (!accountInfo) {\n return null;\n }\n return deserializeOrderStatus(accountInfo.data as Buffer);\n }\n\n async getNonce(user: PublicKey): Promise<bigint> {\n const connection = requireConnection(this.client);\n const pda = this.noncePda(user);\n const accountInfo = await connection.getAccountInfo(pda);\n if (!accountInfo) {\n return 0n;\n }\n const userNonce = deserializeUserNonce(accountInfo.data as Buffer);\n return userNonce.nonce;\n }\n\n async currentNonce(user: PublicKey): Promise<number> {\n const nonce = await this.getNonce(user);\n if (nonce > 0xFFFFFFFFn) {\n throw ProgramSdkError.serialization(`Nonce exceeds u32 range: ${nonce}`);\n }\n return Number(nonce);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/domain/order/client.ts"],"names":[],"mappings":"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","sourcesContent":["import bs58 from \"bs58\";\nimport { Keypair, Transaction, type PublicKey, type TransactionInstruction } from \"@solana/web3.js\";\nimport type { ClientContext } from \"../../context\";\nimport { requireConnection, requireSigningStrategy } from \"../../context\";\nimport { SdkError } from \"../../error\";\nimport { ProgramSdkError } from \"../../program/error\";\nimport { RetryPolicy } from \"../../http\";\nimport { Privy } from \"../../privy\";\nimport { isUserCancellation } from \"../../shared/signing\";\nimport {\n buildCancelOrderIx,\n buildCloseOrderStatusIx,\n buildIncrementNonceIx,\n} from \"../../program/instructions\";\nimport {\n hashOrder as programHashOrder,\n signOrder as programSignOrder,\n signOrderFull,\n createBidOrder as programCreateBidOrder,\n createAskOrder as programCreateAskOrder,\n createSignedBidOrder as programCreateSignedBidOrder,\n createSignedAskOrder as programCreateSignedAskOrder,\n signCancelOrder,\n signCancelTriggerOrder,\n signCancelAll,\n cancelOrderMessage,\n cancelTriggerOrderMessage,\n cancelAllMessage,\n generateCancelAllSalt as programGenerateCancelAllSalt,\n} from \"../../program/orders\";\nimport {\n getOrderStatusPda,\n getUserNoncePda,\n} from \"../../program/pda\";\nimport {\n deserializeOrderStatus,\n deserializeUserNonce,\n} from \"../../program/accounts\";\nimport type {\n SignedOrder,\n CloseOrderStatusParams,\n BidOrderParams,\n AskOrderParams,\n OrderStatus as ProgramOrderStatus,\n} from \"../../program/types\";\nimport { asOrderBookId, asPubkeyStr, type OrderBookId, type PubkeyStr } from \"../../shared\";\nimport { LimitOrderEnvelope, TriggerOrderEnvelope } from \"../../program/envelope\";\nimport {\n normalizeUserOrdersPayload,\n type UserSnapshotBalance,\n type UserSnapshotOrder,\n type UserOrderFillsResponse,\n} from \"./wire\";\n\n// ─── Request types ───────────────────────────────────────────────────────────\n\nexport interface CancelBody {\n order_hash: string;\n maker: PubkeyStr;\n signature: string;\n}\n\nexport function cancelBodyFromBase58(\n orderHash: string,\n maker: PubkeyStr,\n signatureBase58: string\n): CancelBody {\n return {\n order_hash: orderHash,\n maker,\n signature: Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\"),\n };\n}\n\nexport function cancelBodySigned(\n orderHash: string,\n maker: PubkeyStr,\n keypair: Keypair\n): CancelBody {\n const signature = signCancelOrder(orderHash, keypair);\n return { order_hash: orderHash, maker, signature };\n}\n\nexport interface CancelAllBody {\n user_pubkey: PubkeyStr;\n orderbook_id: OrderBookId;\n signature: string;\n timestamp: number;\n salt: string;\n}\n\nexport function cancelAllBodyFromBase58(\n userPubkey: PubkeyStr,\n orderbookId: OrderBookId,\n timestamp: number,\n salt: string,\n signatureBase58: string\n): CancelAllBody {\n return {\n user_pubkey: userPubkey,\n orderbook_id: orderbookId,\n signature: Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\"),\n timestamp,\n salt,\n };\n}\n\nexport function cancelAllBodySigned(\n userPubkey: PubkeyStr,\n orderbookId: OrderBookId,\n timestamp: number,\n salt: string,\n keypair: Keypair\n): CancelAllBody {\n const signature = signCancelAll(userPubkey, orderbookId, timestamp, salt, keypair);\n return { user_pubkey: userPubkey, orderbook_id: orderbookId, signature, timestamp, salt };\n}\n\nexport interface CancelTriggerBody {\n trigger_order_id: string;\n maker: PubkeyStr;\n signature: string;\n}\n\nexport function cancelTriggerBodyFromBase58(\n triggerOrderId: string,\n maker: PubkeyStr,\n signatureBase58: string\n): CancelTriggerBody {\n return {\n trigger_order_id: triggerOrderId,\n maker,\n signature: Buffer.from(bs58.decode(signatureBase58)).toString(\"hex\"),\n };\n}\n\nexport function cancelTriggerBodySigned(\n triggerOrderId: string,\n maker: PubkeyStr,\n keypair: Keypair\n): CancelTriggerBody {\n const signature = signCancelTriggerOrder(triggerOrderId, keypair);\n return { trigger_order_id: triggerOrderId, maker, signature };\n}\n\n// ─── Response types ──────────────────────────────────────────────────────────\n\nexport interface FillInfo {\n counterparty: PubkeyStr;\n counterparty_order_hash: string;\n fill_amount: string;\n price: string;\n is_maker: boolean;\n}\n\nexport interface SubmitOrderResponse {\n order_hash: string;\n remaining: string;\n filled: string;\n fills: FillInfo[];\n}\n\nexport interface CancelSuccess {\n order_hash: string;\n remaining: string;\n}\n\nexport interface CancelAllSuccess {\n cancelled_order_hashes: string[];\n count: number;\n user_pubkey: PubkeyStr;\n orderbook_id: OrderBookId;\n message: string;\n}\n\nexport interface TriggerOrderResponse {\n trigger_order_id: string;\n order_hash: string;\n}\n\nexport interface CancelTriggerSuccess {\n trigger_order_id: string;\n}\n\nexport interface UserOrdersResponse {\n user_pubkey: PubkeyStr;\n orders: UserSnapshotOrder[];\n balances: UserSnapshotBalance[];\n next_cursor?: string;\n has_more: boolean;\n}\n\n// ─── Sub-client ──────────────────────────────────────────────────────────────\n\nexport class Orders {\n constructor(private readonly client: ClientContext) {}\n\n // ── PDA helpers ──────────────────────────────────────────────────────\n\n statusPda(orderHash: Buffer): PublicKey {\n return getOrderStatusPda(orderHash, this.client.programId)[0];\n }\n\n noncePda(user: PublicKey): PublicKey {\n return getUserNoncePda(user, this.client.programId)[0];\n }\n\n // ── Envelope factories ────────────────────────────────────────────────\n\n limitOrder(): LimitOrderEnvelope {\n return LimitOrderEnvelope.new().depositSource(this.client.depositSource);\n }\n\n triggerOrder(): TriggerOrderEnvelope {\n return TriggerOrderEnvelope.new().depositSource(this.client.depositSource);\n }\n\n // ── Helpers ──────────────────────────────────────────────────────────\n\n generateCancelAllSalt(): string {\n return programGenerateCancelAllSalt();\n }\n\n // ── HTTP methods ─────────────────────────────────────────────────────\n\n async submit(request: object): Promise<SubmitOrderResponse> {\n const url = `${this.client.http.baseUrl()}/api/orders/submit`;\n return this.client.http.post<SubmitOrderResponse, object>(url, request, RetryPolicy.None);\n }\n\n async cancel(body: CancelBody): Promise<CancelSuccess> {\n const url = `${this.client.http.baseUrl()}/api/orders/cancel`;\n return this.client.http.post<CancelSuccess, CancelBody>(url, body, RetryPolicy.None);\n }\n\n async cancelAll(body: CancelAllBody): Promise<CancelAllSuccess> {\n const url = `${this.client.http.baseUrl()}/api/orders/cancel-all`;\n return this.client.http.post<CancelAllSuccess, CancelAllBody>(\n url,\n body,\n RetryPolicy.None\n );\n }\n\n async submitTrigger(request: object): Promise<TriggerOrderResponse> {\n const url = `${this.client.http.baseUrl()}/api/orders/submit`;\n return this.client.http.post<TriggerOrderResponse, object>(\n url,\n request,\n RetryPolicy.None\n );\n }\n\n async cancelTrigger(body: CancelTriggerBody): Promise<CancelTriggerSuccess> {\n const url = `${this.client.http.baseUrl()}/api/orders/cancel`;\n return this.client.http.post<CancelTriggerSuccess, CancelTriggerBody>(\n url,\n body,\n RetryPolicy.None\n );\n }\n\n /**\n * Fetch the authenticated user's open orders. Wallet is resolved\n * server-side from the auth cookie, so no parameter is required.\n */\n async getUserOrders(\n limit?: number,\n cursor?: string\n ): Promise<UserOrdersResponse> {\n const url = buildUserOrdersAuthenticatedUrl(this.client.http.baseUrl(), limit, cursor);\n const response = await this.client.http.get<UserOrdersRawResponse>(url, RetryPolicy.Idempotent);\n return normalizeUserOrdersPayload(response);\n }\n\n /**\n * Same as {@link getUserOrders}, but uses the supplied `cookieHeader` for\n * this call instead of the SDK's process-wide cookie store. For\n * server-side cookie forwarding (SSR / route handlers).\n */\n async getUserOrdersWithCookies(\n limit: number | undefined,\n cursor: string | undefined,\n cookieHeader: string,\n ): Promise<UserOrdersResponse> {\n const url = buildUserOrdersAuthenticatedUrl(this.client.http.baseUrl(), limit, cursor);\n const response = await this.client.http.getWithCookies<UserOrdersRawResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n return normalizeUserOrdersPayload(response);\n }\n\n /**\n * Fetch the authenticated user's filled orders with nested fill events.\n * Wallet is resolved server-side from the auth cookie.\n */\n async getUserOrderFills(\n marketPubkey?: string,\n limit?: number,\n cursor?: string,\n ): Promise<UserOrderFillsResponse> {\n const url = buildUserOrderFillsAuthenticatedUrl(\n this.client.http.baseUrl(),\n marketPubkey,\n limit,\n cursor,\n );\n return this.client.http.get<UserOrderFillsResponse>(url, RetryPolicy.Idempotent);\n }\n\n /**\n * Same as {@link getUserOrderFills}, 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 / route handlers).\n */\n async getUserOrderFillsWithCookies(\n marketPubkey: string | undefined,\n limit: number | undefined,\n cursor: string | undefined,\n cookieHeader: string,\n ): Promise<UserOrderFillsResponse> {\n const url = buildUserOrderFillsAuthenticatedUrl(\n this.client.http.baseUrl(),\n marketPubkey,\n limit,\n cursor,\n );\n return this.client.http.getWithCookies<UserOrderFillsResponse>(\n url,\n RetryPolicy.Idempotent,\n cookieHeader,\n );\n }\n\n /**\n * Public variant of {@link getUserOrderFills}. Takes the user's wallet\n * via the URL path (`GET /api/users/{wallet}/order-fills`) and requires\n * no auth.\n */\n async getUserOrderFillsByWallet(\n walletAddress: string,\n marketPubkey?: string,\n limit?: number,\n cursor?: string,\n ): Promise<UserOrderFillsResponse> {\n const url = buildUserOrderFillsByWalletUrl(\n this.client.http.baseUrl(),\n walletAddress,\n marketPubkey,\n limit,\n cursor,\n );\n return this.client.http.get<UserOrderFillsResponse>(url, RetryPolicy.Idempotent);\n }\n\n // ── Unified cancel (dispatches based on client signing strategy) ────\n\n async cancelOrderSigned(\n orderHash: string,\n maker: PubkeyStr\n ): Promise<CancelSuccess> {\n const strategy = requireSigningStrategy(this.client);\n\n switch (strategy.type) {\n case \"native\": {\n const body = cancelBodySigned(orderHash, maker, strategy.keypair);\n return this.cancel(body);\n }\n case \"walletAdapter\": {\n const message = cancelOrderMessage(orderHash);\n const sigBytes = await strategy.signer\n .signMessage(message)\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n const sigBs58 = bs58.encode(sigBytes);\n const body = cancelBodyFromBase58(orderHash, maker, sigBs58);\n return this.cancel(body);\n }\n case \"privy\": {\n const privy = new Privy(this.client);\n const result = await privy.signAndCancelOrder(\n strategy.walletId,\n orderHash,\n maker as string\n );\n return {\n order_hash: result.order_hash,\n remaining: result.remaining,\n };\n }\n }\n }\n\n async cancelAllSigned(\n userPubkey: PubkeyStr,\n timestamp: number,\n salt: string,\n orderbookId?: OrderBookId\n ): Promise<CancelAllSuccess> {\n const strategy = requireSigningStrategy(this.client);\n const resolvedOrderbookId = orderbookId ?? (\"\" as OrderBookId);\n\n switch (strategy.type) {\n case \"native\": {\n const body = cancelAllBodySigned(\n userPubkey,\n resolvedOrderbookId,\n timestamp,\n salt,\n strategy.keypair\n );\n return this.cancelAll(body);\n }\n case \"walletAdapter\": {\n const message = cancelAllMessage(\n userPubkey as string,\n resolvedOrderbookId as string,\n timestamp,\n salt\n );\n const sigBytes = await strategy.signer\n .signMessage(new TextEncoder().encode(message))\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n const sigBs58 = bs58.encode(sigBytes);\n const body = cancelAllBodyFromBase58(\n userPubkey,\n resolvedOrderbookId,\n timestamp,\n salt,\n sigBs58\n );\n return this.cancelAll(body);\n }\n case \"privy\": {\n const privy = new Privy(this.client);\n const result = await privy.signAndCancelAllOrders(\n strategy.walletId,\n userPubkey as string,\n resolvedOrderbookId as string,\n timestamp,\n salt\n );\n return {\n cancelled_order_hashes: result.cancelled_order_hashes,\n count: result.count,\n user_pubkey: asPubkeyStr(result.user_pubkey),\n orderbook_id: asOrderBookId(result.orderbook_id),\n message: result.message,\n };\n }\n }\n }\n\n async cancelTriggerSigned(\n triggerOrderId: string,\n maker: PubkeyStr\n ): Promise<CancelTriggerSuccess> {\n const strategy = requireSigningStrategy(this.client);\n\n switch (strategy.type) {\n case \"native\": {\n const body = cancelTriggerBodySigned(triggerOrderId, maker, strategy.keypair);\n return this.cancelTrigger(body);\n }\n case \"walletAdapter\": {\n const message = cancelTriggerOrderMessage(triggerOrderId);\n const sigBytes = await strategy.signer\n .signMessage(message)\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n const sigBs58 = bs58.encode(sigBytes);\n const body = cancelTriggerBodyFromBase58(triggerOrderId, maker, sigBs58);\n return this.cancelTrigger(body);\n }\n case \"privy\": {\n const privy = new Privy(this.client);\n const result = await privy.signAndCancelTriggerOrder(\n strategy.walletId,\n triggerOrderId,\n maker as string\n );\n return { trigger_order_id: result.trigger_order_id };\n }\n }\n }\n\n // ── On-chain transaction builders ────────────────────────────────────\n\n cancelOrderIx(\n operator: PublicKey,\n market: PublicKey,\n order: SignedOrder\n ): TransactionInstruction {\n return buildCancelOrderIx(operator, market, order, this.client.programId);\n }\n\n incrementNonceIx(user: PublicKey): TransactionInstruction {\n return buildIncrementNonceIx(user, this.client.programId);\n }\n\n closeOrderStatusIx(params: CloseOrderStatusParams): TransactionInstruction {\n return buildCloseOrderStatusIx(params, this.client.programId);\n }\n\n // ── Transaction builders (_tx convenience wrappers) ─────────────────\n\n cancelOrderTx(\n operator: PublicKey,\n market: PublicKey,\n order: SignedOrder\n ): Transaction {\n const ix = this.cancelOrderIx(operator, market, order);\n return new Transaction({ feePayer: operator }).add(ix);\n }\n\n incrementNonceTx(user: PublicKey): Transaction {\n const ix = this.incrementNonceIx(user);\n return new Transaction({ feePayer: user }).add(ix);\n }\n\n closeOrderStatusTx(params: CloseOrderStatusParams): Transaction {\n const ix = this.closeOrderStatusIx(params);\n return new Transaction({ feePayer: params.operator }).add(ix);\n }\n\n // ── Order helpers ────────────────────────────────────────────────────\n\n createBidOrder(params: BidOrderParams): Omit<SignedOrder, \"signature\"> {\n return programCreateBidOrder(params);\n }\n\n createAskOrder(params: AskOrderParams): Omit<SignedOrder, \"signature\"> {\n return programCreateAskOrder(params);\n }\n\n createSignedBidOrder(params: BidOrderParams, signer: Keypair): SignedOrder {\n return programCreateSignedBidOrder(params, signer);\n }\n\n createSignedAskOrder(params: AskOrderParams, signer: Keypair): SignedOrder {\n return programCreateSignedAskOrder(params, signer);\n }\n\n hashOrder(order: SignedOrder): Buffer {\n return programHashOrder(order);\n }\n\n signOrder(order: SignedOrder, signer: Keypair): Buffer {\n return programSignOrder(order, signer);\n }\n\n signFullOrder(\n order: Omit<SignedOrder, \"signature\">,\n signer: Keypair\n ): SignedOrder {\n return signOrderFull(order, signer);\n }\n\n // ── On-chain account fetchers (require Connection) ──────────────────\n\n async getStatus(orderHash: Buffer): Promise<ProgramOrderStatus | null> {\n const connection = requireConnection(this.client);\n const pda = this.statusPda(orderHash);\n const accountInfo = await connection.getAccountInfo(pda);\n if (!accountInfo) {\n return null;\n }\n return deserializeOrderStatus(accountInfo.data as Buffer);\n }\n\n async getNonce(user: PublicKey): Promise<bigint> {\n const connection = requireConnection(this.client);\n const pda = this.noncePda(user);\n const accountInfo = await connection.getAccountInfo(pda);\n if (!accountInfo) {\n return 0n;\n }\n const userNonce = deserializeUserNonce(accountInfo.data as Buffer);\n return userNonce.nonce;\n }\n\n async currentNonce(user: PublicKey): Promise<number> {\n const nonce = await this.getNonce(user);\n if (nonce > 0xFFFFFFFFn) {\n throw ProgramSdkError.serialization(`Nonce exceeds u32 range: ${nonce}`);\n }\n return Number(nonce);\n }\n}\n\ninterface UserOrdersRawResponse {\n user_pubkey: PubkeyStr;\n orders?: UserSnapshotOrder[];\n balances?: UserSnapshotBalance[];\n next_cursor?: string | null;\n has_more?: boolean;\n}\n\nfunction buildUserOrdersAuthenticatedUrl(\n baseUrl: string,\n limit: number | undefined,\n cursor: string | undefined,\n): string {\n const params = new URLSearchParams();\n if (limit !== undefined) params.set(\"limit\", String(limit));\n if (cursor) params.set(\"cursor\", cursor);\n const qs = params.toString();\n return qs.length === 0\n ? `${baseUrl}/api/users/orders`\n : `${baseUrl}/api/users/orders?${qs}`;\n}\n\nfunction buildUserOrderFillsAuthenticatedUrl(\n baseUrl: string,\n marketPubkey: string | undefined,\n limit: number | undefined,\n cursor: string | undefined,\n): string {\n const params = new URLSearchParams();\n if (marketPubkey) params.set(\"market_pubkey\", marketPubkey);\n if (limit !== undefined) params.set(\"limit\", String(limit));\n if (cursor) params.set(\"cursor\", cursor);\n const qs = params.toString();\n return qs.length === 0\n ? `${baseUrl}/api/users/order-fills`\n : `${baseUrl}/api/users/order-fills?${qs}`;\n}\n\nfunction buildUserOrderFillsByWalletUrl(\n baseUrl: string,\n walletAddress: string,\n marketPubkey: string | undefined,\n limit: number | undefined,\n cursor: string | undefined,\n): string {\n const params = new URLSearchParams();\n if (marketPubkey) params.set(\"market_pubkey\", marketPubkey);\n if (limit !== undefined) params.set(\"limit\", String(limit));\n if (cursor) params.set(\"cursor\", cursor);\n const qs = params.toString();\n const path = `${baseUrl}/api/users/${encodeURIComponent(walletAddress)}/order-fills`;\n return qs.length === 0 ? path : `${path}?${qs}`;\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LimitOrder, TriggerOrder } from "./index";
|
|
2
2
|
import type { OrderUpdate, UserSnapshotOrder, UserSnapshotOrderCommon } from "./wire";
|
|
3
|
-
import {
|
|
4
|
-
export declare function orderFromUpdate(update: OrderUpdate):
|
|
5
|
-
export declare function limitSnapshotToOrder(common: UserSnapshotOrderCommon, txSignature?: string):
|
|
3
|
+
import { UserOpenLimitOrders, UserTriggerOrders } from "./state";
|
|
4
|
+
export declare function orderFromUpdate(update: OrderUpdate): LimitOrder;
|
|
5
|
+
export declare function limitSnapshotToOrder(common: UserSnapshotOrderCommon, txSignature?: string): LimitOrder;
|
|
6
6
|
export declare function triggerSnapshotToOrder(common: UserSnapshotOrderCommon, triggerOrderId: string, triggerPrice: string, triggerType: import("../../shared").TriggerType, timeInForce?: import("../../shared").TimeInForce): TriggerOrder;
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function convertSnapshotOrders(orders: UserSnapshotOrder[]): [UserOpenLimitOrders, UserTriggerOrders];
|
|
8
8
|
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/domain/order/convert.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/domain/order/convert.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAmB/D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAkBtG;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,uBAAuB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,OAAO,cAAc,EAAE,WAAW,EAC/C,WAAW,CAAC,EAAE,OAAO,cAAc,EAAE,WAAW,GAC/C,YAAY,CAcd;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAwB3G"}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.orderFromUpdate = orderFromUpdate;
|
|
7
7
|
exports.limitSnapshotToOrder = limitSnapshotToOrder;
|
|
8
8
|
exports.triggerSnapshotToOrder = triggerSnapshotToOrder;
|
|
9
|
-
exports.
|
|
9
|
+
exports.convertSnapshotOrders = convertSnapshotOrders;
|
|
10
10
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
11
11
|
const shared_1 = require("../../shared");
|
|
12
12
|
const state_1 = require("./state");
|
|
@@ -63,8 +63,8 @@ function triggerSnapshotToOrder(common, triggerOrderId, triggerPrice, triggerTyp
|
|
|
63
63
|
createdAt: new Date(common.created_at),
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
-
function
|
|
67
|
-
const openOrders = new state_1.
|
|
66
|
+
function convertSnapshotOrders(orders) {
|
|
67
|
+
const openOrders = new state_1.UserOpenLimitOrders();
|
|
68
68
|
const triggerOrders = new state_1.UserTriggerOrders();
|
|
69
69
|
for (const snapshot of orders) {
|
|
70
70
|
if (snapshot.order_type === "limit") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/domain/order/convert.ts"],"names":[],"mappings":";;;;;AAMA,0CAmBC;AAED,oDAkBC;AAED,wDAoBC;AAED,
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/domain/order/convert.ts"],"names":[],"mappings":"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","sourcesContent":["import Decimal from \"decimal.js\";\nimport { TimeInForce } from \"../../shared\";\nimport type { LimitOrder, TriggerOrder } from \"./index\";\nimport type { OrderUpdate, UserSnapshotOrder, UserSnapshotOrderCommon } from \"./wire\";\nimport { UserOpenLimitOrders, UserTriggerOrders } from \"./state\";\n\nexport function orderFromUpdate(update: OrderUpdate): LimitOrder {\n const size = new Decimal(update.order.filled).plus(update.order.remaining);\n\n return {\n marketPubkey: update.market_pubkey,\n orderbookId: update.orderbook_id,\n baseMint: update.order.base_mint,\n quoteMint: update.order.quote_mint,\n orderHash: update.order.order_hash,\n side: update.order.side,\n size: size.toString(),\n price: update.order.price,\n filledSize: update.order.filled,\n remainingSize: update.order.remaining,\n createdAt: new Date(update.order.created_at),\n txSignature: update.tx_signature,\n status: update.order.status,\n outcomeIndex: update.order.outcome_index,\n };\n}\n\nexport function limitSnapshotToOrder(common: UserSnapshotOrderCommon, txSignature?: string): LimitOrder {\n const size = new Decimal(common.filled).plus(common.remaining);\n return {\n marketPubkey: common.market_pubkey,\n orderbookId: common.orderbook_id,\n orderHash: common.order_hash,\n baseMint: common.base_mint,\n quoteMint: common.quote_mint,\n side: common.side,\n size: size.toString(),\n price: common.price,\n filledSize: common.filled,\n remainingSize: common.remaining,\n createdAt: new Date(common.created_at),\n txSignature,\n status: common.status,\n outcomeIndex: common.outcome_index,\n };\n}\n\nexport function triggerSnapshotToOrder(\n common: UserSnapshotOrderCommon,\n triggerOrderId: string,\n triggerPrice: string,\n triggerType: import(\"../../shared\").TriggerType,\n timeInForce?: import(\"../../shared\").TimeInForce\n): TriggerOrder {\n return {\n triggerOrderId,\n orderHash: common.order_hash,\n marketPubkey: common.market_pubkey,\n orderbookId: common.orderbook_id,\n triggerPrice,\n triggerType,\n side: common.side,\n amountIn: common.amount_in,\n amountOut: common.amount_out,\n timeInForce: timeInForce ?? TimeInForce.Gtc,\n createdAt: new Date(common.created_at),\n };\n}\n\nexport function convertSnapshotOrders(orders: UserSnapshotOrder[]): [UserOpenLimitOrders, UserTriggerOrders] {\n const openOrders = new UserOpenLimitOrders();\n const triggerOrders = new UserTriggerOrders();\n\n for (const snapshot of orders) {\n if (snapshot.order_type === \"limit\") {\n if (!new Decimal(snapshot.remaining).isZero()) {\n openOrders.insert(limitSnapshotToOrder(snapshot, snapshot.tx_signature));\n }\n continue;\n }\n\n triggerOrders.insert(\n triggerSnapshotToOrder(\n snapshot,\n snapshot.trigger_order_id,\n snapshot.trigger_price,\n snapshot.trigger_type,\n snapshot.time_in_force\n )\n );\n }\n\n return [openOrders, triggerOrders];\n}\n"]}
|
|
@@ -3,11 +3,12 @@ import { Side, type OrderBookId, type PubkeyStr, type TimeInForce, type TriggerT
|
|
|
3
3
|
export * from "./client";
|
|
4
4
|
export * from "./wire";
|
|
5
5
|
export * from "./state";
|
|
6
|
-
export { limitSnapshotToOrder,
|
|
6
|
+
export { limitSnapshotToOrder, convertSnapshotOrders, orderFromUpdate } from "./convert";
|
|
7
7
|
export declare enum OrderType {
|
|
8
8
|
Limit = "limit",
|
|
9
9
|
Trigger = "trigger"
|
|
10
10
|
}
|
|
11
|
+
export declare function orderTypeLabel(orderType: OrderType): string;
|
|
11
12
|
export declare enum OrderStatus {
|
|
12
13
|
Open = "OPEN",
|
|
13
14
|
Matching = "MATCHING",
|
|
@@ -15,7 +16,7 @@ export declare enum OrderStatus {
|
|
|
15
16
|
Filled = "FILLED",
|
|
16
17
|
Pending = "PENDING"
|
|
17
18
|
}
|
|
18
|
-
export interface
|
|
19
|
+
export interface LimitOrder {
|
|
19
20
|
marketPubkey: PubkeyStr;
|
|
20
21
|
orderbookId: OrderBookId;
|
|
21
22
|
txSignature?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/order/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE1G,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/order/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE1G,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEzF,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAO3D;AAED,oBAAY,WAAW;IACrB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,CAW/E"}
|
|
@@ -17,7 +17,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.OrderStatus = exports.OrderType = exports.orderFromUpdate = exports.
|
|
20
|
+
exports.OrderStatus = exports.OrderType = exports.orderFromUpdate = exports.convertSnapshotOrders = exports.limitSnapshotToOrder = void 0;
|
|
21
|
+
exports.orderTypeLabel = orderTypeLabel;
|
|
21
22
|
exports.triggerOrderLimitPrice = triggerOrderLimitPrice;
|
|
22
23
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
23
24
|
const shared_1 = require("../../shared");
|
|
@@ -26,14 +27,21 @@ __exportStar(require("./wire"), exports);
|
|
|
26
27
|
__exportStar(require("./state"), exports);
|
|
27
28
|
var convert_1 = require("./convert");
|
|
28
29
|
Object.defineProperty(exports, "limitSnapshotToOrder", { enumerable: true, get: function () { return convert_1.limitSnapshotToOrder; } });
|
|
29
|
-
Object.defineProperty(exports, "
|
|
30
|
-
Object.defineProperty(exports, "triggerSnapshotToOrder", { enumerable: true, get: function () { return convert_1.triggerSnapshotToOrder; } });
|
|
30
|
+
Object.defineProperty(exports, "convertSnapshotOrders", { enumerable: true, get: function () { return convert_1.convertSnapshotOrders; } });
|
|
31
31
|
Object.defineProperty(exports, "orderFromUpdate", { enumerable: true, get: function () { return convert_1.orderFromUpdate; } });
|
|
32
32
|
var OrderType;
|
|
33
33
|
(function (OrderType) {
|
|
34
34
|
OrderType["Limit"] = "limit";
|
|
35
35
|
OrderType["Trigger"] = "trigger";
|
|
36
36
|
})(OrderType || (exports.OrderType = OrderType = {}));
|
|
37
|
+
function orderTypeLabel(orderType) {
|
|
38
|
+
switch (orderType) {
|
|
39
|
+
case OrderType.Limit:
|
|
40
|
+
return "Limit";
|
|
41
|
+
case OrderType.Trigger:
|
|
42
|
+
return "Trigger";
|
|
43
|
+
}
|
|
44
|
+
}
|
|
37
45
|
var OrderStatus;
|
|
38
46
|
(function (OrderStatus) {
|
|
39
47
|
OrderStatus["Open"] = "OPEN";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/order/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/order/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAaA,wCAOC;AAmDD,wDAWC;AAlFD,4DAAiC;AACjC,yCAA0G;AAE1G,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,qCAAyF;AAAhF,+GAAA,oBAAoB,OAAA;AAAE,gHAAA,qBAAqB,OAAA;AAAE,0GAAA,eAAe,OAAA;AAErE,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,SAAgB,cAAc,CAAC,SAAoB;IACjD,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,OAAO,CAAC;QACjB,KAAK,SAAS,CAAC,OAAO;YACpB,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;AACrB,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB;AAiCD;;;;;;;;;GASG;AACH,SAAgB,sBAAsB,CAAC,KAAmB;IACxD,MAAM,QAAQ,GAAG,IAAI,oBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,oBAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,KAAK,CAAC,IAAI,KAAK,aAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAI,CAAC,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import Decimal from \"decimal.js\";\nimport { Side, type OrderBookId, type PubkeyStr, type TimeInForce, type TriggerType } from \"../../shared\";\n\nexport * from \"./client\";\nexport * from \"./wire\";\nexport * from \"./state\";\nexport { limitSnapshotToOrder, convertSnapshotOrders, orderFromUpdate } from \"./convert\";\n\nexport enum OrderType {\n Limit = \"limit\",\n Trigger = \"trigger\",\n}\n\nexport function orderTypeLabel(orderType: OrderType): string {\n switch (orderType) {\n case OrderType.Limit:\n return \"Limit\";\n case OrderType.Trigger:\n return \"Trigger\";\n }\n}\n\nexport enum OrderStatus {\n Open = \"OPEN\",\n Matching = \"MATCHING\",\n Cancelled = \"CANCELLED\",\n Filled = \"FILLED\",\n Pending = \"PENDING\",\n}\n\nexport interface LimitOrder {\n marketPubkey: PubkeyStr;\n orderbookId: OrderBookId;\n txSignature?: string;\n baseMint: PubkeyStr;\n quoteMint: PubkeyStr;\n orderHash: string;\n side: Side;\n size: string;\n price: string;\n filledSize: string;\n remainingSize: string;\n createdAt: Date;\n status: OrderStatus;\n outcomeIndex: number;\n}\n\nexport interface TriggerOrder {\n triggerOrderId: string;\n orderHash: string;\n marketPubkey: PubkeyStr;\n orderbookId: OrderBookId;\n triggerPrice: string;\n triggerType: TriggerType;\n side: Side;\n amountIn: string;\n amountOut: string;\n timeInForce: TimeInForce;\n createdAt: Date;\n}\n\n/**\n * Derive the limit price from pre-scaled amounts.\n *\n * `amountIn` and `amountOut` are already human-readable decimals\n * (scaled by the snapshot/websocket layer), so no further decimal\n * conversion is needed.\n *\n * For Ask: maker gives base, receives quote -> price = quote / base\n * For Bid: maker gives quote, receives base -> price = quote / base\n */\nexport function triggerOrderLimitPrice(order: TriggerOrder): Decimal | undefined {\n const amountIn = new Decimal(order.amountIn);\n const amountOut = new Decimal(order.amountOut);\n\n if (order.side === Side.Ask && amountIn.greaterThan(0)) {\n return amountOut.div(amountIn);\n }\n if (order.side === Side.Bid && amountOut.greaterThan(0)) {\n return amountIn.div(amountOut);\n }\n return undefined;\n}\n"]}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import type { OrderBookId, PubkeyStr } from "../../shared";
|
|
2
|
-
import type {
|
|
2
|
+
import type { LimitOrder, TriggerOrder } from "./index";
|
|
3
3
|
import type { OrderUpdate } from "./wire";
|
|
4
|
-
export declare class
|
|
5
|
-
readonly orders: Map<PubkeyStr,
|
|
4
|
+
export declare class UserOpenLimitOrders {
|
|
5
|
+
readonly orders: Map<PubkeyStr, Map<OrderBookId, LimitOrder[]>>;
|
|
6
6
|
constructor();
|
|
7
|
-
get(market: PubkeyStr):
|
|
8
|
-
|
|
7
|
+
get(market: PubkeyStr, orderbookId: OrderBookId): LimitOrder[] | undefined;
|
|
8
|
+
getByMarket(market: PubkeyStr): Map<OrderBookId, LimitOrder[]> | undefined;
|
|
9
|
+
insert(order: LimitOrder): void;
|
|
9
10
|
upsert(update: OrderUpdate): void;
|
|
10
11
|
remove(orderHash: string): void;
|
|
11
12
|
clear(): void;
|
|
12
13
|
isEmpty(): boolean;
|
|
13
14
|
}
|
|
14
15
|
export declare class UserTriggerOrders {
|
|
15
|
-
readonly orders: Map<OrderBookId, TriggerOrder[]
|
|
16
|
+
readonly orders: Map<PubkeyStr, Map<OrderBookId, TriggerOrder[]>>;
|
|
16
17
|
constructor();
|
|
17
|
-
get(orderbookId: OrderBookId): TriggerOrder[] | undefined;
|
|
18
|
+
get(market: PubkeyStr, orderbookId: OrderBookId): TriggerOrder[] | undefined;
|
|
19
|
+
getByMarket(market: PubkeyStr): Map<OrderBookId, TriggerOrder[]> | undefined;
|
|
18
20
|
getById(triggerOrderId: string): TriggerOrder | undefined;
|
|
19
21
|
insert(order: TriggerOrder): void;
|
|
20
22
|
remove(triggerOrderId: string): TriggerOrder | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/domain/order/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/domain/order/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG1C,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;;IAMhE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,UAAU,EAAE,GAAG,SAAS;IAI1E,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,GAAG,SAAS;IAI1E,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAW/B,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAajC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAW/B,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,OAAO;CAUnB;AAED,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;;IAMlE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,YAAY,EAAE,GAAG,SAAS;IAI5E,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,GAAG,SAAS;IAI5E,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAazD,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAWjC,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAexD,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,OAAO;IAWlB,GAAG,IAAI,MAAM;IAUb,GAAG,IAAI,YAAY,EAAE;CAStB"}
|