@ftptech/canton-agent-wallet 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/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +0 -10
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +10 -126
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/pay.d.ts.map +1 -1
- package/dist/pay.js +12 -11
- package/dist/pay.js.map +1 -1
- package/dist/relay-client.d.ts +0 -79
- package/dist/relay-client.d.ts.map +1 -1
- package/dist/relay-client.js +0 -27
- package/dist/relay-client.js.map +1 -1
- package/dist/relay-signer.d.ts +10 -10
- package/dist/relay-signer.d.ts.map +1 -1
- package/dist/relay-signer.js +4 -72
- package/dist/relay-signer.js.map +1 -1
- package/dist/tx.d.ts +1 -160
- package/dist/tx.d.ts.map +1 -1
- package/dist/tx.js +61 -356
- package/dist/tx.js.map +1 -1
- package/dist/verify-prepared.d.ts +0 -153
- package/dist/verify-prepared.d.ts.map +1 -1
- package/dist/verify-prepared.js +0 -642
- package/dist/verify-prepared.js.map +1 -1
- package/package.json +2 -2
|
@@ -206,159 +206,6 @@ export interface PreparedAcceptExpectation {
|
|
|
206
206
|
* the agent throws.
|
|
207
207
|
*/
|
|
208
208
|
export declare function assertPreparedAcceptMatches(preparedTransactionB64: string, expect: PreparedAcceptExpectation): void;
|
|
209
|
-
interface ExtractedAllocation {
|
|
210
|
-
sender: string;
|
|
211
|
-
receiver: string;
|
|
212
|
-
amount: string;
|
|
213
|
-
instrumentAdmin: string;
|
|
214
|
-
instrumentId: string;
|
|
215
|
-
executor: string;
|
|
216
|
-
/** Decimal-string of the Value.timestamp varint (µs since epoch), or
|
|
217
|
-
* undefined if not present as a timestamp leaf. */
|
|
218
|
-
allocateBefore?: string;
|
|
219
|
-
settleBefore?: string;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Extract the allocation's money/escrow-critical leaves from the
|
|
223
|
-
* `AllocationFactory_Allocate` choice argument, BY TYPE at each Daml
|
|
224
|
-
* DECLARATION-ORDER POSITION (what the participant binds), NOT by label — with
|
|
225
|
-
* the same label/position-divergence guard the cip56/v1 arms use. Fails closed
|
|
226
|
-
* on any wrong-type / missing money-critical field.
|
|
227
|
-
*/
|
|
228
|
-
export declare function extractAllocation(chosenValue: Uint8Array): ExtractedAllocation;
|
|
229
|
-
/** Caller-intent expectation for an `AllocationFactory_Allocate`. Every field is
|
|
230
|
-
* CALLER INTENT — none is taken from the relay's resolve response. */
|
|
231
|
-
export interface PreparedAllocationExpectation {
|
|
232
|
-
/** The agent's own party — must be the transferLeg.sender. */
|
|
233
|
-
sender: string;
|
|
234
|
-
/**
|
|
235
|
-
* OWN-PARTY PIN (hardening). The agent's OWN party id, known independently of
|
|
236
|
-
* the relay (the wallet's party). The `AllocationFactory_Allocate` controller
|
|
237
|
-
* IS the sender, so the extracted `transferLeg.sender` MUST equal this value.
|
|
238
|
-
*
|
|
239
|
-
* This is asserted FIRST — before the positional `sender` pin and the foreign-
|
|
240
|
-
* party backstop — and is the load-bearing defense against a sender/receiver
|
|
241
|
-
* TRANSPOSITION: `transferLeg.sender` and `transferLeg.receiver` are BOTH Party
|
|
242
|
-
* leaves at ADJACENT declaration-order positions (field order CONFIRMED against
|
|
243
|
-
* canonical Splice source — see the field-order authority note above
|
|
244
|
-
* `extractAllocation`). If a malicious relay transposes those two leaves, it
|
|
245
|
-
* could otherwise present the agent as
|
|
246
|
-
* the RECEIVER while a position-pin alone might still line up. Pinning the
|
|
247
|
-
* extracted sender to the agent's own party fails CLOSED on ANY such transposition
|
|
248
|
-
* or wrong-position sender, REGARDLESS of field order — defense-in-depth, without
|
|
249
|
-
* needing the live vector. REQUIRED: callers thread `wallet.party` here.
|
|
250
|
-
*/
|
|
251
|
-
expectedSender: string;
|
|
252
|
-
/** The intended recipient (merchant payTo from the 402). */
|
|
253
|
-
receiver: string;
|
|
254
|
-
/** The EXACT amount string the agent asked to pay. */
|
|
255
|
-
amount: string;
|
|
256
|
-
/** The instrument id the agent expects (e.g. "Amulet"). Caller intent. */
|
|
257
|
-
instrumentId: string;
|
|
258
|
-
/** The facilitator party that MUST be settlement.executor (= extra.feePayer).
|
|
259
|
-
* Pinned by exact equality, fail-closed. This is the trust anchor: only the
|
|
260
|
-
* executor (+ baked-in sender/receiver auth) can later move the locked funds,
|
|
261
|
-
* so a relay naming an ATTACKER executor must be refused. */
|
|
262
|
-
executor: string;
|
|
263
|
-
/** Optional, independently-trusted instrument admin (DSO) to pin AND exclude
|
|
264
|
-
* from the foreign-party backstop outside its root position. */
|
|
265
|
-
instrumentAdmin?: string;
|
|
266
|
-
/** Optional, caller-intent synchronizer id. Pins SIGNED Metadata.synchronizer_id. */
|
|
267
|
-
synchronizerId?: string;
|
|
268
|
-
/** Optional, caller-intent template `module:entity` of the AllocationFactory. */
|
|
269
|
-
templateQualifiedName?: string;
|
|
270
|
-
/** Optional, caller-intent contract id of the AllocationFactory the exercise
|
|
271
|
-
* targets. Pins Exercise.contract_id (resolve→prepare TOCTOU). */
|
|
272
|
-
expectedContractId?: string;
|
|
273
|
-
/** Inject Date.now() for testability of the timing sanity checks. */
|
|
274
|
-
nowMs?: number;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Assert the relay-returned `preparedTransaction` encodes EXACTLY the
|
|
278
|
-
* `AllocationFactory_Allocate` the agent intended. Throws
|
|
279
|
-
* `PreparedTransferMismatchError` on any mismatch and `PreparedDecodeError` if
|
|
280
|
-
* the bytes are not a decodable PreparedTransaction carrying a single allocate
|
|
281
|
-
* exercise. Call BEFORE signing the hash. Fail-closed: anything not positively
|
|
282
|
-
* proven to match the intent throws.
|
|
283
|
-
*/
|
|
284
|
-
export declare function assertPreparedAllocationMatches(preparedTransactionB64: string, expect: PreparedAllocationExpectation): void;
|
|
285
|
-
/** Caller-intent expectation for an `Allocation_Withdraw` (reclaim) prepare. */
|
|
286
|
-
export interface PreparedAllocationWithdrawExpectation {
|
|
287
|
-
/** The agent's own party — must be the authoritative submitter (act_as) AND
|
|
288
|
-
* the choice's sole controller (allocation.transferLeg.sender). The ONLY
|
|
289
|
-
* party permitted anywhere in the signed transaction. */
|
|
290
|
-
selfParty: string;
|
|
291
|
-
/** Caller intent: the AmuletAllocation cid being reclaimed. The root
|
|
292
|
-
* exercise's `Exercise.contract_id` MUST equal this — REQUIRED (not optional
|
|
293
|
-
* as in the pay arms), so the relay cannot point the withdraw at a different
|
|
294
|
-
* contract than the one the caller resolved (resolve→prepare TOCTOU). */
|
|
295
|
-
allocationCid: string;
|
|
296
|
-
/** Inject Date.now() for testability of the timing sanity checks. */
|
|
297
|
-
nowMs?: number;
|
|
298
|
-
/** CALLER-INTENT reference parties that legitimately appear in a lock-expiry
|
|
299
|
-
* withdraw but are NOT the sender: the allocation's executor / lock holder
|
|
300
|
-
* (the facilitator) and the instrument admin (DSO). When the choice-context
|
|
301
|
-
* carries `expire-lock`, the unlock + disclosed AmuletRules/round reference
|
|
302
|
-
* these two parties, so they must be permitted — but ONLY as caller-pinned
|
|
303
|
-
* values (never relay-derived), so a relay cannot smuggle a foreign recipient
|
|
304
|
-
* by aliasing it to one of these. Omit on the empty-context (no-lock) path. */
|
|
305
|
-
facilitator?: string;
|
|
306
|
-
instrumentAdmin?: string;
|
|
307
|
-
/** CALLER-INTENT allocation RECEIVER (the merchant). In a "Design B" DIRECT
|
|
308
|
-
* allocation the receiver is the MERCHANT (not the facilitator, as in the
|
|
309
|
-
* "Design A" escrow where receiver == executor == facilitator), so the
|
|
310
|
-
* legitimate on-ledger `Allocation_Withdraw` expire-lock choice-context
|
|
311
|
-
* references the merchant party. When supplied, EXACTLY this one party is
|
|
312
|
-
* added to the allowed-party set for the withdraw backstop (alongside
|
|
313
|
-
* self/facilitator/instrumentAdmin) — never a wildcard. It MUST be pinned to
|
|
314
|
-
* the allocation's known receiver by the caller (`reclaimAllocation`), never
|
|
315
|
-
* taken from the relay, so a relay cannot smuggle a foreign recipient by
|
|
316
|
-
* aliasing it to this value. Omit for Design A (receiver == facilitator) /
|
|
317
|
-
* the empty-context (no-lock) path — behavior is then exactly as before. */
|
|
318
|
-
receiver?: string;
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Assert the relay-returned `preparedTransaction` for the reclaim path encodes
|
|
322
|
-
* EXACTLY a single `Allocation_Withdraw` exercise, on the caller's own
|
|
323
|
-
* allocation cid, submitted by the agent — and is NOT a different (value-moving)
|
|
324
|
-
* choice, a withdraw of a different contract, an outbound drain, or a
|
|
325
|
-
* foreign-party submission. Throws `PreparedTransferMismatchError` on any
|
|
326
|
-
* mismatch and `PreparedDecodeError` if the bytes are not a decodable
|
|
327
|
-
* PreparedTransaction. Call BEFORE signing the hash. Fail-closed: anything not
|
|
328
|
-
* positively proven to be a self-withdraw of the caller's own allocation throws.
|
|
329
|
-
*/
|
|
330
|
-
export declare function assertPreparedAllocationWithdrawMatches(preparedTransactionB64: string, expect: PreparedAllocationWithdrawExpectation): void;
|
|
331
|
-
/** Caller-intent expectation for a `SenderConsent` / `MerchantConsent` create. */
|
|
332
|
-
export interface PreparedConsentCreateExpectation {
|
|
333
|
-
/** The agent's own party — the SIGNING party (sole signatory + sole submitter).
|
|
334
|
-
* The created consent's [0] self-party (sender for SenderConsent, merchant for
|
|
335
|
-
* MerchantConsent) MUST equal this; it is also the ONLY non-facilitator party
|
|
336
|
-
* allowed anywhere. */
|
|
337
|
-
selfParty: string;
|
|
338
|
-
/** Caller intent: the facilitator party the consent names (its [1] field +
|
|
339
|
-
* observer). A relay-substituted facilitator could later mint a both-party
|
|
340
|
-
* consent and settle the agent's allocations, so it is pinned by exact equality
|
|
341
|
-
* and is the only OTHER allowed party. REQUIRED. */
|
|
342
|
-
facilitator: string;
|
|
343
|
-
/** Which standing consent this is — selects the created-template qualified-name
|
|
344
|
-
* pin and the [0] self-party field label ("sender" | "merchant"). */
|
|
345
|
-
consent: "sender" | "merchant";
|
|
346
|
-
/** Optional caller-intent synchronizer id. Pins SIGNED Metadata.synchronizer_id. */
|
|
347
|
-
synchronizerId?: string;
|
|
348
|
-
/** Inject Date.now() for testability of the timing sanity checks. */
|
|
349
|
-
nowMs?: number;
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Assert the relay-returned `preparedTransaction` for the x402-direct consent-create
|
|
353
|
-
* path encodes EXACTLY a single `SenderConsent` / `MerchantConsent` create, signed
|
|
354
|
-
* by the agent, naming {selfParty, facilitator} — and is NOT a value-moving choice,
|
|
355
|
-
* a second leg, a relay-substituted facilitator, or a foreign-party submission.
|
|
356
|
-
* Throws `PreparedTransferMismatchError` on any mismatch and `PreparedDecodeError`
|
|
357
|
-
* if the bytes are not a decodable PreparedTransaction. Call BEFORE signing. Fail-
|
|
358
|
-
* closed: anything not positively proven to be a self-submitted consent create among
|
|
359
|
-
* exactly {selfParty, facilitator} throws.
|
|
360
|
-
*/
|
|
361
|
-
export declare function assertPreparedConsentCreateMatches(preparedTransactionB64: string, expect: PreparedConsentCreateExpectation): void;
|
|
362
209
|
/**
|
|
363
210
|
* How to bind the relay-returned `hash` to the `preparedTransaction` bytes the
|
|
364
211
|
* agent just structurally validated. Exactly one of these must hold for a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-prepared.d.ts","sourceRoot":"","sources":["../src/verify-prepared.ts"],"names":[],"mappings":"AAi1BA,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,UAAU,CAAC;IACxB;;;;kEAI8D;IAC9D,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;;;;qDAIiD;IACjD,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED;iFACiF;AACjF,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;AAE9E;;;;;;;GAOG;AACH,UAAU,WAAW;IACnB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf;;;qCAGiC;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B;0EACsE;IACtE,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC;;;;;qDAKiD;IACjD,MAAM,CAAC,EACH;QAAE,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;KAAE,GACjF,SAAS,CAAC;IACd;;qEAEiE;IACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;+EAG2E;IAC3E,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB;;;;;;qEAMiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gFAAgF;IAChF,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;6EACyE;IACzE,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B;qEACiE;IACjE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;mFAE+E;IAC/E,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;2EAGuE;IACvE,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAClC;;;;;;sEAMkE;IAClE,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AA6LD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,sBAAsB,EAAE,MAAM,GAAG,eAAe,CAuI9E;
|
|
1
|
+
{"version":3,"file":"verify-prepared.d.ts","sourceRoot":"","sources":["../src/verify-prepared.ts"],"names":[],"mappings":"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"}
|