ox 0.14.10 → 0.14.12

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 (44) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/_cjs/erc8021/Attribution.js +7 -1
  3. package/_cjs/erc8021/Attribution.js.map +1 -1
  4. package/_cjs/tempo/KeyAuthorization.js +141 -21
  5. package/_cjs/tempo/KeyAuthorization.js.map +1 -1
  6. package/_cjs/tempo/Period.js +31 -0
  7. package/_cjs/tempo/Period.js.map +1 -0
  8. package/_cjs/tempo/index.js +2 -1
  9. package/_cjs/tempo/index.js.map +1 -1
  10. package/_cjs/version.js +1 -1
  11. package/_cjs/webauthn/Credential.js +6 -0
  12. package/_cjs/webauthn/Credential.js.map +1 -1
  13. package/_esm/erc8021/Attribution.js +7 -1
  14. package/_esm/erc8021/Attribution.js.map +1 -1
  15. package/_esm/tempo/KeyAuthorization.js +150 -22
  16. package/_esm/tempo/KeyAuthorization.js.map +1 -1
  17. package/_esm/tempo/Period.js +92 -0
  18. package/_esm/tempo/Period.js.map +1 -0
  19. package/_esm/tempo/index.js +29 -0
  20. package/_esm/tempo/index.js.map +1 -1
  21. package/_esm/version.js +1 -1
  22. package/_esm/webauthn/Credential.js +9 -0
  23. package/_esm/webauthn/Credential.js.map +1 -1
  24. package/_types/erc8021/Attribution.d.ts +2 -0
  25. package/_types/erc8021/Attribution.d.ts.map +1 -1
  26. package/_types/tempo/KeyAuthorization.d.ts +91 -19
  27. package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
  28. package/_types/tempo/Period.d.ts +78 -0
  29. package/_types/tempo/Period.d.ts.map +1 -0
  30. package/_types/tempo/index.d.ts +29 -0
  31. package/_types/tempo/index.d.ts.map +1 -1
  32. package/_types/version.d.ts +1 -1
  33. package/_types/webauthn/Credential.d.ts.map +1 -1
  34. package/erc8021/Attribution.ts +12 -1
  35. package/package.json +6 -1
  36. package/tempo/KeyAuthorization.test.ts +312 -3
  37. package/tempo/KeyAuthorization.ts +277 -51
  38. package/tempo/Period/package.json +6 -0
  39. package/tempo/Period.test.ts +44 -0
  40. package/tempo/Period.ts +97 -0
  41. package/tempo/e2e.test.ts +890 -1
  42. package/tempo/index.ts +30 -0
  43. package/version.ts +1 -1
  44. package/webauthn/Credential.ts +15 -0
@@ -154,6 +154,19 @@ export function from(authorization, options = {}) {
154
154
  })),
155
155
  }
156
156
  : {}),
157
+ ...(auth.scopes
158
+ ? {
159
+ scopes: auth.scopes.map((scope) => ({
160
+ ...scope,
161
+ contractAddress: TempoAddress.resolve(scope.contractAddress),
162
+ ...(scope.recipients
163
+ ? {
164
+ recipients: scope.recipients.map((r) => TempoAddress.resolve(r)),
165
+ }
166
+ : {}),
167
+ })),
168
+ }
169
+ : {}),
157
170
  };
158
171
  if (options.signature)
