@agenticprimitives/payments 0.0.0-alpha.4 → 0.0.0-alpha.41

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 (66) hide show
  1. package/README.md +2 -0
  2. package/dist/entitlement/index.d.ts +125 -0
  3. package/dist/entitlement/index.d.ts.map +1 -0
  4. package/dist/entitlement/index.js +128 -0
  5. package/dist/entitlement/index.js.map +1 -0
  6. package/dist/entitlement/voucher.d.ts +85 -0
  7. package/dist/entitlement/voucher.d.ts.map +1 -0
  8. package/dist/entitlement/voucher.js +109 -0
  9. package/dist/entitlement/voucher.js.map +1 -0
  10. package/dist/external-checkout.d.ts +40 -0
  11. package/dist/external-checkout.d.ts.map +1 -0
  12. package/dist/external-checkout.js +70 -0
  13. package/dist/external-checkout.js.map +1 -0
  14. package/dist/index.d.ts +24 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +21 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/mandate-sign.d.ts +190 -0
  19. package/dist/mandate-sign.d.ts.map +1 -0
  20. package/dist/mandate-sign.js +202 -0
  21. package/dist/mandate-sign.js.map +1 -0
  22. package/dist/mandate.d.ts +34 -0
  23. package/dist/mandate.d.ts.map +1 -0
  24. package/dist/mandate.js +40 -0
  25. package/dist/mandate.js.map +1 -0
  26. package/dist/ops.d.ts +55 -0
  27. package/dist/ops.d.ts.map +1 -0
  28. package/dist/ops.js +66 -0
  29. package/dist/ops.js.map +1 -0
  30. package/dist/rails/escrow.d.ts +156 -0
  31. package/dist/rails/escrow.d.ts.map +1 -0
  32. package/dist/rails/escrow.js +88 -0
  33. package/dist/rails/escrow.js.map +1 -0
  34. package/dist/rails/invoice.d.ts +65 -0
  35. package/dist/rails/invoice.d.ts.map +1 -0
  36. package/dist/rails/invoice.js +57 -0
  37. package/dist/rails/invoice.js.map +1 -0
  38. package/dist/rails/recurring.d.ts +56 -0
  39. package/dist/rails/recurring.d.ts.map +1 -0
  40. package/dist/rails/recurring.js +58 -0
  41. package/dist/rails/recurring.js.map +1 -0
  42. package/dist/rails/wallet.d.ts +16 -0
  43. package/dist/rails/wallet.d.ts.map +1 -0
  44. package/dist/rails/wallet.js +20 -0
  45. package/dist/rails/wallet.js.map +1 -0
  46. package/dist/rails/x402/executor.d.ts +26 -1
  47. package/dist/rails/x402/executor.d.ts.map +1 -1
  48. package/dist/rails/x402/executor.js +45 -2
  49. package/dist/rails/x402/executor.js.map +1 -1
  50. package/dist/receipt.d.ts +36 -0
  51. package/dist/receipt.d.ts.map +1 -0
  52. package/dist/receipt.js +50 -0
  53. package/dist/receipt.js.map +1 -0
  54. package/dist/refund.d.ts +29 -0
  55. package/dist/refund.d.ts.map +1 -0
  56. package/dist/refund.js +19 -0
  57. package/dist/refund.js.map +1 -0
  58. package/dist/split.d.ts +27 -0
  59. package/dist/split.d.ts.map +1 -0
  60. package/dist/split.js +33 -0
  61. package/dist/split.js.map +1 -0
  62. package/dist/transfer.d.ts +51 -0
  63. package/dist/transfer.d.ts.map +1 -0
  64. package/dist/transfer.js +54 -0
  65. package/dist/transfer.js.map +1 -0
  66. package/package.json +21 -11
@@ -68,6 +68,31 @@ export interface X402RailDeps {
68
68
  }) => Promise<{
69
69
  settlementHash: Hex32;
70
70
  }>;
