@kehtus/proportion-sdk 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/abi/challengeAccount.d.ts +25 -21
  2. package/dist/abi/challengeAccount.d.ts.map +1 -1
  3. package/dist/abi/challengeAccount.js +33 -27
  4. package/dist/abi/challengeAccount.js.map +1 -1
  5. package/dist/challenge/account.d.ts +6 -2
  6. package/dist/challenge/account.d.ts.map +1 -1
  7. package/dist/challenge/account.js +11 -9
  8. package/dist/challenge/account.js.map +1 -1
  9. package/dist/challenge/api.d.ts +27 -2
  10. package/dist/challenge/api.d.ts.map +1 -1
  11. package/dist/challenge/api.js +93 -1
  12. package/dist/challenge/api.js.map +1 -1
  13. package/dist/challenge/factory.d.ts +17 -3
  14. package/dist/challenge/factory.d.ts.map +1 -1
  15. package/dist/challenge/factory.js +59 -22
  16. package/dist/challenge/factory.js.map +1 -1
  17. package/dist/challenge/intents.d.ts +25 -3
  18. package/dist/challenge/intents.d.ts.map +1 -1
  19. package/dist/challenge/intents.js +39 -7
  20. package/dist/challenge/intents.js.map +1 -1
  21. package/dist/challenge/types.d.ts +20 -1
  22. package/dist/challenge/types.d.ts.map +1 -1
  23. package/dist/constants.d.ts +0 -6
  24. package/dist/constants.d.ts.map +1 -1
  25. package/dist/constants.js +7 -8
  26. package/dist/constants.js.map +1 -1
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/indexer.d.ts.map +1 -1
  32. package/dist/indexer.js +15 -4
  33. package/dist/indexer.js.map +1 -1
  34. package/dist/sdk.d.ts +5 -0
  35. package/dist/sdk.d.ts.map +1 -1
  36. package/dist/sdk.js +58 -24
  37. package/dist/sdk.js.map +1 -1
  38. package/dist/types.d.ts +2 -0
  39. package/dist/types.d.ts.map +1 -1
  40. package/package.json +1 -1
@@ -4,7 +4,9 @@
4
4
  * pricing, admission, and submission policy live server-side.
5
5
  *
6
6
  * Endpoints: POST /quote (quote-signer), POST /intents/open, POST /intents/close (relayer),
7
- * POST /purchase (gasless buyChallenge via a signed ForwardRequest).
7
+ * POST /purchase (gasless buyChallenge via a signed ForwardRequest), and the resting (limit)
8
+ * order surface: POST /orders/open, POST /orders/close, GET /orders/{account},
9
+ * POST /orders/{account}/cancel (soft-cancel; see cancelOrderMessage for the signed payload).
8
10
  */
9
11
  export class ChallengeApiClient {
10
12
  fetchFn;
@@ -169,5 +171,95 @@ export class ChallengeApiClient {
169
171
  signature: request.signature,
170
172
  });
171
173
  }
