@peac/adapter-x402 0.12.0-preview.2 → 0.12.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.js","sourceRoot":"","sources":["../src/raw.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,23 +1,13 @@
1
1
  /**
2
2
  * x402 Offer/Receipt extension types
3
3
  *
4
- * Models the x402 offer/receipt flow:
5
- * - SignedOffer: EIP-712 or JWS signed payment terms
6
- * - SignedReceipt: Settlement proof binding offer to on-chain transaction
7
- * - AcceptEntry: Terms an offer can match against
8
- * - acceptIndex: Unsigned envelope field (hint only, not binding)
4
+ * Public API types for the x402 adapter. Uses raw wire types (Layer A)
5
+ * and normalized types (Layer B) from their respective modules.
9
6
  *
10
- * Key design choices:
11
- * - validUntil: epoch seconds in signed payload
12
- * - version: in signed payload
13
- * - acceptIndex: unsigned envelope field (outside signature)
14
- * - metadata: deferred to v2
15
- *
16
- * NOTE: This adapter targets the x402 Offer/Receipt EXTENSION,
17
- * NOT the baseline x402 header flow. The profile identifier reflects this:
18
- * `peac-x402-offer-receipt/0.1` (extension) vs `peac-x402/0.1` (baseline, reserved).
7
+ * @packageDocumentation
19
8
  */
20
- import type { JsonObject } from '@peac/kernel';
9
+ export type { RawOfferPayload, RawReceiptPayload, RawJWSSignedOffer, RawEIP712SignedOffer, RawSignedOffer, RawJWSSignedReceipt, RawEIP712SignedReceipt, RawSignedReceipt, RawX402ExtensionInfo, ParsedCompactJWS, } from './raw.js';
10
+ export type { NormalizedOfferPayload, NormalizedReceiptPayload } from './normalize.js';
21
11
  export type { Result, AdapterError, AdapterErrorCode, JsonObject } from '@peac/adapter-core';
22
12
  /**
23
13
  * Profile identifier for x402 Offer/Receipt extension records
@@ -27,7 +17,7 @@ export type { Result, AdapterError, AdapterErrorCode, JsonObject } from '@peac/a
27
17
  *
28
18
  * `peac-x402/0.1` is RESERVED for future baseline header flow support.
29
19
  */
30
- export declare const X402_OFFER_RECEIPT_PROFILE: "peac-x402-offer-receipt/0.1";
20
+ export declare const X402_OFFER_RECEIPT_PROFILE: "peac-x402-offer-receipt/0.2";
31
21
  /**
32
22
  * Maximum number of accept entries allowed (DoS protection)
33
23
  *
@@ -55,74 +45,32 @@ export declare const MAX_AMOUNT_LENGTH = 78;
55
45
  * - jws: JWS compact serialization (RFC 7515)
56
46
  */
57
47
  export type SignatureFormat = 'eip712' | 'jws';
48
+ import type { NormalizedOfferPayload, NormalizedReceiptPayload } from './normalize.js';
49
+ import type { RawSignedOffer, RawSignedReceipt } from './raw.js';
58
50
  /**
59
- * x402 Offer payload (inside the signed envelope)
51
+ * x402 Offer payload (normalized, semantically clean)
60
52
  *
61
- * These fields are cryptographically bound by the signature.
62
- * Any modification invalidates the signature.
53
+ * This is the public-facing offer payload type. EIP-712 placeholders
54
+ * have been normalized to semantic absence.
63
55
  */
