ox 0.14.54 → 0.14.56

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 (101) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/_cjs/tempo/{MultisigConfig.js → AccountConfig.js} +16 -4
  3. package/_cjs/tempo/AccountConfig.js.map +1 -0
  4. package/_cjs/tempo/{MultisigOperation.js → AccountOperation.js} +29 -29
  5. package/_cjs/tempo/AccountOperation.js.map +1 -0
  6. package/_cjs/tempo/{MultisigSimulation.js → AccountSimulation.js} +9 -9
  7. package/_cjs/tempo/AccountSimulation.js.map +1 -0
  8. package/_cjs/tempo/KeyAuthorization.js +12 -11
  9. package/_cjs/tempo/KeyAuthorization.js.map +1 -1
  10. package/_cjs/tempo/SignatureEnvelope.js +64 -64
  11. package/_cjs/tempo/SignatureEnvelope.js.map +1 -1
  12. package/_cjs/tempo/Transaction.js +2 -0
  13. package/_cjs/tempo/Transaction.js.map +1 -1
  14. package/_cjs/tempo/TransactionRequest.js +12 -9
  15. package/_cjs/tempo/TransactionRequest.js.map +1 -1
  16. package/_cjs/tempo/index.js +4 -4
  17. package/_cjs/tempo/index.js.map +1 -1
  18. package/_cjs/version.js +1 -1
  19. package/_esm/tempo/{MultisigConfig.js → AccountConfig.js} +103 -55
  20. package/_esm/tempo/AccountConfig.js.map +1 -0
  21. package/_esm/tempo/{MultisigOperation.js → AccountOperation.js} +64 -64
  22. package/_esm/tempo/AccountOperation.js.map +1 -0
  23. package/_esm/tempo/{MultisigSimulation.js → AccountSimulation.js} +20 -20
  24. package/_esm/tempo/AccountSimulation.js.map +1 -0
  25. package/_esm/tempo/KeyAuthorization.js +13 -12
  26. package/_esm/tempo/KeyAuthorization.js.map +1 -1
  27. package/_esm/tempo/SignatureEnvelope.js +71 -71
  28. package/_esm/tempo/SignatureEnvelope.js.map +1 -1
  29. package/_esm/tempo/Transaction.js +2 -0
  30. package/_esm/tempo/Transaction.js.map +1 -1
  31. package/_esm/tempo/TransactionRequest.js +12 -9
  32. package/_esm/tempo/TransactionRequest.js.map +1 -1
  33. package/_esm/tempo/index.js +50 -48
  34. package/_esm/tempo/index.js.map +1 -1
  35. package/_esm/version.js +1 -1
  36. package/_types/tempo/{MultisigConfig.d.ts → AccountConfig.d.ts} +110 -63
  37. package/_types/tempo/AccountConfig.d.ts.map +1 -0
  38. package/_types/tempo/{MultisigOperation.d.ts → AccountOperation.d.ts} +62 -62
  39. package/_types/tempo/AccountOperation.d.ts.map +1 -0
  40. package/_types/tempo/{MultisigSimulation.d.ts → AccountSimulation.d.ts} +21 -21
  41. package/_types/tempo/AccountSimulation.d.ts.map +1 -0
  42. package/_types/tempo/KeyAuthorization.d.ts +14 -14
  43. package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
  44. package/_types/tempo/RpcSchemaTempo.d.ts +13 -13
  45. package/_types/tempo/RpcSchemaTempo.d.ts.map +1 -1
  46. package/_types/tempo/SignatureEnvelope.d.ts +36 -33
  47. package/_types/tempo/SignatureEnvelope.d.ts.map +1 -1
  48. package/_types/tempo/Transaction.d.ts.map +1 -1
  49. package/_types/tempo/TransactionRequest.d.ts +11 -9
  50. package/_types/tempo/TransactionRequest.d.ts.map +1 -1
  51. package/_types/tempo/index.d.ts +50 -48
  52. package/_types/tempo/index.d.ts.map +1 -1
  53. package/_types/version.d.ts +1 -1
  54. package/package.json +31 -31
  55. package/tempo/AccountConfig/package.json +6 -0
  56. package/tempo/AccountConfig.test-d/package.json +6 -0
  57. package/tempo/{MultisigConfig.test-d.ts → AccountConfig.test-d.ts} +22 -12
  58. package/tempo/{MultisigConfig.test.ts → AccountConfig.test.ts} +155 -37
  59. package/tempo/{MultisigConfig.ts → AccountConfig.ts} +132 -66
  60. package/tempo/AccountOperation/package.json +6 -0
  61. package/tempo/AccountOperation.test-d/package.json +6 -0
  62. package/tempo/AccountOperation.test-d.ts +71 -0
  63. package/tempo/{MultisigOperation.test.ts → AccountOperation.test.ts} +97 -97
  64. package/tempo/{MultisigOperation.ts → AccountOperation.ts} +95 -97
  65. package/tempo/AccountSimulation/package.json +6 -0
  66. package/tempo/AccountSimulation.test-d/package.json +6 -0
  67. package/tempo/{MultisigSimulation.test-d.ts → AccountSimulation.test-d.ts} +7 -9
  68. package/tempo/{MultisigSimulation.test.ts → AccountSimulation.test.ts} +29 -29
  69. package/tempo/{MultisigSimulation.ts → AccountSimulation.ts} +28 -30
  70. package/tempo/KeyAuthorization.test-d.ts +14 -14
  71. package/tempo/KeyAuthorization.test.ts +70 -49
  72. package/tempo/KeyAuthorization.ts +29 -27
  73. package/tempo/RpcSchemaTempo.test-d.ts +19 -19
  74. package/tempo/RpcSchemaTempo.ts +13 -13
  75. package/tempo/SignatureEnvelope.test-d.ts +7 -7
  76. package/tempo/SignatureEnvelope.test.ts +34 -34
  77. package/tempo/SignatureEnvelope.ts +107 -103
  78. package/tempo/Transaction.test.ts +40 -4
  79. package/tempo/Transaction.ts +2 -0
  80. package/tempo/TransactionRequest.test-d.ts +16 -7
  81. package/tempo/TransactionRequest.test.ts +25 -17
  82. package/tempo/TransactionRequest.ts +25 -18
  83. package/tempo/{multisig.e2e.test.ts → configurableAccounts.e2e.test.ts} +16 -16
  84. package/tempo/index.ts +50 -48
  85. package/version.ts +1 -1
  86. package/_cjs/tempo/MultisigConfig.js.map +0 -1
  87. package/_cjs/tempo/MultisigOperation.js.map +0 -1
  88. package/_cjs/tempo/MultisigSimulation.js.map +0 -1
  89. package/_esm/tempo/MultisigConfig.js.map +0 -1
  90. package/_esm/tempo/MultisigOperation.js.map +0 -1
  91. package/_esm/tempo/MultisigSimulation.js.map +0 -1
  92. package/_types/tempo/MultisigConfig.d.ts.map +0 -1
  93. package/_types/tempo/MultisigOperation.d.ts.map +0 -1
  94. package/_types/tempo/MultisigSimulation.d.ts.map +0 -1
  95. package/tempo/MultisigConfig/package.json +0 -6
  96. package/tempo/MultisigConfig.test-d/package.json +0 -6
  97. package/tempo/MultisigOperation/package.json +0 -6
  98. package/tempo/MultisigOperation.test-d/package.json +0 -6
  99. package/tempo/MultisigOperation.test-d.ts +0 -71
  100. package/tempo/MultisigSimulation/package.json +0 -6
  101. package/tempo/MultisigSimulation.test-d/package.json +0 -6
