@0xsequence/wallet-primitives 0.0.0-20250520201059

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 (96) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +7 -0
  3. package/LICENSE +202 -0
  4. package/dist/address.d.ts +5 -0
  5. package/dist/address.d.ts.map +1 -0
  6. package/dist/address.js +7 -0
  7. package/dist/address.js.map +1 -0
  8. package/dist/attestation.d.ts +24 -0
  9. package/dist/attestation.d.ts.map +1 -0
  10. package/dist/attestation.js +77 -0
  11. package/dist/attestation.js.map +1 -0
  12. package/dist/config.d.ts +85 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +381 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/constants.d.ts +173 -0
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +31 -0
  19. package/dist/constants.js.map +1 -0
  20. package/dist/context.d.ts +9 -0
  21. package/dist/context.d.ts.map +1 -0
  22. package/dist/context.js +8 -0
  23. package/dist/context.js.map +1 -0
  24. package/dist/erc-6492.d.ts +19 -0
  25. package/dist/erc-6492.d.ts.map +1 -0
  26. package/dist/erc-6492.js +64 -0
  27. package/dist/erc-6492.js.map +1 -0
  28. package/dist/extensions/index.d.ts +9 -0
  29. package/dist/extensions/index.d.ts.map +1 -0
  30. package/dist/extensions/index.js +7 -0
  31. package/dist/extensions/index.js.map +1 -0
  32. package/dist/extensions/passkeys.d.ts +31 -0
  33. package/dist/extensions/passkeys.d.ts.map +1 -0
  34. package/dist/extensions/passkeys.js +224 -0
  35. package/dist/extensions/passkeys.js.map +1 -0
  36. package/dist/extensions/recovery.d.ts +310 -0
  37. package/dist/extensions/recovery.d.ts.map +1 -0
  38. package/dist/extensions/recovery.js +444 -0
  39. package/dist/extensions/recovery.js.map +1 -0
  40. package/dist/generic-tree.d.ts +14 -0
  41. package/dist/generic-tree.d.ts.map +1 -0
  42. package/dist/generic-tree.js +34 -0
  43. package/dist/generic-tree.js.map +1 -0
  44. package/dist/index.d.ts +16 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +16 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/network.d.ts +15 -0
  49. package/dist/network.d.ts.map +1 -0
  50. package/dist/network.js +24 -0
  51. package/dist/network.js.map +1 -0
  52. package/dist/payload.d.ts +108 -0
  53. package/dist/payload.d.ts.map +1 -0
  54. package/dist/payload.js +627 -0
  55. package/dist/payload.js.map +1 -0
  56. package/dist/permission.d.ts +73 -0
  57. package/dist/permission.d.ts.map +1 -0
  58. package/dist/permission.js +188 -0
  59. package/dist/permission.js.map +1 -0
  60. package/dist/session-config.d.ts +113 -0
  61. package/dist/session-config.d.ts.map +1 -0
  62. package/dist/session-config.js +554 -0
  63. package/dist/session-config.js.map +1 -0
  64. package/dist/session-signature.d.ts +24 -0
  65. package/dist/session-signature.d.ts.map +1 -0
  66. package/dist/session-signature.js +141 -0
  67. package/dist/session-signature.js.map +1 -0
  68. package/dist/signature.d.ts +108 -0
  69. package/dist/signature.d.ts.map +1 -0
  70. package/dist/signature.js +1079 -0
  71. package/dist/signature.js.map +1 -0
  72. package/dist/utils.d.ts +45 -0
  73. package/dist/utils.d.ts.map +1 -0
  74. package/dist/utils.js +100 -0
  75. package/dist/utils.js.map +1 -0
  76. package/eslint.config.mjs +4 -0
  77. package/package.json +27 -0
  78. package/src/address.ts +19 -0
  79. package/src/attestation.ts +114 -0
  80. package/src/config.ts +521 -0
  81. package/src/constants.ts +39 -0
  82. package/src/context.ts +16 -0
  83. package/src/erc-6492.ts +97 -0
  84. package/src/extensions/index.ts +14 -0
  85. package/src/extensions/passkeys.ts +283 -0
  86. package/src/extensions/recovery.ts +542 -0
  87. package/src/generic-tree.ts +55 -0
  88. package/src/index.ts +15 -0
  89. package/src/network.ts +37 -0
  90. package/src/payload.ts +825 -0
  91. package/src/permission.ts +252 -0
  92. package/src/session-config.ts +681 -0
  93. package/src/session-signature.ts +197 -0
  94. package/src/signature.ts +1398 -0
  95. package/src/utils.ts +114 -0
  96. package/tsconfig.json +10 -0
