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.
Files changed (123) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/core/Hash.js +1 -1
  3. package/dist/core/Hash.js.map +1 -1
  4. package/dist/tempo/KeyAuthorization.d.ts +2 -2
  5. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  6. package/dist/tempo/MultisigConfig.d.ts +151 -83
  7. package/dist/tempo/MultisigConfig.d.ts.map +1 -1
  8. package/dist/tempo/MultisigConfig.js +164 -86
  9. package/dist/tempo/MultisigConfig.js.map +1 -1
  10. package/dist/tempo/MultisigOperation.d.ts +340 -0
  11. package/dist/tempo/MultisigOperation.d.ts.map +1 -0
  12. package/dist/tempo/MultisigOperation.js +839 -0
  13. package/dist/tempo/MultisigOperation.js.map +1 -0
  14. package/dist/tempo/MultisigSimulation.d.ts +132 -0
  15. package/dist/tempo/MultisigSimulation.d.ts.map +1 -0
  16. package/dist/tempo/MultisigSimulation.js +140 -0
  17. package/dist/tempo/MultisigSimulation.js.map +1 -0
  18. package/dist/tempo/RpcSchemaTempo.d.ts +45 -0
  19. package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
  20. package/dist/tempo/SignatureEnvelope.d.ts +55 -86
  21. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  22. package/dist/tempo/SignatureEnvelope.js +93 -158
  23. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  24. package/dist/tempo/TransactionRequest.d.ts +9 -17
  25. package/dist/tempo/TransactionRequest.d.ts.map +1 -1
  26. package/dist/tempo/TransactionRequest.js +7 -7
  27. package/dist/tempo/TransactionRequest.js.map +1 -1
  28. package/dist/tempo/TxEnvelopeTempo.d.ts +3 -2
  29. package/dist/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  30. package/dist/tempo/TxEnvelopeTempo.js +3 -2
  31. package/dist/tempo/TxEnvelopeTempo.js.map +1 -1
  32. package/dist/tempo/index.d.ts +22 -2
  33. package/dist/tempo/index.d.ts.map +1 -1
  34. package/dist/tempo/index.js +22 -2
  35. package/dist/tempo/index.js.map +1 -1
  36. package/dist/zod/tempo/AuthorizationTempo.d.ts +60 -180
  37. package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
  38. package/dist/zod/tempo/KeyAuthorization.d.ts +65 -118
  39. package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
  40. package/dist/zod/tempo/MultisigConfig.d.ts +31 -2
  41. package/dist/zod/tempo/MultisigConfig.d.ts.map +1 -1
  42. package/dist/zod/tempo/MultisigConfig.js +26 -3
  43. package/dist/zod/tempo/MultisigConfig.js.map +1 -1
  44. package/dist/zod/tempo/MultisigOperation.d.ts +158 -0
  45. package/dist/zod/tempo/MultisigOperation.d.ts.map +1 -0
  46. package/dist/zod/tempo/MultisigOperation.js +62 -0
  47. package/dist/zod/tempo/MultisigOperation.js.map +1 -0
  48. package/dist/zod/tempo/MultisigSimulation.d.ts +120 -0
  49. package/dist/zod/tempo/MultisigSimulation.d.ts.map +1 -0
  50. package/dist/zod/tempo/MultisigSimulation.js +78 -0
  51. package/dist/zod/tempo/MultisigSimulation.js.map +1 -0
  52. package/dist/zod/tempo/RpcSchemaTempo.d.ts +528 -144
  53. package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
  54. package/dist/zod/tempo/RpcSchemaTempo.js +47 -0
  55. package/dist/zod/tempo/RpcSchemaTempo.js.map +1 -1
  56. package/dist/zod/tempo/SignatureEnvelope.d.ts +18 -54
  57. package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
  58. package/dist/zod/tempo/SignatureEnvelope.js +5 -22
  59. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  60. package/dist/zod/tempo/Transaction.d.ts +138 -348
  61. package/dist/zod/tempo/Transaction.d.ts.map +1 -1
  62. package/dist/zod/tempo/TransactionRequest.d.ts +286 -239
  63. package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
  64. package/dist/zod/tempo/TransactionRequest.js +11 -22
  65. package/dist/zod/tempo/TransactionRequest.js.map +1 -1
  66. package/dist/zod/tempo/TxEnvelopeTempo.d.ts +60 -48
  67. package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  68. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +15 -12
  69. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
  70. package/dist/zod/tempo/z.d.ts +2 -0
  71. package/dist/zod/tempo/z.d.ts.map +1 -1
  72. package/dist/zod/tempo/z.js +2 -0
  73. package/dist/zod/tempo/z.js.map +1 -1
  74. package/package.json +21 -1
  75. package/src/core/Hash.ts +1 -1
  76. package/src/core/_test/Hash.test.ts +15 -0
  77. package/src/tempo/AuthorizationTempo.test.ts +4 -0
  78. package/src/tempo/KeyAuthorization.test-d.ts +13 -12
  79. package/src/tempo/KeyAuthorization.test.ts +109 -3
  80. package/src/tempo/KeyAuthorization.ts +4 -4
  81. package/src/tempo/MultisigConfig.test-d.ts +52 -0
  82. package/src/tempo/MultisigConfig.test.ts +288 -227
  83. package/src/tempo/MultisigConfig.ts +275 -104
  84. package/src/tempo/MultisigOperation.test-d.ts +79 -0
  85. package/src/tempo/MultisigOperation.test.ts +1950 -0
  86. package/src/tempo/MultisigOperation.ts +1293 -0
  87. package/src/tempo/MultisigSimulation.test-d.ts +33 -0
  88. package/src/tempo/MultisigSimulation.test.ts +283 -0
  89. package/src/tempo/MultisigSimulation.ts +266 -0
  90. package/src/tempo/RpcSchemaTempo.test-d.ts +91 -0
  91. package/src/tempo/RpcSchemaTempo.ts +46 -0
  92. package/src/tempo/SignatureEnvelope.test-d.ts +33 -72
  93. package/src/tempo/SignatureEnvelope.test.ts +533 -500
  94. package/src/tempo/SignatureEnvelope.ts +171 -258
  95. package/src/tempo/Transaction.test.ts +61 -0
  96. package/src/tempo/TransactionRequest.test-d.ts +11 -0
  97. package/src/tempo/TransactionRequest.test.ts +214 -41
  98. package/src/tempo/TransactionRequest.ts +19 -20
  99. package/src/tempo/TxEnvelopeTempo.test-d.ts +7 -0
  100. package/src/tempo/TxEnvelopeTempo.test.ts +25 -0
  101. package/src/tempo/TxEnvelopeTempo.ts +5 -3
  102. package/src/tempo/index.ts +22 -2
  103. package/src/tempo/multisig.e2e.test.ts +164 -87
  104. package/src/version.ts +1 -1
  105. package/src/zod/tempo/MultisigConfig.ts +29 -3
  106. package/src/zod/tempo/MultisigOperation.ts +66 -0
  107. package/src/zod/tempo/MultisigSimulation.ts +98 -0
  108. package/src/zod/tempo/RpcSchemaTempo.ts +53 -0
  109. package/src/zod/tempo/SignatureEnvelope.ts +12 -54
  110. package/src/zod/tempo/TransactionRequest.ts +17 -26
  111. package/src/zod/tempo/_test/KeyAuthorization.test.ts +2 -4
  112. package/src/zod/tempo/_test/MultisigConfig.test-d.ts +13 -0
  113. package/src/zod/tempo/_test/MultisigConfig.test.ts +13 -2
  114. package/src/zod/tempo/_test/MultisigOperation.test-d.ts +27 -0
  115. package/src/zod/tempo/_test/MultisigOperation.test.ts +66 -0
  116. package/src/zod/tempo/_test/MultisigSimulation.test-d.ts +13 -0
  117. package/src/zod/tempo/_test/MultisigSimulation.test.ts +78 -0
  118. package/src/zod/tempo/_test/RpcSchemaTempo.test-d.ts +48 -0
  119. package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +83 -0
  120. package/src/zod/tempo/_test/SignatureEnvelope.test-d.ts +1 -1
  121. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +57 -120
  122. package/src/zod/tempo/_test/TransactionRequest.test.ts +43 -16
  123. package/src/zod/tempo/z.ts +2 -0