@@ -5,28 +5,33 @@ import * as Hash from '../core/Hash.js';
5
5
  import * as Hex from '../core/Hex.js';
6
6
  /** Maximum encoded byte length for one primitive owner approval. */
7
7
  export const maxOwnerSignatureBytes = 2049;
8
- /** Maximum number of owners allowed in a native multisig config. */
8
+ /** Maximum number of owners allowed in an account config. */
9
9
  export const maxOwners = 48;
10
- /** Maximum number of owner approvals in a native multisig signature. */
10
+ /** Maximum number of owner approvals in a configurable account signature. */
11
11
  export const maxSignatures = 8;
12
- /** Maximum threshold accepted by a native multisig config. */
13
- export const maxThreshold = 8;
14
- /** Maximum version accepted by a native multisig config. */
12
+ /**
13
+ * Maximum threshold accepted by an account config.
14
+ *
15
+ * The threshold must also be reachable by at most {@link ox#AccountConfig.maxSignatures}
16
+ * owner approvals.
17
+ */
18
+ export const maxThreshold = 0xff;
19
+ /** Maximum version accepted by an account config. */
15
20
  export const maxVersion = 2n ** 64n - 1n;
16
- /** Tempo signature type byte for native multisig signatures. */
21
+ /** Tempo signature type byte for configurable account signatures. */
17
22
  export const signatureTypeByte = '0x05';