71
+ /** PAY-RAIL-6 — dry-run the redemption (eth_call / estimateGas) BEFORE the nonce is burned, so a
72
+ * reverting or griefing settlement is rejected without consuming the one-shot mandate. Injected by
73
+ * the app; omit to skip simulation. Returns ok + optional gas estimate. */
74
+ simulate?: (plan: {
75
+ to: Address;
76
+ value: bigint;
77
+ data: Hex;
78
+ }) => Promise<{
79
+ ok: boolean;
80
+ reason?: string;
81
+ gas?: bigint;
82
+ }>;
83
+ /** Anti-griefing: reject a settlement whose simulated gas exceeds this cap. */
84
+ maxGasPerSettlement?: bigint;
85
+ /** Anti-griefing: abort `submitRedemption` if it doesn't resolve within this many ms (settlement timeout). */
86
+ settlementTimeoutMs?: number;
87
+ /** EXT-PMT-2: verify the payer's per-charge mandate signature (PMT-INV-12) BEFORE settling. The app
88
+ * wires this as `(m) => verifyPaymentMandateSignature(m, domainOpts, read1271)` (ERC-1271 via the payer
89
+ * SA). REQUIRED by default — settle refuses unless this is supplied OR `allowUnsignedMandate` is set. */
90
+ verifyMandateSignature?: (mandate: PaymentMandate) => Promise<boolean>;
91
+ /** EXT-PMT-2 opt-out: settle an UNSIGNED per-charge mandate. Use ONLY when the mandate is authored
92
+ * in-process and the on-chain authority is the signed DELEGATION + PaymentEnforcer caps (the demo
93
+ * model — the per-charge mandate is a redundant artifact there). A relayer settling a payer-supplied
94
+ * mandate MUST supply `verifyMandateSignature` instead (ADR-0013 safe-by-default). */
95
+ allowUnsignedMandate?: boolean;
71
96
  now?: () => number;
72
97
  }