@@ -1,9 +1,13 @@
1
+ import type * as Address from '../core/Address.js'
1
2
  import type * as Block from '../core/Block.js'
2
3
  import type * as BlockOverrides from '../core/BlockOverrides.js'
3
4
  import type * as Hex from '../core/Hex.js'
4
5
  import type * as Log from '../core/Log.js'
5
6
  import type * as RpcSchema from '../core/RpcSchema.js'
6
7
  import type * as StateOverrides from '../core/StateOverrides.js'
8
+ import type * as KeyAuthorization from './KeyAuthorization.js'
9
+ import type * as MultisigConfig from './MultisigConfig.js'
10
+ import type * as MultisigOperation from './MultisigOperation.js'
7
11
  import type * as TransactionRequest from './TransactionRequest.js'
8
12
 
9
13
  /**
@@ -53,3 +57,45 @@ export type Tempo = RpcSchema.From<{
53
57
  }
54
58
  }
55
59
  }>
60
+
61
+ /** Union of all JSON-RPC methods for the `multisig_` namespace. */
62
+ export type Multisig = RpcSchema.From<
63
+ | {
64
+ Request: {
65
+ method: 'multisig_approveKeyAuthorization'
66
+ params: [
67
+ | { keyAuthorization: KeyAuthorization.Rpc }
68
+ | { hash: Hex.Hex; signature: Hex.Hex },
69
+ ]
70
+ }
71
+ ReturnType: MultisigOperation.KeyAuthorizationRpc
72
+ }
73
+ | {
74
+ Request: {
75
+ method: 'multisig_approveRawTransaction'
76
+ params: [serializedTransaction: Hex.Hex]
77
+ }
78
+ ReturnType: Hex.Hex
79
+ }
80
+ | {
81
+ Request: {
82
+ method: 'multisig_approveRawTransactionSync'
83
+ params: [serializedTransaction: Hex.Hex, timeout?: number]
84
+ }
85
+ ReturnType: MultisigOperation.TransactionRpc
86
+ }
87
+ | {
88
+ Request: {
89
+ method: 'multisig_getConfig'
90
+ params: [{ address: Address.Address }]
91
+ }
92
+ ReturnType: MultisigConfig.Rpc | null
93
+ }
94
+ | {
95
+ Request: {
96
+ method: 'multisig_getOperation'
97
+ params: [hash: Hex.Hex]
98
+ }
99
+ ReturnType: MultisigOperation.Rpc | null
100
+ }
101
+ >
@@ -1,14 +1,8 @@
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
5
  const signature = {
5
- r: '0x01',
6
- s: '0x02',
7
- type: 'secp256k1',
8
- yParity: '0x0',
9
- } as const satisfies SignatureEnvelope.SignatureEnvelopeRpc
10
-
11
- const signatureDomain = {
12
6
  signature: {
13
7
  r: '0x01',
14
8
  s: '0x02',
@@ -17,81 +11,48 @@ const signatureDomain = {
17
11
  type: 'secp256k1',
18
12
  } as const satisfies SignatureEnvelope.Secp256k1
19
13
 
14
+ const config = MultisigConfig.from({
15
+ owners: [
16
+ {
17
+ owner: '0x1111111111111111111111111111111111111111',
18
+ weight: 1,
19
+ },
20
+ ],
21
+ threshold: 1,
22
+ })
23
+
20
24
  test('toRpc preserves the signature type', () => {
21
25
  expectTypeOf(
22
- SignatureEnvelope.toRpc(signatureDomain),
26
+ SignatureEnvelope.toRpc(signature),
23
27
  ).toEqualTypeOf<SignatureEnvelope.Secp256k1Rpc>()
24
28
  })
25
29
 
26
- test('MultisigRpc uses static initialized and bootstrap shapes', () => {
27
- const initialized = {
28
- account: '0x1111111111111111111111111111111111111111',
29
- signatures: [signature],
30
- } 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
-
48
- expectTypeOf(initialized.signatures).toMatchTypeOf<
49
- readonly SignatureEnvelope.SignatureEnvelopeRpc[]
50
- >()
51
- expectTypeOf(bootstrap.signatures).toMatchTypeOf<
52
- readonly SignatureEnvelope.SignatureEnvelopeRpc[]
53
- >()
54
- expectTypeOf(
55
- bootstrapWithAccountUndefined,
56
- ).toMatchTypeOf<SignatureEnvelope.MultisigRpc>()
57
- expectTypeOf<
58
- SignatureEnvelope.GetType<typeof bootstrap>
59
- >().toEqualTypeOf<'multisig'>()
30
+ test('MultisigRpc contains an untagged serialized multisig signature', () => {
31
+ const rpc = '0xf8' as const satisfies SignatureEnvelope.MultisigRpc
32
+ expectTypeOf(rpc).toMatchTypeOf<`0x${string}`>()
60
33
  })
61
34
 
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
- },
35
+ test('from derives an initial account', () => {
36
+ const multisig = SignatureEnvelope.from({
37
+ config,
74
38
  signatures: [signature],
75
- } as const
76
- // @ts-expect-error Bootstrap RPC signatures omit `account`.
77
- const combinedRpc: SignatureEnvelope.MultisigRpc = combined
39
+ })
78
40
 
79
- const serialized = {
80
- account: '0x1111111111111111111111111111111111111111',
81
- signatures: ['0x1234'],
82
- } as const
83
- // @ts-expect-error Owner approvals use structured RPC envelopes.
84
- const serializedRpc: SignatureEnvelope.MultisigRpc = serialized
41
+ expectTypeOf(multisig).toMatchTypeOf<SignatureEnvelope.Multisig>()
42
+ expectTypeOf(multisig.config.version).toEqualTypeOf<bigint>()
43
+ })
85
44
 
86
- const tagged = {
87
- account: '0x1111111111111111111111111111111111111111',
45
+ test('from requires an account for a current config', () => {
46
+ // @ts-expect-error Current configurations require an explicit account.
47
+ SignatureEnvelope.from({
48
+ config: { ...config, version: 1 },
88
49
  signatures: [signature],
89
- type: 'multisig',
90
- } as const
91
- // @ts-expect-error Multisig RPC signatures are untagged.
92
- const taggedRpc: SignatureEnvelope.MultisigRpc = tagged
50
+ })
93
51
 
94
- expectTypeOf(combinedRpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
95
- expectTypeOf(serializedRpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
96
- expectTypeOf(taggedRpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
52
+ const multisig = SignatureEnvelope.from({
53
+ account: '0x2222222222222222222222222222222222222222',
54
+ config: { ...config, version: 1 },
55
+ signatures: [signature],
56
+ })
57
+ expectTypeOf(multisig).toMatchTypeOf<SignatureEnvelope.Multisig>()
97
58
  })