ox 0.14.44 → 0.14.46

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 (149) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/Frame/package.json +6 -0
  3. package/FrameReceipt/package.json +6 -0
  4. package/FrameSignature/package.json +6 -0
  5. package/TxEnvelopeEip8141/package.json +6 -0
  6. package/_cjs/core/Frame.js +147 -0
  7. package/_cjs/core/Frame.js.map +1 -0
  8. package/_cjs/core/FrameReceipt.js +34 -0
  9. package/_cjs/core/FrameReceipt.js.map +1 -0
  10. package/_cjs/core/FrameSignature.js +203 -0
  11. package/_cjs/core/FrameSignature.js.map +1 -0
  12. package/_cjs/core/Transaction.js +18 -2
  13. package/_cjs/core/Transaction.js.map +1 -1
  14. package/_cjs/core/TransactionReceipt.js +10 -0
  15. package/_cjs/core/TransactionReceipt.js.map +1 -1
  16. package/_cjs/core/TransactionRequest.js +11 -1
  17. package/_cjs/core/TransactionRequest.js.map +1 -1
  18. package/_cjs/core/TxEnvelopeEip8141.js +283 -0
  19. package/_cjs/core/TxEnvelopeEip8141.js.map +1 -0
  20. package/_cjs/core/internal/curves.js +6 -0
  21. package/_cjs/core/internal/curves.js.map +1 -0
  22. package/_cjs/core/internal/quantity.js +10 -0
  23. package/_cjs/core/internal/quantity.js.map +1 -0
  24. package/_cjs/erc4337/UserOperationReceipt.js.map +1 -1
  25. package/_cjs/index.js +6 -2
  26. package/_cjs/index.js.map +1 -1
  27. package/_cjs/tempo/KeyAuthorization.js +43 -10
  28. package/_cjs/tempo/KeyAuthorization.js.map +1 -1
  29. package/_cjs/tempo/MultisigConfig.js +33 -11
  30. package/_cjs/tempo/MultisigConfig.js.map +1 -1
  31. package/_cjs/tempo/MultisigOperation.js +18 -94
  32. package/_cjs/tempo/MultisigOperation.js.map +1 -1
  33. package/_cjs/tempo/MultisigSimulation.js +18 -46
  34. package/_cjs/tempo/MultisigSimulation.js.map +1 -1
  35. package/_cjs/tempo/SignatureEnvelope.js +72 -109
  36. package/_cjs/tempo/SignatureEnvelope.js.map +1 -1
  37. package/_cjs/tempo/TransactionRequest.js +5 -1
  38. package/_cjs/tempo/TransactionRequest.js.map +1 -1
  39. package/_cjs/tempo/index.js.map +1 -1
  40. package/_cjs/version.js +1 -1
  41. package/_esm/core/Frame.js +311 -0
  42. package/_esm/core/Frame.js.map +1 -0
  43. package/_esm/core/FrameReceipt.js +72 -0
  44. package/_esm/core/FrameReceipt.js.map +1 -0
  45. package/_esm/core/FrameSignature.js +422 -0
  46. package/_esm/core/FrameSignature.js.map +1 -0
  47. package/_esm/core/Transaction.js +18 -2
  48. package/_esm/core/Transaction.js.map +1 -1
  49. package/_esm/core/TransactionReceipt.js +10 -0
  50. package/_esm/core/TransactionReceipt.js.map +1 -1
  51. package/_esm/core/TransactionRequest.js +11 -1
  52. package/_esm/core/TransactionRequest.js.map +1 -1
  53. package/_esm/core/TxEnvelopeEip8141.js +490 -0
  54. package/_esm/core/TxEnvelopeEip8141.js.map +1 -0
  55. package/_esm/core/internal/curves.js +19 -0
  56. package/_esm/core/internal/curves.js.map +1 -0
  57. package/_esm/core/internal/quantity.js +14 -0
  58. package/_esm/core/internal/quantity.js.map +1 -0
  59. package/_esm/erc4337/UserOperationReceipt.js.map +1 -1
  60. package/_esm/index.js +73 -0
  61. package/_esm/index.js.map +1 -1
  62. package/_esm/tempo/KeyAuthorization.js +42 -9
  63. package/_esm/tempo/KeyAuthorization.js.map +1 -1
  64. package/_esm/tempo/MultisigConfig.js +41 -22
  65. package/_esm/tempo/MultisigConfig.js.map +1 -1
  66. package/_esm/tempo/MultisigOperation.js +20 -100
  67. package/_esm/tempo/MultisigOperation.js.map +1 -1
  68. package/_esm/tempo/MultisigSimulation.js +18 -46
  69. package/_esm/tempo/MultisigSimulation.js.map +1 -1
  70. package/_esm/tempo/SignatureEnvelope.js +107 -169
  71. package/_esm/tempo/SignatureEnvelope.js.map +1 -1
  72. package/_esm/tempo/TransactionRequest.js +5 -1
  73. package/_esm/tempo/TransactionRequest.js.map +1 -1
  74. package/_esm/tempo/index.js +3 -1
  75. package/_esm/tempo/index.js.map +1 -1
  76. package/_esm/version.js +1 -1
  77. package/_types/core/Frame.d.ts +290 -0
  78. package/_types/core/Frame.d.ts.map +1 -0
  79. package/_types/core/FrameReceipt.d.ts +92 -0
  80. package/_types/core/FrameReceipt.d.ts.map +1 -0
  81. package/_types/core/FrameSignature.d.ts +357 -0
  82. package/_types/core/FrameSignature.d.ts.map +1 -0
  83. package/_types/core/Transaction.d.ts +29 -4
  84. package/_types/core/Transaction.d.ts.map +1 -1
  85. package/_types/core/TransactionReceipt.d.ts +15 -6
  86. package/_types/core/TransactionReceipt.d.ts.map +1 -1
  87. package/_types/core/TransactionRequest.d.ts +10 -4
  88. package/_types/core/TransactionRequest.d.ts.map +1 -1
  89. package/_types/core/TxEnvelopeEip8141.d.ts +343 -0
  90. package/_types/core/TxEnvelopeEip8141.d.ts.map +1 -0
  91. package/_types/core/internal/curves.d.ts +19 -0
  92. package/_types/core/internal/curves.d.ts.map +1 -0
  93. package/_types/core/internal/quantity.d.ts +10 -0
  94. package/_types/core/internal/quantity.d.ts.map +1 -0
  95. package/_types/erc4337/UserOperationReceipt.d.ts +1 -1
  96. package/_types/erc4337/UserOperationReceipt.d.ts.map +1 -1
  97. package/_types/index.d.ts +73 -0
  98. package/_types/index.d.ts.map +1 -1
  99. package/_types/tempo/KeyAuthorization.d.ts +48 -38
  100. package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
  101. package/_types/tempo/MultisigConfig.d.ts +15 -14
  102. package/_types/tempo/MultisigConfig.d.ts.map +1 -1
  103. package/_types/tempo/MultisigOperation.d.ts +3 -2
  104. package/_types/tempo/MultisigOperation.d.ts.map +1 -1
  105. package/_types/tempo/MultisigSimulation.d.ts +2 -49
  106. package/_types/tempo/MultisigSimulation.d.ts.map +1 -1
  107. package/_types/tempo/SignatureEnvelope.d.ts +69 -128
  108. package/_types/tempo/SignatureEnvelope.d.ts.map +1 -1
  109. package/_types/tempo/Transaction.d.ts +2 -0
  110. package/_types/tempo/Transaction.d.ts.map +1 -1
  111. package/_types/tempo/TransactionReceipt.d.ts +2 -0
  112. package/_types/tempo/TransactionReceipt.d.ts.map +1 -1
  113. package/_types/tempo/TransactionRequest.d.ts +5 -2
  114. package/_types/tempo/TransactionRequest.d.ts.map +1 -1
  115. package/_types/tempo/index.d.ts +3 -1
  116. package/_types/tempo/index.d.ts.map +1 -1
  117. package/_types/version.d.ts +1 -1
  118. package/core/Frame.ts +443 -0
  119. package/core/FrameReceipt.ts +117 -0
  120. package/core/FrameSignature.ts +606 -0
  121. package/core/Transaction.ts +73 -4
  122. package/core/TransactionReceipt.ts +41 -4
  123. package/core/TransactionRequest.ts +26 -2
  124. package/core/TxEnvelopeEip8141.ts +717 -0
  125. package/core/internal/curves.ts +22 -0
  126. package/core/internal/quantity.ts +16 -0
  127. package/erc4337/UserOperationReceipt.ts +1 -6
  128. package/index.ts +73 -0
  129. package/package.json +21 -1
  130. package/tempo/AuthorizationTempo.test.ts +8 -4
  131. package/tempo/KeyAuthorization.test-d.ts +68 -33
  132. package/tempo/KeyAuthorization.test.ts +89 -8
  133. package/tempo/KeyAuthorization.ts +124 -61
  134. package/tempo/MultisigConfig.test.ts +34 -26
  135. package/tempo/MultisigConfig.ts +54 -24
  136. package/tempo/MultisigOperation.test.ts +79 -550
  137. package/tempo/MultisigOperation.ts +31 -146
  138. package/tempo/MultisigSimulation.test-d.ts +2 -2
  139. package/tempo/MultisigSimulation.test.ts +21 -110
  140. package/tempo/MultisigSimulation.ts +25 -99
  141. package/tempo/SignatureEnvelope.test-d.ts +29 -67
  142. package/tempo/SignatureEnvelope.test.ts +301 -568
  143. package/tempo/SignatureEnvelope.ts +156 -274
  144. package/tempo/TransactionRequest.test-d.ts +6 -5
  145. package/tempo/TransactionRequest.test.ts +17 -80
  146. package/tempo/TransactionRequest.ts +23 -3
  147. package/tempo/index.ts +3 -1
  148. package/tempo/multisig.e2e.test.ts +322 -861
  149. package/version.ts +1 -1