18
23
  /** Zero 32-byte salt (the default when no salt is provided). */
19
24
  export const zeroSalt = `0x${'00'.repeat(32)}`;
20
- /** Domain prefix for the native multisig account address derivation. */
25
+ /** Domain prefix for the configurable account address derivation. */
21
26
  const accountDomain = 'tempo:multisig:account';
22
- /** Domain prefix for native multisig configuration commitments. */
27
+ /** Domain prefix for account configuration commitments. */
23
28
  const configDomain = 'tempo:multisig:config';
24
29
  /** Keccak-256 of the canonical recovery wallet creation code. */
25
30
  const recoveryWalletInitCodeHash = '0x583cc63a2e37f645b43eac911b1a6d6de08b83abdc308c61364edda8cfc3bd37';
26
- /** Domain prefix for native multisig owner approvals. */
31
+ /** Domain prefix for configurable account owner approvals. */
27
32
  const signatureDomain = 'tempo:multisig:signature';
28
33
  /**
29
- * Asserts that a native multisig {@link ox#MultisigConfig.Config} is valid.
34
+ * Asserts that an {@link ox#AccountConfig.Config} is valid.
30
35
  *
31
36
  * Mirrors the Tempo configuration rules: owners non-empty and
32
37
  * `<= maxOwners`, strictly ascending unique nonzero owner addresses, nonzero
@@ -36,9 +41,9 @@ const signatureDomain = 'tempo:multisig:signature';
36
41
  *
37
42
  * @example
38
43
  * ```ts twoslash
39
- * import { MultisigConfig } from 'ox/tempo'
44
+ * import { AccountConfig } from 'ox/tempo'
40
45
  *
41
- * MultisigConfig.assert({
46
+ * AccountConfig.assert({
42
47
  * threshold: 1,
43
48
  * owners: [
44
49
  * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
@@ -46,7 +51,7 @@ const signatureDomain = 'tempo:multisig:signature';
46
51
  * })
47
52
  * ```
48
53
  *
49
- * @param config - The multisig config.
54
+ * @param config - The account config.
50
55
  */