64
- export interface OfferPayload {
65
- /** Schema version (in signed payload) */
66
- version: string;
67
- /** Offer expiry as epoch seconds (in signed payload) */
68
- validUntil: number;
69
- /** CAIP-2 network identifier (e.g., "eip155:8453") */
70
- network: string;
71
- /** Payment asset identifier (e.g., "USDC", "ETH") */
72
- asset: string;
73
- /** Payment amount in minor units */
74
- amount: string;
75
- /** Payment recipient address */
76
- payTo: string;
77
- /** Settlement scheme (e.g., "exact", "flexible") */
78
- scheme?: string;
79
- /** Settlement parameters (scheme-specific) */
80
- settlement?: JsonObject;
81
- }
56
+ export type OfferPayload = NormalizedOfferPayload;
82
57
  /**
83
- * x402 Signed Offer (envelope)
58
+ * x402 Receipt payload (normalized, semantically clean)
84
59
  *
85
- * The offer envelope contains:
86
- * - payload: signed content (cryptographically bound)
87
- * - signature: EIP-712 or JWS signature over the payload
88
- * - format: which signature scheme was used
60
+ * Privacy-minimal: transaction is optional enrichable evidence.
89
61
  */
90
- export interface SignedOffer {
91
- /** The signed payload */
92
- payload: OfferPayload;
93
- /** Signature over the payload */
94
- signature: string;
95
- /** Signature format */
96
- format: SignatureFormat;
97
- }
62
+ export type ReceiptPayload = NormalizedReceiptPayload;
98
63
  /**
99
- * x402 Receipt payload (inside the signed envelope)
64
+ * x402 Signed Offer (discriminated union)
65
+ *
66
+ * JWS format: `{ format: 'jws', signature: string }` (payload inside compact JWS)
67
+ * EIP-712: `{ format: 'eip712', payload, signature }` (payload is separate field)
100
68
  */
101
- export interface ReceiptPayload {
102
- /** Schema version */
103
- version: string;
104
- /** CAIP-2 network identifier */
105
- network: string;
106
- /** On-chain transaction hash */
107
- txHash: string;
108
- /** Payment asset */
109
- asset?: string;
110
- /** Payment amount in minor units */
111
- amount?: string;
112
- /** Payment recipient */
113
- payTo?: string;
114
- }
69
+ export type SignedOffer = RawSignedOffer;
115
70
  /**
116
- * x402 Signed Receipt (envelope)
71
+ * x402 Signed Receipt (discriminated union)
117
72
  */
118
- export interface SignedReceipt {
119
- /** The signed payload */
120
- payload: ReceiptPayload;
121
- /** Signature over the payload */
122
- signature: string;
123
- /** Signature format */
124
- format: SignatureFormat;
125
- }
73
+ export type SignedReceipt = RawSignedReceipt;
126
74
  /**
127
75
  * A single accept entry: the terms under which a facilitator accepts payment
128
76
  *
@@ -138,30 +86,31 @@ export interface AcceptEntry {
138
86
  payTo: string;
139
87
  /** Maximum amount in minor units */
140
88
  amount: string;
141
- /** Settlement scheme */
142
- scheme?: string;
143
- /** Settlement parameters */
144
- settlement?: JsonObject;
89
+ /** Settlement scheme (required per upstream) */
90
+ scheme: string;
145
91
  }
146
92
  /**
147
- * x402 PaymentRequired response with offer/receipt extension
93
+ * PEAC's post-extraction convenience type for x402 offer/receipt challenge
94
+ *
95
+ * This is NOT the upstream `PaymentRequired` message type. Upstream's
96
+ * `PaymentRequired` nests extension data under `extensions["offer-receipt"].info`.
97
+ * This type represents the PEAC-side extracted and flattened shape, combining
98
+ * the offers from the extension info with the accepts from the top-level
99
+ * `PaymentRequired`.
100
+ *
101
+ * To convert from upstream wire format:
102
+ * 1. Use `extractExtensionInfo(body)` to pull offers from the raw response
103
+ * 2. Read `accepts` from the top-level `PaymentRequired` message
104
+ * 3. Combine into this convenience type
148
105
  *
149
- * This is the 402 response sent by the resource server.
150
- * The extension data lives under extensions["offer-receipt"].
106
+ * @see extractExtensionInfo - Extracts from upstream `extensions["offer-receipt"].info`
107
+ * @see extractReceiptFromHeaders - Extracts receipt from settlement response headers
151
108
  */