@@ -1,78 +1,40 @@
1
1
  import { expectTypeOf, test } from 'vitest'
2
- import * as MultisigConfig from './MultisigConfig.js'
2
+ import type * as Hex from '../core/Hex.js'
3
3
  import * as SignatureEnvelope from './SignatureEnvelope.js'
4
4
 
5
- const signatureRpc = {
6
- r: '0x01',
7
- s: '0x02',
8
- type: 'secp256k1',
9
- yParity: '0x0',
10
- } as const satisfies SignatureEnvelope.SignatureEnvelopeRpc
11
-
12
- const signature = {
13
- signature: {
14
- r: 1n,
15
- s: 2n,
16
- yParity: 0,
5
+ const primitive = SignatureEnvelope.from({ r: 1n, s: 2n, yParity: 0 })
6
+ const envelope = SignatureEnvelope.from({
7
+ account: '0x2222222222222222222222222222222222222222',
8
+ config: {
9
+ threshold: 1,
10
+ version: 0n,
11
+ owners: [
12
+ { owner: '0x1111111111111111111111111111111111111111', weight: 1 },
13
+ ],
17
14
  },
18
- type: 'secp256k1',
19
- } as const satisfies SignatureEnvelope.Secp256k1
20
-
21
- const config = MultisigConfig.from({
22
- owners: [
23
- {
24
- owner: '0x1111111111111111111111111111111111111111',
25
- weight: 1,
26
- },
27
- ],
28
- threshold: 1,
15
+ signatures: [primitive],
29
16
  })
30
17
 
31
- test('toRpc preserves the signature type', () => {
18
+ test('preserves primitive and multisig RPC types', () => {
32
19
  expectTypeOf(
33
- SignatureEnvelope.toRpc(signature),
20
+ SignatureEnvelope.toRpc(primitive),
34
21
  ).toEqualTypeOf<SignatureEnvelope.Secp256k1Rpc>()
22
+ expectTypeOf(SignatureEnvelope.toRpc(envelope)).toEqualTypeOf<Hex.Hex>()
23
+ expectTypeOf<
24
+ SignatureEnvelope.GetType<typeof envelope>
25
+ >().toEqualTypeOf<'multisig'>()
26
+ expectTypeOf(envelope).toMatchTypeOf<SignatureEnvelope.Multisig>()
35
27
  })
36
28
 
37
- test('MultisigRpc contains an untagged serialized multisig signature', () => {
38
- const rpc = '0xf8' as const satisfies SignatureEnvelope.MultisigRpc
39
-
40
- expectTypeOf(rpc).toMatchTypeOf<`0x${string}`>()
41
- })
42
-
43
- test('from derives an initial account', () => {
44
- const multisig = SignatureEnvelope.from({
45
- config,
46
- signatures: [signature],
47
- })
48
-
49
- expectTypeOf(multisig).toMatchTypeOf<SignatureEnvelope.Multisig>()
50
- expectTypeOf(multisig.config.version).toEqualTypeOf<bigint>()
51
- })
52
-
53
- test('from requires an account for a current config', () => {
54
- // @ts-expect-error Current configurations require an explicit account.
55
- SignatureEnvelope.from({
56
- config: { ...config, version: 1 },
57
- signatures: [signature],
58
- })
59
-
60
- const multisig = SignatureEnvelope.from({
61
- account: '0x2222222222222222222222222222222222222222',
62
- config: { ...config, version: 1 },
63
- signatures: [signature],
64
- })
65
- expectTypeOf(multisig).toMatchTypeOf<SignatureEnvelope.Multisig>()
66
- })
67
-
68
- test('MultisigRpc rejects structured signatures', () => {
69
- const structured = {
70
- account: '0x1111111111111111111111111111111111111111',
71
- config: { ...config, version: 0 },
72
- signatures: [signatureRpc],
73
- } as const
74
- // @ts-expect-error Multisig RPC signatures are serialized hex.
75
- const rpc: SignatureEnvelope.MultisigRpc = structured
76
-
77
- expectTypeOf(rpc).toEqualTypeOf<SignatureEnvelope.MultisigRpc>()
29
+ test('requires config and primitive approvals', () => {
30
+ // @ts-expect-error Every multisig signature carries its current config.
31
+ SignatureEnvelope.from({ account: envelope.account, signatures: [primitive] })
32
+ // @ts-expect-error Multisig owners cannot recursively approve with multisigs.
33
+ SignatureEnvelope.from({ ...envelope, signatures: [envelope] })
34
+ // @ts-expect-error Multisig RPC signatures are hex-encoded RLP.
35
+ const rpc: SignatureEnvelope.MultisigRpc = {
36
+ account: envelope.account,
37
+ signatures: [],
38
+ }
39
+ expectTypeOf(rpc).toEqualTypeOf<Hex.Hex>()
78
40
  })