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
@@ -1,14 +1,15 @@
1
1
  import { expectTypeOf, test } from 'vp/test'
2
+ import * as MultisigConfig from './MultisigConfig.js'
2
3
  import * as SignatureEnvelope from './SignatureEnvelope.js'
3
4
 
4
- const signature = {
5
+ const signatureRpc = {
5
6
  r: '0x01',
6
7
  s: '0x02',
7
8
  type: 'secp256k1',
8
9
  yParity: '0x0',
9
10
  } as const satisfies SignatureEnvelope.SignatureEnvelopeRpc
10
11
 
11
- const signatureDomain = {
12
+ const signature = {
12
13
  signature: {
13
14
  r: '0x01',
14
15
  s: '0x02',
@@ -17,67 +18,81 @@ const signatureDomain = {
17
18
  type: 'secp256k1',
18
19
  } as const satisfies SignatureEnvelope.Secp256k1
19
20
 
21
+ const config = MultisigConfig.from({
22
+ owners: [
23
+ {
24
+ owner: '0x1111111111111111111111111111111111111111',
25
+ weight: 1,
26
+ },
27
+ ],
28
+ threshold: 1,
29
+ })
30
+
20
31
  test('toRpc preserves the signature type', () => {
21
32
  expectTypeOf(
22
- SignatureEnvelope.toRpc(signatureDomain),
33
+ SignatureEnvelope.toRpc(signature),
23
34
  ).toEqualTypeOf<SignatureEnvelope.Secp256k1Rpc>()
24
35
  })
25
36
 
26
- test('MultisigRpc uses static initialized and bootstrap shapes', () => {
27
- const initialized = {
37
+ test('MultisigRpc carries one complete witness shape', () => {
38
+ const rpc = {
28
39
  account: '0x1111111111111111111111111111111111111111',
29
- signatures: [signature],
40
+ config: MultisigConfig.toRpc(config),
41
+ signatures: [signatureRpc],
30
42
  } as const satisfies SignatureEnvelope.MultisigRpc
31
- const bootstrap = {
32
- init: {
33
- owners: [
34
- {
35
- owner: '0x1111111111111111111111111111111111111111',
36
- weight: 1,
37
- },
38
- ],
39
- threshold: 1,
40
- },
41
- signatures: [signature],
42
- } as const satisfies SignatureEnvelope.MultisigRpc
43
- const bootstrapWithAccountUndefined: SignatureEnvelope.MultisigRpc = {
44
- ...bootstrap,
45
- account: undefined,
46
- }
47
43
 
48
- expectTypeOf(initialized.signatures).toMatchTypeOf<
49
- readonly SignatureEnvelope.SignatureEnvelopeRpc[]
50
- >()
51
- expectTypeOf(bootstrap.signatures).toMatchTypeOf<
44
+ expectTypeOf(rpc.config).toMatchTypeOf<MultisigConfig.Rpc>()
45
+ expectTypeOf(rpc.signatures).toMatchTypeOf<
52
46
  readonly SignatureEnvelope.SignatureEnvelopeRpc[]
53
47
  >()
54
- expectTypeOf(
55
- bootstrapWithAccountUndefined,
56
- ).toMatchTypeOf<SignatureEnvelope.MultisigRpc>()
57
48
  expectTypeOf<
58
- SignatureEnvelope.GetType<typeof bootstrap>
49
+ SignatureEnvelope.GetType<typeof rpc>
59
50
  >().toEqualTypeOf<'multisig'>()
60
51
  })
61
52
 
62
- test('MultisigRpc rejects legacy shapes', () => {
63
- const combined = {
64
- account: '0x1111111111111111111111111111111111111111',
65
- init: {
66
- owners: [
67
- {
68
- owner: '0x1111111111111111111111111111111111111111',
69
- weight: 1,
70
- },
71
- ],
72
- threshold: 1,
73
- },
53
+ test('from derives an initial account', () => {
54
+ const multisig = SignatureEnvelope.from({
55
+ config,
56
+ signatures: [signature],
57
+ })
58
+
59
+ expectTypeOf(multisig).toMatchTypeOf<SignatureEnvelope.Multisig>()
60
+ expectTypeOf(multisig.config.version).toEqualTypeOf<bigint>()
61
+ })
62
+
63
+ test('from requires an account for a current config', () => {
64
+ // @ts-expect-error Current configurations require an explicit account.
65
+ SignatureEnvelope.from({
66
+ config: { ...config, version: 1 },
67
+ signatures: [signature],
68
+ })
69
+
70
+ const multisig = SignatureEnvelope.from({
71
+ account: '0x2222222222222222222222222222222222222222',
72
+ config: { ...config, version: 1 },
74
73
  signatures: [signature],
74
+ })
75
+ expectTypeOf(multisig).toMatchTypeOf<SignatureEnvelope.Multisig>()
76
+ })
77
+
78
+ test('MultisigRpc rejects old witness shapes', () => {
79
+ const accountOnly = {
80
+ account: '0x1111111111111111111111111111111111111111',
81
+ signatures: [signatureRpc],
75
82
  } as const
76
- // @ts-expect-error Bootstrap RPC signatures omit `account`.
77
- const combinedRpc: SignatureEnvelope.MultisigRpc = combined
83
+ // @ts-expect-error Multisig RPC signatures require config.
84
+ const accountOnlyRpc: SignatureEnvelope.MultisigRpc = accountOnly
85
+
86
+ const init = {
87
+ init: config,
88
+ signatures: [signatureRpc],
89
+ } as const
90
+ // @ts-expect-error Multisig RPC signatures no longer accept init.
91
+ const initRpc: SignatureEnvelope.MultisigRpc = init
78
92
 
79
93
  const serialized = {
80
94
  account: '0x1111111111111111111111111111111111111111',
95
+ config: MultisigConfig.toRpc(config),
81
96
  signatures: ['0x1234'],
82
97
  } as const
83
98
  // @ts-expect-error Owner approvals use structured RPC envelopes.
@@ -85,13 +100,15 @@ test('MultisigRpc rejects legacy shapes', () => {
85
100
 
86
101
  const tagged = {
87
102
  account: '0x1111111111111111111111111111111111111111',
88
- signatures: [signature],
103
+ config: MultisigConfig.toRpc(config),
104
+ signatures: [signatureRpc],
89
105
  type: 'multisig',
90
106
  } as const
91
107
  // @ts-expect-error Multisig RPC signatures are untagged.
92
108
  const taggedRpc: SignatureEnvelope.MultisigRpc = tagged
93
109
 
94
- expectTypeOf(combinedRpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
110
+ expectTypeOf(accountOnlyRpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
111
+ expectTypeOf(initRpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
95
112
  expectTypeOf(serializedRpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
96
113
  expectTypeOf(taggedRpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
97
114
  })