159
172
  return {
@@ -188,8 +201,22 @@ export function from(authorization, options = {}) {
188
201
  * @returns A signed {@link ox#AuthorizationTempo.AuthorizationTempo}.
189
202
  */
190
203
  export function fromRpc(authorization) {
191
- const { chainId, keyId, expiry, limits, keyType } = authorization;
204
+ const { allowedCalls, chainId, keyId, expiry, limits, keyType } = authorization;
192
205
  const signature = SignatureEnvelope.fromRpc(authorization.signature);
206
+ // Unflatten nested allowedCalls into flat scopes
207
+ const scopes = allowedCalls
208
+ ? allowedCalls.flatMap((callScope) => {
209
+ if (!callScope.selectorRules || callScope.selectorRules.length === 0)
210
+ return [{ contractAddress: callScope.target }];
211
+ return callScope.selectorRules.map((rule) => ({
212
+ contractAddress: callScope.target,
213
+ selector: normalizeSelector(rule.selector),
214
+ ...(rule.recipients && rule.recipients.length > 0
215
+ ? { recipients: rule.recipients }
216
+ : {}),
217
+ }));
218
+ })
219
+ : undefined;
193
220
  return {
194
221
  address: keyId,
195
222
  chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
@@ -197,7 +224,11 @@ export function fromRpc(authorization) {
197
224
  limits: limits?.map((limit) => ({
198
225
  token: limit.token,
199
226
  limit: BigInt(limit.limit),
227
+ ...(limit.period && hexToNumber(limit.period) > 0
228
+ ? { period: hexToNumber(limit.period) }
229
+ : {}),
200
230
  })),
231
+ ...(scopes ? { scopes } : {}),
201
232
  signature,
202
233
  type: keyType,
203
234
  };
@@ -243,7 +274,7 @@ export function fromRpc(authorization) {
243
274
  */
244
275
  export function fromTuple(tuple) {
245
276
  const [authorization, signatureSerialized] = tuple;
246
- const [chainId, keyType_hex, keyId, expiry, limits] = authorization;
277
+ const [chainId, keyType_hex, keyId, expiry, limits, scopes] = authorization;
247
278
  const keyType = (() => {
248
279
  switch (keyType_hex) {
249
280
  case '0x':
@@ -259,16 +290,49 @@ export function fromTuple(tuple) {
259
290
  })();
260
291
  const args = {
261
292
  address: keyId,
262
- expiry: typeof expiry !== 'undefined' ? hexToNumber(expiry) : undefined,
293
+ expiry: typeof expiry !== 'undefined'
294
+ ? hexToNumber(expiry) || undefined
295
+ : undefined,
263
296
  type: keyType,
264
297
  chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
265
- ...(typeof expiry !== 'undefined' ? { expiry: hexToNumber(expiry) } : {}),
266
- ...(typeof limits !== 'undefined'
298
+ ...(typeof expiry !== 'undefined'
299
+ ? { expiry: hexToNumber(expiry) || undefined }
300
+ : {}),
301
+ ...(typeof limits !== 'undefined' &&
302
+ Array.isArray(limits) &&
303
+ limits.length > 0
267
304
  ? {
268
- limits: limits.map(([token, limit]) => ({
269
- token,
270
- limit: hexToBigint(limit),
271
- })),
305
+ limits: limits.map((limitTuple) => {
306
+ const [token, limit, period] = limitTuple;
307
+ return {
308
+ token,
309
+ limit: hexToBigint(limit),
310
+ ...(typeof period !== 'undefined'
311
+ ? { period: hexToNumber(period) }
312
+ : {}),
313
+ };
314
+ }),
315
+ }
316
+ : {}),
317
+ ...(typeof scopes !== 'undefined' && Array.isArray(scopes)
318
+ ? {
319
+ scopes: scopes.flatMap((scopeTuple) => {
320
+ const [contractAddress, selectorRules] = scopeTuple;
321
+ // If no selector rules, this is an address-only scope
322
+ if (!Array.isArray(selectorRules) || selectorRules.length === 0)
323
+ return [{ contractAddress }];
324
+ // Flatten each selector rule into a separate scope entry
325
+ return selectorRules.map((ruleTuple) => {
326
+ const [selector, recipients] = ruleTuple;
327
+ return {
328
+ contractAddress,
329
+ selector,
330
+ ...(Array.isArray(recipients) && recipients.length > 0
331
+ ? { recipients }
332
+ : {}),
333
+ };
334
+ });
335
+ }),
272
336
  }
273
337
  : {}),
274
338
  };
@@ -434,17 +498,42 @@ export function serialize(authorization) {
434
498
  * @returns An RPC-formatted Key Authorization.
435
499
  */
436
500
  export function toRpc(authorization) {
437
- const { address, chainId, expiry, limits, type, signature } = authorization;
501
+ const { address, scopes, chainId, expiry, limits, type, signature } = authorization;
502
+ // Group flat scopes by contractAddress into nested allowedCalls wire format
503
+ const allowedCalls = (() => {
504
+ if (!scopes)
505
+ return undefined;
506
+ const grouped = new Map();
507
+ for (const scope of scopes) {
508
+ const key = scope.contractAddress;
509
+ if (!grouped.has(key))
510
+ grouped.set(key, []);
511
+ if (scope.selector) {
512
+ grouped.get(key).push({
513
+ selector: scope.selector,
514
+ ...(scope.recipients && scope.recipients.length > 0
515
+ ? { recipients: scope.recipients }
516
+ : {}),
517
+ });
518
+ }
519
+ }
520
+ return [...grouped.entries()].map(([target, selectorRules]) => ({
521
+ target: target,
522
+ ...(selectorRules.length > 0 ? { selectorRules } : {}),
523
+ }));
524
+ })();
438
525
  return {
439
526
  chainId: chainId === 0n ? '0x' : Hex.fromNumber(chainId),
440
527
  expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) : null,
441
- limits: limits?.map(({ token, limit }) => ({
528
+ keyId: TempoAddress.resolve(address),
529
+ keyType: type,
530
+ limits: limits?.map(({ token, limit, period }) => ({
442
531
  token,
443
532
  limit: Hex.fromNumber(limit),
533
+ ...(period ? { period: numberToHex(period) } : {}),
444
534
  })),
445
- keyId: TempoAddress.resolve(address),
446
535
  signature: SignatureEnvelope.toRpc(signature),
447
- keyType: type,
536
+ ...(allowedCalls ? { allowedCalls } : {}),
448
537
  };
449
538
  }
450
539
  /**
@@ -479,7 +568,7 @@ export function toRpc(authorization) {
479
568
  * @returns A Tempo Key Authorization tuple.
480
569
  */
481
570
  export function toTuple(authorization) {
482
- const { address, chainId, expiry, limits } = authorization;
571
+ const { address, chainId, scopes, expiry, limits } = authorization;
483
572
  const signature = authorization.signature
484
573
  ? SignatureEnvelope.serialize(authorization.signature)
485
574
  : undefined;
@@ -495,20 +584,52 @@ export function toTuple(authorization) {
495
584
  throw new Error(`Invalid key type: ${authorization.type}`);
496
585
  }
497
586
  })();
498
- const limitsValue = limits?.map((limit) => [
499
- limit.token,
500
- bigintToHex(limit.limit),
501
- ]);
587
+ const limitsValue = limits?.map((limit) => {
588
+ const tuple = [limit.token, bigintToHex(limit.limit)];
589
+ // Canonical: omit period when 0 (one-time limit)
590
+ if (limit.period && limit.period > 0)
591
+ tuple.push(numberToHex(limit.period));
592
+ return tuple;
593
+ });
594
+ // Group flat scopes by contractAddress for wire format
595
+ const callsValue = (() => {
596
+ if (!scopes)
597
+ return undefined;
598
+ const grouped = new Map();
599
+ for (const scope of scopes) {
600
+ const key = scope.contractAddress;
601
+ if (!grouped.has(key))
602
+ grouped.set(key, []);
603
+ if (scope.selector) {
604
+ grouped
605
+ .get(key)
606
+ .push([
607
+ scope.selector,
608
+ (scope.recipients ??
609
+ []),
610
+ ]);
611
+ }
612
+ }
613
+ return [...grouped.entries()].map(([contractAddress, selectorRules]) => [
614
+ contractAddress,
615
+ selectorRules.map(([selector, recipients]) => [selector, recipients]),
616
+ ]);
617
+ })();
502
618
  const authorizationTuple = [
503
619
  bigintToHex(chainId),
504
620
  type,
505
621
  address,
506
- // expiry is required in the tuple when limits are present
507
- typeof expiry === 'number' || limitsValue
622
+ // expiry is required in the tuple when limits or scopes are present
623
+ // expiry=0 is treated the same as undefined (never expires)
624
+ (expiry !== null && expiry !== undefined && expiry !== 0) ||
625
+ limitsValue ||
626
+ callsValue
508
627
  ? numberToHex(expiry ?? 0)
509
628
  : undefined,
510
- limitsValue,
511
- ].filter(Boolean);
629
+ // limits is required in the tuple when scopes are present
630
+ limitsValue || callsValue ? (limitsValue ?? []) : undefined,
631
+ callsValue,
632
+ ].filter((x) => typeof x !== 'undefined');
512
633
  return [authorizationTuple, ...(signature ? [signature] : [])];
513
634
  }
514
635
  function bigintToHex(value) {
@@ -523,4 +644,11 @@ function hexToBigint(hex) {
523
644
  function hexToNumber(hex) {
524
645
  return hex === '0x' ? 0 : Hex.toNumber(hex);
525
646
  }
647
+ function normalizeSelector(selector) {
648
+ if (typeof selector === 'string')
649
+ return selector;
650
+ if (Array.isArray(selector))
651
+ return Hex.fromBytes(new Uint8Array(selector));
652
+ return selector;
653
+ }
526
654
  //# sourceMappingURL=KeyAuthorization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Returns the number of seconds in `n` days.
3
+ *
4
+ * @example
5
+ * ```ts twoslash
6
+ * import { Period } from 'ox/tempo'
7
+ *
8
+ * const seconds = Period.days(1) // 86400
9
+ * ```
10
+ */
11
+ export function days(n) {
12
+ return n * 24 * 60 * 60;
13
+ }
14
+ /**
15
+ * Returns the number of seconds in `n` hours.
16
+ *
17
+ * @example
18
+ * ```ts twoslash
19
+ * import { Period } from 'ox/tempo'
20
+ *
21
+ * const seconds = Period.hours(2) // 7200
22
+ * ```
23
+ */
24
+ export function hours(n) {
25
+ return n * 60 * 60;
26
+ }
27
+ /**
28
+ * Returns the number of seconds in `n` minutes.
29
+ *
30
+ * @example
31
+ * ```ts twoslash
32
+ * import { Period } from 'ox/tempo'
33
+ *
34
+ * const seconds = Period.minutes(5) // 300
35
+ * ```
36
+ */
37
+ export function minutes(n) {
38
+ return n * 60;
39
+ }
40
+ /**
41
+ * Returns the number of seconds in `n` months (30 days).
42
+ *
43
+ * @example
44
+ * ```ts twoslash
45
+ * import { Period } from 'ox/tempo'
46
+ *
47
+ * const seconds = Period.months(1) // 2592000
48
+ * ```
49
+ */
50
+ export function months(n) {
51
+ return n * 30 * 24 * 60 * 60;
52
+ }
53
+ /**
54
+ * Returns the number of seconds in `n` seconds.
55
+ *
56
+ * @example
57
+ * ```ts twoslash
58
+ * import { Period } from 'ox/tempo'
59
+ *
60
+ * const seconds = Period.seconds(30) // 30
61
+ * ```
62
+ */
63
+ export function seconds(n) {
64
+ return n;
65
+ }
66
+ /**
67
+ * Returns the number of seconds in `n` weeks.
68
+ *
69
+ * @example
70
+ * ```ts twoslash
71
+ * import { Period } from 'ox/tempo'
72
+ *
73
+ * const seconds = Period.weeks(1) // 604800
74
+ * ```
75
+ */
76
+ export function weeks(n) {
77
+ return n * 7 * 24 * 60 * 60;
78
+ }
79
+ /**
80
+ * Returns the number of seconds in `n` years (365 days).
81
+ *
82
+ * @example
83
+ * ```ts twoslash
84
+ * import { Period } from 'ox/tempo'
85
+ *
86
+ * const seconds = Period.years(1) // 31536000
87
+ * ```
88
+ */
89
+ export function years(n) {
90
+ return n * 365 * 24 * 60 * 60;
91
+ }
92
+ //# sourceMappingURL=Period.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Period.js","sourceRoot":"","sources":["../../tempo/Period.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,IAAI,CAAC,CAAS;IAC5B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AACzB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;AACpB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,CAAA;AACV,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAC/B,CAAC"}
@@ -71,6 +71,35 @@ export * as AuthorizationTempo from './AuthorizationTempo.js';
71
71
  * @category Reference
72
72
  */
73
73
  export * as KeyAuthorization from './KeyAuthorization.js';
74
+ /**
75
+ * Utilities for constructing period durations (in seconds) for recurring spending limits.
76
+ *
77
+ * Periods define the reset interval for access key spending limits. A spending limit with a
78
+ * period will reset every `period` seconds. For example, a daily spending limit uses
79
+ * `Period.days(1)` (86400 seconds).
80
+ *
81
+ * @example
82
+ * ```ts twoslash
83
+ * import { Value } from 'ox'
84
+ * import { KeyAuthorization, Period } from 'ox/tempo'
85
+ *
86
+ * const authorization = KeyAuthorization.from({
87
+ * address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
88
+ * chainId: 4217n,
89
+ * type: 'secp256k1',
90
+ * limits: [{
91
+ * token: '0x20c0000000000000000000000000000000000001',
92
+ * limit: Value.from('100', 6),
93
+ * period: Period.days(1), // resets daily
94
+ * }],
95
+ * })
96
+ * ```
97
+ *
98
+ * [Access Keys Specification](https://docs.tempo.xyz/protocol/transactions/spec-tempo-transaction#access-keys)
99
+ *
100
+ * @category Reference
101
+ */
102
+ export * as Period from './Period.js';
74
103
  /**
75
104
  * Pool ID utilities for computing pool identifiers from token pairs.
76
105
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}
package/_esm/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** @internal */
2
- export const version = '0.14.10';
2
+ export const version = '0.14.12';
3
3
  //# sourceMappingURL=version.js.map
@@ -1,4 +1,5 @@
1
1
  import * as Base64 from '../core/Base64.js';
2
+ import * as Cbor from '../core/Cbor.js';
2
3
  import * as PublicKey from '../core/PublicKey.js';
3
4
  import { base64UrlOptions, bufferSourceToBytes, bytesToArrayBuffer, responseKeys, } from './internal/utils.js';
4
5
  /**
@@ -38,6 +39,14 @@ export function serialize(credential) {
38
39
  if (value instanceof ArrayBuffer)
39
40
  response[key] = Base64.fromBytes(new Uint8Array(value), base64UrlOptions);
40
41
  }
42
+ // Some browsers/passkey providers (e.g. Firefox + 1Password) don't expose
43
+ // `authenticatorData` on the response object. Fall back to extracting it
44
+ // from the CBOR-encoded `attestationObject` which always contains `authData`.
45
+ if (!response.authenticatorData) {
46
+ const attestation = Cbor.decode(new Uint8Array(attestationObject));
47
+ if (attestation.authData)
48
+ response.authenticatorData = Base64.fromBytes(attestation.authData, base64UrlOptions);
49
+ }
41
50
  return {
42
51
  attestationObject: Base64.fromBytes(new Uint8Array(attestationObject), base64UrlOptions),
43
52
  clientDataJSON: Base64.fromBytes(new Uint8Array(clientDataJSON), base64UrlOptions),
@@ -1 +1 @@
1
- {"version":3,"file":"Credential.js","sourceRoot":"","sources":["../../webauthn/Credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAI3C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,qBAAqB,CAAA;AAqB5B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,SAAS,CAAC,UAAsB;IAC9C,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,UAAU,CAAA;IAE5E,MAAM,QAAQ,GAAG,EAA4B,CAAA;IAC7C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,QAA8C,CAAA;QAC5D,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAClB,qEAAqE;QACrE,qEAAqE;QACrE,yBAAyB;QACzB,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GACV,MAAM,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAoB,CAAA;YAChE,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;YACpB,IAAI,OAAO,EAAE,KAAK,UAAU;gBAAE,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClD,CAAC;QACD,IAAI,KAAK,YAAY,WAAW;YAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAA;IAC7E,CAAC;IAED,OAAO;QACL,iBAAiB,EAAE,MAAM,CAAC,SAAS,CACjC,IAAI,UAAU,CAAC,iBAAiB,CAAC,EACjC,gBAAgB,CACjB;QACD,cAAc,EAAE,MAAM,CAAC,SAAS,CAC9B,IAAI,UAAU,CAAC,cAAc,CAAC,EAC9B,gBAAgB,CACjB;QACD,EAAE;QACF,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;QACrC,GAAG,EAAE;YACH,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,uBAAuB,EAAE,GAAG,CAAC,uBAAuB;YACpD,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;YACzE,QAAQ,EAAE,QAAwD;SACnE;KACF,CAAA;AACH,CAAC;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,WAAW,CAAC,UAA4B;IACtD,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,UAAU,CAAA;IAE5E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAgC,CAAA;IACnE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAI,GAAG,CAAC,QAA8C,CAAC,GAAG,CAAC,CAAA;QACtE,IAAI,KAAK;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,OAAO;QACL,iBAAiB,EAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACxE,cAAc,EAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClE,EAAE;QACF,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;QACpC,GAAG,EAAE;YACH,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,uBAAuB,EAAE,GAAG,CAAC,uBAAuB;YACpD,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpD,QAAQ,EAAE,QAAkD;YAC5D,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;SACtC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Credential.js","sourceRoot":"","sources":["../../webauthn/Credential.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,8 @@ export type AttributionSchemaId2 = {
50
50
  appCode?: string | undefined;
51
51
  /** Wallet attribution code. */
52
52
  walletCode?: string | undefined;
53
+ /** Service codes identifying additional service providers (e.g., block builders, relayers, solvers). */
54
+ serviceCodes?: readonly string[] | undefined;
53
55
  /** Custom code registries keyed by entity type. */
54
56
  registries?: AttributionSchemaId2Registries | undefined;
55
57
  /** Arbitrary metadata key-value pairs. */
@@ -1 +1 @@
1
- {"version":3,"file":"Attribution.d.ts","sourceRoot":"","sources":["../../erc8021/Attribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Attribution.d.ts","sourceRoot":"","sources":["../../erc8021/Attribution.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,15 @@ export type KeyAuthorization<signed extends boolean = boolean, bigintType = bigi
35
35
  /** Unix timestamp when key expires (undefined = never expires). */
36
36
  expiry?: numberType | null | undefined;
37
37
  /** TIP20 spending limits for this key. */
38
- limits?: readonly TokenLimit<bigintType, addressType>[] | undefined;
38
+ limits?: readonly TokenLimit<bigintType, numberType, addressType>[] | undefined;
39
+ /**
40
+ * Call scopes restricting which contracts/selectors this key can call.
41
+ *
42
+ * - `undefined` = unrestricted key (any call allowed)
43
+ * - `[]` = scoped mode with no calls allowed
44
+ * - `[...]` = only listed contract+selector combinations allowed
45
+ */
46
+ scopes?: readonly Scope<addressType>[] | undefined;
39
47
  /** Key type. (secp256k1, P256, WebAuthn). */
40
48
  type: SignatureEnvelope.Type;
41
49
  } & (signed extends true ? {
@@ -45,12 +53,39 @@ export type KeyAuthorization<signed extends boolean = boolean, bigintType = bigi
45
53
  });
46
54
  /** Input type for a Key Authorization. */
47
55
  export type Input = KeyAuthorization<false, bigint, number, TempoAddress.Address>;
48
- /** RPC representation of an {@link ox#KeyAuthorization.KeyAuthorization}. */
49
- export type Rpc = Omit<KeyAuthorization<false, Hex.Hex, Hex.Hex>, 'address' | 'signature' | 'type'> & {
56
+ /** RPC representation matching the node's wire format. */
57
+ export type Rpc = {
58
+ /** Allowed call scopes (node field: `allowedCalls`). */
59
+ allowedCalls?: readonly RpcCallScope[] | undefined;
60
+ /** Chain ID (hex quantity). */
61
+ chainId: Hex.Hex;
62
+ /** Expiry timestamp (hex quantity or null). */
63
+ expiry: Hex.Hex | null | undefined;
64
+ /** Key identifier. */
50
65
  keyId: Address.Address;
66
+ /** Key type. */
51
67
  keyType: SignatureEnvelope.Type;
68
+ /** Token spending limits. */
69
+ limits?: readonly RpcTokenLimit[] | undefined;
70
+ /** Signature envelope. */
52
71
  signature: SignatureEnvelope.SignatureEnvelopeRpc;
53
72
  };
73
+ /** RPC representation of a token limit (matches node's `TokenLimit` serde). */
74
+ export type RpcTokenLimit = {
75
+ token: Address.Address;
76
+ limit: Hex.Hex;
77
+ period?: Hex.Hex | undefined;
78
+ };
79
+ /** RPC representation of a call scope (matches node's `CallScope` serde). */
80
+ export type RpcCallScope = {
81
+ target: Address.Address;
82
+ selectorRules?: readonly RpcSelectorRule[];
83
+ };
84
+ /** RPC representation of a selector rule (matches node's `SelectorRule` serde). */
85
+ export type RpcSelectorRule = {
86
+ selector: Hex.Hex;
87
+ recipients?: readonly Address.Address[];
88
+ };
54
89
  /** Signed representation of a Key Authorization. */
55
90
  export type Signed<bigintType = bigint, numberType = number, addressType = Address.Address> = KeyAuthorization<true, bigintType, numberType, addressType>;
56
91
  type BaseTuple = readonly [
@@ -58,21 +93,51 @@ type BaseTuple = readonly [
58
93
  keyType: Hex.Hex,
59
94
  keyId: Address.Address
60
95
  ];
61
- /** Tuple representation of a Key Authorization. */
62
- export type Tuple<signed extends boolean = boolean> = signed extends true ? readonly [
63
- authorization: BaseTuple | readonly [...BaseTuple, expiry: Hex.Hex] | readonly [
64
- ...BaseTuple,
65
- expiry: Hex.Hex,
66
- limits: readonly [token: Address.Address, limit: Hex.Hex][]
67
- ],
68
- signature: Hex.Hex
69
- ] : readonly [
70
- authorization: BaseTuple | readonly [...BaseTuple, expiry: Hex.Hex] | readonly [
71
- ...BaseTuple,
72
- expiry: Hex.Hex,
73
- limits: readonly [token: Address.Address, limit: Hex.Hex][]
74
- ]
96
+ type TokenLimitTuple = readonly [token: Address.Address, limit: Hex.Hex] | readonly [token: Address.Address, limit: Hex.Hex, period: Hex.Hex];
97
+ type SelectorRuleTuple = readonly [
98
+ selector: Hex.Hex,
99
+ recipients: readonly Address.Address[]
75
100
  ];
101
+ type CallScopeTuple = readonly [
102
+ target: Address.Address,
103
+ selectorRules: readonly SelectorRuleTuple[]
104
+ ];
105
+ type AuthorizationTuple = BaseTuple | readonly [...BaseTuple, expiry: Hex.Hex] | readonly [...BaseTuple, expiry: Hex.Hex, limits: readonly TokenLimitTuple[]] | readonly [
106
+ ...BaseTuple,
107
+ expiry: Hex.Hex,
108
+ limits: readonly TokenLimitTuple[],
109
+ calls: readonly CallScopeTuple[]
110
+ ];
111
+ /** Tuple representation of a Key Authorization. */
112
+ export type Tuple<signed extends boolean = boolean> = signed extends true ? readonly [authorization: AuthorizationTuple, signature: Hex.Hex] : readonly [authorization: AuthorizationTuple];
113
+ /**
114
+ * Call scope entry restricting which contract, selector, and recipients an access key can use.
115
+ *
116
+ * Multiple entries with the same `contractAddress` are grouped by target on the wire.
117
+ *
118
+ * - `{ contractAddress }` = any selector on this contract
119
+ * - `{ contractAddress, selector }` = specific selector
120
+ * - `{ contractAddress, selector, recipients }` = selector + recipient constraint
121
+ *
122
+ * [TIP-1011 Specification](https://docs.tempo.xyz/protocol/transactions/tip-1011)
123
+ */
124
+ export type Scope<addressType = Address.Address> = {
125
+ /** Target contract address. */
126
+ contractAddress: addressType;
127
+ /**
128
+ * 4-byte function selector. Omit to allow any selector on this contract.
129
+ */
130
+ selector?: Hex.Hex | undefined;
131
+ /**
132
+ * Recipient allowlist for this selector (first ABI `address` argument).
133
+ *
134
+ * - `undefined` or `[]` = any recipient allowed
135
+ * - `[...]` = only listed recipients allowed
136
+ *
137
+ * Only valid for constrained selectors: `transfer`, `approve`, `transferWithMemo`.
138
+ */
139
+ recipients?: readonly addressType[] | undefined;
140
+ };
76
141
  /**
77
142
  * Token spending limit for access keys.
78
143
  *
@@ -81,11 +146,18 @@ export type Tuple<signed extends boolean = boolean> = signed extends true ? read
81
146
  *
82
147
  * [Access Keys Specification](https://docs.tempo.xyz/protocol/transactions/spec-tempo-transaction#access-keys)
83
148
  */
84
- export type TokenLimit<bigintType = bigint, addressType = Address.Address> = {
149
+ export type TokenLimit<bigintType = bigint, numberType = number, addressType = Address.Address> = {
85
150
  /** Address of the TIP-20 token. */
86
151
  token: addressType;
87
- /** Maximum spending amount for this token (enforced over the key's lifetime). */
152
+ /** Maximum spending amount for this token (enforced over the key's lifetime, or per period if `period` \> 0). */
88
153
  limit: bigintType;
154
+ /**
155
+ * Period duration in seconds for recurring spending limits.
156
+ *
157
+ * - `0` or `undefined` = one-time limit
158
+ * - `\> 0` = periodic limit that resets every `period` seconds
159
+ */
160
+ period?: numberType | undefined;
89
161
  };
90
162
  /**
91
163
  * Converts a Key Authorization object into a typed {@link ox#KeyAuthorization.KeyAuthorization}.