@lightconexyz/lightcone-sdk 0.5.1 → 0.6.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 +35 -5
- package/dist/client.d.ts +30 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +38 -0
- package/dist/client.js.map +1 -1
- package/dist/domain/admin/client.d.ts +10 -1
- package/dist/domain/admin/client.d.ts.map +1 -1
- package/dist/domain/admin/client.js +51 -0
- package/dist/domain/admin/client.js.map +1 -1
- package/dist/domain/admin/wire.d.ts +267 -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 +30 -0
- 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 +43 -4
- 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 +13 -4
- package/dist/domain/market/index.d.ts.map +1 -1
- package/dist/domain/market/index.js +3 -1
- package/dist/domain/market/index.js.map +1 -1
- package/dist/domain/market/outcome.d.ts +3 -1
- package/dist/domain/market/outcome.d.ts.map +1 -1
- package/dist/domain/market/outcome.js +7 -7
- package/dist/domain/market/outcome.js.map +1 -1
- package/dist/domain/market/tokens.d.ts +53 -3
- package/dist/domain/market/tokens.d.ts.map +1 -1
- package/dist/domain/market/tokens.js +99 -8
- package/dist/domain/market/tokens.js.map +1 -1
- package/dist/domain/market/wire.d.ts +46 -8
- package/dist/domain/market/wire.d.ts.map +1 -1
- 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 +342 -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 +3 -1
- 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 +28 -2
- package/dist/domain/order/client.d.ts.map +1 -1
- package/dist/domain/order/client.js +76 -16
- 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 +1 -1
- package/dist/domain/order/convert.js.map +1 -1
- package/dist/domain/order/index.d.ts +1 -1
- package/dist/domain/order/index.d.ts.map +1 -1
- 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/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 +44 -2
- package/dist/domain/orderbook/state.d.ts.map +1 -1
- package/dist/domain/orderbook/state.js +67 -4
- package/dist/domain/orderbook/state.js.map +1 -1
- package/dist/domain/orderbook/wire.d.ts +1 -0
- package/dist/domain/orderbook/wire.d.ts.map +1 -1
- package/dist/domain/orderbook/wire.js.map +1 -1
- package/dist/domain/position/client.d.ts +55 -0
- package/dist/domain/position/client.d.ts.map +1 -1
- package/dist/domain/position/client.js +71 -0
- 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/convert.d.ts.map +1 -1
- package/dist/domain/trade/convert.js +5 -1
- package/dist/domain/trade/convert.js.map +1 -1
- package/dist/domain/trade/index.d.ts +4 -0
- package/dist/domain/trade/index.d.ts.map +1 -1
- package/dist/domain/trade/index.js.map +1 -1
- package/dist/domain/trade/state.d.ts +7 -0
- package/dist/domain/trade/state.d.ts.map +1 -1
- package/dist/domain/trade/state.js +36 -1
- package/dist/domain/trade/state.js.map +1 -1
- package/dist/domain/trade/wire.d.ts +3 -0
- package/dist/domain/trade/wire.d.ts.map +1 -1
- package/dist/domain/trade/wire.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 +24 -9
- package/dist/http/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/prelude.d.ts +13 -5
- package/dist/prelude.d.ts.map +1 -1
- package/dist/prelude.js +5 -3
- package/dist/prelude.js.map +1 -1
- package/dist/shared/fmt/decimal.js +4 -4
- package/dist/shared/fmt/decimal.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 +5 -2
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +21 -0
- package/dist/shared/types.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 +2 -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_token` 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 `authToken` 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 getUserOrdersWithAuth(limit, cursor, authToken) {
|
|
123
|
+
const url = buildUserOrdersAuthenticatedUrl(this.client.http.baseUrl(), limit, cursor);
|
|
124
|
+
const response = await this.client.http.getWithAuth(url, http_1.RetryPolicy.Idempotent, authToken);
|
|
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_token` 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 `authToken`
|
|
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 getUserOrderFillsWithAuth(marketPubkey, limit, cursor, authToken) {
|
|
141
|
+
const url = buildUserOrderFillsAuthenticatedUrl(this.client.http.baseUrl(), marketPubkey, limit, cursor);
|
|
142
|
+
return this.client.http.getWithAuth(url, http_1.RetryPolicy.Idempotent, authToken);
|
|
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) ────
|
|
@@ -288,4 +312,40 @@ class Orders {
|
|
|
288
312
|
}
|
|
289
313
|
}
|
|
290
314
|
exports.Orders = Orders;
|
|
315
|
+
function buildUserOrdersAuthenticatedUrl(baseUrl, limit, cursor) {
|
|
316
|
+
const params = new URLSearchParams();
|
|
317
|
+
if (limit !== undefined)
|
|
318
|
+
params.set("limit", String(limit));
|
|
319
|
+
if (cursor)
|
|
320
|
+
params.set("cursor", cursor);
|
|
321
|
+
const qs = params.toString();
|
|
322
|
+
return qs.length === 0
|
|
323
|
+
? `${baseUrl}/api/users/orders`
|
|
324
|
+
: `${baseUrl}/api/users/orders?${qs}`;
|
|
325
|
+
}
|
|
326
|
+
function buildUserOrderFillsAuthenticatedUrl(baseUrl, marketPubkey, limit, cursor) {
|
|
327
|
+
const params = new URLSearchParams();
|
|
328
|
+
if (marketPubkey)
|
|
329
|
+
params.set("market_pubkey", marketPubkey);
|
|
330
|
+
if (limit !== undefined)
|
|
331
|
+
params.set("limit", String(limit));
|
|
332
|
+
if (cursor)
|
|
333
|
+
params.set("cursor", cursor);
|
|
334
|
+
const qs = params.toString();
|
|
335
|
+
return qs.length === 0
|
|
336
|
+
? `${baseUrl}/api/users/order-fills`
|
|
337
|
+
: `${baseUrl}/api/users/order-fills?${qs}`;
|
|
338
|
+
}
|
|
339
|
+
function buildUserOrderFillsByWalletUrl(baseUrl, walletAddress, marketPubkey, limit, cursor) {
|
|
340
|
+
const params = new URLSearchParams();
|
|
341
|
+
if (marketPubkey)
|
|
342
|
+
params.set("market_pubkey", marketPubkey);
|
|
343
|
+
if (limit !== undefined)
|
|
344
|
+
params.set("limit", String(limit));
|
|
345
|
+
if (cursor)
|
|
346
|
+
params.set("cursor", cursor);
|
|
347
|
+
const qs = params.toString();
|
|
348
|
+
const path = `${baseUrl}/api/users/${encodeURIComponent(walletAddress)}/order-fills`;
|
|
349
|
+
return qs.length === 0 ? path : `${path}?${qs}`;
|
|
350
|
+
}
|
|
291
351
|
//# 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 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 /**\n * Fetch the authenticated user's open orders. Wallet is resolved\n * server-side from the `auth_token` 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 `authToken` 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 getUserOrdersWithAuth(\n limit: number | undefined,\n cursor: string | undefined,\n authToken: string,\n ): Promise<UserOrdersResponse> {\n const url = buildUserOrdersAuthenticatedUrl(this.client.http.baseUrl(), limit, cursor);\n const response = await this.client.http.getWithAuth<UserOrdersRawResponse>(\n url,\n RetryPolicy.Idempotent,\n authToken,\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_token` 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 `authToken`\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 getUserOrderFillsWithAuth(\n marketPubkey: string | undefined,\n limit: number | undefined,\n cursor: string | undefined,\n authToken: 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.getWithAuth<UserOrderFillsResponse>(\n url,\n RetryPolicy.Idempotent,\n authToken,\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 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\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 splitSnapshotOrders(orders: UserSnapshotOrder[]): [
|
|
7
|
+
export declare function splitSnapshotOrders(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,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAwBzG"}
|
|
@@ -64,7 +64,7 @@ function triggerSnapshotToOrder(common, triggerOrderId, triggerPrice, triggerTyp
|
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
function splitSnapshotOrders(orders) {
|
|
67
|
-
const openOrders = new state_1.
|
|
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,kDAwBC;AA7FD,4DAAiC;AACjC,yCAA2C;AAG3C,
|
|
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 splitSnapshotOrders(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"]}
|
|
@@ -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,mBAAmB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE/G,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,oBAAY,WAAW;IACrB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,
|
|
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,mBAAmB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE/G,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/order/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA8DA,wDAWC;AAzED,4DAAiC;AACjC,yCAA0G;AAE1G,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,qCAA+G;AAAtG,+GAAA,oBAAoB,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAAE,0GAAA,eAAe,OAAA;AAE3F,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;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, splitSnapshotOrders, triggerSnapshotToOrder, orderFromUpdate } from \"./convert\";\n\nexport enum OrderType {\n Limit = \"limit\",\n Trigger = \"trigger\",\n}\n\nexport enum OrderStatus {\n Open = \"OPEN\",\n Matching = \"MATCHING\",\n Cancelled = \"CANCELLED\",\n Filled = \"FILLED\",\n Pending = \"PENDING\",\n}\n\nexport interface
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/order/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA8DA,wDAWC;AAzED,4DAAiC;AACjC,yCAA0G;AAE1G,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,qCAA+G;AAAtG,+GAAA,oBAAoB,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAAE,0GAAA,eAAe,OAAA;AAE3F,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;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, splitSnapshotOrders, triggerSnapshotToOrder, orderFromUpdate } from \"./convert\";\n\nexport enum OrderType {\n Limit = \"limit\",\n Trigger = \"trigger\",\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"}
|
|
@@ -1,69 +1,103 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserTriggerOrders = exports.
|
|
3
|
+
exports.UserTriggerOrders = exports.UserOpenLimitOrders = void 0;
|
|
4
4
|
const convert_1 = require("./convert");
|
|
5
|
-
class
|
|
5
|
+
class UserOpenLimitOrders {
|
|
6
6
|
orders;
|
|
7
7
|
constructor() {
|
|
8
8
|
this.orders = new Map();
|
|
9
9
|
}
|
|
10
|
-
get(market) {
|
|
10
|
+
get(market, orderbookId) {
|
|
11
|
+
return this.orders.get(market)?.get(orderbookId);
|
|
12
|
+
}
|
|
13
|
+
getByMarket(market) {
|
|
11
14
|
return this.orders.get(market);
|
|
12
15
|
}
|
|
13
16
|
insert(order) {
|
|
14
|
-
|
|
17
|
+
let marketMap = this.orders.get(order.marketPubkey);
|
|
18
|
+
if (!marketMap) {
|
|
19
|
+
marketMap = new Map();
|
|
20
|
+
this.orders.set(order.marketPubkey, marketMap);
|
|
21
|
+
}
|
|
22
|
+
const current = marketMap.get(order.orderbookId) ?? [];
|
|
15
23
|
current.push(order);
|
|
16
|
-
|
|
24
|
+
marketMap.set(order.orderbookId, current);
|
|
17
25
|
}
|
|
18
26
|
upsert(update) {
|
|
19
27
|
const order = (0, convert_1.orderFromUpdate)(update);
|
|
20
|
-
|
|
28
|
+
let marketMap = this.orders.get(order.marketPubkey);
|
|
29
|
+
if (!marketMap) {
|
|
30
|
+
marketMap = new Map();
|
|
31
|
+
this.orders.set(order.marketPubkey, marketMap);
|
|
32
|
+
}
|
|
33
|
+
const current = marketMap.get(order.orderbookId) ?? [];
|
|
21
34
|
const next = current.filter((existing) => existing.orderHash !== order.orderHash);
|
|
22
35
|
next.push(order);
|
|
23
|
-
|
|
36
|
+
marketMap.set(order.orderbookId, next);
|
|
24
37
|
}
|
|
25
38
|
remove(orderHash) {
|
|
26
|
-
for (const [
|
|
27
|
-
|
|
39
|
+
for (const [, marketMap] of this.orders.entries()) {
|
|
40
|
+
for (const [orderbookId, orderList] of marketMap.entries()) {
|
|
41
|
+
marketMap.set(orderbookId, orderList.filter((order) => order.orderHash !== orderHash));
|
|
42
|
+
}
|
|
28
43
|
}
|
|
29
44
|
}
|
|
30
45
|
clear() {
|
|
31
46
|
this.orders.clear();
|
|
32
47
|
}
|
|
33
48
|
isEmpty() {
|
|
34
|
-
|
|
49
|
+
for (const marketMap of this.orders.values()) {
|
|
50
|
+
for (const orderList of marketMap.values()) {
|
|
51
|
+
if (orderList.length > 0) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
35
57
|
}
|
|
36
58
|
}
|
|
37
|
-
exports.
|
|
59
|
+
exports.UserOpenLimitOrders = UserOpenLimitOrders;
|
|
38
60
|
class UserTriggerOrders {
|
|
39
61
|
orders;
|
|
40
62
|
constructor() {
|
|
41
63
|
this.orders = new Map();
|
|
42
64
|
}
|
|
43
|
-
get(orderbookId) {
|
|
44
|
-
return this.orders.get(orderbookId);
|
|
65
|
+
get(market, orderbookId) {
|
|
66
|
+
return this.orders.get(market)?.get(orderbookId);
|
|
67
|
+
}
|
|
68
|
+
getByMarket(market) {
|
|
69
|
+
return this.orders.get(market);
|
|
45
70
|
}
|
|
46
71
|
getById(triggerOrderId) {
|
|
47
|
-
for (const
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
72
|
+
for (const marketMap of this.orders.values()) {
|
|
73
|
+
for (const orderList of marketMap.values()) {
|
|
74
|
+
const found = orderList.find((order) => order.triggerOrderId === triggerOrderId);
|
|
75
|
+
if (found) {
|
|
76
|
+
return found;
|
|
77
|
+
}
|
|
51
78
|
}
|
|
52
79
|
}
|
|
53
80
|
return undefined;
|
|
54
81
|
}
|
|
55
82
|
insert(order) {
|
|
56
|
-
|
|
83
|
+
let marketMap = this.orders.get(order.marketPubkey);
|
|
84
|
+
if (!marketMap) {
|
|
85
|
+
marketMap = new Map();
|
|
86
|
+
this.orders.set(order.marketPubkey, marketMap);
|
|
87
|
+
}
|
|
88
|
+
const current = marketMap.get(order.orderbookId) ?? [];
|
|
57
89
|
current.push(order);
|
|
58
|
-
|
|
90
|
+
marketMap.set(order.orderbookId, current);
|
|
59
91
|
}
|
|
60
92
|
remove(triggerOrderId) {
|
|
61
|
-
for (const [
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
93
|
+
for (const [, marketMap] of this.orders.entries()) {
|
|
94
|
+
for (const [orderbookId, orderList] of marketMap.entries()) {
|
|
95
|
+
const index = orderList.findIndex((order) => order.triggerOrderId === triggerOrderId);
|
|
96
|
+
if (index >= 0) {
|
|
97
|
+
const [removed] = orderList.splice(index, 1);
|
|
98
|
+
marketMap.set(orderbookId, orderList);
|
|
99
|
+
return removed;
|
|
100
|
+
}
|
|
67
101
|
}
|
|
68
102
|
}
|
|
69
103
|
return undefined;
|
|
@@ -72,13 +106,32 @@ class UserTriggerOrders {
|
|
|
72
106
|
this.orders.clear();
|
|
73
107
|
}
|
|
74
108
|
isEmpty() {
|
|
75
|
-
|
|
109
|
+
for (const marketMap of this.orders.values()) {
|
|
110
|
+
for (const orderList of marketMap.values()) {
|
|
111
|
+
if (orderList.length > 0) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
76
117
|
}
|
|
77
118
|
len() {
|
|
78
|
-
|
|
119
|
+
let count = 0;
|
|
120
|
+
for (const marketMap of this.orders.values()) {
|
|
121
|
+
for (const orderList of marketMap.values()) {
|
|
122
|
+
count += orderList.length;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return count;
|
|
79
126
|
}
|
|
80
127
|
all() {
|
|
81
|
-
|
|
128
|
+
const result = [];
|
|
129
|
+
for (const marketMap of this.orders.values()) {
|
|
130
|
+
for (const orderList of marketMap.values()) {
|
|
131
|
+
result.push(...orderList);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
82
135
|
}
|
|
83
136
|
}
|
|
84
137
|
exports.UserTriggerOrders = UserTriggerOrders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/domain/order/state.ts"],"names":[],"mappings":";;;AAGA,uCAA4C;AAE5C,MAAa,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/domain/order/state.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OrderBookId, PubkeyStr } from \"../../shared\";\nimport type { LimitOrder, TriggerOrder } from \"./index\";\nimport type { OrderUpdate } from \"./wire\";\nimport { orderFromUpdate } from \"./convert\";\n\nexport class UserOpenLimitOrders {\n readonly orders: Map<PubkeyStr, Map<OrderBookId, LimitOrder[]>>;\n\n constructor() {\n this.orders = new Map();\n }\n\n get(market: PubkeyStr, orderbookId: OrderBookId): LimitOrder[] | undefined {\n return this.orders.get(market)?.get(orderbookId);\n }\n\n getByMarket(market: PubkeyStr): Map<OrderBookId, LimitOrder[]> | undefined {\n return this.orders.get(market);\n }\n\n insert(order: LimitOrder): void {\n let marketMap = this.orders.get(order.marketPubkey);\n if (!marketMap) {\n marketMap = new Map();\n this.orders.set(order.marketPubkey, marketMap);\n }\n const current = marketMap.get(order.orderbookId) ?? [];\n current.push(order);\n marketMap.set(order.orderbookId, current);\n }\n\n upsert(update: OrderUpdate): void {\n const order = orderFromUpdate(update);\n let marketMap = this.orders.get(order.marketPubkey);\n if (!marketMap) {\n marketMap = new Map();\n this.orders.set(order.marketPubkey, marketMap);\n }\n const current = marketMap.get(order.orderbookId) ?? [];\n const next = current.filter((existing) => existing.orderHash !== order.orderHash);\n next.push(order);\n marketMap.set(order.orderbookId, next);\n }\n\n remove(orderHash: string): void {\n for (const [, marketMap] of this.orders.entries()) {\n for (const [orderbookId, orderList] of marketMap.entries()) {\n marketMap.set(\n orderbookId,\n orderList.filter((order) => order.orderHash !== orderHash)\n );\n }\n }\n }\n\n clear(): void {\n this.orders.clear();\n }\n\n isEmpty(): boolean {\n for (const marketMap of this.orders.values()) {\n for (const orderList of marketMap.values()) {\n if (orderList.length > 0) {\n return false;\n }\n }\n }\n return true;\n }\n}\n\nexport class UserTriggerOrders {\n readonly orders: Map<PubkeyStr, Map<OrderBookId, TriggerOrder[]>>;\n\n constructor() {\n this.orders = new Map();\n }\n\n get(market: PubkeyStr, orderbookId: OrderBookId): TriggerOrder[] | undefined {\n return this.orders.get(market)?.get(orderbookId);\n }\n\n getByMarket(market: PubkeyStr): Map<OrderBookId, TriggerOrder[]> | undefined {\n return this.orders.get(market);\n }\n\n getById(triggerOrderId: string): TriggerOrder | undefined {\n for (const marketMap of this.orders.values()) {\n for (const orderList of marketMap.values()) {\n const found = orderList.find((order) => order.triggerOrderId === triggerOrderId);\n if (found) {\n return found;\n }\n }\n }\n\n return undefined;\n }\n\n insert(order: TriggerOrder): void {\n let marketMap = this.orders.get(order.marketPubkey);\n if (!marketMap) {\n marketMap = new Map();\n this.orders.set(order.marketPubkey, marketMap);\n }\n const current = marketMap.get(order.orderbookId) ?? [];\n current.push(order);\n marketMap.set(order.orderbookId, current);\n }\n\n remove(triggerOrderId: string): TriggerOrder | undefined {\n for (const [, marketMap] of this.orders.entries()) {\n for (const [orderbookId, orderList] of marketMap.entries()) {\n const index = orderList.findIndex((order) => order.triggerOrderId === triggerOrderId);\n if (index >= 0) {\n const [removed] = orderList.splice(index, 1);\n marketMap.set(orderbookId, orderList);\n return removed;\n }\n }\n }\n\n return undefined;\n }\n\n clear(): void {\n this.orders.clear();\n }\n\n isEmpty(): boolean {\n for (const marketMap of this.orders.values()) {\n for (const orderList of marketMap.values()) {\n if (orderList.length > 0) {\n return false;\n }\n }\n }\n return true;\n }\n\n len(): number {\n let count = 0;\n for (const marketMap of this.orders.values()) {\n for (const orderList of marketMap.values()) {\n count += orderList.length;\n }\n }\n return count;\n }\n\n all(): TriggerOrder[] {\n const result: TriggerOrder[] = [];\n for (const marketMap of this.orders.values()) {\n for (const orderList of marketMap.values()) {\n result.push(...orderList);\n }\n }\n return result;\n }\n}\n"]}
|