@@ -0,0 +1,627 @@
1
+ import { AbiParameters, Address, Bytes, Hash, Hex } from 'ox';
2
+ import { getSignPayload } from 'ox/TypedData';
3
+ import { Attestation } from './index.js';
4
+ import { minBytesFor } from './utils.js';
5
+ export const KIND_TRANSACTIONS = 0x00;
6
+ export const KIND_MESSAGE = 0x01;
7
+ export const KIND_CONFIG_UPDATE = 0x02;
8
+ export const KIND_DIGEST = 0x03;
9
+ export const BEHAVIOR_IGNORE_ERROR = 0x00;
10
+ export const BEHAVIOR_REVERT_ON_ERROR = 0x01;
11
+ export const BEHAVIOR_ABORT_ON_ERROR = 0x02;
12
+ export function fromMessage(message) {
13
+ return {
14
+ type: 'message',
15
+ message,
16
+ };
17
+ }
18
+ export function fromConfigUpdate(imageHash) {
19
+ return {
20
+ type: 'config-update',
21
+ imageHash,
22
+ };
23
+ }
24
+ export function fromDigest(digest) {
25
+ return {
26
+ type: 'digest',
27
+ digest,
28
+ };
29
+ }
30
+ export function fromCall(nonce, space, calls) {
31
+ return {
32
+ type: 'call',
33
+ nonce,
34
+ space,
35
+ calls,
36
+ };
37
+ }
38
+ export function isCalls(payload) {
39
+ return payload.type === 'call';
40
+ }
41
+ export function isMessage(payload) {
42
+ return payload.type === 'message';
43
+ }
44
+ export function isConfigUpdate(payload) {
45
+ return payload.type === 'config-update';
46
+ }
47
+ export function isDigest(payload) {
48
+ return payload.type === 'digest';
49
+ }
50
+ export function isRecovery(payload) {
51
+ if (isSessionImplicitAuthorize(payload)) {
52
+ return false;
53
+ }
54
+ return payload.recovery === true;
55
+ }
56
+ export function toRecovery(payload) {
57
+ if (isRecovery(payload)) {
58
+ return payload;
59
+ }
60
+ return {
61
+ ...payload,
62
+ recovery: true,
63
+ };
64
+ }
65
+ export function isSessionImplicitAuthorize(payload) {
66
+ return payload.type === 'session-implicit-authorize';
67
+ }
68
+ export function encode(payload, self) {
69
+ const callsLen = payload.calls.length;
70
+ const nonceBytesNeeded = minBytesFor(payload.nonce);
71
+ if (nonceBytesNeeded > 15) {
72
+ throw new Error('Nonce is too large');
73
+ }
74
+ /*
75
+ globalFlag layout:
76
+ bit 0: spaceZeroFlag => 1 if space == 0, else 0
77
+ bits [1..3]: how many bytes we use to encode nonce
78
+ bit 4: singleCallFlag => 1 if there's exactly one call
79
+ bit 5: callsCountSizeFlag => 1 if #calls stored in 2 bytes, 0 if in 1 byte
80
+ (bits [6..7] are unused/free)
81
+ */
82
+ let globalFlag = 0;
83
+ if (payload.space === 0n) {
84
+ globalFlag |= 0x01;
85
+ }
86
+ // bits [1..3] => how many bytes for the nonce
87
+ globalFlag |= nonceBytesNeeded << 1;
88
+ // bit [4] => singleCallFlag
89
+ if (callsLen === 1) {
90
+ globalFlag |= 0x10;
91
+ }
92
+ /*
93
+ If there's more than one call, we decide if we store the #calls in 1 or 2 bytes.
94
+ bit [5] => callsCountSizeFlag: 1 => 2 bytes, 0 => 1 byte
95
+ */
96
+ let callsCountSize = 0;
97
+ if (callsLen !== 1) {
98
+ if (callsLen < 256) {
99
+ callsCountSize = 1;
100
+ }
101
+ else if (callsLen < 65536) {
102
+ callsCountSize = 2;
103
+ globalFlag |= 0x20;
104
+ }
105
+ else {
106
+ throw new Error('Too many calls');
107
+ }
108
+ }
109
+ // Start building the output
110
+ // We'll accumulate in a Bytes object as we go
111
+ let out = Bytes.fromNumber(globalFlag, { size: 1 });
112
+ // If space isn't 0, store it as exactly 20 bytes (like uint160)
113
+ if (payload.space !== 0n) {
114
+ const spaceBytes = Bytes.padLeft(Bytes.fromNumber(payload.space), 20);
115
+ out = Bytes.concat(out, spaceBytes);
116
+ }
117
+ // Encode nonce in nonceBytesNeeded
118
+ if (nonceBytesNeeded > 0) {
119
+ // We'll store nonce in exactly nonceBytesNeeded bytes
120
+ const nonceBytes = Bytes.padLeft(Bytes.fromNumber(payload.nonce), nonceBytesNeeded);
121
+ out = Bytes.concat(out, nonceBytes);
122
+ }
123
+ // Store callsLen if not single-call
124
+ if (callsLen !== 1) {
125
+ if (callsCountSize === 1) {
126
+ out = Bytes.concat(out, Bytes.fromNumber(callsLen, { size: 1 }));
127
+ }
128
+ else {
129
+ // callsCountSize === 2
130
+ out = Bytes.concat(out, Bytes.fromNumber(callsLen, { size: 2 }));
131
+ }
132
+ }
133
+ // Now encode each call
134
+ for (const call of payload.calls) {
135
+ /*
136
+ call flags layout (1 byte):
137
+ bit 0 => toSelf (call.to == this)
138
+ bit 1 => hasValue (call.value != 0)
139
+ bit 2 => hasData (call.data.length > 0)
140
+ bit 3 => hasGasLimit (call.gasLimit != 0)
141
+ bit 4 => delegateCall
142
+ bit 5 => onlyFallback
143
+ bits [6..7] => behaviorOnError => 0=ignore, 1=revert, 2=abort
144
+ */
145
+ let flags = 0;
146
+ if (self && Address.isEqual(call.to, self)) {
147
+ flags |= 0x01;
148
+ }
149
+ if (call.value !== 0n) {
150
+ flags |= 0x02;
151
+ }
152
+ if (call.data && call.data.length > 0) {
153
+ flags |= 0x04;
154
+ }
155
+ if (call.gasLimit !== 0n) {
156
+ flags |= 0x08;
157
+ }
158
+ if (call.delegateCall) {
159
+ flags |= 0x10;
160
+ }
161
+ if (call.onlyFallback) {
162
+ flags |= 0x20;
163
+ }
164
+ flags |= encodeBehaviorOnError(call.behaviorOnError) << 6;
165
+ out = Bytes.concat(out, Bytes.fromNumber(flags, { size: 1 }));
166
+ // If toSelf bit not set, store 20-byte address
167
+ if ((flags & 0x01) === 0) {
168
+ const addrBytes = Bytes.fromHex(call.to);
169
+ if (addrBytes.length !== 20) {
170
+ throw new Error(`Invalid 'to' address: ${call.to}`);
171
+ }
172
+ out = Bytes.concat(out, addrBytes);
173
+ }
174
+ // If hasValue, store 32 bytes of value
175
+ if ((flags & 0x02) !== 0) {
176
+ const valueBytes = Bytes.padLeft(Bytes.fromNumber(call.value), 32);
177
+ out = Bytes.concat(out, valueBytes);
178
+ }
179
+ // If hasData, store 3 bytes of data length + data
180
+ if ((flags & 0x04) !== 0) {
181
+ const dataLen = Bytes.fromHex(call.data).length;
182
+ if (dataLen > 0xffffff) {
183
+ throw new Error('Data too large');
184
+ }
185
+ // 3 bytes => up to 16,777,215
186
+ const dataLenBytes = Bytes.fromNumber(dataLen, { size: 3 });
187
+ out = Bytes.concat(out, dataLenBytes, Bytes.fromHex(call.data));
188
+ }
189
+ // If hasGasLimit, store 32 bytes of gasLimit
190
+ if ((flags & 0x08) !== 0) {
191
+ const gasBytes = Bytes.padLeft(Bytes.fromNumber(call.gasLimit), 32);
192
+ out = Bytes.concat(out, gasBytes);
193
+ }
194
+ }
195
+ return out;
196
+ }
197
+ export function encodeSapient(chainId, payload) {
198
+ const encoded = {
199
+ kind: 0,
200
+ noChainId: !chainId,
201
+ calls: [],
202
+ space: 0n,
203
+ nonce: 0n,
204
+ message: '0x',
205
+ imageHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
206
+ digest: '0x0000000000000000000000000000000000000000000000000000000000000000',
207
+ parentWallets: payload.parentWallets ?? [],
208
+ };
209
+ switch (payload.type) {
210
+ case 'call':
211
+ encoded.kind = 0;
212
+ encoded.calls = payload.calls.map((call) => ({
213
+ ...call,
214
+ data: call.data,
215
+ behaviorOnError: BigInt(encodeBehaviorOnError(call.behaviorOnError)),
216
+ }));
217
+ encoded.space = payload.space;
218
+ encoded.nonce = payload.nonce;
219
+ break;
220
+ case 'message':
221
+ encoded.kind = 1;
222
+ encoded.message = payload.message;
223
+ break;
224
+ case 'config-update':
225
+ encoded.kind = 2;
226
+ encoded.imageHash = payload.imageHash;
227
+ break;
228
+ case 'digest':
229
+ encoded.kind = 3;
230
+ encoded.digest = payload.digest;
231
+ break;
232
+ }
233
+ return encoded;
234
+ }
235
+ export function hash(wallet, chainId, payload) {
236
+ if (isDigest(payload)) {
237
+ return Bytes.fromHex(payload.digest);
238
+ }
239
+ if (isSessionImplicitAuthorize(payload)) {
240
+ return Attestation.hash(payload.attestation);
241
+ }
242
+ const typedData = toTyped(wallet, chainId, payload);
243
+ return Bytes.fromHex(getSignPayload(typedData));
244
+ }
245
+ function domainFor(payload, wallet, chainId) {
246
+ if (isRecovery(payload)) {
247
+ return {
248
+ name: 'Sequence Wallet - Recovery Mode',
249
+ version: '1',
250
+ chainId: Number(chainId),
251
+ verifyingContract: wallet,
252
+ };
253
+ }
254
+ return {
255
+ name: 'Sequence Wallet',
256
+ version: '3',
257
+ chainId: Number(chainId),
258
+ verifyingContract: wallet,
259
+ };
260
+ }
261
+ export function toTyped(wallet, chainId, payload) {
262
+ const domain = domainFor(payload, wallet, chainId);
263
+ switch (payload.type) {
264
+ case 'call': {
265
+ // This matches the EIP712 structure used in our hash() function
266
+ const types = {
267
+ Calls: [
268
+ { name: 'calls', type: 'Call[]' },
269
+ { name: 'space', type: 'uint256' },
270
+ { name: 'nonce', type: 'uint256' },
271
+ { name: 'wallets', type: 'address[]' },
272
+ ],
273
+ Call: [
274
+ { name: 'to', type: 'address' },
275
+ { name: 'value', type: 'uint256' },
276
+ { name: 'data', type: 'bytes' },
277
+ { name: 'gasLimit', type: 'uint256' },
278
+ { name: 'delegateCall', type: 'bool' },
279
+ { name: 'onlyFallback', type: 'bool' },
280
+ { name: 'behaviorOnError', type: 'uint256' },
281
+ ],
282
+ };
283
+ // We ensure 'behaviorOnError' is turned into a numeric value
284
+ const message = {
285
+ calls: payload.calls.map((call) => ({
286
+ to: call.to,
287
+ value: call.value.toString(),
288
+ data: call.data,
289
+ gasLimit: call.gasLimit.toString(),
290
+ delegateCall: call.delegateCall,
291
+ onlyFallback: call.onlyFallback,
292
+ behaviorOnError: BigInt(encodeBehaviorOnError(call.behaviorOnError)).toString(),
293
+ })),
294
+ space: payload.space.toString(),
295
+ nonce: payload.nonce.toString(),
296
+ wallets: payload.parentWallets ?? [],
297
+ };
298
+ return {
299
+ domain,
300
+ types,
301
+ primaryType: 'Calls',
302
+ message,
303
+ };
304
+ }
305
+ case 'message': {
306
+ const types = {
307
+ Message: [
308
+ { name: 'message', type: 'bytes' },
309
+ { name: 'wallets', type: 'address[]' },
310
+ ],
311
+ };
312
+ const message = {
313
+ message: payload.message,
314
+ wallets: payload.parentWallets ?? [],
315
+ };
316
+ return {
317
+ domain,
318
+ types,
319
+ primaryType: 'Message',
320
+ message,
321
+ };
322
+ }
323
+ case 'config-update': {
324
+ const types = {
325
+ ConfigUpdate: [
326
+ { name: 'imageHash', type: 'bytes32' },
327
+ { name: 'wallets', type: 'address[]' },
328
+ ],
329
+ };
330
+ const message = {
331
+ imageHash: payload.imageHash,
332
+ wallets: payload.parentWallets ?? [],
333
+ };
334
+ return {
335
+ domain,
336
+ types,
337
+ primaryType: 'ConfigUpdate',
338
+ message,
339
+ };
340
+ }
341
+ case 'digest': {
342
+ throw new Error('Digest does not support typed data - Use message instead');
343
+ }
344
+ case 'session-implicit-authorize': {
345
+ throw new Error('Payload does not support typed data');
346
+ }
347
+ }
348
+ }
349
+ export function encodeBehaviorOnError(behaviorOnError) {
350
+ switch (behaviorOnError) {
351
+ case 'ignore':
352
+ return BEHAVIOR_IGNORE_ERROR;
353
+ case 'revert':
354
+ return BEHAVIOR_REVERT_ON_ERROR;
355
+ case 'abort':
356
+ return BEHAVIOR_ABORT_ON_ERROR;
357
+ }
358
+ }
359
+ export function hashCall(call) {
360
+ const CALL_TYPEHASH = Hash.keccak256(Bytes.fromString('Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)'));
361
+ return Hash.keccak256(AbiParameters.encode([
362
+ { type: 'bytes32' },
363
+ { type: 'address' },
364
+ { type: 'uint256' },
365
+ { type: 'bytes32' },
366
+ { type: 'uint256' },
367
+ { type: 'bool' },
368
+ { type: 'bool' },
369
+ { type: 'uint256' },
370
+ ], [
371
+ Hex.from(CALL_TYPEHASH),
372
+ Hex.from(call.to),
373
+ call.value,
374
+ Hex.from(Hash.keccak256(call.data)),
375
+ call.gasLimit,
376
+ call.delegateCall,
377
+ call.onlyFallback,
378
+ BigInt(encodeBehaviorOnError(call.behaviorOnError)),
379
+ ]));
380
+ }
381
+ export function decode(packed, self) {
382
+ let pointer = 0;
383
+ if (packed.length < 1) {
384
+ throw new Error('Invalid packed data: missing globalFlag');
385
+ }
386
+ // Read globalFlag
387
+ const globalFlag = Bytes.toNumber(packed.slice(pointer, pointer + 1));
388
+ pointer += 1;
389
+ // bit 0 => spaceZeroFlag
390
+ const spaceZeroFlag = (globalFlag & 0x01) === 0x01;
391
+ let space = 0n;
392
+ if (!spaceZeroFlag) {
393
+ if (pointer + 20 > packed.length) {
394
+ throw new Error('Invalid packed data: not enough bytes for space');
395
+ }
396
+ space = Bytes.toBigInt(packed.slice(pointer, pointer + 20));
397
+ pointer += 20;
398
+ }
399
+ // bits [1..3] => nonceSize
400
+ const nonceSize = (globalFlag >> 1) & 0x07;
401
+ let nonce = 0n;
402
+ if (nonceSize > 0) {
403
+ if (pointer + nonceSize > packed.length) {
404
+ throw new Error('Invalid packed data: not enough bytes for nonce');
405
+ }
406
+ nonce = Bytes.toBigInt(packed.slice(pointer, pointer + nonceSize));
407
+ pointer += nonceSize;
408
+ }
409
+ // bit [4] => singleCallFlag
410
+ let callsCount = 1;
411
+ const singleCallFlag = (globalFlag & 0x10) === 0x10;
412
+ if (!singleCallFlag) {
413
+ // bit [5] => callsCountSizeFlag => 1 => 2 bytes, 0 => 1 byte
414
+ const callsCountSizeFlag = (globalFlag & 0x20) === 0x20;
415
+ const countSize = callsCountSizeFlag ? 2 : 1;
416
+ if (pointer + countSize > packed.length) {
417
+ throw new Error('Invalid packed data: not enough bytes for callsCount');
418
+ }
419
+ callsCount = Bytes.toNumber(packed.slice(pointer, pointer + countSize));
420
+ pointer += countSize;
421
+ }
422
+ const calls = [];
423
+ for (let i = 0; i < callsCount; i++) {
424
+ if (pointer + 1 > packed.length) {
425
+ throw new Error('Invalid packed data: missing call flags');
426
+ }
427
+ const flags = Bytes.toNumber(packed.slice(pointer, pointer + 1));
428
+ pointer += 1;
429
+ // bit 0 => toSelf
430
+ let to;
431
+ if ((flags & 0x01) === 0x01) {
432
+ if (!self) {
433
+ throw new Error('Missing "self" address for toSelf call');
434
+ }
435
+ to = self;
436
+ }
437
+ else {
438
+ if (pointer + 20 > packed.length) {
439
+ throw new Error('Invalid packed data: not enough bytes for address');
440
+ }
441
+ to = Bytes.toHex(packed.slice(pointer, pointer + 20));
442
+ pointer += 20;
443
+ }
444
+ // bit 1 => hasValue
445
+ let value = 0n;
446
+ if ((flags & 0x02) === 0x02) {
447
+ if (pointer + 32 > packed.length) {
448
+ throw new Error('Invalid packed data: not enough bytes for value');
449
+ }
450
+ value = Bytes.toBigInt(packed.slice(pointer, pointer + 32));
451
+ pointer += 32;
452
+ }
453
+ // bit 2 => hasData
454
+ let data = Bytes.fromHex('0x');
455
+ if ((flags & 0x04) === 0x04) {
456
+ if (pointer + 3 > packed.length) {
457
+ throw new Error('Invalid packed data: not enough bytes for data length');
458
+ }
459
+ const dataLen = Bytes.toNumber(packed.slice(pointer, pointer + 3));
460
+ pointer += 3;
461
+ if (pointer + dataLen > packed.length) {
462
+ throw new Error('Invalid packed data: not enough bytes for call data');
463
+ }
464
+ data = packed.slice(pointer, pointer + dataLen);
465
+ pointer += dataLen;
466
+ }
467
+ // bit 3 => hasGasLimit
468
+ let gasLimit = 0n;
469
+ if ((flags & 0x08) === 0x08) {
470
+ if (pointer + 32 > packed.length) {
471
+ throw new Error('Invalid packed data: not enough bytes for gasLimit');
472
+ }
473
+ gasLimit = Bytes.toBigInt(packed.slice(pointer, pointer + 32));
474
+ pointer += 32;
475
+ }
476
+ // bits 4..5 => delegateCall, onlyFallback
477
+ const delegateCall = (flags & 0x10) === 0x10;
478
+ const onlyFallback = (flags & 0x20) === 0x20;
479
+ // bits 6..7 => behaviorOnError
480
+ const behaviorCode = (flags & 0xc0) >> 6;
481
+ const behaviorOnError = decodeBehaviorOnError(behaviorCode);
482
+ calls.push({
483
+ to,
484
+ value,
485
+ data: Bytes.toHex(data),
486
+ gasLimit,
487
+ delegateCall,
488
+ onlyFallback,
489
+ behaviorOnError,
490
+ });
491
+ }
492
+ return {
493
+ type: 'call',
494
+ space,
495
+ nonce,
496
+ calls,
497
+ };
498
+ }
499
+ export function decodeBehaviorOnError(value) {
500
+ switch (value) {
501
+ case 0:
502
+ return 'ignore';
503
+ case 1:
504
+ return 'revert';
505
+ case 2:
506
+ return 'abort';
507
+ default:
508
+ throw new Error(`Invalid behaviorOnError value: ${value}`);
509
+ }
510
+ }
511
+ function parseBehaviorOnError(behavior) {
512
+ switch (behavior) {
513
+ case BEHAVIOR_IGNORE_ERROR:
514
+ return 'ignore';
515
+ case BEHAVIOR_REVERT_ON_ERROR:
516
+ return 'revert';
517
+ case BEHAVIOR_ABORT_ON_ERROR:
518
+ return 'abort';
519
+ default:
520
+ throw new Error(`Unknown behavior: ${behavior}`);
521
+ }
522
+ }
523
+ export function fromAbiFormat(decoded) {
524
+ if (decoded.kind === KIND_TRANSACTIONS) {
525
+ return {
526
+ type: 'call',
527
+ nonce: decoded.nonce,
528
+ space: decoded.space,
529
+ calls: decoded.calls.map((call) => ({
530
+ to: Address.from(call.to),
531
+ value: call.value,
532
+ data: call.data,
533
+ gasLimit: call.gasLimit,
534
+ delegateCall: call.delegateCall,
535
+ onlyFallback: call.onlyFallback,
536
+ behaviorOnError: parseBehaviorOnError(Number(call.behaviorOnError)),
537
+ })),
538
+ parentWallets: decoded.parentWallets.map((wallet) => Address.from(wallet)),
539
+ };
540
+ }
541
+ if (decoded.kind === KIND_MESSAGE) {
542
+ return {
543
+ type: 'message',
544
+ message: decoded.message,
545
+ parentWallets: decoded.parentWallets.map((wallet) => Address.from(wallet)),
546
+ };
547
+ }
548
+ if (decoded.kind === KIND_CONFIG_UPDATE) {
549
+ return {
550
+ type: 'config-update',
551
+ imageHash: decoded.imageHash,
552
+ parentWallets: decoded.parentWallets.map((wallet) => Address.from(wallet)),
553
+ };
554
+ }
555
+ if (decoded.kind === KIND_DIGEST) {
556
+ return {
557
+ type: 'digest',
558
+ digest: decoded.digest,
559
+ parentWallets: decoded.parentWallets.map((wallet) => Address.from(wallet)),
560
+ };
561
+ }
562
+ throw new Error('Not implemented');
563
+ }
564
+ export function toAbiFormat(payload) {
565
+ if (payload.type === 'call') {
566
+ return {
567
+ kind: KIND_TRANSACTIONS,
568
+ noChainId: false,
569
+ calls: payload.calls.map((call) => ({
570
+ to: call.to,
571
+ value: call.value,
572
+ data: call.data,
573
+ gasLimit: call.gasLimit,
574
+ delegateCall: call.delegateCall,
575
+ onlyFallback: call.onlyFallback,
576
+ behaviorOnError: BigInt(encodeBehaviorOnError(call.behaviorOnError)),
577
+ })),
578
+ space: payload.space,
579
+ nonce: payload.nonce,
580
+ message: '0x',
581
+ imageHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
582
+ digest: '0x0000000000000000000000000000000000000000000000000000000000000000',
583
+ parentWallets: payload.parentWallets ?? [],
584
+ };
585
+ }
586
+ if (payload.type === 'message') {
587
+ return {
588
+ kind: KIND_MESSAGE,
589
+ noChainId: false,
590
+ calls: [],
591
+ space: 0n,
592
+ nonce: 0n,
593
+ message: payload.message,
594
+ imageHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
595
+ digest: '0x0000000000000000000000000000000000000000000000000000000000000000',
596
+ parentWallets: payload.parentWallets ?? [],
597
+ };
598
+ }
599
+ if (payload.type === 'config-update') {
600
+ return {
601
+ kind: KIND_CONFIG_UPDATE,
602
+ noChainId: false,
603
+ calls: [],
604
+ space: 0n,
605
+ nonce: 0n,
606
+ message: '0x',
607
+ imageHash: payload.imageHash,
608
+ digest: '0x0000000000000000000000000000000000000000000000000000000000000000',
609
+ parentWallets: payload.parentWallets ?? [],
610
+ };
611
+ }
612
+ if (payload.type === 'digest') {
613
+ return {
614
+ kind: KIND_DIGEST,
615
+ noChainId: false,
616
+ calls: [],
617
+ space: 0n,
618
+ nonce: 0n,
619
+ message: '0x',
620
+ imageHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
621
+ digest: payload.digest,
622
+ parentWallets: payload.parentWallets ?? [],
623
+ };
624
+ }
625
+ throw new Error('Invalid payload type');
626
+ }
627
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"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"}