ox 1.7.0 → 1.7.2

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 (126) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/core/Hash.js +1 -1
  3. package/dist/core/Hash.js.map +1 -1
  4. package/dist/core/Siwe.d.ts.map +1 -1
  5. package/dist/core/Siwe.js +45 -6
  6. package/dist/core/Siwe.js.map +1 -1
  7. package/dist/tempo/KeyAuthorization.d.ts +1 -1
  8. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  9. package/dist/tempo/MultisigConfig.d.ts +151 -83
  10. package/dist/tempo/MultisigConfig.d.ts.map +1 -1
  11. package/dist/tempo/MultisigConfig.js +164 -86
  12. package/dist/tempo/MultisigConfig.js.map +1 -1
  13. package/dist/tempo/MultisigOperation.d.ts +324 -0
  14. package/dist/tempo/MultisigOperation.d.ts.map +1 -0
  15. package/dist/tempo/MultisigOperation.js +809 -0
  16. package/dist/tempo/MultisigOperation.js.map +1 -0
  17. package/dist/tempo/MultisigWitness.d.ts +106 -0
  18. package/dist/tempo/MultisigWitness.d.ts.map +1 -0
  19. package/dist/tempo/MultisigWitness.js +118 -0
  20. package/dist/tempo/MultisigWitness.js.map +1 -0
  21. package/dist/tempo/RpcSchemaTempo.d.ts +35 -0
  22. package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
  23. package/dist/tempo/SignatureEnvelope.d.ts +60 -80
  24. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  25. package/dist/tempo/SignatureEnvelope.js +87 -146
  26. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  27. package/dist/tempo/TransactionRequest.d.ts +9 -17
  28. package/dist/tempo/TransactionRequest.d.ts.map +1 -1
  29. package/dist/tempo/TransactionRequest.js +7 -7
  30. package/dist/tempo/TransactionRequest.js.map +1 -1
  31. package/dist/tempo/TxEnvelopeTempo.d.ts +3 -2
  32. package/dist/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  33. package/dist/tempo/TxEnvelopeTempo.js +3 -2
  34. package/dist/tempo/TxEnvelopeTempo.js.map +1 -1
  35. package/dist/tempo/index.d.ts +22 -2
  36. package/dist/tempo/index.d.ts.map +1 -1
  37. package/dist/tempo/index.js +22 -2
  38. package/dist/tempo/index.js.map +1 -1
  39. package/dist/zod/tempo/AuthorizationTempo.d.ts +110 -110
  40. package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
  41. package/dist/zod/tempo/KeyAuthorization.d.ts +90 -83
  42. package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
  43. package/dist/zod/tempo/MultisigConfig.d.ts +31 -2
  44. package/dist/zod/tempo/MultisigConfig.d.ts.map +1 -1
  45. package/dist/zod/tempo/MultisigConfig.js +26 -3
  46. package/dist/zod/tempo/MultisigConfig.js.map +1 -1
  47. package/dist/zod/tempo/MultisigOperation.d.ts +168 -0
  48. package/dist/zod/tempo/MultisigOperation.d.ts.map +1 -0
  49. package/dist/zod/tempo/MultisigOperation.js +65 -0
  50. package/dist/zod/tempo/MultisigOperation.js.map +1 -0
  51. package/dist/zod/tempo/MultisigWitness.d.ts +152 -0
  52. package/dist/zod/tempo/MultisigWitness.d.ts.map +1 -0
  53. package/dist/zod/tempo/MultisigWitness.js +76 -0
  54. package/dist/zod/tempo/MultisigWitness.js.map +1 -0
  55. package/dist/zod/tempo/RpcSchemaTempo.d.ts +607 -102
  56. package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
  57. package/dist/zod/tempo/RpcSchemaTempo.js +38 -0
  58. package/dist/zod/tempo/RpcSchemaTempo.js.map +1 -1
  59. package/dist/zod/tempo/SignatureEnvelope.d.ts +33 -33
  60. package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
  61. package/dist/zod/tempo/SignatureEnvelope.js +9 -16
  62. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  63. package/dist/zod/tempo/Transaction.d.ts +228 -222
  64. package/dist/zod/tempo/Transaction.d.ts.map +1 -1
  65. package/dist/zod/tempo/TransactionRequest.d.ts +379 -176
  66. package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
  67. package/dist/zod/tempo/TransactionRequest.js +11 -22
  68. package/dist/zod/tempo/TransactionRequest.js.map +1 -1
  69. package/dist/zod/tempo/TxEnvelopeTempo.d.ts +60 -48
  70. package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  71. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +15 -12
  72. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
  73. package/dist/zod/tempo/z.d.ts +2 -0
  74. package/dist/zod/tempo/z.d.ts.map +1 -1
  75. package/dist/zod/tempo/z.js +2 -0
  76. package/dist/zod/tempo/z.js.map +1 -1
  77. package/package.json +21 -1
  78. package/src/core/Hash.ts +1 -1
  79. package/src/core/Siwe.ts +45 -5
  80. package/src/core/_test/Hash.test.ts +15 -0
  81. package/src/core/_test/Siwe.test.ts +98 -0
  82. package/src/tempo/KeyAuthorization.test-d.ts +13 -1
  83. package/src/tempo/KeyAuthorization.test.ts +65 -0
  84. package/src/tempo/KeyAuthorization.ts +1 -1
  85. package/src/tempo/MultisigConfig.test-d.ts +52 -0
  86. package/src/tempo/MultisigConfig.test.ts +288 -227
  87. package/src/tempo/MultisigConfig.ts +275 -104
  88. package/src/tempo/MultisigOperation.test-d.ts +77 -0
  89. package/src/tempo/MultisigOperation.test.ts +1883 -0
  90. package/src/tempo/MultisigOperation.ts +1254 -0
  91. package/src/tempo/MultisigWitness.test-d.ts +42 -0
  92. package/src/tempo/MultisigWitness.test.ts +288 -0
  93. package/src/tempo/MultisigWitness.ts +210 -0
  94. package/src/tempo/RpcSchemaTempo.test-d.ts +56 -0
  95. package/src/tempo/RpcSchemaTempo.ts +37 -0
  96. package/src/tempo/SignatureEnvelope.test-d.ts +63 -46
  97. package/src/tempo/SignatureEnvelope.test.ts +523 -500
  98. package/src/tempo/SignatureEnvelope.ts +172 -242
  99. package/src/tempo/TransactionRequest.test-d.ts +11 -0
  100. package/src/tempo/TransactionRequest.test.ts +285 -33
  101. package/src/tempo/TransactionRequest.ts +15 -20
  102. package/src/tempo/TxEnvelopeTempo.test-d.ts +7 -0
  103. package/src/tempo/TxEnvelopeTempo.test.ts +25 -0
  104. package/src/tempo/TxEnvelopeTempo.ts +5 -3
  105. package/src/tempo/index.ts +22 -2
  106. package/src/tempo/multisig.e2e.test.ts +113 -86
  107. package/src/version.ts +1 -1
  108. package/src/zod/tempo/MultisigConfig.ts +29 -3
  109. package/src/zod/tempo/MultisigOperation.ts +69 -0
  110. package/src/zod/tempo/MultisigWitness.ts +101 -0
  111. package/src/zod/tempo/RpcSchemaTempo.ts +43 -0
  112. package/src/zod/tempo/SignatureEnvelope.ts +20 -38
  113. package/src/zod/tempo/TransactionRequest.ts +17 -26
  114. package/src/zod/tempo/_test/KeyAuthorization.test.ts +11 -0
  115. package/src/zod/tempo/_test/MultisigConfig.test-d.ts +13 -0
  116. package/src/zod/tempo/_test/MultisigConfig.test.ts +13 -2
  117. package/src/zod/tempo/_test/MultisigOperation.test-d.ts +27 -0
  118. package/src/zod/tempo/_test/MultisigOperation.test.ts +68 -0
  119. package/src/zod/tempo/_test/MultisigWitness.test-d.ts +13 -0
  120. package/src/zod/tempo/_test/MultisigWitness.test.ts +149 -0
  121. package/src/zod/tempo/_test/RpcSchemaTempo.test-d.ts +31 -0
  122. package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +41 -0
  123. package/src/zod/tempo/_test/SignatureEnvelope.test-d.ts +1 -1
  124. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +25 -34
  125. package/src/zod/tempo/_test/TransactionRequest.test.ts +176 -8
  126. package/src/zod/tempo/z.ts +2 -0
