ox 1.7.2 → 1.7.4

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 (103) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/tempo/KeyAuthorization.d.ts +1 -1
  3. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  4. package/dist/tempo/MultisigOperation.d.ts +42 -26
  5. package/dist/tempo/MultisigOperation.d.ts.map +1 -1
  6. package/dist/tempo/MultisigOperation.js +78 -48
  7. package/dist/tempo/MultisigOperation.js.map +1 -1
  8. package/dist/tempo/MultisigSimulation.d.ts +132 -0
  9. package/dist/tempo/MultisigSimulation.d.ts.map +1 -0
  10. package/dist/tempo/MultisigSimulation.js +140 -0
  11. package/dist/tempo/MultisigSimulation.js.map +1 -0
  12. package/dist/tempo/RpcSchemaTempo.d.ts +20 -10
  13. package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
  14. package/dist/tempo/SignatureEnvelope.d.ts +9 -20
  15. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  16. package/dist/tempo/SignatureEnvelope.js +12 -18
  17. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  18. package/dist/tempo/TransactionRequest.d.ts +6 -6
  19. package/dist/tempo/TransactionRequest.d.ts.map +1 -1
  20. package/dist/tempo/TransactionRequest.js +7 -7
  21. package/dist/tempo/TransactionRequest.js.map +1 -1
  22. package/dist/tempo/index.d.ts +4 -4
  23. package/dist/tempo/index.d.ts.map +1 -1
  24. package/dist/tempo/index.js +4 -4
  25. package/dist/tempo/index.js.map +1 -1
  26. package/dist/zod/tempo/AuthorizationTempo.d.ts +10 -130
  27. package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
  28. package/dist/zod/tempo/KeyAuthorization.d.ts +5 -65
  29. package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
  30. package/dist/zod/tempo/MultisigOperation.d.ts +0 -10
  31. package/dist/zod/tempo/MultisigOperation.d.ts.map +1 -1
  32. package/dist/zod/tempo/MultisigOperation.js +0 -3
  33. package/dist/zod/tempo/MultisigOperation.js.map +1 -1
  34. package/dist/zod/tempo/{MultisigWitness.d.ts → MultisigSimulation.d.ts} +17 -49
  35. package/dist/zod/tempo/MultisigSimulation.d.ts.map +1 -0
  36. package/dist/zod/tempo/{MultisigWitness.js → MultisigSimulation.js} +26 -24
  37. package/dist/zod/tempo/MultisigSimulation.js.map +1 -0
  38. package/dist/zod/tempo/RpcSchemaTempo.d.ts +83 -204
  39. package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
  40. package/dist/zod/tempo/RpcSchemaTempo.js +19 -10
  41. package/dist/zod/tempo/RpcSchemaTempo.js.map +1 -1
  42. package/dist/zod/tempo/SignatureEnvelope.d.ts +3 -39
  43. package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
  44. package/dist/zod/tempo/SignatureEnvelope.js +4 -14
  45. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  46. package/dist/zod/tempo/Transaction.d.ts +18 -234
  47. package/dist/zod/tempo/Transaction.d.ts.map +1 -1
  48. package/dist/zod/tempo/TransactionRequest.d.ts +36 -192
  49. package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
  50. package/dist/zod/tempo/TransactionRequest.js +10 -10
  51. package/dist/zod/tempo/TransactionRequest.js.map +1 -1
  52. package/dist/zod/tempo/z.d.ts +1 -1
  53. package/dist/zod/tempo/z.d.ts.map +1 -1
  54. package/dist/zod/tempo/z.js +1 -1
  55. package/dist/zod/tempo/z.js.map +1 -1
  56. package/package.json +9 -9
  57. package/src/tempo/AuthorizationTempo.test.ts +4 -0
  58. package/src/tempo/KeyAuthorization.test-d.ts +1 -12
  59. package/src/tempo/KeyAuthorization.test.ts +44 -3
  60. package/src/tempo/KeyAuthorization.ts +3 -3
  61. package/src/tempo/MultisigOperation.test-d.ts +8 -6
  62. package/src/tempo/MultisigOperation.test.ts +236 -169
  63. package/src/tempo/MultisigOperation.ts +122 -83
  64. package/src/tempo/MultisigSimulation.test-d.ts +33 -0
  65. package/src/tempo/MultisigSimulation.test.ts +283 -0
  66. package/src/tempo/MultisigSimulation.ts +266 -0
  67. package/src/tempo/RpcSchemaTempo.test-d.ts +45 -10
  68. package/src/tempo/RpcSchemaTempo.ts +15 -6
  69. package/src/tempo/SignatureEnvelope.test-d.ts +3 -59
  70. package/src/tempo/SignatureEnvelope.test.ts +61 -51
  71. package/src/tempo/SignatureEnvelope.ts +27 -44
  72. package/src/tempo/Transaction.test.ts +61 -0
  73. package/src/tempo/TransactionRequest.test-d.ts +7 -7
  74. package/src/tempo/TransactionRequest.test.ts +129 -208
  75. package/src/tempo/TransactionRequest.ts +16 -12
  76. package/src/tempo/index.ts +4 -4
  77. package/src/tempo/multisig.e2e.test.ts +51 -1
  78. package/src/version.ts +1 -1
  79. package/src/zod/tempo/MultisigOperation.ts +0 -3
  80. package/src/zod/tempo/{MultisigWitness.ts → MultisigSimulation.ts} +39 -42
  81. package/src/zod/tempo/RpcSchemaTempo.ts +20 -10
  82. package/src/zod/tempo/SignatureEnvelope.ts +11 -35
  83. package/src/zod/tempo/TransactionRequest.ts +14 -14
  84. package/src/zod/tempo/_test/KeyAuthorization.test.ts +2 -15
  85. package/src/zod/tempo/_test/MultisigOperation.test.ts +0 -2
  86. package/src/zod/tempo/_test/MultisigSimulation.test-d.ts +13 -0
  87. package/src/zod/tempo/_test/MultisigSimulation.test.ts +78 -0
  88. package/src/zod/tempo/_test/RpcSchemaTempo.test-d.ts +19 -2
  89. package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +46 -4
  90. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +58 -112
  91. package/src/zod/tempo/_test/TransactionRequest.test.ts +19 -160
  92. package/src/zod/tempo/z.ts +1 -1
  93. package/dist/tempo/MultisigWitness.d.ts +0 -106
  94. package/dist/tempo/MultisigWitness.d.ts.map +0 -1
  95. package/dist/tempo/MultisigWitness.js +0 -118
  96. package/dist/tempo/MultisigWitness.js.map +0 -1
  97. package/dist/zod/tempo/MultisigWitness.d.ts.map +0 -1
  98. package/dist/zod/tempo/MultisigWitness.js.map +0 -1
  99. package/src/tempo/MultisigWitness.test-d.ts +0 -42
  100. package/src/tempo/MultisigWitness.test.ts +0 -288
  101. package/src/tempo/MultisigWitness.ts +0 -210
  102. package/src/zod/tempo/_test/MultisigWitness.test-d.ts +0 -13
  103. package/src/zod/tempo/_test/MultisigWitness.test.ts +0 -149
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultisigWitness.d.ts","sourceRoot":"","sources":["../../src/tempo/MultisigWitness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAEhE,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,CAAC,WAAW,GAAG,MAAM,IACrC,cAAc,CAAC,WAAW,CAAC,GAC3B,iBAAiB,CAAA;AAErB,6EAA6E;AAC7E,MAAM,MAAM,eAAe,CAAC,WAAW,GAAG,MAAM,IAAI,OAAO,CAAC;IAC1D,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,gCAAgC;IAChC,SAAS,EAAE,SAAS,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAA;IAC3C,yCAAyC;IACzC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CAC3C,CAAC,CAAA;AAEF,qEAAqE;AACrE,MAAM,MAAM,cAAc,CAAC,WAAW,GAAG,MAAM,IAAI;IACjD,qBAAqB;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,gCAAgC;IAChC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CACpC,CAAA;AAED,mEAAmE;AACnE,MAAM,MAAM,uBAAuB,GAAG;IACpC,uDAAuD;IACvD,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;IAC7B,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAC,IAAI,GAAG,SAAS,CAAA;IAC5C,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAA;CACvB,CAAA;AAED,+DAA+D;AAC/D,MAAM,MAAM,aAAa,CAAC,WAAW,GAAG,MAAM,IAAI;IAChD,+BAA+B;IAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,0CAA0C;IAC1C,SAAS,EAAE,SAAS,uBAAuB,EAAE,CAAA;IAC7C,yCAAyC;IACzC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CAC3C,CAAA;AAED,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,uDAAuD;IACvD,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;IAC7B,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAC,IAAI,GAAG,SAAS,CAAA;IAC5C,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAA;IACtB,qBAAqB;IACrB,IAAI,EAAE,WAAW,CAAA;CAClB,CAAA;AAED,uEAAuE;AACvE,MAAM,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;AAEzC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,eAAe,CAmBrD;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,gCAAgC;IAChC,KAAY,SAAS,GACjB,mBAAmB,GACnB,cAAc,CAAC,MAAM,CAAC,SAAS,GAC/B,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG,CA8BnD;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,8BAA8B;IAC9B,KAAY,SAAS,GACjB,GAAG,CAAC,UAAU,CAAC,SAAS,GACxB,GAAG,CAAC,QAAQ,CAAC,SAAS,GACtB,mBAAmB,GACnB,cAAc,CAAC,MAAM,CAAC,SAAS,GAC/B,MAAM,CAAC,eAAe,CAAA;CAC3B;AAiCD,wDAAwD;AACxD,qBAAa,mBAAoB,SAAQ,MAAM,CAAC,SAAS;IACvD,SAAkB,IAAI,yCAAwC;gBAClD,OAAO,EAAE,mBAAmB,CAAC,OAAO;CAGjD;AAED,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,kCAAkC;IAClC,KAAY,OAAO,GAAG;QACpB,0BAA0B;QAC1B,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF"}
@@ -1,118 +0,0 @@
1
- import * as Errors from '../core/Errors.js';
2
- import * as Hex from '../core/Hex.js';
3
- import * as MultisigConfig from './MultisigConfig.js';
4
- /**
5
- * Converts a JSON-RPC multisig witness to its domain representation.
6
- *
7
- * @example
8
- * ```ts twoslash
9
- * // @noErrors
10
- * import { MultisigWitness } from 'ox/tempo'
11
- *
12
- * const witness = MultisigWitness.fromRpc(witnessRpc)
13
- * ```
14
- *
15
- * @param witness - JSON-RPC multisig witness.
16
- * @returns The multisig witness with bigint configuration versions.
17
- */
18
- export function fromRpc(witness) {
19
- const { account, approvals, config } = witness;
20
- assertApprovalCount(approvals);
21
- return {
22
- account,
23
- approvals: approvals.map((approval) => {
24
- if (approval.type === 'primitive')
25
- return approval;
26
- assertApprovalCount(approval.witness.approvals);
27
- return {
28
- type: 'multisig',
29
- witness: {
30
- account: approval.witness.account,
31
- approvals: approval.witness.approvals,
32
- config: MultisigConfig.from(approval.witness.config),
33
- },
34
- };
35
- }),
36
- config: MultisigConfig.from(config),
37
- };
38
- }
39
- /**
40
- * Converts a multisig witness to its JSON-RPC representation.
41
- *
42
- * @example
43
- * ```ts twoslash
44
- * // @noErrors
45
- * import { MultisigWitness } from 'ox/tempo'
46
- *
47
- * const witnessRpc = MultisigWitness.toRpc(witness)
48
- * ```
49
- *
50
- * @param witness - Multisig witness.
51
- * @returns The JSON-RPC multisig witness with numeric configuration versions.
52
- */
53
- export function toRpc(witness) {
54
- const { account, approvals, config } = witness;
55
- assertApprovalCount(approvals);
56
- return {
57
- account,
58
- approvals: approvals.map((approval) => {
59
- if (approval.type === 'primitive')
60
- return {
61
- ...approval,
62
- ...(typeof approval.keyData !== 'undefined'
63
- ? { keyData: shimKeyData(approval.keyData) }
64
- : {}),
65
- };
66
- assertApprovalCount(approval.witness.approvals);
67
- return {
68
- type: 'multisig',
69
- witness: {
70
- account: approval.witness.account,
71
- approvals: approval.witness.approvals.map((approval) => ({
72
- ...approval,
73
- ...(typeof approval.keyData !== 'undefined'
74
- ? { keyData: shimKeyData(approval.keyData) }
75
- : {}),
76
- })),
77
- config: configToRpc(approval.witness.config),
78
- },
79
- };
80
- }),
81
- config: configToRpc(config),
82
- };
83
- }
84
- /** @internal */
85
- function assertApprovalCount(approvals) {
86
- if (approvals.length > MultisigConfig.maxSignatures)
87
- throw new InvalidWitnessError({
88
- reason: `approval count exceeds ${MultisigConfig.maxSignatures}`,
89
- });
90
- }
91
- /** @internal */
92
- function configToRpc(config) {
93
- const value = MultisigConfig.from(config);
94
- return {
95
- ...value,
96
- version: Hex.toNumber(Hex.fromNumber(value.version)),
97
- };
98
- }
99
- /**
100
- * Shims key data longer than 4 bytes into a 2-byte big-endian length hint.
101
- * The node's gas estimator only accepts 1, 2, or 4-byte key data as a
102
- * signature-size hint; anything else silently falls back to the default.
103
- * @internal
104
- */
105
- function shimKeyData(data) {
106
- const size = Hex.size(data);
107
- if (size <= 4)
108
- return data;
109
- return Hex.fromNumber(size, { size: 2 });
110
- }
111
- /** Thrown when a native multisig witness is invalid. */
112
- export class InvalidWitnessError extends Errors.BaseError {
113
- name = 'MultisigWitness.InvalidWitnessError';
114
- constructor(options) {
115
- super(`Invalid multisig witness: ${options.reason}.`);
116
- }
117
- }
118
- //# sourceMappingURL=MultisigWitness.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultisigWitness.js","sourceRoot":"","sources":["../../src/tempo/MultisigWitness.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultisigWitness.d.ts","sourceRoot":"","sources":["../../../src/zod/tempo/MultisigWitness.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAmD7B,iDAAiD;AACjD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBjB,CAAA;AAoBF,6EAA6E;AAC7E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAG1B,CAAA;AAEF,qDAAqD;AACrD,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAO,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultisigWitness.js","sourceRoot":"","sources":["../../../src/zod/tempo/MultisigWitness.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { expectTypeOf, test } from 'vp/test'
2
- import * as MultisigWitness from './MultisigWitness.js'
3
-
4
- const rpc = {
5
- account: '0x2222222222222222222222222222222222222222',
6
- approvals: [
7
- {
8
- owner: '0x1111111111111111111111111111111111111111',
9
- type: 'primitive',
10
- },
11
- ],
12
- config: {
13
- owners: [
14
- {
15
- owner: '0x1111111111111111111111111111111111111111',
16
- weight: 1,
17
- },
18
- ],
19
- salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
20
- threshold: 1,
21
- version: 0,
22
- },
23
- } as const satisfies MultisigWitness.Rpc
24
-
25
- test('fromRpc returns a domain witness', () => {
26
- const witness = MultisigWitness.fromRpc(rpc)
27
-
28
- expectTypeOf(witness).toEqualTypeOf<MultisigWitness.MultisigWitness>()
29
- expectTypeOf(witness.config.version).toEqualTypeOf<bigint>()
30
- })
31
-
32
- test('RPC witnesses use numeric configuration versions', () => {
33
- expectTypeOf<
34
- MultisigWitness.Rpc['config']['version']
35
- >().toEqualTypeOf<number>()
36
- })
37
-
38
- test('toRpc returns an RPC witness', () => {
39
- expectTypeOf(
40
- MultisigWitness.toRpc(MultisigWitness.fromRpc(rpc)),
41
- ).toEqualTypeOf<MultisigWitness.Rpc>()
42
- })
@@ -1,288 +0,0 @@
1
- import { MultisigWitness } from 'ox/tempo'
2
- import { describe, expect, test } from 'vp/test'
3
-
4
- const rpc = {
5
- account: '0xcccccccccccccccccccccccccccccccccccccccc',
6
- approvals: [
7
- {
8
- keyData: '0x0102030405',
9
- keyType: 'webAuthn',
10
- owner: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
11
- type: 'primitive',
12
- },
13
- {
14
- type: 'multisig',
15
- witness: {
16
- account: '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
17
- approvals: [
18
- {
19
- keyData: '0x010203040506',
20
- keyType: 'secp256k1',
21
- owner: '0xdddddddddddddddddddddddddddddddddddddddd',
22
- },
23
- {
24
- owner: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
25
- },
26
- ],
27
- config: {
28
- owners: [
29
- {
30
- owner: '0xdddddddddddddddddddddddddddddddddddddddd',
31
- weight: 1,
32
- },
33
- {
34
- owner: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
35
- weight: 1,
36
- },
37
- ],
38
- salt: '0x2222222222222222222222222222222222222222222222222222222222222222',
39
- threshold: 2,
40
- version: 2,
41
- },
42
- },
43
- },
44
- ],
45
- config: {
46
- owners: [
47
- {
48
- owner: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
49
- weight: 1,
50
- },
51
- {
52
- owner: '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
53
- weight: 1,
54
- },
55
- ],
56
- salt: '0x1111111111111111111111111111111111111111111111111111111111111111',
57
- threshold: 2,
58
- version: 1,
59
- },
60
- } as const satisfies MultisigWitness.Rpc
61
-
62
- describe('fromRpc', () => {
63
- test('behavior: converts numeric configuration versions to bigint', () => {
64
- expect(MultisigWitness.fromRpc(rpc)).toMatchInlineSnapshot(`
65
- {
66
- "account": "0xcccccccccccccccccccccccccccccccccccccccc",
67
- "approvals": [
68
- {
69
- "keyData": "0x0102030405",
70
- "keyType": "webAuthn",
71
- "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
72
- "type": "primitive",
73
- },
74
- {
75
- "type": "multisig",
76
- "witness": {
77
- "account": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
78
- "approvals": [
79
- {
80
- "keyData": "0x010203040506",
81
- "keyType": "secp256k1",
82
- "owner": "0xdddddddddddddddddddddddddddddddddddddddd",
83
- },
84
- {
85
- "owner": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
86
- },
87
- ],
88
- "config": {
89
- "owners": [
90
- {
91
- "owner": "0xdddddddddddddddddddddddddddddddddddddddd",
92
- "weight": 1,
93
- },
94
- {
95
- "owner": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
96
- "weight": 1,
97
- },
98
- ],
99
- "salt": "0x2222222222222222222222222222222222222222222222222222222222222222",
100
- "threshold": 2,
101
- "version": 2n,
102
- },
103
- },
104
- },
105
- ],
106
- "config": {
107
- "owners": [
108
- {
109
- "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
110
- "weight": 1,
111
- },
112
- {
113
- "owner": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
114
- "weight": 1,
115
- },
116
- ],
117
- "salt": "0x1111111111111111111111111111111111111111111111111111111111111111",
118
- "threshold": 2,
119
- "version": 1n,
120
- },
121
- }
122
- `)
123
- })
124
-
125
- test('error: rejects unsafe numeric configuration versions', () => {
126
- expect(() =>
127
- MultisigWitness.fromRpc({
128
- ...rpc,
129
- config: {
130
- ...rpc.config,
131
- version: Number.MAX_SAFE_INTEGER + 1,
132
- },
133
- }),
134
- ).toThrowErrorMatchingInlineSnapshot(
135
- `[MultisigConfig.InvalidConfigError: Invalid native multisig config: version must be an unsigned 64-bit integer.]`,
136
- )
137
- })
138
-
139
- test('error: rejects excess root approvals', () => {
140
- expect(() =>
141
- MultisigWitness.fromRpc({
142
- ...rpc,
143
- approvals: Array.from({ length: 9 }, () => rpc.approvals[0]),
144
- }),
145
- ).toThrowErrorMatchingInlineSnapshot(
146
- `[MultisigWitness.InvalidWitnessError: Invalid multisig witness: approval count exceeds 8.]`,
147
- )
148
- })
149
-
150
- test('error: rejects excess nested approvals', () => {
151
- expect(() =>
152
- MultisigWitness.fromRpc({
153
- ...rpc,
154
- approvals: [
155
- {
156
- ...rpc.approvals[1],
157
- witness: {
158
- ...rpc.approvals[1].witness,
159
- approvals: Array.from(
160
- { length: 9 },
161
- () => rpc.approvals[1].witness.approvals[0],
162
- ),
163
- },
164
- },
165
- ],
166
- }),
167
- ).toThrowErrorMatchingInlineSnapshot(
168
- `[MultisigWitness.InvalidWitnessError: Invalid multisig witness: approval count exceeds 8.]`,
169
- )
170
- })
171
- })
172
-
173
- describe('toRpc', () => {
174
- test('behavior: converts bigint configuration versions to numbers', () => {
175
- expect(MultisigWitness.toRpc(MultisigWitness.fromRpc(rpc)))
176
- .toMatchInlineSnapshot(`
177
- {
178
- "account": "0xcccccccccccccccccccccccccccccccccccccccc",
179
- "approvals": [
180
- {
181
- "keyData": "0x0005",
182
- "keyType": "webAuthn",
183
- "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
184
- "type": "primitive",
185
- },
186
- {
187
- "type": "multisig",
188
- "witness": {
189
- "account": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
190
- "approvals": [
191
- {
192
- "keyData": "0x0006",
193
- "keyType": "secp256k1",
194
- "owner": "0xdddddddddddddddddddddddddddddddddddddddd",
195
- },
196
- {
197
- "owner": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
198
- },
199
- ],
200
- "config": {
201
- "owners": [
202
- {
203
- "owner": "0xdddddddddddddddddddddddddddddddddddddddd",
204
- "weight": 1,
205
- },
206
- {
207
- "owner": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
208
- "weight": 1,
209
- },
210
- ],
211
- "salt": "0x2222222222222222222222222222222222222222222222222222222222222222",
212
- "threshold": 2,
213
- "version": 2,
214
- },
215
- },
216
- },
217
- ],
218
- "config": {
219
- "owners": [
220
- {
221
- "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
222
- "weight": 1,
223
- },
224
- {
225
- "owner": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
226
- "weight": 1,
227
- },
228
- ],
229
- "salt": "0x1111111111111111111111111111111111111111111111111111111111111111",
230
- "threshold": 2,
231
- "version": 1,
232
- },
233
- }
234
- `)
235
- })
236
-
237
- test('error: rejects versions that JSON cannot represent exactly', () => {
238
- const witness = MultisigWitness.fromRpc(rpc)
239
- expect(() =>
240
- MultisigWitness.toRpc({
241
- ...witness,
242
- config: {
243
- ...witness.config,
244
- version: BigInt(Number.MAX_SAFE_INTEGER) + 1n,
245
- },
246
- }),
247
- ).toThrowErrorMatchingInlineSnapshot(
248
- `[Hex.IntegerOutOfRangeError: Number \`9007199254740992\` is not in safe unsigned integer range (\`0\` to \`9007199254740991\`)]`,
249
- )
250
- })
251
-
252
- test('error: rejects excess root approvals', () => {
253
- const witness = MultisigWitness.fromRpc(rpc)
254
- expect(() =>
255
- MultisigWitness.toRpc({
256
- ...witness,
257
- approvals: Array.from({ length: 9 }, () => witness.approvals[0]!),
258
- }),
259
- ).toThrowErrorMatchingInlineSnapshot(
260
- `[MultisigWitness.InvalidWitnessError: Invalid multisig witness: approval count exceeds 8.]`,
261
- )
262
- })
263
-
264
- test('error: rejects excess nested approvals', () => {
265
- const witness = MultisigWitness.fromRpc(rpc)
266
- const nested = witness.approvals[1]!
267
- if (nested.type !== 'multisig') throw new Error('unreachable')
268
- expect(() =>
269
- MultisigWitness.toRpc({
270
- ...witness,
271
- approvals: [
272
- {
273
- ...nested,
274
- witness: {
275
- ...nested.witness,
276
- approvals: Array.from(
277
- { length: 9 },
278
- () => nested.witness.approvals[0]!,
279
- ),
280
- },
281
- },
282
- ],
283
- }),
284
- ).toThrowErrorMatchingInlineSnapshot(
285
- `[MultisigWitness.InvalidWitnessError: Invalid multisig witness: approval count exceeds 8.]`,
286
- )
287
- })
288
- })
@@ -1,210 +0,0 @@
1
- import type * as Address from '../core/Address.js'
2
- import * as Errors from '../core/Errors.js'
3
- import * as Hex from '../core/Hex.js'
4
- import type { Compute } from '../core/internal/types.js'
5
- import * as MultisigConfig from './MultisigConfig.js'
6
- import type * as SignatureEnvelope from './SignatureEnvelope.js'
7
-
8
- /** Native multisig owner approval used for RPC simulation. */
9
- export type Approval<versionType = bigint> =
10
- | NestedApproval<versionType>
11
- | PrimitiveApproval
12
-
13
- /** Native multisig witness used to construct an RPC simulation signature. */
14
- export type MultisigWitness<versionType = bigint> = Compute<{
15
- /** Account authorized by this witness. */
16
- account: Address.Address
17
- /** Owner approvals to model. */
18
- approvals: readonly Approval<versionType>[]
19
- /** Complete applicable configuration. */
20
- config: MultisigConfig.Config<versionType>
21
- }>
22
-
23
- /** Nested native multisig owner approval used for RPC simulation. */
24
- export type NestedApproval<versionType = bigint> = {
25
- /** Approval type. */
26
- type: 'multisig'
27
- /** Depth-2 multisig witness. */
28
- witness: NestedWitness<versionType>
29
- }
30
-
31
- /** Primitive approval in a depth-2 multisig simulation witness. */
32
- export type NestedPrimitiveApproval = {
33
- /** Optional signature-specific gas-estimation data. */
34
- keyData?: Hex.Hex | undefined
35
- /** Signature type to model. Omission uses a maximum-size WebAuthn signature. */
36
- keyType?: SignatureEnvelope.Type | undefined
37
- /** Configured owner address. */
38
- owner: Address.Address
39
- }
40
-
41
- /** Depth-2 native multisig witness used for RPC simulation. */
42
- export type NestedWitness<versionType = bigint> = {
43
- /** Nested multisig account. */
44
- account: Address.Address
45
- /** Primitive owner approvals to model. */
46
- approvals: readonly NestedPrimitiveApproval[]
47
- /** Complete applicable configuration. */
48
- config: MultisigConfig.Config<versionType>
49
- }
50
-
51
- /** Primitive owner approval used for RPC simulation. */
52
- export type PrimitiveApproval = {
53
- /** Optional signature-specific gas-estimation data. */
54
- keyData?: Hex.Hex | undefined
55
- /** Signature type to model. Omission uses a maximum-size WebAuthn signature. */
56
- keyType?: SignatureEnvelope.Type | undefined
57
- /** Configured owner address. */
58
- owner: Address.Address
59
- /** Approval type. */
60
- type: 'primitive'
61
- }
62
-
63
- /** JSON-RPC representation of a native multisig simulation witness. */
64
- export type Rpc = MultisigWitness<number>
65
-
66
- /**
67
- * Converts a JSON-RPC multisig witness to its domain representation.
68
- *
69
- * @example
70
- * ```ts twoslash
71
- * // @noErrors
72
- * import { MultisigWitness } from 'ox/tempo'
73
- *
74
- * const witness = MultisigWitness.fromRpc(witnessRpc)
75
- * ```
76
- *
77
- * @param witness - JSON-RPC multisig witness.
78
- * @returns The multisig witness with bigint configuration versions.
79
- */
80
- export function fromRpc(witness: Rpc): MultisigWitness {
81
- const { account, approvals, config } = witness
82
- assertApprovalCount(approvals)
83
- return {
84
- account,
85
- approvals: approvals.map((approval) => {
86
- if (approval.type === 'primitive') return approval
87
- assertApprovalCount(approval.witness.approvals)
88
- return {
89
- type: 'multisig',
90
- witness: {
91
- account: approval.witness.account,
92
- approvals: approval.witness.approvals,
93
- config: MultisigConfig.from(approval.witness.config),
94
- },
95
- }
96
- }),
97
- config: MultisigConfig.from(config),
98
- }
99
- }
100
-
101
- export declare namespace fromRpc {
102
- /** Error type for `fromRpc`. */
103
- export type ErrorType =
104
- | InvalidWitnessError
105
- | MultisigConfig.assert.ErrorType
106
- | Errors.GlobalErrorType
107
- }
108
-
109
- /**
110
- * Converts a multisig witness to its JSON-RPC representation.
111
- *
112
- * @example
113
- * ```ts twoslash
114
- * // @noErrors
115
- * import { MultisigWitness } from 'ox/tempo'
116
- *
117
- * const witnessRpc = MultisigWitness.toRpc(witness)
118
- * ```
119
- *
120
- * @param witness - Multisig witness.
121
- * @returns The JSON-RPC multisig witness with numeric configuration versions.
122
- */
123
- export function toRpc(witness: MultisigWitness): Rpc {
124
- const { account, approvals, config } = witness
125
- assertApprovalCount(approvals)
126
- return {
127
- account,
128
- approvals: approvals.map((approval) => {
129
- if (approval.type === 'primitive')
130
- return {
131
- ...approval,
132
- ...(typeof approval.keyData !== 'undefined'
133
- ? { keyData: shimKeyData(approval.keyData) }
134
- : {}),
135
- }
136
- assertApprovalCount(approval.witness.approvals)
137
- return {
138
- type: 'multisig',
139
- witness: {
140
- account: approval.witness.account,
141
- approvals: approval.witness.approvals.map((approval) => ({
142
- ...approval,
143
- ...(typeof approval.keyData !== 'undefined'
144
- ? { keyData: shimKeyData(approval.keyData) }
145
- : {}),
146
- })),
147
- config: configToRpc(approval.witness.config),
148
- },
149
- }
150
- }),
151
- config: configToRpc(config),
152
- }
153
- }
154
-
155
- export declare namespace toRpc {
156
- /** Error type for `toRpc`. */
157
- export type ErrorType =
158
- | Hex.fromNumber.ErrorType
159
- | Hex.toNumber.ErrorType
160
- | InvalidWitnessError
161
- | MultisigConfig.assert.ErrorType
162
- | Errors.GlobalErrorType
163
- }
164
-
165
- /** @internal */
166
- function assertApprovalCount(approvals: readonly unknown[]) {
167
- if (approvals.length > MultisigConfig.maxSignatures)
168
- throw new InvalidWitnessError({
169
- reason: `approval count exceeds ${MultisigConfig.maxSignatures}`,
170
- })
171
- }
172
-
173
- /** @internal */
174
- function configToRpc(
175
- config: MultisigConfig.Config,
176
- ): MultisigConfig.Config<number> {
177
- const value = MultisigConfig.from(config)
178
- return {
179
- ...value,
180
- version: Hex.toNumber(Hex.fromNumber(value.version)),
181
- }
182
- }
183
-
184
- /**
185
- * Shims key data longer than 4 bytes into a 2-byte big-endian length hint.
186
- * The node's gas estimator only accepts 1, 2, or 4-byte key data as a
187
- * signature-size hint; anything else silently falls back to the default.
188
- * @internal
189
- */
190
- function shimKeyData(data: Hex.Hex): Hex.Hex {
191
- const size = Hex.size(data)
192
- if (size <= 4) return data
193
- return Hex.fromNumber(size, { size: 2 })
194
- }
195
-
196
- /** Thrown when a native multisig witness is invalid. */
197
- export class InvalidWitnessError extends Errors.BaseError {
198
- override readonly name = 'MultisigWitness.InvalidWitnessError'
199
- constructor(options: InvalidWitnessError.Options) {
200
- super(`Invalid multisig witness: ${options.reason}.`)
201
- }
202
- }
203
-
204
- export declare namespace InvalidWitnessError {
205
- /** Error construction options. */
206
- export type Options = {
207
- /** Validation failure. */
208
- reason: string
209
- }
210
- }