174
+ // ── Resting (limit) orders ─────────────────────────────────────────────────────────────
175
+ static parsePlaceResponse(raw) {
176
+ return {
177
+ status: raw.status,
178
+ orderId: raw.order_id,
179
+ };
180
+ }
181
+ /**
182
+ * Place a resting LIMIT-entry order: the SAME signed OpenIntent as submitOpenIntent, but held
183
+ * server-side until the price bound (`maxPrice`/`minPrice` — enforced on-chain at fill) can
184
+ * fill; use a long `deadline` (GTC-until-deadline). A partial reduce rests as an opposite-side
185
+ * open (contract netting). 409/`cached` = a live order already occupies this nonce.
186
+ */
187
+ async placeOpenOrder(signed) {
188
+ const { intent, signature } = signed;
189
+ const { ok, status, json } = await this.postRaw("/orders/open", {
190
+ owner: intent.owner,
191
+ account: intent.account,
192
+ market: intent.market,
193
+ is_long: intent.isLong,
194
+ margin: intent.margin.toString(),
195
+ notional: intent.notional.toString(),
196
+ max_price: ChallengeApiClient.toJsonNumber(intent.maxPrice, "maxPrice"),
197
+ min_price: ChallengeApiClient.toJsonNumber(intent.minPrice, "minPrice"),
198
+ nonce: intent.nonce.toString(),
199
+ deadline: ChallengeApiClient.toJsonNumber(intent.deadline, "deadline"),
200
+ signature,
201
+ });
202
+ if (typeof json.order_id === "string")
203
+ return ChallengeApiClient.parsePlaceResponse(json);
204
+ if (!ok)
205
+ throw ChallengeApiClient.wireError("/orders/open", status, json);
206
+ return ChallengeApiClient.parsePlaceResponse(json);
207
+ }
208
+ /** Place a resting limit full-close order (same wire semantics as placeOpenOrder). */
209
+ async placeCloseOrder(signed) {
210
+ const { intent, signature } = signed;
211
+ const { ok, status, json } = await this.postRaw("/orders/close", {
212
+ owner: intent.owner,
213
+ account: intent.account,
214
+ position_id: ChallengeApiClient.toJsonNumber(intent.positionId, "positionId"),
215
+ max_price: ChallengeApiClient.toJsonNumber(intent.maxPrice, "maxPrice"),
216
+ min_price: ChallengeApiClient.toJsonNumber(intent.minPrice, "minPrice"),
217
+ nonce: intent.nonce.toString(),
218
+ deadline: ChallengeApiClient.toJsonNumber(intent.deadline, "deadline"),
219
+ signature,
220
+ });
221
+ if (typeof json.order_id === "string")
222
+ return ChallengeApiClient.parsePlaceResponse(json);
223
+ if (!ok)
224
+ throw ChallengeApiClient.wireError("/orders/close", status, json);
225
+ return ChallengeApiClient.parsePlaceResponse(json);
226
+ }
227
+ /** List an account's resting orders (live + recent terminal), newest first. */
228
+ async listOrders(account) {
229
+ const fetchFn = this.fetchFn ?? globalThis.fetch;
230
+ if (!fetchFn)
231
+ throw new Error("fetch is not available; pass fetchFn in SDKConfig");
232
+ const path = `/orders/${account}`;
233
+ const res = await fetchFn(`${this.baseUrl}${path}`, { method: "GET" });
234
+ const json = (await res.json().catch(() => ({})));
235
+ if (!res.ok)
236
+ throw ChallengeApiClient.wireError(path, res.status, json);
237
+ const orders = Array.isArray(json.orders) ? json.orders : [];
238
+ return orders.map((o) => ({
239
+ orderId: o.order_id,
240
+ state: o.state,
241
+ kind: o.kind,
242
+ nonce: o.nonce,
243
+ deadline: o.deadline,
244
+ intent: (o.intent ?? {}),
245
+ positionId: (o.position_id ?? null),
246
+ txId: (o.tx_id ?? null),
247
+ detail: (o.detail ?? null),
248
+ }));
249
+ }
250
+ /**
251
+ * Soft-cancel a resting order (free, off-chain): `signature` is the OWNER's EIP-191
252
+ * `signMessage` over cancelOrderMessage(chainId, account, nonce). Only a still-`resting` order
253
+ * can be soft-cancelled; an in-flight `submitted` one (and the trustless path in general) needs
254
+ * the on-chain cancelNonce (ChallengeAccountModule.cancelNonce or the gasless forwarder route
255
+ * `/challenge/{account}/cancel-nonce`) — the service watcher auto-detects the burn.
256
+ */
257
+ async cancelOrder(account, nonce, signature) {
258
+ const raw = await this.post(`/orders/${account}/cancel`, {
259
+ nonce: nonce.toString(),
260
+ signature,
261
+ });
262
+ return { orderId: raw.order_id };
263
+ }
172
264
  }