73
98
  export type SettleResult = {
@@ -79,7 +104,7 @@ export type SettleResult = {
79
104
  ok: false;
80
105
  reason: string;
81
106
  };
82
- /** The staged x402 rail. `settle` runs verify → revoke → reserve(nullifier) → prepare → submit →
107
+ /** The staged x402 rail. `settle` runs verify → revoke → reserve(nullifier) → simulate → submit →
83
108
  * receipt; a safe retry of an already-settled request returns the original receipt (idempotent). */
84
109
  export declare function createX402Rail(deps: X402RailDeps): {
85
110
  rail: "x402";
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/rails/x402/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/rails/x402/executor.ts"],"names":[],"mappings":"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"}
@@ -122,6 +122,11 @@ export function buildRedemptionCalldata(args) {
122
122
  // Fill the PaymentEnforcer caveat's redeem-time args = abi.encode(mandateId, nonce, resourceHash).
123
123
  const enforcerArgs = encodeAbiParameters([{ type: 'bytes32' }, { type: 'bytes32' }, { type: 'bytes32' }], [args.mandate.mandateId, toHex(args.mandate.nonce, { size: 32 }), args.resourceHash]);
124
124
  const pe = args.paymentEnforcer.toLowerCase();
125
+ // EXT-PMT-2: the delegation MUST carry the PaymentEnforcer caveat — otherwise this would encode a
126
+ // redemption that moves USDC with NO on-chain spend/frequency/nonce enforcement attached.
127
+ if (!args.delegation.caveats.some((c) => c.enforcer.toLowerCase() === pe)) {
128
+ throw new Error('buildRedemptionCalldata: delegation has no PaymentEnforcer caveat — refusing to encode an unenforced payment (EXT-PMT-2)');
129
+ }
125
130
  const caveats = args.delegation.caveats.map((c) => c.enforcer.toLowerCase() === pe
126
131
  ? { enforcer: c.enforcer, terms: c.terms, args: enforcerArgs }
127
132
  : { enforcer: c.enforcer, terms: c.terms, args: c.args ?? '0x' });
@@ -146,7 +151,13 @@ export function buildRedemptionCalldata(args) {
146
151
  });
147
152
  return { to: args.delegationManager, value: 0n, data };
148
153
  }
149
- /** The staged x402 rail. `settle` runs verify → revoke → reserve(nullifier) → prepare → submit →
154
+ function withTimeout(p, ms) {
155
+ return new Promise((resolve, reject) => {
156
+ const t = setTimeout(() => reject(new Error(`settlement timed out after ${ms}ms`)), ms);
157
+ p.then((v) => { clearTimeout(t); resolve(v); }, (e) => { clearTimeout(t); reject(e); });
158
+ });
159
+ }
160
+ /** The staged x402 rail. `settle` runs verify → revoke → reserve(nullifier) → simulate → submit →
150
161
  * receipt; a safe retry of an already-settled request returns the original receipt (idempotent). */
151
162
  export function createX402Rail(deps) {
152
163
  const now = deps.now ?? (() => Math.floor(Date.now() / 1000));
@@ -155,6 +166,22 @@ export function createX402Rail(deps) {
155
166
  const v = verifyMandate(mandate, quote, { now: now() });
156
167
  if (!v.valid)
157
168
  return { ok: false, reason: v.reason };
169
+ // PAY-H2 (seam audit): verifyMandate binds mandate.asset === quote.asset, but settlement transfers
170
+ // against the RAIL's configured `deps.asset` (computeNullifier + buildRedemptionCalldata). If the rail
171
+ // is wired for a different asset than the quote (e.g. USDC 6-dec vs an 18-dec token), it would move
172
+ // `quote.amount` atomic units of the WRONG asset — over/under-charging by decimals/asset divergence.
173
+ // Assert quote.asset === deps.asset BEFORE reserving the nonce or building calldata (fail-closed).
174
+ if (quote.asset.toLowerCase() !== deps.asset.toLowerCase()) {
175
+ return { ok: false, reason: 'rail asset does not match the quoted asset' };
176
+ }
177
+ // EXT-PMT-2: enforce the payer's per-charge mandate signature (fail-closed by default).
178
+ if (deps.verifyMandateSignature) {
179
+ if (!(await deps.verifyMandateSignature(mandate)))
180
+ return { ok: false, reason: 'mandate signature invalid' };
181
+ }
182
+ else if (!deps.allowUnsignedMandate) {
183
+ return { ok: false, reason: 'no mandate-signature verifier and allowUnsignedMandate not set (EXT-PMT-2)' };
184
+ }
158
185
  const delegationHash = mandate.delegationRef;
159
186
  if (delegationHash && (await deps.isRevoked(delegationHash)))
160
187
  return { ok: false, reason: 'payment delegation revoked' };
@@ -183,9 +210,25 @@ export function createX402Rail(deps) {
183
210
  asset: deps.asset,
184
211
  resourceHash: quote.resourceHash,
185
212
  });
213
+ // PAY-RAIL-6 — simulate before burning the nonce: a reverting or over-gas settlement is
214
+ // rejected as RETRYABLE so the one-shot mandate survives for a corrected resubmit.
215
+ if (deps.simulate) {
216
+ const sim = await deps.simulate(plan);
217
+ if (!sim.ok) {
218
+ await deps.nonceStore.markFailed(nullifier, true);
219
+ return { ok: false, reason: `simulation reverted${sim.reason ? `: ${sim.reason}` : ''}` };
220
+ }
221
+ if (deps.maxGasPerSettlement !== undefined && sim.gas !== undefined && sim.gas > deps.maxGasPerSettlement) {
222
+ await deps.nonceStore.markFailed(nullifier, true);
223
+ return { ok: false, reason: `settlement gas ${sim.gas} exceeds cap ${deps.maxGasPerSettlement}` };
224
+ }
225
+ }
186
226
  await deps.nonceStore.markSettling(nullifier);
187
227
  try {
188
- const { settlementHash } = await deps.submitRedemption(plan);
228
+ const submit = deps.submitRedemption(plan);
229
+ const { settlementHash } = deps.settlementTimeoutMs
230
+ ? await withTimeout(submit, deps.settlementTimeoutMs)
231
+ : await submit;
189
232
  const receipt = { settlementHash, mandateId: mandate.mandateId };
190
233
  await deps.nonceStore.markSettled(nullifier, receipt);
191
234
  return { ok: true, settlementHash, mandateId: mandate.mandateId, idempotent: false };
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/rails/x402/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/rails/x402/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * X402-D9.3 / spec 243 §7 — PaymentReceipt verifiable credential.
3
+ *
4
+ * Every successful redemption (charge, refund, split-out, escrow release) produces
5
+ * an immutable `PaymentReceipt` VC (PMT-INV-11 — no revoke entrypoint; settlement is
6
+ * final). The receipt is evidence-symmetric (273 EXC-D3): a refund leg is the same
7
+ * shape as the charge it reverses, linked by `provenance.refunds`.
8
+ *
9
+ * This builds the UNSIGNED credential (vc envelope is type-only here per the package
10
+ * boundary); the app/rail signs it via `@agenticprimitives/verifiable-credentials`
11
+ * `signCredential` and asserts it via the `attestations` client.
12
+ */
13
+ import type { UnsignedCredential } from '@agenticprimitives/verifiable-credentials';
14
+ import type { Address } from '@agenticprimitives/types';
15
+ import type { PaymentMandate, Hex32 } from './index.js';
16
+ export declare const PAYMENT_RECEIPT_TYPE = "PaymentReceipt";
17
+ /** Coarsen a settlement time to a UTC-day bucket — receipts leak no finer timing (privacy posture §6). */
18
+ export declare function settlementEpochBucket(settledAtSeconds: number): number;
19
+ export interface PaymentReceiptInput {
20
+ /** the settled mandate */
21
+ mandate: PaymentMandate;
22
+ /** the rail executor's SA (VC issuer) */
23
+ issuer: Address;
24
+ /** tx hash, or off-chain settlement id */
25
+ settlementHash: Hex32;
26
+ /** ISO-8601 settlement time */
27
+ settledAt: string;
28
+ /** provenance — set on a refund leg to the original charge's mandateId (EXC-D3) */
29
+ refundsMandateId?: Hex32;
30
+ }
31
+ /**
32
+ * Build the unsigned `PaymentReceipt` credential. The subject id is the payer SA; the
33
+ * full context binding is folded into `contextBindingHash` (never the body — privacy §6).
34
+ */
35
+ export declare function buildPaymentReceiptCredential(input: PaymentReceiptInput): UnsignedCredential;
36
+ //# sourceMappingURL=receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../src/receipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAGrD,0GAA0G;AAC1G,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,yCAAyC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,cAAc,EAAE,KAAK,CAAC;IACtB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,KAAK,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,CAyB5F"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * X402-D9.3 / spec 243 §7 — PaymentReceipt verifiable credential.
3
+ *
4
+ * Every successful redemption (charge, refund, split-out, escrow release) produces
5
+ * an immutable `PaymentReceipt` VC (PMT-INV-11 — no revoke entrypoint; settlement is
6
+ * final). The receipt is evidence-symmetric (273 EXC-D3): a refund leg is the same
7
+ * shape as the charge it reverses, linked by `provenance.refunds`.
8
+ *
9
+ * This builds the UNSIGNED credential (vc envelope is type-only here per the package
10
+ * boundary); the app/rail signs it via `@agenticprimitives/verifiable-credentials`
11
+ * `signCredential` and asserts it via the `attestations` client.
12
+ */
13
+ import { hashContextBinding, mandateAmount } from './mandate-sign.js';
14
+ export const PAYMENT_RECEIPT_TYPE = 'PaymentReceipt';
15
+ const CREDENTIALS_V2_CONTEXT = 'https://www.w3.org/ns/credentials/v2';
16
+ /** Coarsen a settlement time to a UTC-day bucket — receipts leak no finer timing (privacy posture §6). */
17
+ export function settlementEpochBucket(settledAtSeconds) {
18
+ return Math.floor(settledAtSeconds / 86_400);
19
+ }
20
+ /**
21
+ * Build the unsigned `PaymentReceipt` credential. The subject id is the payer SA; the
22
+ * full context binding is folded into `contextBindingHash` (never the body — privacy §6).
23
+ */
24
+ export function buildPaymentReceiptCredential(input) {
25
+ const { mandate } = input;
26
+ const settledSeconds = Math.floor(Date.parse(input.settledAt) / 1000);
27
+ const credential = {
28
+ '@context': [CREDENTIALS_V2_CONTEXT],
29
+ type: ['VerifiableCredential', PAYMENT_RECEIPT_TYPE],
30
+ issuer: input.issuer,
31
+ validFrom: input.settledAt,
32
+ credentialSubject: {
33
+ id: mandate.payer,
34
+ mandateId: mandate.mandateId,
35
+ rail: mandate.rail,
36
+ payee: mandate.payee,
37
+ amount: mandateAmount(mandate).toString(),
38
+ asset: mandate.amountPolicy.asset.id,
39
+ chain: mandate.contextBinding.chain,
40
+ orderHash: mandate.contextBinding.orderHash ?? null,
41
+ legId: mandate.contextBinding.legId ?? null,
42
+ contextBindingHash: hashContextBinding(mandate.contextBinding),
43
+ settlementHash: input.settlementHash,
44
+ settlementEpochBucket: settlementEpochBucket(settledSeconds),
45
+ ...(input.refundsMandateId ? { provenance: { refunds: input.refundsMandateId } } : {}),
46
+ },
47
+ };
48
+ return credential;
49
+ }
50
+ //# sourceMappingURL=receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../src/receipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;AAEtE,0GAA0G;AAC1G,MAAM,UAAU,qBAAqB,CAAC,gBAAwB;IAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;AAC/C,CAAC;AAeD;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAA0B;IACtE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG;QACjB,UAAU,EAAE,CAAC,sBAAsB,CAAC;QACpC,IAAI,EAAE,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;QACpD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,iBAAiB,EAAE;YACjB,EAAE,EAAE,OAAO,CAAC,KAAK;YACjB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;YACzC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACpC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK;YACnC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,SAAS,IAAI,IAAI;YACnD,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI;YAC3C,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,CAAC,cAAc,CAAC;YAC9D,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,qBAAqB,EAAE,qBAAqB,CAAC,cAAc,CAAC;YAC5D,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvF;KACF,CAAC;IACF,OAAO,UAA2C,CAAC;AACrD,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Refunds (spec 243 §5.5) — a receipt-linked reverse leg, no enforcer.
3
+ *
4
+ * The treasury (payee) signs a transfer payee → payer carrying `provenance.refunds`
5
+ * pointing at the original charge's mandateId. It emits its OWN PaymentReceipt
6
+ * (audit-equal evidence, 273 EXC-D3). Build the refund receipt with
7
+ * `buildPaymentReceiptCredential({ ..., refundsMandateId })`.
8
+ */
9
+ import type { Address } from '@agenticprimitives/types';
10
+ import { type TransferPlan } from './transfer.js';
11
+ import type { Hex32 } from './index.js';
12
+ export interface RefundInput {
13
+ asset: Address;
14
+ /** refund amount — MUST be ≤ the original charge (caller-enforced) */
15
+ amount: bigint;
16
+ /** where the refund returns — the original charge's payer */
17
+ payer: Address;
18
+ /** the original charge this reverses (provenance) */
19
+ originalMandateId: Hex32;
20
+ }
21
+ export interface RefundPlan {
22
+ plan: TransferPlan;
23
+ provenance: {
24
+ refunds: Hex32;
25
+ };
26
+ }
27
+ /** Build the reverse leg: the treasury executes a transfer back to the original payer. */
28
+ export declare function buildRefund(input: RefundInput): RefundPlan;
29
+ //# sourceMappingURL=refund.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../src/refund.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,iBAAiB,EAAE,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE;QAAE,OAAO,EAAE,KAAK,CAAA;KAAE,CAAC;CAChC;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAM1D"}
package/dist/refund.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Refunds (spec 243 §5.5) — a receipt-linked reverse leg, no enforcer.
3
+ *
4
+ * The treasury (payee) signs a transfer payee → payer carrying `provenance.refunds`
5
+ * pointing at the original charge's mandateId. It emits its OWN PaymentReceipt
6
+ * (audit-equal evidence, 273 EXC-D3). Build the refund receipt with
7
+ * `buildPaymentReceiptCredential({ ..., refundsMandateId })`.
8
+ */
9
+ import { buildErc20Transfer } from './transfer.js';
10
+ /** Build the reverse leg: the treasury executes a transfer back to the original payer. */
11
+ export function buildRefund(input) {
12
+ if (input.amount <= 0n)
13
+ throw new Error('[refund] amount must be > 0');
14
+ return {
15
+ plan: buildErc20Transfer(input.asset, input.payer, input.amount),
16
+ provenance: { refunds: input.originalMandateId },
17
+ };
18
+ }
19
+ //# sourceMappingURL=refund.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund.js","sourceRoot":"","sources":["../src/refund.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAqB,MAAM,eAAe,CAAC;AAkBtE,0FAA0F;AAC1F,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvE,OAAO;QACL,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;QAChE,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAAE;KACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Split payouts (spec 243 §5.5) — app-triggered payout fan-out.
3
+ *
4
+ * One amount split to N recipients by basis points (Seaport recipient-specific-consideration
5
+ * pattern). `bps` MUST sum to 10000; the rounding remainder is assigned to the first recipient
6
+ * so the legs total EXACTLY `amount` (no dust left in the treasury). Each leg is its own
7
+ * transfer plan (and its own receipt). Connected-account onboarding / KYB stays app layer.
8
+ */
9
+ import type { Address } from '@agenticprimitives/types';
10
+ import { type TransferPlan } from './transfer.js';
11
+ export interface SplitRecipient {
12
+ to: Address;
13
+ bps: number;
14
+ }
15
+ export interface SplitLeg {
16
+ to: Address;
17
+ bps: number;
18
+ amount: bigint;
19
+ plan: TransferPlan;
20
+ }
21
+ export declare const BPS_DENOMINATOR = 10000;
22
+ export declare function buildSplitPayout(input: {
23
+ asset: Address;
24
+ amount: bigint;
25
+ recipients: SplitRecipient[];
26
+ }): SplitLeg[];
27
+ //# sourceMappingURL=split.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../src/split.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,GAAG,QAAQ,EAAE,CAkBpH"}
package/dist/split.js ADDED
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Split payouts (spec 243 §5.5) — app-triggered payout fan-out.
3
+ *
4
+ * One amount split to N recipients by basis points (Seaport recipient-specific-consideration
5
+ * pattern). `bps` MUST sum to 10000; the rounding remainder is assigned to the first recipient
6
+ * so the legs total EXACTLY `amount` (no dust left in the treasury). Each leg is its own
7
+ * transfer plan (and its own receipt). Connected-account onboarding / KYB stays app layer.
8
+ */
9
+ import { buildErc20Transfer } from './transfer.js';
10
+ export const BPS_DENOMINATOR = 10_000;
11
+ export function buildSplitPayout(input) {
12
+ const { asset, amount, recipients } = input;
13
+ if (recipients.length === 0)
14
+ throw new Error('[split] at least one recipient required');
15
+ if (amount <= 0n)
16
+ throw new Error('[split] amount must be > 0');
17
+ const totalBps = recipients.reduce((s, r) => s + r.bps, 0);
18
+ if (totalBps !== BPS_DENOMINATOR)
19
+ throw new Error(`[split] bps must sum to ${BPS_DENOMINATOR}, got ${totalBps}`);
20
+ for (const r of recipients)
21
+ if (r.bps <= 0)
22
+ throw new Error('[split] each recipient bps must be > 0');
23
+ const amounts = recipients.map((r) => (amount * BigInt(r.bps)) / BigInt(BPS_DENOMINATOR));
24
+ const remainder = amount - amounts.reduce((s, a) => s + a, 0n);
25
+ amounts[0] += remainder; // assign rounding dust to the first recipient → legs total exactly `amount`
26
+ return recipients.map((r, i) => ({
27
+ to: r.to,
28
+ bps: r.bps,
29
+ amount: amounts[i],
30
+ plan: buildErc20Transfer(asset, r.to, amounts[i]),
31
+ }));
32
+ }
33
+ //# sourceMappingURL=split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split.js","sourceRoot":"","sources":["../src/split.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAqB,MAAM,eAAe,CAAC;AActE,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAEtC,MAAM,UAAU,gBAAgB,CAAC,KAAuE;IACtG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACxF,IAAI,MAAM,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3D,IAAI,QAAQ,KAAK,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,eAAe,SAAS,QAAQ,EAAE,CAAC,CAAC;IACjH,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEtG,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,CAAC,CAAE,IAAI,SAAS,CAAC,CAAC,4EAA4E;IAEtG,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAE;QACnB,IAAI,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC;KACnD,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Shared transfer-plan plumbing for the non-x402 rails (spec 243 §5.5).
3
+ *
4
+ * A `TransferPlan` is the inner call an SA executes (`AgentAccount.execute(to, value, data)`
5
+ * or a UserOp / wallet tx) — the same `{to, value, data}` shape the x402 rail's
6
+ * `buildRedemptionCalldata` returns. Wallet / invoice / refund / split all reduce to one or
7
+ * more ERC-20 transfers from the payer or treasury SA.
8
+ */
9
+ import { type Address, type Hex } from 'viem';
10
+ export interface TransferPlan {
11
+ to: Address;
12
+ value: bigint;
13
+ data: Hex;
14
+ }
15
+ export declare const ERC20_TRANSFER_ABI: readonly [{
16
+ readonly type: "function";
17
+ readonly name: "transfer";
18
+ readonly stateMutability: "nonpayable";
19
+ readonly inputs: readonly [{
20
+ readonly name: "to";
21
+ readonly type: "address";
22
+ }, {
23
+ readonly name: "amount";
24
+ readonly type: "uint256";
25
+ }];
26
+ readonly outputs: readonly [{
27
+ readonly type: "bool";
28
+ }];
29
+ }];
30
+ /** A single ERC-20 transfer: the executing SA calls `asset.transfer(to, amount)`. */
31
+ export declare function buildErc20Transfer(asset: Address, to: Address, amount: bigint): TransferPlan;
32
+ /** A native-value transfer (the executing SA sends `amount` wei to `to`). */
33
+ export declare function buildNativeTransfer(to: Address, amount: bigint): TransferPlan;
34
+ export declare const ERC20_APPROVE_ABI: readonly [{
35
+ readonly type: "function";
36
+ readonly name: "approve";
37
+ readonly stateMutability: "nonpayable";
38
+ readonly inputs: readonly [{
39
+ readonly name: "spender";
40
+ readonly type: "address";
41
+ }, {
42
+ readonly name: "amount";
43
+ readonly type: "uint256";
44
+ }];
45
+ readonly outputs: readonly [{
46
+ readonly type: "bool";
47
+ }];
48
+ }];
49
+ /** An ERC-20 approval — needed before the escrow `deposit` pulls funds via `transferFrom`. */
50
+ export declare function buildErc20Approve(asset: Address, spender: Address, amount: bigint): TransferPlan;
51
+ //# sourceMappingURL=transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAsB,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;CACX;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;EAWrB,CAAC;AAEX,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAM5F;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAE7E;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;EAWpB,CAAC;AAEX,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAMhG"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Shared transfer-plan plumbing for the non-x402 rails (spec 243 §5.5).
3
+ *
4
+ * A `TransferPlan` is the inner call an SA executes (`AgentAccount.execute(to, value, data)`
5
+ * or a UserOp / wallet tx) — the same `{to, value, data}` shape the x402 rail's
6
+ * `buildRedemptionCalldata` returns. Wallet / invoice / refund / split all reduce to one or
7
+ * more ERC-20 transfers from the payer or treasury SA.
8
+ */
9
+ import { encodeFunctionData } from 'viem';
10
+ export const ERC20_TRANSFER_ABI = [
11
+ {
12
+ type: 'function',
13
+ name: 'transfer',
14
+ stateMutability: 'nonpayable',
15
+ inputs: [
16
+ { name: 'to', type: 'address' },
17
+ { name: 'amount', type: 'uint256' },
18
+ ],
19
+ outputs: [{ type: 'bool' }],
20
+ },
21
+ ];
22
+ /** A single ERC-20 transfer: the executing SA calls `asset.transfer(to, amount)`. */
23
+ export function buildErc20Transfer(asset, to, amount) {
24
+ return {
25
+ to: asset,
26
+ value: 0n,
27
+ data: encodeFunctionData({ abi: ERC20_TRANSFER_ABI, functionName: 'transfer', args: [to, amount] }),
28
+ };
29
+ }
30
+ /** A native-value transfer (the executing SA sends `amount` wei to `to`). */
31
+ export function buildNativeTransfer(to, amount) {
32
+ return { to, value: amount, data: '0x' };
33
+ }
34
+ export const ERC20_APPROVE_ABI = [
35
+ {
36
+ type: 'function',
37
+ name: 'approve',
38
+ stateMutability: 'nonpayable',
39
+ inputs: [
40
+ { name: 'spender', type: 'address' },
41
+ { name: 'amount', type: 'uint256' },
42
+ ],
43
+ outputs: [{ type: 'bool' }],
44
+ },
45
+ ];
46
+ /** An ERC-20 approval — needed before the escrow `deposit` pulls funds via `transferFrom`. */
47
+ export function buildErc20Approve(asset, spender, amount) {
48
+ return {
49
+ to: asset,
50
+ value: 0n,
51
+ data: encodeFunctionData({ abi: ERC20_APPROVE_ABI, functionName: 'approve', args: [spender, amount] }),
52
+ };
53
+ }
54
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAA0B,MAAM,MAAM,CAAC;AAQlE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAC5B;CACO,CAAC;AAEX,qFAAqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,EAAW,EAAE,MAAc;IAC5E,OAAO;QACL,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;KACpG,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,EAAW,EAAE,MAAc;IAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAC5B;CACO,CAAC;AAEX,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,OAAgB,EAAE,MAAc;IAChF,OAAO;QACL,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;KACvG,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,17 +1,21 @@
1
1
  {
2
2
  "name": "@agenticprimitives/payments",
3
- "version": "0.0.0-alpha.4",
3
+ "version": "0.0.0-alpha.41",
4
4
  "description": "PaymentMandate + ContextBinding + MandateConstraints + open/closed mode discrimination. Three W1 rails (x402, wallet, sponsored-userop). PaymentReceipt asserted into AttestationRegistry per ADR-0023.",
5
+ "homepage": "https://agenticprimitives.dev",
6
+ "bugs": {
7
+ "url": "https://github.com/agentictrustlabs/agenticprimitives/issues"
8
+ },
9
+ "author": {
10
+ "name": "Agentic Trust Labs",
11
+ "url": "https://agenticprimitives.dev"
12
+ },
5
13
  "license": "MIT",
6
14
  "repository": {
7
15
  "type": "git",
8
16
  "url": "git+https://github.com/agentictrustlabs/agenticprimitives.git",
9
17
  "directory": "packages/payments"
10
18
  },
11
- "homepage": "https://github.com/agentictrustlabs/agenticprimitives/tree/master/packages/payments",
12
- "bugs": {
13
- "url": "https://github.com/agentictrustlabs/agenticprimitives/issues"
14
- },
15
19
  "type": "module",
16
20
  "main": "./dist/index.js",
17
21
  "types": "./dist/index.d.ts",
@@ -34,20 +38,26 @@
34
38
  "viem": "^2.52.2"
35
39
  },
36
40
  "devDependencies": {
37
- "vitest": "^4.1.8",
41
+ "vitest": "^4.1.11",
38
42
  "viem": "^2.52.2"
39
43
  },
40
44
  "keywords": [
41
45
  "agentic",
42
46
  "primitives",
43
- "payments"
47
+ "payments",
48
+ "agentic-primitives",
49
+ "agenticprimitives",
50
+ "ai-agents",
51
+ "agent-authority",
52
+ "agentic-trust"
44
53
  ],
45
54
  "dependencies": {
46
55
  "@noble/hashes": "^2.2.0",
47
- "@agenticprimitives/attestations": "0.0.0-alpha.4",
48
- "@agenticprimitives/types": "1.0.0-alpha.8",
49
- "@agenticprimitives/delegation": "1.0.0-alpha.8",
50
- "@agenticprimitives/verifiable-credentials": "0.0.0-alpha.4"
56
+ "@noble/curves": "^2.2.0",
57
+ "@agenticprimitives/attestations": "0.0.0-alpha.41",
58
+ "@agenticprimitives/delegation": "1.0.0-alpha.45",
59
+ "@agenticprimitives/types": "1.0.0-alpha.45",
60
+ "@agenticprimitives/verifiable-credentials": "0.0.0-alpha.42"
51
61
  },
52
62
  "scripts": {
53
63
  "build": "tsc -p tsconfig.build.json",