ox 1.7.1 → 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.
- package/CHANGELOG.md +42 -0
- package/dist/core/Hash.js +1 -1
- package/dist/core/Hash.js.map +1 -1
- package/dist/tempo/KeyAuthorization.d.ts +2 -2
- package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
- package/dist/tempo/MultisigConfig.d.ts +151 -83
- package/dist/tempo/MultisigConfig.d.ts.map +1 -1
- package/dist/tempo/MultisigConfig.js +164 -86
- package/dist/tempo/MultisigConfig.js.map +1 -1
- package/dist/tempo/MultisigOperation.d.ts +340 -0
- package/dist/tempo/MultisigOperation.d.ts.map +1 -0
- package/dist/tempo/MultisigOperation.js +839 -0
- package/dist/tempo/MultisigOperation.js.map +1 -0
- package/dist/tempo/MultisigSimulation.d.ts +132 -0
- package/dist/tempo/MultisigSimulation.d.ts.map +1 -0
- package/dist/tempo/MultisigSimulation.js +140 -0
- package/dist/tempo/MultisigSimulation.js.map +1 -0
- package/dist/tempo/RpcSchemaTempo.d.ts +45 -0
- package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.d.ts +55 -86
- package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.js +93 -158
- package/dist/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/tempo/TransactionRequest.d.ts +9 -17
- package/dist/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/tempo/TransactionRequest.js +7 -7
- package/dist/tempo/TransactionRequest.js.map +1 -1
- package/dist/tempo/TxEnvelopeTempo.d.ts +3 -2
- package/dist/tempo/TxEnvelopeTempo.d.ts.map +1 -1
- package/dist/tempo/TxEnvelopeTempo.js +3 -2
- package/dist/tempo/TxEnvelopeTempo.js.map +1 -1
- package/dist/tempo/index.d.ts +22 -2
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +22 -2
- package/dist/tempo/index.js.map +1 -1
- package/dist/zod/tempo/AuthorizationTempo.d.ts +60 -180
- package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
- package/dist/zod/tempo/KeyAuthorization.d.ts +65 -118
- package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
- package/dist/zod/tempo/MultisigConfig.d.ts +31 -2
- package/dist/zod/tempo/MultisigConfig.d.ts.map +1 -1
- package/dist/zod/tempo/MultisigConfig.js +26 -3
- package/dist/zod/tempo/MultisigConfig.js.map +1 -1
- package/dist/zod/tempo/MultisigOperation.d.ts +158 -0
- package/dist/zod/tempo/MultisigOperation.d.ts.map +1 -0
- package/dist/zod/tempo/MultisigOperation.js +62 -0
- package/dist/zod/tempo/MultisigOperation.js.map +1 -0
- package/dist/zod/tempo/MultisigSimulation.d.ts +120 -0
- package/dist/zod/tempo/MultisigSimulation.d.ts.map +1 -0
- package/dist/zod/tempo/MultisigSimulation.js +78 -0
- package/dist/zod/tempo/MultisigSimulation.js.map +1 -0
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +528 -144
- package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.js +47 -0
- package/dist/zod/tempo/RpcSchemaTempo.js.map +1 -1
- package/dist/zod/tempo/SignatureEnvelope.d.ts +18 -54
- package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/zod/tempo/SignatureEnvelope.js +5 -22
- package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/zod/tempo/Transaction.d.ts +138 -348
- package/dist/zod/tempo/Transaction.d.ts.map +1 -1
- package/dist/zod/tempo/TransactionRequest.d.ts +286 -239
- package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/zod/tempo/TransactionRequest.js +11 -22
- package/dist/zod/tempo/TransactionRequest.js.map +1 -1
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts +60 -48
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
- package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +15 -12
- package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
- package/dist/zod/tempo/z.d.ts +2 -0
- package/dist/zod/tempo/z.d.ts.map +1 -1
- package/dist/zod/tempo/z.js +2 -0
- package/dist/zod/tempo/z.js.map +1 -1
- package/package.json +21 -1
- package/src/core/Hash.ts +1 -1
- package/src/core/_test/Hash.test.ts +15 -0
- package/src/tempo/AuthorizationTempo.test.ts +4 -0
- package/src/tempo/KeyAuthorization.test-d.ts +13 -12
- package/src/tempo/KeyAuthorization.test.ts +109 -3
- package/src/tempo/KeyAuthorization.ts +4 -4
- package/src/tempo/MultisigConfig.test-d.ts +52 -0
- package/src/tempo/MultisigConfig.test.ts +288 -227
- package/src/tempo/MultisigConfig.ts +275 -104
- package/src/tempo/MultisigOperation.test-d.ts +79 -0
- package/src/tempo/MultisigOperation.test.ts +1950 -0
- package/src/tempo/MultisigOperation.ts +1293 -0
- package/src/tempo/MultisigSimulation.test-d.ts +33 -0
- package/src/tempo/MultisigSimulation.test.ts +283 -0
- package/src/tempo/MultisigSimulation.ts +266 -0
- package/src/tempo/RpcSchemaTempo.test-d.ts +91 -0
- package/src/tempo/RpcSchemaTempo.ts +46 -0
- package/src/tempo/SignatureEnvelope.test-d.ts +33 -72
- package/src/tempo/SignatureEnvelope.test.ts +533 -500
- package/src/tempo/SignatureEnvelope.ts +171 -258
- package/src/tempo/Transaction.test.ts +61 -0
- package/src/tempo/TransactionRequest.test-d.ts +11 -0
- package/src/tempo/TransactionRequest.test.ts +214 -41
- package/src/tempo/TransactionRequest.ts +19 -20
- package/src/tempo/TxEnvelopeTempo.test-d.ts +7 -0
- package/src/tempo/TxEnvelopeTempo.test.ts +25 -0
- package/src/tempo/TxEnvelopeTempo.ts +5 -3
- package/src/tempo/index.ts +22 -2
- package/src/tempo/multisig.e2e.test.ts +164 -87
- package/src/version.ts +1 -1
- package/src/zod/tempo/MultisigConfig.ts +29 -3
- package/src/zod/tempo/MultisigOperation.ts +66 -0
- package/src/zod/tempo/MultisigSimulation.ts +98 -0
- package/src/zod/tempo/RpcSchemaTempo.ts +53 -0
- package/src/zod/tempo/SignatureEnvelope.ts +12 -54
- package/src/zod/tempo/TransactionRequest.ts +17 -26
- package/src/zod/tempo/_test/KeyAuthorization.test.ts +2 -4
- package/src/zod/tempo/_test/MultisigConfig.test-d.ts +13 -0
- package/src/zod/tempo/_test/MultisigConfig.test.ts +13 -2
- package/src/zod/tempo/_test/MultisigOperation.test-d.ts +27 -0
- package/src/zod/tempo/_test/MultisigOperation.test.ts +66 -0
- package/src/zod/tempo/_test/MultisigSimulation.test-d.ts +13 -0
- package/src/zod/tempo/_test/MultisigSimulation.test.ts +78 -0
- package/src/zod/tempo/_test/RpcSchemaTempo.test-d.ts +48 -0
- package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +83 -0
- package/src/zod/tempo/_test/SignatureEnvelope.test-d.ts +1 -1
- package/src/zod/tempo/_test/SignatureEnvelope.test.ts +57 -120
- package/src/zod/tempo/_test/TransactionRequest.test.ts +43 -16
- package/src/zod/tempo/z.ts +2 -0
|
@@ -19,39 +19,25 @@ const p256 = {
|
|
|
19
19
|
type: 'p256',
|
|
20
20
|
} as const
|
|
21
21
|
|
|
22
|
-
const multisig =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const multisigBootstrap = {
|
|
28
|
-
init: {
|
|
29
|
-
owners: [
|
|
30
|
-
{
|
|
31
|
-
owner: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
|
|
32
|
-
weight: 1,
|
|
33
|
-
},
|
|
34
|
-
],
|
|
35
|
-
salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
36
|
-
threshold: 1,
|
|
37
|
-
},
|
|
38
|
-
signatures: [secp256k1],
|
|
39
|
-
} as const
|
|
22
|
+
const multisig =
|
|
23
|
+
'0xf897949dba7f426b711d4893c11611eacf7cc334e7146bf83ba000000000000000000000000000000000000000000000000000000000000000008001d7d6947e5f4552091a69125d5dfcb7b8c2659029395bdf01f843b841869437e01f64bebeb78a8a6b30bfd3a993819c8cad82c807515d9b9e9b36f98535dfaa5eebc597715d05f6ce4927747f14fa4cd2acc717fdcd3877146437f8f41b' as const
|
|
24
|
+
const nestedMultisig =
|
|
25
|
+
'0xf8f0949969e2243075b27a8eab61009c59b77ab13b83f6f83ba033333333333333333333333333333333333333333333333333333333333333338001d7d6944f9f5b162a7464bcc260ce44d7ae0d935f9c583701f89cb89a05f897944f9f5b162a7464bcc260ce44d7ae0d935f9c5837f83ba022222222222222222222222222222222222222222222222222222222222222228001d7d6946813eb9362372eef6200f3b1dbc3f819671cba6901f843b841032aa6f3ea7b0b7069720d0f3891983c493d149326c5c957d864ed7371b8475e3e95325079b24491f4b6d68920e4b3bacd7c6094df6ed88b8674864ab559c8fb1b' as const
|
|
40
26
|
|
|
41
27
|
describe('SignatureEnvelope', () => {
|
|
42
|
-
test('decodes a secp256k1 envelope', () => {
|
|
28
|
+
test('behavior: decodes a secp256k1 envelope', () => {
|
|
43
29
|
expect(z.decode(z_SignatureEnvelope.SignatureEnvelope, secp256k1)).toEqual(
|
|
44
30
|
core_SignatureEnvelope.fromRpc(secp256k1),
|
|
45
31
|
)
|
|
46
32
|
})
|
|
47
33
|
|
|
48
|
-
test('decodes a p256 envelope', () => {
|
|
34
|
+
test('behavior: decodes a p256 envelope', () => {
|
|
49
35
|
expect(z.decode(z_SignatureEnvelope.SignatureEnvelope, p256)).toEqual(
|
|
50
36
|
core_SignatureEnvelope.fromRpc(p256),
|
|
51
37
|
)
|
|
52
38
|
})
|
|
53
39
|
|
|
54
|
-
test('decodes a recursive keychain envelope', () => {
|
|
40
|
+
test('behavior: decodes a recursive keychain envelope', () => {
|
|
55
41
|
const keychain = {
|
|
56
42
|
signature: secp256k1,
|
|
57
43
|
type: 'keychain',
|
|
@@ -62,152 +48,103 @@ describe('SignatureEnvelope', () => {
|
|
|
62
48
|
)
|
|
63
49
|
})
|
|
64
50
|
|
|
65
|
-
test('decodes
|
|
51
|
+
test('behavior: decodes a multisig envelope', () => {
|
|
66
52
|
expect(z.decode(z_SignatureEnvelope.SignatureEnvelope, multisig)).toEqual(
|
|
67
53
|
core_SignatureEnvelope.fromRpc(multisig),
|
|
68
54
|
)
|
|
69
55
|
})
|
|
70
56
|
|
|
71
|
-
test('decodes
|
|
57
|
+
test('behavior: decodes recursive multisig approvals', () => {
|
|
72
58
|
expect(
|
|
73
|
-
z.decode(z_SignatureEnvelope.SignatureEnvelope,
|
|
74
|
-
).toEqual(core_SignatureEnvelope.fromRpc(
|
|
59
|
+
z.decode(z_SignatureEnvelope.SignatureEnvelope, nestedMultisig),
|
|
60
|
+
).toEqual(core_SignatureEnvelope.fromRpc(nestedMultisig))
|
|
75
61
|
})
|
|
76
62
|
|
|
77
|
-
test('
|
|
78
|
-
const nested = {
|
|
79
|
-
...multisig,
|
|
80
|
-
signatures: [
|
|
81
|
-
{
|
|
82
|
-
account: '0x1111111111111111111111111111111111111111',
|
|
83
|
-
signatures: [secp256k1],
|
|
84
|
-
},
|
|
85
|
-
],
|
|
86
|
-
} as const
|
|
87
|
-
expect(z.decode(z_SignatureEnvelope.SignatureEnvelope, nested)).toEqual(
|
|
88
|
-
core_SignatureEnvelope.fromRpc(nested),
|
|
89
|
-
)
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
test('round-trips secp256k1 via encode', () => {
|
|
63
|
+
test('behavior: round-trips secp256k1 via encode', () => {
|
|
93
64
|
const decoded = z.decode(z_SignatureEnvelope.SignatureEnvelope, secp256k1)
|
|
94
65
|
expect(z.encode(z_SignatureEnvelope.SignatureEnvelope, decoded)).toEqual(
|
|
95
66
|
core_SignatureEnvelope.toRpc(decoded),
|
|
96
67
|
)
|
|
97
68
|
})
|
|
98
69
|
|
|
99
|
-
test('round-trips
|
|
70
|
+
test('behavior: round-trips multisig via encode', () => {
|
|
100
71
|
const decoded = z.decode(z_SignatureEnvelope.SignatureEnvelope, multisig)
|
|
101
72
|
expect(z.encode(z_SignatureEnvelope.SignatureEnvelope, decoded)).toEqual(
|
|
102
|
-
|
|
103
|
-
)
|
|
104
|
-
})
|
|
105
|
-
|
|
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,
|
|
73
|
+
multisig,
|
|
113
74
|
)
|
|
114
75
|
})
|
|
115
76
|
|
|
116
|
-
test('rejects invalid recursive multisig domains before encode', () => {
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
signatures: [
|
|
120
|
-
{
|
|
121
|
-
inner: core_SignatureEnvelope.fromRpc(secp256k1),
|
|
122
|
-
type: 'keychain',
|
|
123
|
-
userAddress: multisig.account,
|
|
124
|
-
},
|
|
125
|
-
],
|
|
126
|
-
type: 'multisig',
|
|
127
|
-
} as const
|
|
128
|
-
|
|
77
|
+
test('error: rejects invalid recursive multisig domains before encode', () => {
|
|
78
|
+
const decoded = core_SignatureEnvelope.fromRpc(multisig)
|
|
79
|
+
if (decoded.type !== 'multisig') throw new Error('unreachable')
|
|
129
80
|
expect(
|
|
130
|
-
z.safeEncode(z_SignatureEnvelope.SignatureEnvelope,
|
|
131
|
-
|
|
132
|
-
).toMatchInlineSnapshot(`false`)
|
|
133
|
-
})
|
|
134
|
-
|
|
135
|
-
test('rejects legacy multisig approval encoding', () => {
|
|
136
|
-
expect(
|
|
137
|
-
z.safeDecode(z_SignatureEnvelope.SignatureEnvelope, {
|
|
138
|
-
...multisig,
|
|
81
|
+
z.safeEncode(z_SignatureEnvelope.SignatureEnvelope, {
|
|
82
|
+
...decoded,
|
|
139
83
|
signatures: [
|
|
140
|
-
|
|
141
|
-
core_SignatureEnvelope.fromRpc(secp256k1),
|
|
142
|
-
|
|
84
|
+
{
|
|
85
|
+
inner: core_SignatureEnvelope.fromRpc(secp256k1),
|
|
86
|
+
type: 'keychain',
|
|
87
|
+
userAddress: decoded.account,
|
|
88
|
+
},
|
|
143
89
|
],
|
|
144
90
|
} as never).success,
|
|
145
91
|
).toMatchInlineSnapshot(`false`)
|
|
146
92
|
})
|
|
147
93
|
|
|
148
|
-
test('rejects multisig approval counts outside protocol limits', () => {
|
|
94
|
+
test('error: rejects multisig approval counts outside protocol limits', () => {
|
|
95
|
+
const decoded = core_SignatureEnvelope.fromRpc(multisig)
|
|
96
|
+
if (decoded.type !== 'multisig') throw new Error('unreachable')
|
|
149
97
|
expect(
|
|
150
|
-
z.
|
|
151
|
-
...
|
|
98
|
+
z.safeEncode(z_SignatureEnvelope.SignatureEnvelope, {
|
|
99
|
+
...decoded,
|
|
152
100
|
signatures: [],
|
|
153
|
-
}).success,
|
|
101
|
+
} as never).success,
|
|
154
102
|
).toMatchInlineSnapshot(`false`)
|
|
155
103
|
expect(
|
|
156
|
-
z.
|
|
157
|
-
...
|
|
158
|
-
signatures: Array.from({ length: 9 }, () =>
|
|
159
|
-
}).success,
|
|
104
|
+
z.safeEncode(z_SignatureEnvelope.SignatureEnvelope, {
|
|
105
|
+
...decoded,
|
|
106
|
+
signatures: Array.from({ length: 9 }, () => decoded.signatures[0]),
|
|
107
|
+
} as never).success,
|
|
160
108
|
).toMatchInlineSnapshot(`false`)
|
|
161
109
|
})
|
|
162
110
|
|
|
163
|
-
test('rejects
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
type: 'keychain',
|
|
167
|
-
userAddress: multisig.account,
|
|
168
|
-
} as const
|
|
169
|
-
const depth2 = {
|
|
170
|
-
account: '0x1111111111111111111111111111111111111111',
|
|
171
|
-
signatures: [secp256k1],
|
|
172
|
-
} as const
|
|
173
|
-
const depth3 = {
|
|
174
|
-
account: '0x2222222222222222222222222222222222222222',
|
|
175
|
-
signatures: [depth2],
|
|
176
|
-
} as const
|
|
177
|
-
|
|
111
|
+
test('error: rejects excess multisig nesting', () => {
|
|
112
|
+
const nested = core_SignatureEnvelope.fromRpc(nestedMultisig)
|
|
113
|
+
if (nested.type !== 'multisig') throw new Error('unreachable')
|
|
178
114
|
expect(
|
|
179
|
-
z.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}).success,
|
|
115
|
+
z.safeEncode(z_SignatureEnvelope.SignatureEnvelope, {
|
|
116
|
+
account: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
|
117
|
+
config: {
|
|
118
|
+
...nested.config,
|
|
119
|
+
owners: [{ owner: nested.account, weight: 1 }],
|
|
120
|
+
version: 1n,
|
|
121
|
+
},
|
|
122
|
+
signatures: [nested],
|
|
123
|
+
type: 'multisig',
|
|
124
|
+
} as never).success,
|
|
189
125
|
).toMatchInlineSnapshot(`false`)
|
|
190
126
|
})
|
|
191
127
|
|
|
192
|
-
test('rejects
|
|
128
|
+
test('error: rejects structured multisig RPC envelopes', () => {
|
|
193
129
|
expect(
|
|
194
130
|
z.safeDecode(z_SignatureEnvelope.SignatureEnvelope, {
|
|
195
|
-
|
|
196
|
-
|
|
131
|
+
account: '0x9dba7f426b711d4893c11611eacf7cc334e7146b',
|
|
132
|
+
config: {},
|
|
133
|
+
signatures: [],
|
|
197
134
|
} as never).success,
|
|
198
135
|
).toMatchInlineSnapshot(`false`)
|
|
199
136
|
})
|
|
200
137
|
|
|
201
|
-
test('rejects tagged multisig RPC envelopes', () => {
|
|
138
|
+
test('error: rejects tagged multisig RPC envelopes', () => {
|
|
202
139
|
expect(
|
|
203
|
-
z.safeDecode(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
140
|
+
z.safeDecode(
|
|
141
|
+
z_SignatureEnvelope.SignatureEnvelope,
|
|
142
|
+
`0x05${multisig.slice(2)}`,
|
|
143
|
+
).success,
|
|
207
144
|
).toMatchInlineSnapshot(`false`)
|
|
208
145
|
})
|
|
209
146
|
|
|
210
|
-
test('rejects an invalid envelope', () => {
|
|
147
|
+
test('error: rejects an invalid envelope', () => {
|
|
211
148
|
expect(
|
|
212
149
|
z.safeDecode(z_SignatureEnvelope.SignatureEnvelope, {
|
|
213
150
|
type: 'secp256k1',
|
|
@@ -44,27 +44,12 @@ describe('TransactionRequest', () => {
|
|
|
44
44
|
)
|
|
45
45
|
})
|
|
46
46
|
|
|
47
|
-
test('
|
|
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,
|
|
56
|
-
owners: [
|
|
57
|
-
{
|
|
58
|
-
owner: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
|
59
|
-
weight: 1,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
owner: '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
|
63
|
-
weight: 1,
|
|
64
|
-
},
|
|
65
|
-
],
|
|
66
|
-
},
|
|
67
|
-
multisigSignatureCount: 2,
|
|
68
53
|
} as const
|
|
69
54
|
|
|
70
55
|
const decoded = z.decode(z_TransactionRequest.TransactionRequest, {
|
|
@@ -78,6 +63,48 @@ describe('TransactionRequest', () => {
|
|
|
78
63
|
expect(encoded).toEqual(core_TransactionRequest.toRpc(decoded))
|
|
79
64
|
})
|
|
80
65
|
|
|
66
|
+
test('multisig simulation round-trips', () => {
|
|
67
|
+
const multisigSimulation = {
|
|
68
|
+
account: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
|
69
|
+
approvals: [
|
|
70
|
+
{
|
|
71
|
+
keyType: 'secp256k1',
|
|
72
|
+
owner: '0x1111111111111111111111111111111111111111',
|
|
73
|
+
type: 'primitive',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
spec: {
|
|
77
|
+
account: '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
|
|
78
|
+
approvals: [
|
|
79
|
+
{
|
|
80
|
+
keyData: '0x0578',
|
|
81
|
+
keyType: 'webAuthn',
|
|
82
|
+
owner: '0x2222222222222222222222222222222222222222',
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
config:
|
|
86
|
+
'0xf83ba022222222222222222222222222222222222222222222222222222222222222220101d7d694222222222222222222222222222222222222222201',
|
|
87
|
+
},
|
|
88
|
+
type: 'multisig',
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
config:
|
|
92
|
+
'0xf852a011111111111111111111111111111111111111111111111111111111111111118002eed694111111111111111111111111111111111111111101d694bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb01',
|
|
93
|
+
} as const
|
|
94
|
+
|
|
95
|
+
const decoded = z.decode(z_TransactionRequest.TransactionRequest, {
|
|
96
|
+
...rpc,
|
|
97
|
+
multisigSimulation,
|
|
98
|
+
})
|
|
99
|
+
expect(decoded).toEqual(
|
|
100
|
+
core_TransactionRequest.fromRpc({ ...rpc, multisigSimulation }),
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
const encoded = z.encode(z_TransactionRequest.TransactionRequest, decoded)
|
|
104
|
+
expect(encoded.multisigSimulation).toStrictEqual(multisigSimulation)
|
|
105
|
+
expect(encoded).toEqual(core_TransactionRequest.toRpc(decoded))
|
|
106
|
+
})
|
|
107
|
+
|
|
81
108
|
test('feeToken is withheld until the fee payer signs (TIP-76)', () => {
|
|
82
109
|
const decoded = z.decode(z_TransactionRequest.TransactionRequest, rpc)
|
|
83
110
|
const pending = z.encode(z_TransactionRequest.TransactionRequest, {
|
package/src/zod/tempo/z.ts
CHANGED
|
@@ -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 MultisigSimulation from './MultisigSimulation.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'
|