173
265
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/challenge/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/challenge/api.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,7 @@ export declare const CHALLENGE_QUOTE_TYPES: {
54
54
  readonly type: "uint256";
55
55
  }];
56
56
  };
57
+ type AddressResolver = Address | (() => Promise<Address>);
57
58
  /**
58
59
  * ChallengeFactory module — signed-quote purchases plus builder quote administration.
59
60
  *
@@ -65,10 +66,21 @@ export declare class ChallengeFactoryModule {
65
66
  private publicClient;
66
67
  private walletClient;
67
68
  private chain;
68
- private factoryAddress;
69
+ private addressResolver;
69
70
  /** builderRegistry is immutable on the factory — cached after the first delegate check. */
70
71
  private builderRegistryCache;
71
- constructor(publicClient: PublicClient, walletClient: WalletClient | undefined, chain: Chain, factoryAddress: Address);
72
+ private resolvedAddress;
73
+ private addressPromise;
74
+ constructor(publicClient: PublicClient, walletClient: WalletClient | undefined, chain: Chain, addressResolver: AddressResolver);
75
+ /**
76
+ * Resolved ChallengeFactory address, lazily fetched when constructed with a resolver
77
+ * function (e.g. from the indexer's ProtocolConfig). The in-flight promise is cached so
78
+ * concurrent callers share one lookup; a failed resolution clears the cache for retry.
79
+ * Once resolved, the address is memoized so the synchronous `address`/`quoteDigest`
80
+ * accessors below work without an extra round trip.
81
+ */
82
+ getAddress(): Promise<Address>;
83
+ /** Throws if constructed with a resolver and no async method has resolved it yet — see getAddress(). */
72
84
  get address(): Address;
73
85
  private requireWallet;
74
86
  private write;
@@ -93,8 +105,9 @@ export declare class ChallengeFactoryModule {
93
105
  * do NOT re-implement ChallengePricingLib math off-chain, it drifts on config changes.
94
106
  */
95
107
  previewQuote(quote: ChallengeQuote): Promise<ChallengeFeeBreakdown>;
96
- /** Local EIP-712 digest of a quote (no RPC; matches challengeQuoteDigest on-chain). */
108
+ /** Local EIP-712 digest of a quote (no RPC; matches challengeQuoteDigest on-chain). Requires the address to already be resolved — see getAddress(). */
97
109
  quoteDigest(quote: ChallengeQuote): Hex;
110
+ private digestFor;
98
111
  /**
99
112
  * Verify a builder quote signature before paying for it. Recovers the ECDSA signer locally,
100
113
  * accepts the builder EOA directly, and falls back to a MainVault.delegateBuilder registry
@@ -148,4 +161,5 @@ export declare class ChallengeFactoryModule {
148
161
  /** Void ALL outstanding quotes of the calling builder at once. */
149
162
  incrementBuilderQuoteEpoch(): Promise<Hash>;
150
163
  }