51
56
  export function assert(config) {
52
57
  const { owners, salt, threshold, version = 0n } = config;
@@ -117,13 +122,13 @@ export function from(config) {
117
122
  return normalized;
118
123
  }
119
124
  /**
120
- * Converts a JSON-RPC multisig configuration to its domain representation.
125
+ * Converts a JSON-RPC account configuration to its domain representation.
121
126
  *
122
127
  * @example
123
128
  * ```ts twoslash
124
- * import { MultisigConfig } from 'ox/tempo'
129
+ * import { AccountConfig } from 'ox/tempo'
125
130
  *
126
- * const config = MultisigConfig.fromRpc({
131
+ * const config = AccountConfig.fromRpc({
127
132
  * owners: [
128
133
  * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
129
134
  * ],
@@ -133,8 +138,8 @@ export function from(config) {
133
138
  * })
134
139
  * ```
135
140
  *
136
- * @param config - The JSON-RPC multisig configuration.
137
- * @returns The normalized multisig configuration.
141
+ * @param config - The JSON-RPC account configuration.
142
+ * @returns The normalized account configuration.
138
143
  */
139
144
  export function fromRpc(config) {
140
145
  return from({
@@ -143,14 +148,14 @@ export function fromRpc(config) {
143
148
  });
144
149
  }
145
150
  /**
146
- * Converts an RLP {@link ox#MultisigConfig.Tuple} back to a
147
- * {@link ox#MultisigConfig.Config}.
151
+ * Converts an RLP {@link ox#AccountConfig.Tuple} back to a
152
+ * {@link ox#AccountConfig.Config}.
148
153
  *
149
154
  * @example
150
155
  * ```ts twoslash
151
- * import { MultisigConfig } from 'ox/tempo'
156
+ * import { AccountConfig } from 'ox/tempo'
152
157
  *
153
- * const config = MultisigConfig.fromTuple([
158
+ * const config = AccountConfig.fromTuple([
154
159
  * `0x${'00'.repeat(32)}`,
155
160
  * '0x',
156
161
  * '0x01',
@@ -159,7 +164,7 @@ export function fromRpc(config) {
159
164
  * ```
160
165
  *
161
166
  * @param tuple - The RLP tuple.
162
- * @returns The multisig config.
167
+ * @returns The account config.
163
168
  */
164
169
  export function fromTuple(tuple) {
165
170
  const [salt, version, threshold, owners] = tuple;
@@ -197,7 +202,7 @@ export function fromTuple(tuple) {
197
202
  return config;
198
203
  }
199
204
  /**
200
- * Derives the stable native multisig account address.
205
+ * Derives the stable configurable account address.
201
206
  *
202
207
  * The initial config is hashed into a CREATE2 salt using fixed-width
203
208
  * big-endian fields, not RLP. The account uses the chain-configured recovery
@@ -208,23 +213,23 @@ export function fromTuple(tuple) {
208
213
  *
209
214
  * @example
210
215
  * ```ts twoslash
211
- * import { MultisigConfig } from 'ox/tempo'
216
+ * import { AccountConfig } from 'ox/tempo'
212
217
  *
213
- * const initialConfig = MultisigConfig.from({
218
+ * const initialConfig = AccountConfig.from({
214
219
  * owners: [
215
220
  * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
216
221
  * ],
217
222
  * threshold: 1,
218
223
  * })
219
224
  *
220
- * const address = MultisigConfig.getAddress(initialConfig, {
225
+ * const address = AccountConfig.getAddress(initialConfig, {
221
226
  * factory: '0x7171717171717171717171717171717171717171'
222
227
  * })
223
228
  * ```
224
229
  *
225
- * @param config - The initial multisig config.
230
+ * @param config - The initial account config.
226
231
  * @param options - The recovery factory configured by the chain.
227
- * @returns The multisig account address.
232
+ * @returns The configurable account address.
228
233
  */
229
234
  export function getAddress(config, options) {
230
235
  Address.assert(options.factory);
@@ -251,16 +256,16 @@ export function getAddress(config, options) {
251
256
  return account;
252
257
  }
253
258
  /**
254
- * Computes the commitment for a native multisig configuration.
259
+ * Computes the commitment for an account configuration.
255
260
  *
256
261
  * The commitment uses raw fixed-width fields, not RLP or ABI encoding:
257
262
  * `keccak256("tempo:multisig:config" || salt || uint64be(version) || uint8(threshold) || uint8(owners.length) || owners)`.
258
263
  *
259
264
  * @example
260
265
  * ```ts twoslash
261
- * import { MultisigConfig } from 'ox/tempo'
266
+ * import { AccountConfig } from 'ox/tempo'
262
267
  *
263
- * const commitment = MultisigConfig.getCommitment({
268
+ * const commitment = AccountConfig.getCommitment({
264
269
  * owners: [
265
270
  * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
266
271
  * ],
@@ -269,7 +274,7 @@ export function getAddress(config, options) {
269
274
  * })
270
275
  * ```
271
276
  *
272
- * @param config - The complete multisig configuration.
277
+ * @param config - The complete account configuration.
273
278
  * @returns The configuration commitment.
274
279
  */
275
280
  export function getCommitment(config) {
@@ -280,7 +285,7 @@ export function getCommitment(config) {
280
285
  ])));
281
286
  }
282
287
  /**
283
- * Computes the digest a native multisig owner approves (signs).
288
+ * Computes the digest a configurable account owner approves (signs).
284
289
  *
285
290
  * `keccak256("tempo:multisig:signature" || inner_digest || account || uint64be(version))`,
286
291
  * where `inner_digest` is the transaction sign payload
@@ -292,9 +297,9 @@ export function getCommitment(config) {
292
297
  *
293
298
  * @example
294
299
  * ```ts twoslash
295
- * import { MultisigConfig, TxEnvelopeTempo } from 'ox/tempo'
300
+ * import { AccountConfig, TxEnvelopeTempo } from 'ox/tempo'
296
301
  *
297
- * const config = MultisigConfig.from({
302
+ * const config = AccountConfig.from({
298
303
  * owners: [
299
304
  * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
300
305
  * ],
@@ -306,8 +311,8 @@ export function getCommitment(config) {
306
311
  * calls: [],
307
312
  * })
308
313
  *
309
- * const digest = MultisigConfig.getSignPayload({
310
- * account: MultisigConfig.getAddress(config, {
314
+ * const digest = AccountConfig.getSignPayload({
315
+ * account: AccountConfig.getAddress(config, {
311
316
  * factory: '0x7171717171717171717171717171717171717171'
312
317
  * }),
313
318
  * config,
@@ -327,13 +332,13 @@ export function getSignPayload(value) {
327
332
  return Hash.keccak256(Hex.concat(Hex.fromString(signatureDomain), Hex.from(payload), account, Hex.fromNumber(config.version ?? 0n, { size: 8 })));
328
333
  }
329
334
  /**
330
- * Converts a multisig configuration to its JSON-RPC representation.
335
+ * Converts an account configuration to its JSON-RPC representation.
331
336
  *
332
337
  * @example
333
338
  * ```ts twoslash
334
- * import { MultisigConfig } from 'ox/tempo'
339
+ * import { AccountConfig } from 'ox/tempo'
335
340
  *
336
- * const config = MultisigConfig.toRpc({
341
+ * const config = AccountConfig.toRpc({
337
342
  * owners: [
338
343
  * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
339
344
  * ],
@@ -341,8 +346,8 @@ export function getSignPayload(value) {
341
346
  * })
342
347
  * ```
343
348
  *
344
- * @param config - The multisig configuration.
345
- * @returns The JSON-RPC multisig configuration.
349
+ * @param config - The account configuration.
350
+ * @returns The JSON-RPC account configuration.
346
351
  */
347
352
  export function toRpc(config) {
348
353
  const value = from(config);
@@ -357,7 +362,7 @@ export function toRpc(config) {
357
362
  };
358
363
  }
359
364
  /**
360
- * Converts a {@link ox#MultisigConfig.Config} to its RLP tuple form.
365
+ * Converts a {@link ox#AccountConfig.Config} to its RLP tuple form.
361
366
  *
362
367
  * Tuple shape: `[salt, version, threshold, [[owner, weight], ...]]`. The
363
368
  * 32-byte `salt` encodes as a full fixed-width string; other integers use
@@ -365,9 +370,9 @@ export function toRpc(config) {
365
370
  *
366
371
  * @example
367
372
  * ```ts twoslash
368
- * import { MultisigConfig } from 'ox/tempo'
373
+ * import { AccountConfig } from 'ox/tempo'
369
374
  *
370
- * const tuple = MultisigConfig.toTuple({
375
+ * const tuple = AccountConfig.toTuple({
371
376
  * owners: [
372
377
  * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
373
378
  * ],
@@ -375,7 +380,7 @@ export function toRpc(config) {
375
380
  * })
376
381
  * ```
377
382
  *
378
- * @param config - The multisig config.
383
+ * @param config - The account config.
379
384
  * @returns The RLP tuple.
380
385
  */
381
386
  export function toTuple(config) {
@@ -393,14 +398,57 @@ export function toTuple(config) {
393
398
  ];
394
399
  }
395
400
  /**
396
- * Validates a native multisig {@link ox#MultisigConfig.Config}. Returns `true`
401
+ * Derives the configuration that replaces the current one in an owner update.
402
+ *
403
+ * Mirrors the `updateConfig` precompile ([TIP-1109](https://tips.sh/1109)):
404
+ * keeps the current salt, increments the version by one, and replaces the
405
+ * owners and threshold. Owners are sorted into canonical order and the next
406
+ * configuration is validated. The account address does not change.
407
+ *
408
+ * @example
409
+ * ```ts twoslash
410
+ * import { AccountConfig } from 'ox/tempo'
411
+ *
412
+ * const initialConfig = AccountConfig.from({
413
+ * owners: [
414
+ * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
415
+ * ],
416
+ * threshold: 1,
417
+ * })
418
+ *
419
+ * const config = AccountConfig.update(initialConfig, {
420
+ * owners: [
421
+ * { owner: '0x2222222222222222222222222222222222222222', weight: 1 },
422
+ * ],
423
+ * threshold: 1,
424
+ * })
425
+ * // config.version === 1n, with the initial salt
426
+ * ```
427
+ *
428
+ * @param config - The current account config.
429
+ * @param options - The replacement owners and threshold.
430
+ * @returns The next account config.
431
+ */
432
+ export function update(config, options) {
433
+ const current = from(config);
434
+ if (current.version === maxVersion)
435
+ throw new InvalidConfigError({ reason: 'version overflow' });
436
+ return from({
437
+ owners: options.owners,
438
+ salt: current.salt,
439
+ threshold: options.threshold,
440
+ version: current.version + 1n,
441
+ });
442
+ }
443
+ /**
444
+ * Validates an {@link ox#AccountConfig.Config}. Returns `true`
397
445
  * if valid, `false` otherwise.
398
446
  *
399
447
  * @example
400
448
  * ```ts twoslash
401
- * import { MultisigConfig } from 'ox/tempo'
449
+ * import { AccountConfig } from 'ox/tempo'
402
450
  *
403
- * const valid = MultisigConfig.validate({
451
+ * const valid = AccountConfig.validate({
404
452
  * owners: [
405
453
  * { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
406
454
  * ],
@@ -409,7 +457,7 @@ export function toTuple(config) {
409
457
  * // @log: true
410
458
  * ```
411
459
  *
412
- * @param config - The multisig config.
460
+ * @param config - The account config.
413
461
  * @returns Whether the config is valid.
414
462
  */
415
463
  export function validate(config) {
@@ -421,15 +469,15 @@ export function validate(config) {
421
469
  return false;
422
470
  }
423
471
  }
424
- /** Thrown when a native multisig config is invalid. */
472
+ /** Thrown when an account config is invalid. */
425
473
  export class InvalidConfigError extends Errors.BaseError {
426
474
  constructor({ reason }) {
427
- super(`Invalid native multisig config: ${reason}.`);
475
+ super(`Invalid account config: ${reason}.`);
428
476
  Object.defineProperty(this, "name", {
429
477
  enumerable: true,
430
478
  configurable: true,
431
479
  writable: true,
432
- value: 'MultisigConfig.InvalidConfigError'
480
+ value: 'AccountConfig.InvalidConfigError'
433
481
  });
434
482
  }
435
483
  }
@@ -443,4 +491,4 @@ function assertVersion(version) {
443
491
  reason: 'version must be an unsigned 64-bit integer',
444
492
  });
445
493
  }
446
- //# sourceMappingURL=MultisigConfig.js.map
494
+ //# sourceMappingURL=AccountConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountConfig.js","sourceRoot":"","sources":["../../tempo/AccountConfig.ts"],"names":[],"mappings":"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"}