@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.
- package/dist/abi/challengeAccount.d.ts +25 -21
- package/dist/abi/challengeAccount.d.ts.map +1 -1
- package/dist/abi/challengeAccount.js +33 -27
- package/dist/abi/challengeAccount.js.map +1 -1
- package/dist/challenge/account.d.ts +6 -2
- package/dist/challenge/account.d.ts.map +1 -1
- package/dist/challenge/account.js +11 -9
- package/dist/challenge/account.js.map +1 -1
- package/dist/challenge/api.d.ts +27 -2
- package/dist/challenge/api.d.ts.map +1 -1
- package/dist/challenge/api.js +93 -1
- package/dist/challenge/api.js.map +1 -1
- package/dist/challenge/factory.d.ts +17 -3
- package/dist/challenge/factory.d.ts.map +1 -1
- package/dist/challenge/factory.js +59 -22
- package/dist/challenge/factory.js.map +1 -1
- package/dist/challenge/intents.d.ts +25 -3
- package/dist/challenge/intents.d.ts.map +1 -1
- package/dist/challenge/intents.js +39 -7
- package/dist/challenge/intents.js.map +1 -1
- package/dist/challenge/types.d.ts +20 -1
- package/dist/challenge/types.d.ts.map +1 -1
- package/dist/constants.d.ts +0 -6
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +7 -8
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +15 -4
- package/dist/indexer.js.map +1 -1
- package/dist/sdk.d.ts +5 -0
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +58 -24
- package/dist/sdk.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/challenge/api.js
CHANGED
|
@@ -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":"
|
|
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
|
|
69
|
+
private addressResolver;
|
|
69
70
|
/** builderRegistry is immutable on the factory — cached after the first delegate check. */
|
|
70
71
|
private builderRegistryCache;
|
|
71
|
-
|
|
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":"AAAA,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBxB,CAAC;AAaX;;;;;;GAMG;AACH,qBAAa,sBAAsB;
|
|
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
|
-
|
|
47
|
+
addressResolver;
|
|
48
48
|
/** builderRegistry is immutable on the factory — cached after the first delegate check. */
|
|
49
49
|
builderRegistryCache;
|
|
50
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
/**
|
|
104
|
-
|
|
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`
|
|
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,
|
|
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
|
-
/**
|
|
135
|
-
|
|
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: "
|
|
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`
|
|
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 ?? (
|
|
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 ?? (
|
|
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({
|