@@ -19,22 +19,21 @@ const p256 = {
19
19
  type: 'p256',
20
20
  } as const
21
21
 
22
- const multisig = {
23
- account: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
24
- signatures: [secp256k1],
22
+ const config = {
23
+ owners: [
24
+ {
25
+ owner: '0x7e5f4552091a69125d5dfcb7b8c2659029395bdf',
26
+ weight: 1,
27
+ },
28
+ ],
29
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
30
+ threshold: 1,
31
+ version: '0x0',
25
32
  } as const
26
33
 
27
- const multisigBootstrap = {
28
- init: {
29
- owners: [
30
- {
31
- owner: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
32
- weight: 1,
33
- },
34
- ],
35
- salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
36
- threshold: 1,
37
- },
34
+ const multisig = {
35
+ account: '0x9dba7f426b711d4893c11611eacf7cc334e7146b',
36
+ config,
38
37
  signatures: [secp256k1],
39
38
  } as const
40
39
 
@@ -62,24 +61,22 @@ describe('SignatureEnvelope', () => {
62
61
  )
63
62
  })
64
63
 
65
- test('decodes an initialized multisig envelope', () => {
64
+ test('decodes a multisig envelope', () => {
66
65
  expect(z.decode(z_SignatureEnvelope.SignatureEnvelope, multisig)).toEqual(
67
66
  core_SignatureEnvelope.fromRpc(multisig),
68
67
  )
69
68
  })
70
69
 
71
- test('decodes a bootstrap multisig envelope', () => {
72
- expect(
73
- z.decode(z_SignatureEnvelope.SignatureEnvelope, multisigBootstrap),
74
- ).toEqual(core_SignatureEnvelope.fromRpc(multisigBootstrap))
75
- })
76
-
77
70
  test('decodes recursive multisig approvals', () => {
78
71
  const nested = {
79
72
  ...multisig,
80
73
  signatures: [
81
74
  {
82
75
  account: '0x1111111111111111111111111111111111111111',
76
+ config: {
77
+ ...config,
78
+ version: '0x1',
79
+ },
83
80
  signatures: [secp256k1],
84
81
  },
85
82
  ],
@@ -96,26 +93,17 @@ describe('SignatureEnvelope', () => {
96
93
  )
97
94
  })
98
95
 
99
- test('round-trips initialized multisig via encode', () => {
96
+ test('round-trips multisig via encode', () => {
100
97
  const decoded = z.decode(z_SignatureEnvelope.SignatureEnvelope, multisig)
101
98
  expect(z.encode(z_SignatureEnvelope.SignatureEnvelope, decoded)).toEqual(
102
99
  core_SignatureEnvelope.toRpc(decoded),
103
100
  )
104
101
  })
105
102
 
106
- test('round-trips bootstrap multisig via encode', () => {
107
- const decoded = z.decode(
108
- z_SignatureEnvelope.SignatureEnvelope,
109
- multisigBootstrap,
110
- )
111
- expect(z.encode(z_SignatureEnvelope.SignatureEnvelope, decoded)).toEqual(
112
- multisigBootstrap,
113
- )
114
- })
115
-
116
103
  test('rejects invalid recursive multisig domains before encode', () => {
117
104
  const invalid = {
118
105
  account: multisig.account,
106
+ config: { ...config, version: 0n },
119
107
  signatures: [
120
108
  {
121
109
  inner: core_SignatureEnvelope.fromRpc(secp256k1),
@@ -168,10 +156,12 @@ describe('SignatureEnvelope', () => {
168
156
  } as const
169
157
  const depth2 = {
170
158
  account: '0x1111111111111111111111111111111111111111',
159
+ config: { ...config, version: '0x1' },
171
160
  signatures: [secp256k1],
172
161
  } as const
173
162
  const depth3 = {
174
163
  account: '0x2222222222222222222222222222222222222222',
164
+ config: { ...config, version: '0x1' },
175
165
  signatures: [depth2],
176
166
  } as const
177
167
 
@@ -189,11 +179,12 @@ describe('SignatureEnvelope', () => {
189
179
  ).toMatchInlineSnapshot(`false`)
190
180
  })
191
181
 
192
- test('rejects mixed multisig initialization fields', () => {
182
+ test('rejects old multisig witness shapes', () => {
193
183
  expect(
194
184
  z.safeDecode(z_SignatureEnvelope.SignatureEnvelope, {
195
- ...multisigBootstrap,
185
+ init: config,
196
186
  account: multisig.account,
187
+ signatures: [secp256k1],
197
188
  } as never).success,
198
189
  ).toMatchInlineSnapshot(`false`)
199
190
  })
@@ -44,15 +44,67 @@ describe('TransactionRequest', () => {
44
44
  )
45
45
  })
46
46
 
47
- test('gas-model hints and capabilities round-trip', () => {
47
+ test('capabilities and key hints round-trip', () => {
48
48
  const hints = {
49
49
  capabilities: { balanceDiffs: true },
50
50
  keyData: '0x0578',
51
51
  keyId: '0xcccccccccccccccccccccccccccccccccccccccc',
52
52
  keyType: 'webAuthn',
53
- multisigInit: {
54
- salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
55
- threshold: 2,
53
+ } as const
54
+
55
+ const decoded = z.decode(z_TransactionRequest.TransactionRequest, {
56
+ ...rpc,
57
+ ...hints,
58
+ })
59
+ expect(decoded).toMatchObject(hints)
60
+
61
+ const encoded = z.encode(z_TransactionRequest.TransactionRequest, decoded)
62
+ expect(encoded).toMatchObject(hints)
63
+ expect(encoded).toEqual(core_TransactionRequest.toRpc(decoded))
64
+ })
65
+
66
+ test('multisig witness round-trips', () => {
67
+ const witness = {
68
+ account: '0xcccccccccccccccccccccccccccccccccccccccc',
69
+ approvals: [
70
+ {
71
+ keyData: '0x0578',
72
+ keyType: 'webAuthn',
73
+ owner: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
74
+ type: 'primitive',
75
+ },
76
+ {
77
+ type: 'multisig',
78
+ witness: {
79
+ account: '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
80
+ approvals: [
81
+ {
82
+ keyType: 'secp256k1',
83
+ owner: '0xdddddddddddddddddddddddddddddddddddddddd',
84
+ },
85
+ {
86
+ owner: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
87
+ },
88
+ ],
89
+ config: {
90
+ owners: [
91
+ {
92
+ owner: '0xdddddddddddddddddddddddddddddddddddddddd',
93
+ weight: 1,
94
+ },
95
+ {
96
+ owner: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
97
+ weight: 1,
98
+ },
99
+ ],
100
+ salt: '0x2222222222222222222222222222222222222222222222222222222222222222',
101
+ threshold: 2,
102
+ version: 2,
103
+ },
104
+ },
105
+ },
106
+ ],
107
+ config: {
56
108
  owners: [
57
109
  {
58
110
  owner: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
@@ -63,18 +115,134 @@ describe('TransactionRequest', () => {
63
115
  weight: 1,
64
116
  },
65
117
  ],
118
+ salt: '0x1111111111111111111111111111111111111111111111111111111111111111',
119
+ threshold: 2,
120
+ version: 1,
66
121
  },
67
- multisigSignatureCount: 2,
68
122
  } as const
69
123
 
70
124
  const decoded = z.decode(z_TransactionRequest.TransactionRequest, {
71
125
  ...rpc,
72
- ...hints,
126
+ multisigWitness: witness,
73
127
  })
74
- expect(decoded).toMatchObject(hints)
128
+ expect(decoded.multisigWitness).toMatchInlineSnapshot(`
129
+ {
130
+ "account": "0xcccccccccccccccccccccccccccccccccccccccc",
131
+ "approvals": [
132
+ {
133
+ "keyData": "0x0578",
134
+ "keyType": "webAuthn",
135
+ "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
136
+ "type": "primitive",
137
+ },
138
+ {
139
+ "type": "multisig",
140
+ "witness": {
141
+ "account": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
142
+ "approvals": [
143
+ {
144
+ "keyType": "secp256k1",
145
+ "owner": "0xdddddddddddddddddddddddddddddddddddddddd",
146
+ },
147
+ {
148
+ "owner": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
149
+ },
150
+ ],
151
+ "config": {
152
+ "owners": [
153
+ {
154
+ "owner": "0xdddddddddddddddddddddddddddddddddddddddd",
155
+ "weight": 1,
156
+ },
157
+ {
158
+ "owner": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
159
+ "weight": 1,
160
+ },
161
+ ],
162
+ "salt": "0x2222222222222222222222222222222222222222222222222222222222222222",
163
+ "threshold": 2,
164
+ "version": 2n,
165
+ },
166
+ },
167
+ },
168
+ ],
169
+ "config": {
170
+ "owners": [
171
+ {
172
+ "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
173
+ "weight": 1,
174
+ },
175
+ {
176
+ "owner": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
177
+ "weight": 1,
178
+ },
179
+ ],
180
+ "salt": "0x1111111111111111111111111111111111111111111111111111111111111111",
181
+ "threshold": 2,
182
+ "version": 1n,
183
+ },
184
+ }
185
+ `)
75
186
 
76
187
  const encoded = z.encode(z_TransactionRequest.TransactionRequest, decoded)
77
- expect(encoded).toMatchObject(hints)
188
+ expect(encoded.multisigWitness).toMatchInlineSnapshot(`
189
+ {
190
+ "account": "0xcccccccccccccccccccccccccccccccccccccccc",
191
+ "approvals": [
192
+ {
193
+ "keyData": "0x0578",
194
+ "keyType": "webAuthn",
195
+ "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
196
+ "type": "primitive",
197
+ },
198
+ {
199
+ "type": "multisig",
200
+ "witness": {
201
+ "account": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
202
+ "approvals": [
203
+ {
204
+ "keyType": "secp256k1",
205
+ "owner": "0xdddddddddddddddddddddddddddddddddddddddd",
206
+ },
207
+ {
208
+ "owner": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
209
+ },
210
+ ],
211
+ "config": {
212
+ "owners": [
213
+ {
214
+ "owner": "0xdddddddddddddddddddddddddddddddddddddddd",
215
+ "weight": 1,
216
+ },
217
+ {
218
+ "owner": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
219
+ "weight": 1,
220
+ },
221
+ ],
222
+ "salt": "0x2222222222222222222222222222222222222222222222222222222222222222",
223
+ "threshold": 2,
224
+ "version": 2,
225
+ },
226
+ },
227
+ },
228
+ ],
229
+ "config": {
230
+ "owners": [
231
+ {
232
+ "owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
233
+ "weight": 1,
234
+ },
235
+ {
236
+ "owner": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
237
+ "weight": 1,
238
+ },
239
+ ],
240
+ "salt": "0x1111111111111111111111111111111111111111111111111111111111111111",
241
+ "threshold": 2,
242
+ "version": 1,
243
+ },
244
+ }
245
+ `)
78
246
  expect(encoded).toEqual(core_TransactionRequest.toRpc(decoded))
79
247
  })
80
248
 
@@ -2,6 +2,8 @@
2
2
  export * as AuthorizationTempo from './AuthorizationTempo.js'
3
3
  export * as KeyAuthorization from './KeyAuthorization.js'
4
4
  export * as MultisigConfig from './MultisigConfig.js'
5
+ export * as MultisigOperation from './MultisigOperation.js'
6
+ export * as MultisigWitness from './MultisigWitness.js'
5
7
  export * as PoolId from './PoolId.js'
6
8
  export * as RpcSchemaTempo from './RpcSchemaTempo.js'
7
9
  export * as SignatureEnvelope from './SignatureEnvelope.js'