152
- export interface X402PaymentRequired {
109
+ export interface X402OfferReceiptChallenge {
153
110
  /** List of acceptable payment terms */
154
111
  accepts: AcceptEntry[];
155
- /**
156
- * Index into accepts[] that the offer targets.
157
- *
158
- * IMPORTANT: This field is OUTSIDE the signed payload (unsigned envelope).
159
- * Verifiers MUST NOT rely on it as binding.
160
- * Treat as advisory hint only; always verify via term-matching.
161
- */
162
- acceptIndex?: number;
163
- /** Signed offer */
164
- offer: SignedOffer;
112
+ /** Signed offers */
113
+ offers: RawSignedOffer[];
165
114
  /** Resource URL being accessed */
166
115
  resourceUrl?: string;
167
116
  }
@@ -170,7 +119,7 @@ export interface X402PaymentRequired {
170
119
  */
171
120
  export interface X402SettlementResponse {
172
121
  /** Signed receipt proving settlement */
173
- receipt: SignedReceipt;
122
+ receipt: RawSignedReceipt;
174
123
  /** Resource URL that was accessed */
175
124
  resourceUrl?: string;
176
125
  /** Reference back to the offer */
@@ -178,14 +127,21 @@ export interface X402SettlementResponse {
178
127
  /**
179
128
  * Forward-compatibility: unknown extension fields from x402 evolution
180
129
  *
181
- * This allows the adapter to tolerate additions from upstream PRs
182
- * (e.g., #1004 TXID, #1015 fee extensions) without breaking.
183
130
  * Unknown fields are preserved in proofs but NOT copied to evidence.
184
131
  */
185
132
  extensions?: Record<string, unknown>;
186
133
  }
187
134
  /**
188
- * Result of offer verification
135
+ * Result of wire-level validation
136
+ */
137
+ export interface WireVerification {
138
+ /** Whether the wire structure is valid */
139
+ valid: boolean;
140
+ /** Verification errors (if invalid) */
141
+ errors: VerificationError[];
142
+ }
143
+ /**
144
+ * Result of offer term verification
189
145
  */
190
146
  export interface OfferVerification {
191
147
  /** Whether the offer is valid */
@@ -200,11 +156,6 @@ export interface OfferVerification {
200
156
  errors: VerificationError[];
201
157
  /**
202
158
  * Term-matching details (always populated for deterministic output)
203
- *
204
- * This makes mismatchDetected first-class in the verification output,
205
- * rather than requiring callers to pass it externally.
206
- *
207
- * All fields are required booleans for predictable downstream processing.
208
159
  */
209
160
  termMatching: {
210
161
  /** Method used: 'hint' (acceptIndex) or 'scan' (full array scan) */
@@ -216,7 +167,7 @@ export interface OfferVerification {
216
167
  };
217
168
  }
218
169
  /**
219
- * Result of receipt verification
170
+ * Result of receipt semantic verification
220
171
  */
221
172
  export interface ReceiptVerification {
222
173
  /** Whether the receipt is valid */
@@ -224,6 +175,32 @@ export interface ReceiptVerification {
224
175
  /** Verification errors (if invalid) */
225
176
  errors: VerificationError[];
226
177
  }
178
+ /**
179
+ * Options for offer-receipt consistency verification
180
+ */
181
+ export interface ConsistencyOptions {
182
+ /**
183
+ * Candidate payer addresses to verify against receipt.payer
184
+ *
185
+ * If provided, receipt.payer must match one of these addresses
186
+ * (using the network-aware address comparator).
187
+ * Upstream client verification checks payer against wallet addresses.
188
+ */
189
+ payerCandidates?: string[];
190
+ /**
191
+ * Address comparator for payer matching (default: defaultAddressComparator)
192
+ */
193
+ addressComparator?: AddressComparator;
194
+ }
195
+ /**
196
+ * Result of offer-receipt consistency verification
197
+ */
198
+ export interface ConsistencyVerification {
199
+ /** Whether offer and receipt are consistent */
200
+ valid: boolean;
201
+ /** Consistency errors (if inconsistent) */
202
+ errors: VerificationError[];
203
+ }
227
204
  /**
228
205
  * Structured verification error
229
206
  */
@@ -238,12 +215,12 @@ export interface VerificationError {
238
215
  /**
239
216
  * Verification status metadata
240
217
  *
241
- * Records what verification was performed and how.
242
- * CRITICAL: `valid: true` from verifyOffer/verifyReceipt does NOT imply
243
- * cryptographic signature validity unless a crypto verifier was supplied.
218
+ * Records what verification was performed and how across all layers.
219
+ * CRITICAL: `valid: true` does NOT imply cryptographic signature validity
220
+ * unless a crypto verifier was supplied.
244
221
  */
245
222
  export interface VerificationStatus {
246
- /** Structural validation always performed by this adapter */
223
+ /** Wire-level structural validation (always performed) */
247
224
  structural: true;
248
225
  /** Cryptographic signature verification status */
249
226
  cryptographic: {
@@ -264,33 +241,54 @@ export interface VerificationStatus {
264
241
  method: 'hint' | 'scan';
265
242
  /** Index of matched accept entry */
266
243
  matchedIndex?: number;
267
- /** Why term-matching wasn't performed (if matched is false and no verification was done) */
244
+ /** Why term-matching wasn't performed */
268
245
  reason?: 'not_verified';
269
246
  };
247
+ /** Offer-receipt consistency status */
248
+ consistency?: {
249
+ /** Whether consistency was checked */
250
+ checked: boolean;
251
+ /** Whether offer and receipt are consistent */
252
+ valid?: boolean;
253
+ };
254
+ /** Signer authorization status */
255
+ signerAuthorization?: {
256
+ /** Whether authorization was checked */
257
+ checked: boolean;
258
+ /** Whether the signer is authorized */
259
+ authorized?: boolean;
260
+ /** Authorization method used */
261
+ method?: string;
262
+ };
270
263
  }
271
264
  /**
272
265
  * PEAC interaction record for an x402 Offer/Receipt extension flow
273
266
  *
274
- * This is the canonical record produced by mapping x402 proofs
275
- * into the PEAC evidence layer.
276
- *
277
- * NOTE: This profile targets the x402 Offer/Receipt EXTENSION,
278
- * NOT the baseline x402 header flow.
267
+ * Produced by mapping x402 proofs into the PEAC evidence layer.
268
+ * Evidence fields are derived from normalized payloads (Layer B).
269
+ * Raw upstream artifacts are preserved as-is in proofs.
279
270
  */
280
271
  export interface X402PeacRecord {
281
272
  /** Record format version (extension profile, not baseline) */
282
273
  version: typeof X402_OFFER_RECEIPT_PROFILE;
283
- /** Raw x402 proofs (preserved for audit) */
274
+ /**
275
+ * Raw x402 proofs (preserved for audit)
276
+ *
277
+ * These are the exact wire artifacts, never mutated or reconstructed.
278
+ * Proof preservation discipline: raw artifacts in, raw artifacts stored.
279
+ */
284
280
  proofs: {
285
281
  x402: {
286
- offer: SignedOffer;
287
- receipt: SignedReceipt;
282
+ offer: RawSignedOffer;
283
+ receipt: RawSignedReceipt;
288
284
  };
289
285
  };
290
- /** Normalized evidence fields (extracted from signed payloads) */
286
+ /** Normalized evidence fields (extracted from signed payloads via Layer B) */
291
287
  evidence: {
292
- /** Offer expiry (epoch seconds, from signed payload) */
293
- validUntil: number;
288
+ /** Resource URL (from offer, signed) */
289
+ resourceUrl: string;
290
+ /** Offer expiry (epoch seconds, from offer; undefined = no expiry) */
291
+ validUntil?: number;
294
292
  /** CAIP-2 network */
295
293
  network: string;
296
294
  /** Payment recipient (neutral naming; x402 calls this "payTo") */
@@ -299,21 +297,25 @@ export interface X402PeacRecord {
299
297
  asset: string;
300
298
  /** Payment amount in minor units */
301
299
  amount: string;
302
- /** On-chain transaction hash (from receipt) */
303
- txHash: string;
304
- /** Schema version (from offer) */
305
- offerVersion: string;
300
+ /** Schema version (from offer, number) */
301
+ offerVersion: number;
302
+ /** Payer address (from receipt) */
303
+ payer?: string;
304
+ /** Receipt issuance timestamp (from receipt, epoch seconds) */
305
+ issuedAt?: number;
306
+ /** On-chain transaction reference (from receipt, optional; privacy-minimal) */
307
+ transaction?: string;
306
308
  /** Schema version (from receipt, if present) */
307
- receiptVersion?: string;
309
+ receiptVersion?: number;
308
310
  };
309
311
  /** Unsigned metadata and verification status */
310
312
  hints: {
311
313
  acceptIndex?: {
312
- /** The acceptIndex value from the envelope */
314
+ /** The acceptIndex value from the offer envelope */
313
315
  value: number;
314
- /** Always true -- acceptIndex is outside the signature */
316
+ /** Always true: acceptIndex is outside the signature */
315
317
  untrusted: true;
316
- /** True if acceptIndex pointed to a non-matching entry (when mismatchPolicy != 'fail') */
318
+ /** True if acceptIndex pointed to a non-matching entry */
317
319
  mismatchDetected?: boolean;
318
320
  };
319
321
  resourceUrl?: string;
@@ -341,52 +343,198 @@ export interface X402PeacRecord {
341
343
  * - 'ignore_and_scan': Skip hint check entirely, always scan
342
344
  */
343
345
  export type MismatchPolicy = 'fail' | 'warn_and_scan' | 'ignore_and_scan';
346
+ /**
347
+ * Network-aware address comparison function
348
+ *
349
+ * Default behavior:
350
+ * - EVM networks (eip155:*): case-insensitive (EIP-55 mixed-case is cosmetic)
351
+ * - All other networks: exact string comparison (fail-closed for unknown formats)
352
+ *
353
+ * Override via `X402AdapterConfig.addressComparator` or
354
+ * `ConsistencyOptions.addressComparator` for specific network requirements.
355
+ *
356
+ * @param a - First address
357
+ * @param b - Second address
358
+ * @param network - CAIP-2 network identifier
359
+ * @returns True if addresses are equivalent for the given network
360
+ */
361
+ export type AddressComparator = (a: string, b: string, network: string) => boolean;
362
+ /**
363
+ * Default network-aware address comparator
364
+ *
365
+ * EVM networks (eip155:*): case-insensitive (EIP-55 checksums are cosmetic encoding).
366
+ * All other networks: exact string comparison (fail-closed for unknown formats).
367
+ */
368
+ export declare function defaultAddressComparator(a: string, b: string, network: string): boolean;
344
369
  /**
345
370
  * Adapter configuration
346
371
  *
347
- * This adapter implements the PaymentProofAdapter interface from @peac/adapter-core.
348
- * See docs/specs/X402-PROFILE.md for the normative specification.
372
+ * Defaults match upstream x402 behavior:
373
+ * - `offerExpiryPolicy: 'allow_missing'` (upstream treats validUntil as optional)
374
+ * - `receiptRecencySeconds: 3600` (upstream client default)
375
+ *
376
+ * Stricter options available via opt-in:
377
+ * - `offerExpiryPolicy: 'require'` rejects offers without expiry
378
+ * - `receiptRecencySeconds: 300` tightens freshness window
379
+ * - `signatureVerificationPolicy: 'require'` mandates crypto verification
349
380
  */
350
381
  export interface X402AdapterConfig {
351
- /** Supported offer versions (default: ["1"]) */
352
- supportedVersions?: string[];
382
+ /** Supported offer/receipt versions (default: [1]) */
383
+ supportedVersions?: number[];
353
384
  /** Clock skew tolerance in seconds for validUntil (default: 60) */
354
385
  clockSkewSeconds?: number;
355
386
  /** Current time override for testing (epoch seconds) */
356
387
  nowSeconds?: number;
357
388
  /**
358
389
  * How to handle acceptIndex mismatch (default: "fail")
359
- *
360
- * When "warn_and_scan" or "ignore_and_scan", the adapter will:
361
- * 1. Record the mismatch in hints.acceptIndex.mismatchDetected
362
- * 2. Continue verification via full scan
363
- * 3. Succeed if scan finds a unique match
364
390
  */
365
391
  mismatchPolicy?: MismatchPolicy;
366
392
  /**
367
393
  * Maximum number of accept entries allowed (default: 128)
368
- *
369
- * DoS protection: prevents CPU exhaustion from large accepts arrays.
370
394
  */
371
395
  maxAcceptEntries?: number;
372
396
  /**
373
397
  * Maximum total bytes for accepts array JSON (default: 256 KiB)
374
- *
375
- * DoS protection: prevents memory exhaustion from large payloads.
376
- * Note: This requires caller to pass raw JSON size if available.
377
398
  */
378
399
  maxTotalAcceptsBytes?: number;
379
400
  /**
380
401
  * Enable strict CAIP-2 network format validation (default: true)
381
- *
382
- * When enabled, validates network strings match CAIP-2 format (namespace:reference).
383
402
  */
384
403
  strictNetworkValidation?: boolean;
385
404
  /**
386
405
  * Enable strict amount validation (default: true)
387
- *
388
- * When enabled, validates amount is a non-negative integer string.
389
406
  */
390
407
  strictAmountValidation?: boolean;
408
+ /**
409
+ * Offer expiry policy (default: 'allow_missing')
410
+ *
411
+ * Upstream x402 treats validUntil as optional (EIP-712 encodes
412
+ * unused values as `0`). The default matches upstream behavior.
413
+ *
414
+ * - 'allow_missing': accept offers without expiry (default)
415
+ * - 'require': reject offers without expiry
416
+ */
417
+ offerExpiryPolicy?: 'require' | 'allow_missing';
418
+ /**
419
+ * Signature verification policy (default: 'none')
420
+ *
421
+ * - 'none': no crypto verification (structural only)
422
+ * - 'verify_if_configured': verify if CryptoVerifier is supplied
423
+ * - 'require': fail if CryptoVerifier is not supplied
424
+ */
425
+ signatureVerificationPolicy?: 'none' | 'verify_if_configured' | 'require';
426
+ /**
427
+ * Signer authorization policy (default: 'none')
428
+ *
429
+ * - 'none': no signer authorization
430
+ * - 'verify_if_configured': authorize if SignerAuthorizer is supplied
431
+ * - 'require': fail if SignerAuthorizer is not supplied
432
+ */
433
+ signerAuthorizationPolicy?: 'none' | 'verify_if_configured' | 'require';
434
+ /**
435
+ * Address comparator for payTo/payer matching (default: defaultAddressComparator)
436
+ *
437
+ * Network-aware: EVM is case-insensitive, others exact.
438
+ */
439
+ addressComparator?: AddressComparator;
440
+ /**
441
+ * Maximum compact JWS byte length (default: 64 KB)
442
+ */
443
+ maxCompactJwsBytes?: number;
444
+ /**
445
+ * Receipt recency window in seconds (default: 3600)
446
+ *
447
+ * Default matches upstream x402 client (1 hour).
448
+ * Receipts with issuedAt older than this are rejected.
449
+ */
450
+ receiptRecencySeconds?: number;
451
+ }
452
+ /**
453
+ * Result of cryptographic verification
454
+ */
455
+ export interface CryptoResult {
456
+ /** Whether the signature is valid */
457
+ valid: boolean;
458
+ /** Recovered/resolved signer identity */
459
+ signer?: string;
460
+ /** JWS algorithm used (from header, e.g., 'ES256', 'EdDSA') */
461
+ alg?: string;
462
+ /** JWS key ID (from header) */
463
+ kid?: string;
464
+ /** Error message if verification failed */
465
+ error?: string;
466
+ }
467
+ /**
468
+ * Opt-in cryptographic verifier interface
469
+ *
470
+ * Callers inject an implementation to enable signature verification.
471
+ * The adapter core has no crypto dependencies.
472
+ *
473
+ * Implementation constraints:
474
+ * - MUST NOT perform live network I/O (no key fetching, no DID resolution)
475
+ * - Key material MUST be provided via injection or pre-fetched
476
+ * - MUST enforce algorithm allowlists (no implicit algorithm trust)
477
+ * - MUST preserve `kid` and `alg` from JWS headers in CryptoResult
478
+ * - If DID-based: use pluggable resolver with caching, allowlists,
479
+ * timeouts, offline mode, and SSRF controls
480
+ */
481
+ export interface CryptoVerifier {
482
+ /** Verify a JWS compact serialization */
483
+ verifyJWS(compactJws: string): Promise<CryptoResult>;
484
+ /** Verify an EIP-712 typed data signature */
485
+ verifyEIP712(payload: unknown, signature: string, domain: EIP712Domain): Promise<CryptoResult>;
486
+ }
487
+ /**
488
+ * EIP-712 domain parameters for signature verification
489
+ */
490
+ export interface EIP712Domain {
491
+ name?: string;
492
+ version?: string;
493
+ chainId?: number;
494
+ verifyingContract?: string;
495
+ salt?: string;
496
+ }
497
+ /**
498
+ * Opt-in signer authorization interface
499
+ *
500
+ * Determines whether a recovered signer is authorized for a given resource.
501
+ * This is verifier policy, not payload data (per upstream PR #935 conclusion).
502
+ *
503
+ * Implementation constraints:
504
+ * - MUST NOT perform live network I/O in core verification path
505
+ * - Resolver injection only: callers provide pre-fetched or cached material
506
+ * - For `did:web` resolution: require explicit timeout (default 5s),
507
+ * caching (default 5min), allowlist, and SSRF controls
508
+ * - Results are stored separately from signature verification in record metadata
509
+ */
510
+ export interface SignerAuthorizer {
511
+ /** Check if a signer is authorized for a resource */
512
+ authorize(signer: string, resourceUrl: string, context: AuthorizationContext): Promise<AuthorizationResult>;
513
+ }
514
+ /**
515
+ * Context provided to the signer authorizer
516
+ *
517
+ * Preserves `kid` and `alg` from JWS headers for authorization decisions.
518
+ */
519
+ export interface AuthorizationContext {
520
+ /** CAIP-2 network identifier */
521
+ network: string;
522
+ /** Signature format */
523
+ format: 'jws' | 'eip712';
524
+ /** JWS kid header value (if JWS format) */
525
+ kid?: string;
526
+ /** JWS algorithm (from header, e.g., 'ES256', 'EdDSA') */
527
+ alg?: string;
528
+ }
529
+ /**
530
+ * Result of signer authorization
531
+ */
532
+ export interface AuthorizationResult {
533
+ /** Whether the signer is authorized */
534
+ authorized: boolean;
535
+ /** Authorization method used (e.g., 'dns-txt', 'did-web', 'erc-8004', 'manual') */
536
+ method?: string;
537
+ /** Reason for authorization decision */
538
+ reason?: string;
391
539
  }
392
540
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}