164
+ export {};
151
165
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/challenge/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/challenge/factory.ts"],"names":[],"mappings":"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"}
@@ -44,17 +44,50 @@ export class ChallengeFactoryModule {
44
44
  publicClient;
45
45
  walletClient;
46
46
  chain;
47
- factoryAddress;
47
+ addressResolver;
48
48
  /** builderRegistry is immutable on the factory — cached after the first delegate check. */
49
49
  builderRegistryCache;
50
- constructor(publicClient, walletClient, chain, factoryAddress) {
50
+ resolvedAddress;
51
+ addressPromise;
52
+ constructor(publicClient, walletClient, chain, addressResolver) {
51
53
  this.publicClient = publicClient;
52
54
  this.walletClient = walletClient;
53
55
  this.chain = chain;
54
- this.factoryAddress = factoryAddress;
56
+ this.addressResolver = addressResolver;
57
+ if (typeof addressResolver === "string")
58
+ this.resolvedAddress = addressResolver;
55
59
  }
60
+ /**
61
+ * Resolved ChallengeFactory address, lazily fetched when constructed with a resolver
62
+ * function (e.g. from the indexer's ProtocolConfig). The in-flight promise is cached so
63
+ * concurrent callers share one lookup; a failed resolution clears the cache for retry.
64
+ * Once resolved, the address is memoized so the synchronous `address`/`quoteDigest`
65
+ * accessors below work without an extra round trip.
66
+ */
67
+ async getAddress() {
68
+ if (this.resolvedAddress)
69
+ return this.resolvedAddress;
70
+ if (!this.addressPromise) {
71
+ const resolver = this.addressResolver;
72
+ this.addressPromise = resolver()
73
+ .then((addr) => {
74
+ this.resolvedAddress = addr;
75
+ return addr;
76
+ })
77
+ .catch((err) => {
78
+ this.addressPromise = undefined;
79
+ throw err;
80
+ });
81
+ }
82
+ return this.addressPromise;
83
+ }
84
+ /** Throws if constructed with a resolver and no async method has resolved it yet — see getAddress(). */
56
85
  get address() {
57
- return this.factoryAddress;
86
+ if (!this.resolvedAddress) {
87
+ throw new Error("ChallengeFactory address not yet resolved. Await getAddress() (or any async method on this " +
88
+ "module) first, or construct the SDK with config.addresses.CHALLENGE_FACTORY set.");
89
+ }
90
+ return this.resolvedAddress;
58
91
  }
59
92
  requireWallet() {
60
93
  if (!this.walletClient)
@@ -75,7 +108,7 @@ export class ChallengeFactoryModule {
75
108
  // ── READS ───────────────────────────────────────────
76
109
  /** Factory wiring + quote freshness anchors (quoteConfigNonce invalidates all quotes on config change). */
77
110
  async getConfig() {
78
- const contract = { address: this.factoryAddress, abi: challengeFactoryAbi };
111
+ const contract = { address: await this.getAddress(), abi: challengeFactoryAbi };
79
112
  const results = await this.publicClient.multicall({
80
113
  contracts: [
81
114
  { ...contract, functionName: "vault" },
@@ -106,7 +139,7 @@ export class ChallengeFactoryModule {
106
139
  }
107
140
  async getPricingConfig() {
108
141
  const c = await this.publicClient.readContract({
109
- address: this.factoryAddress,
142
+ address: await this.getAddress(),
110
143
  abi: challengeFactoryAbi,
111
144
  functionName: "pricingConfig",
112
145
  });
@@ -133,7 +166,7 @@ export class ChallengeFactoryModule {
133
166
  /** Immutable terms a challenge account was minted with. */
134
167
  async getChallengeTerms(account) {
135
168
  const t = await this.publicClient.readContract({
136
- address: this.factoryAddress,
169
+ address: await this.getAddress(),
137
170
  abi: challengeFactoryAbi,
138
171
  functionName: "challengeTerms",
139
172
  args: [account],
@@ -160,7 +193,7 @@ export class ChallengeFactoryModule {
160
193
  */
161
194
  async previewQuote(quote) {
162
195
  const fees = await this.publicClient.readContract({
163
- address: this.factoryAddress,
196
+ address: await this.getAddress(),
164
197
  abi: challengeFactoryAbi,
165
198
  functionName: "previewQuotedChallenge",
166
199
  args: [quote],
@@ -173,14 +206,17 @@ export class ChallengeFactoryModule {
173
206
  maxNotional: fees.maxNotional,
174
207
  };
175
208
  }
176
- /** Local EIP-712 digest of a quote (no RPC; matches challengeQuoteDigest on-chain). */
209
+ /** Local EIP-712 digest of a quote (no RPC; matches challengeQuoteDigest on-chain). Requires the address to already be resolved — see getAddress(). */
177
210
  quoteDigest(quote) {
211
+ return this.digestFor(this.address, quote);
212
+ }
213
+ digestFor(factoryAddress, quote) {
178
214
  return hashTypedData({
179
215
  domain: {
180
216
  name: "ProportionChallengeFactory",
181
217
  version: "1",
182
218
  chainId: this.chain.id,
183
- verifyingContract: this.factoryAddress,
219
+ verifyingContract: factoryAddress,
184
220
  },
185
221
  types: CHALLENGE_QUOTE_TYPES,
186
222
  primaryType: "ChallengeQuote",
@@ -194,7 +230,8 @@ export class ChallengeFactoryModule {
194
230
  * valid=false and must be validated by on-chain simulation instead.
195
231
  */
196
232
  async verifyQuote(quote, signature) {
197
- const digest = this.quoteDigest(quote);
233
+ const factoryAddress = await this.getAddress();
234
+ const digest = this.digestFor(factoryAddress, quote);
198
235
  let signer = null;
199
236
  try {
200
237
  signer = await recoverTypedDataAddress({
@@ -202,7 +239,7 @@ export class ChallengeFactoryModule {
202
239
  name: "ProportionChallengeFactory",
203
240
  version: "1",
204
241
  chainId: this.chain.id,
205
- verifyingContract: this.factoryAddress,
242
+ verifyingContract: factoryAddress,
206
243
  },
207
244
  types: CHALLENGE_QUOTE_TYPES,
208
245
  primaryType: "ChallengeQuote",
@@ -218,7 +255,7 @@ export class ChallengeFactoryModule {
218
255
  if (!isBuilderSigned) {
219
256
  try {
220
257
  this.builderRegistryCache ??= await this.publicClient.readContract({
221
- address: this.factoryAddress,
258
+ address: factoryAddress,
222
259
  abi: challengeFactoryAbi,
223
260
  functionName: "builderRegistry",
224
261
  });
@@ -239,7 +276,7 @@ export class ChallengeFactoryModule {
239
276
  /** Deterministic clone address for the trader's next challenge with this builder. */
240
277
  async predictChallengeAccount(trader, builder) {
241
278
  return this.publicClient.readContract({
242
- address: this.factoryAddress,
279
+ address: await this.getAddress(),
243
280
  abi: challengeFactoryAbi,
244
281
  functionName: "predictChallengeAccount",
245
282
  args: [trader, builder],
@@ -247,7 +284,7 @@ export class ChallengeFactoryModule {
247
284
  }
248
285
  async getAccountAt(index) {
249
286
  return this.publicClient.readContract({
250
- address: this.factoryAddress,
287
+ address: await this.getAddress(),
251
288
  abi: challengeFactoryAbi,
252
289
  functionName: "allAccounts",
253
290
  args: [index],
@@ -256,7 +293,7 @@ export class ChallengeFactoryModule {
256
293
  /** Current per-builder epoch; bumping it (incrementBuilderQuoteEpoch) voids all prior quotes. */
257
294
  async getBuilderQuoteEpoch(builder) {
258
295
  return this.publicClient.readContract({
259
- address: this.factoryAddress,
296
+ address: await this.getAddress(),
260
297
  abi: challengeFactoryAbi,
261
298
  functionName: "builderQuoteEpoch",
262
299
  args: [builder],
@@ -264,7 +301,7 @@ export class ChallengeFactoryModule {
264
301
  }
265
302
  async isQuoteNonceUsed(builder, nonce) {
266
303
  return this.publicClient.readContract({
267
- address: this.factoryAddress,
304
+ address: await this.getAddress(),
268
305
  abi: challengeFactoryAbi,
269
306
  functionName: "usedQuoteNonces",
270
307
  args: [builder, nonce],
@@ -278,7 +315,7 @@ export class ChallengeFactoryModule {
278
315
  */
279
316
  async buyChallenge(quote, builderSignature, maxChallengeFee) {
280
317
  return this.write({
281
- address: this.factoryAddress,
318
+ address: await this.getAddress(),
282
319
  abi: challengeFactoryAbi,
283
320
  functionName: "buyChallenge",
284
321
  args: [quote, maxChallengeFee ?? quote.quotedChallengeFee, builderSignature],
@@ -310,7 +347,7 @@ export class ChallengeFactoryModule {
310
347
  /** Purchase with an ERC-2612 permit (first-time users with no vault allowance). */
311
348
  async buyChallengeWithPermit(p) {
312
349
  return this.write({
313
- address: this.factoryAddress,
350
+ address: await this.getAddress(),
314
351
  abi: challengeFactoryAbi,
315
352
  functionName: "buyChallengeWithPermit",
316
353
  args: [
@@ -329,7 +366,7 @@ export class ChallengeFactoryModule {
329
366
  /** Void one outstanding quote nonce (builder or its delegate). */
330
367
  async cancelQuoteNonce(nonce) {
331
368
  return this.write({
332
- address: this.factoryAddress,
369
+ address: await this.getAddress(),
333
370
  abi: challengeFactoryAbi,
334
371
  functionName: "cancelQuoteNonce",
335
372
  args: [nonce],
@@ -337,7 +374,7 @@ export class ChallengeFactoryModule {
337
374
  }
338
375
  async cancelQuoteNonces(nonces) {
339
376
  return this.write({
340
- address: this.factoryAddress,
377
+ address: await this.getAddress(),
341
378
  abi: challengeFactoryAbi,
342
379
  functionName: "cancelQuoteNonces",
343
380
  args: [nonces],
@@ -346,7 +383,7 @@ export class ChallengeFactoryModule {
346
383
  /** Void ALL outstanding quotes of the calling builder at once. */
347
384
  async incrementBuilderQuoteEpoch() {
348
385
  return this.write({
349
- address: this.factoryAddress,
386
+ address: await this.getAddress(),
350
387
  abi: challengeFactoryAbi,
351
388
  functionName: "incrementBuilderQuoteEpoch",
352
389
  });
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/challenge/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/challenge/factory.ts"],"names":[],"mappings":"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"}
@@ -88,6 +88,23 @@ export declare function priceBounds(price: bigint, slippageBps: number): {
88
88
  */
89
89
  export declare function marketsToMask(markets: readonly number[]): bigint;
90
90
  export declare function maskToMarkets(mask: bigint): number[];
91
+ /**
92
+ * Fresh random 256-bit intent nonce. ChallengeAccount nonces are UNORDERED (Permit2-style,
93
+ * 2026-07-06): any not-yet-used uint256 is valid and each is single-use, so a random value
94
+ * needs no on-chain read and lets multiple signed intents rest concurrently (limit orders).
95
+ * Uses the platform CSPRNG (browser + Node 19+).
96
+ */
97
+ export declare function generateIntentNonce(): bigint;
98
+ /**
99
+ * The EIP-191 personal message that soft-cancels a resting (limit) order on challenge-service —
100
+ * sign it with `walletClient.signMessage({ message })` (the OWNER key) and POST the signature to
101
+ * `/orders/{account}/cancel`. MUST byte-match the service's `cancel_message` (Rust): the address
102
+ * is EIP-55 checksummed, the nonce decimal. Scoped by chainId + account + nonce, so one signature
103
+ * can never cancel anything else. Soft-cancel trusts the service to stop watching; the trustless
104
+ * hard-cancel is on-chain `cancelNonce` (ChallengeAccountModule.cancelNonce or the gasless
105
+ * forwarder route `/challenge/{account}/cancel-nonce`).
106
+ */
107
+ export declare function cancelOrderMessage(chainId: number, account: Address, nonce: bigint): string;
91
108
  /**
92
109
  * Builds and signs ChallengeAccount trade intents (EIP-712). This is the canonical gasless
93
110
  * trading path: the owner or a registered session key signs the intent locally and the
@@ -100,12 +117,17 @@ export declare class ChallengeIntentsModule {
100
117
  private chain;
101
118
  constructor(publicClient: PublicClient, walletClient: WalletClient | undefined, chain: Chain);
102
119
  private requireWallet;
103
- /** Next intent nonce of an account (monotonic; consumed by every bySig call). */
104
- getNonce(account: Address): Promise<bigint>;
120
+ /**
121
+ * True if an intent nonce is permanently burned (consumed by a mined *BySig or revoked via
122
+ * cancelNonce). Unordered-nonce model (2026-07-06): any not-yet-used uint256 is a valid nonce,
123
+ * so signed intents can rest off-chain (limit orders) without later trades invalidating them.
124
+ */
125
+ isNonceUsed(account: Address, nonce: bigint): Promise<boolean>;
105
126
  /**
106
127
  * Sign an open intent. `owner` must be the account owner; it defaults to the signer,
107
128
  * which is only correct when the owner (not a session key) signs. Session keys must
108
- * pass the owner explicitly. `nonce` is fetched from the account when omitted.
129
+ * pass the owner explicitly. `nonce` defaults to a fresh random 256-bit value
130
+ * (unordered nonces — no on-chain read needed; collisions are cryptographically negligible).
109
131
  */
110
132
  signOpenIntent(p: {
111
133
  account: Address;
@@ -1 +1 @@
1
- {"version":3,"file":"intents.d.ts","sourceRoot":"","sources":["../../src/challenge/intents.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAOpB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAapB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;CAUrB,CAAC;AAEX,+FAA+F;AAC/F,eAAO,MAAM,uBAAuB,QAAW,CAAC;AAChD,eAAO,MAAM,wBAAwB,QAAW,CAAC;AAIjD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,CAOzF;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,CAOvE;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,CAOzE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOtG;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAYhE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMpD;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,KAAK;gBAFL,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,KAAK,EAAE,KAAK;IAGtB,OAAO,CAAC,aAAa;IASrB,iFAAiF;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAQjD;;;;OAIG;IACG,cAAc,CAAC,CAAC,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6B7B,yEAAyE;IACnE,eAAe,CAAC,CAAC,EAAE;QACvB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0B9B,yEAAyE;IACnE,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzE,0EAA0E;IACpE,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAS5E"}
1
+ {"version":3,"file":"intents.d.ts","sourceRoot":"","sources":["../../src/challenge/intents.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { hashTypedData, recoverTypedDataAddress, } from "viem";
1
+ import { getAddress, hashTypedData, recoverTypedDataAddress, } from "viem";
2
2
  import { challengeAccountAbi } from "../abi/challengeAccount.js";
3
3
  // EIP-712 types mirroring ChallengeAccount's typehashes:
4
4
  // OpenIntent(address owner,address account,uint32 market,bool isLong,uint96 margin,
@@ -107,6 +107,32 @@ export function maskToMarkets(mask) {
107
107
  }
108
108
  return markets;
109
109
  }
110
+ /**
111
+ * Fresh random 256-bit intent nonce. ChallengeAccount nonces are UNORDERED (Permit2-style,
112
+ * 2026-07-06): any not-yet-used uint256 is valid and each is single-use, so a random value
113
+ * needs no on-chain read and lets multiple signed intents rest concurrently (limit orders).
114
+ * Uses the platform CSPRNG (browser + Node 19+).
115
+ */
116
+ export function generateIntentNonce() {
117
+ const bytes = new Uint8Array(32);
118
+ globalThis.crypto.getRandomValues(bytes);
119
+ let nonce = 0n;
120
+ for (const b of bytes)
121
+ nonce = (nonce << 8n) | BigInt(b);
122
+ return nonce;
123
+ }
124
+ /**
125
+ * The EIP-191 personal message that soft-cancels a resting (limit) order on challenge-service —
126
+ * sign it with `walletClient.signMessage({ message })` (the OWNER key) and POST the signature to
127
+ * `/orders/{account}/cancel`. MUST byte-match the service's `cancel_message` (Rust): the address
128
+ * is EIP-55 checksummed, the nonce decimal. Scoped by chainId + account + nonce, so one signature
129
+ * can never cancel anything else. Soft-cancel trusts the service to stop watching; the trustless
130
+ * hard-cancel is on-chain `cancelNonce` (ChallengeAccountModule.cancelNonce or the gasless
131
+ * forwarder route `/challenge/{account}/cancel-nonce`).
132
+ */
133
+ export function cancelOrderMessage(chainId, account, nonce) {
134
+ return `challenge-cancel-order:${chainId}:${getAddress(account)}:${nonce}`;
135
+ }
110
136
  /**
111
137
  * Builds and signs ChallengeAccount trade intents (EIP-712). This is the canonical gasless
112
138
  * trading path: the owner or a registered session key signs the intent locally and the
@@ -131,18 +157,24 @@ export class ChallengeIntentsModule {
131
157
  }
132
158
  return this.walletClient;
133
159
  }
134
- /** Next intent nonce of an account (monotonic; consumed by every bySig call). */
135
- async getNonce(account) {
160
+ /**
161
+ * True if an intent nonce is permanently burned (consumed by a mined *BySig or revoked via
162
+ * cancelNonce). Unordered-nonce model (2026-07-06): any not-yet-used uint256 is a valid nonce,
163
+ * so signed intents can rest off-chain (limit orders) without later trades invalidating them.
164
+ */
165
+ async isNonceUsed(account, nonce) {
136
166
  return this.publicClient.readContract({
137
167
  address: account,
138
168
  abi: challengeAccountAbi,
139
- functionName: "nextNonce",
169
+ functionName: "usedNonces",
170
+ args: [nonce],
140
171
  });
141
172
  }
142
173
  /**
143
174
  * Sign an open intent. `owner` must be the account owner; it defaults to the signer,
144
175
  * which is only correct when the owner (not a session key) signs. Session keys must
145
- * pass the owner explicitly. `nonce` is fetched from the account when omitted.
176
+ * pass the owner explicitly. `nonce` defaults to a fresh random 256-bit value
177
+ * (unordered nonces — no on-chain read needed; collisions are cryptographically negligible).
146
178
  */
147
179
  async signOpenIntent(p) {
148
180
  const wallet = this.requireWallet();
@@ -158,7 +190,7 @@ export class ChallengeIntentsModule {
158
190
  notional: p.notional,
159
191
  maxPrice: p.maxPrice,
160
192
  minPrice: p.minPrice,
161
- nonce: p.nonce ?? (await this.getNonce(p.account)),
193
+ nonce: p.nonce ?? generateIntentNonce(),
162
194
  deadline: BigInt(p.deadlineSeconds ?? Math.floor(Date.now() / 1000) + DEFAULT_INTENT_TTL_SECONDS),
163
195
  };
164
196
  const signature = await wallet.signTypedData({
@@ -182,7 +214,7 @@ export class ChallengeIntentsModule {
182
214
  positionId: p.positionId,
183
215
  maxPrice: p.maxPrice,
184
216
  minPrice: p.minPrice,
185
- nonce: p.nonce ?? (await this.getNonce(p.account)),
217
+ nonce: p.nonce ?? generateIntentNonce(),
186
218
  deadline: BigInt(p.deadlineSeconds ?? Math.floor(Date.now() / 1000) + DEFAULT_INTENT_TTL_SECONDS),
187
219
  };
188
220
  const signature = await wallet.signTypedData({