ox 1.7.4 → 1.8.0

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 (237) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/core/AbiEvent.d.ts.map +1 -1
  3. package/dist/core/AbiEvent.js +10 -9
  4. package/dist/core/AbiEvent.js.map +1 -1
  5. package/dist/core/Blobs.d.ts.map +1 -1
  6. package/dist/core/Blobs.js +6 -2
  7. package/dist/core/Blobs.js.map +1 -1
  8. package/dist/core/Frame.d.ts +290 -0
  9. package/dist/core/Frame.d.ts.map +1 -0
  10. package/dist/core/Frame.js +306 -0
  11. package/dist/core/Frame.js.map +1 -0
  12. package/dist/core/FrameReceipt.d.ts +92 -0
  13. package/dist/core/FrameReceipt.d.ts.map +1 -0
  14. package/dist/core/FrameReceipt.js +72 -0
  15. package/dist/core/FrameReceipt.js.map +1 -0
  16. package/dist/core/FrameSignature.d.ts +357 -0
  17. package/dist/core/FrameSignature.d.ts.map +1 -0
  18. package/dist/core/FrameSignature.js +411 -0
  19. package/dist/core/FrameSignature.js.map +1 -0
  20. package/dist/core/Signature.d.ts +6 -5
  21. package/dist/core/Signature.d.ts.map +1 -1
  22. package/dist/core/Signature.js +17 -7
  23. package/dist/core/Signature.js.map +1 -1
  24. package/dist/core/Siwe.d.ts.map +1 -1
  25. package/dist/core/Siwe.js +21 -1
  26. package/dist/core/Siwe.js.map +1 -1
  27. package/dist/core/Transaction.d.ts +29 -4
  28. package/dist/core/Transaction.d.ts.map +1 -1
  29. package/dist/core/Transaction.js +25 -4
  30. package/dist/core/Transaction.js.map +1 -1
  31. package/dist/core/TransactionReceipt.d.ts +13 -4
  32. package/dist/core/TransactionReceipt.d.ts.map +1 -1
  33. package/dist/core/TransactionReceipt.js +14 -0
  34. package/dist/core/TransactionReceipt.js.map +1 -1
  35. package/dist/core/TransactionRequest.d.ts +15 -7
  36. package/dist/core/TransactionRequest.d.ts.map +1 -1
  37. package/dist/core/TransactionRequest.js +47 -1
  38. package/dist/core/TransactionRequest.js.map +1 -1
  39. package/dist/core/TxEnvelope.d.ts +35 -21
  40. package/dist/core/TxEnvelope.d.ts.map +1 -1
  41. package/dist/core/TxEnvelope.js +46 -6
  42. package/dist/core/TxEnvelope.js.map +1 -1
  43. package/dist/core/TxEnvelopeEip8141.d.ts +341 -0
  44. package/dist/core/TxEnvelopeEip8141.d.ts.map +1 -0
  45. package/dist/core/TxEnvelopeEip8141.js +485 -0
  46. package/dist/core/TxEnvelopeEip8141.js.map +1 -0
  47. package/dist/core/internal/curves.d.ts +2 -0
  48. package/dist/core/internal/curves.d.ts.map +1 -1
  49. package/dist/core/internal/curves.js +2 -0
  50. package/dist/core/internal/curves.js.map +1 -1
  51. package/dist/index.d.ts +73 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +73 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/tempo/KeyAuthorization.d.ts +42 -38
  56. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  57. package/dist/tempo/KeyAuthorization.js +24 -4
  58. package/dist/tempo/KeyAuthorization.js.map +1 -1
  59. package/dist/tempo/MultisigConfig.d.ts +18 -15
  60. package/dist/tempo/MultisigConfig.d.ts.map +1 -1
  61. package/dist/tempo/MultisigConfig.js +49 -20
  62. package/dist/tempo/MultisigConfig.js.map +1 -1
  63. package/dist/tempo/MultisigOperation.d.ts +3 -2
  64. package/dist/tempo/MultisigOperation.d.ts.map +1 -1
  65. package/dist/tempo/MultisigOperation.js +20 -100
  66. package/dist/tempo/MultisigOperation.js.map +1 -1
  67. package/dist/tempo/MultisigSimulation.d.ts +2 -49
  68. package/dist/tempo/MultisigSimulation.d.ts.map +1 -1
  69. package/dist/tempo/MultisigSimulation.js +18 -46
  70. package/dist/tempo/MultisigSimulation.js.map +1 -1
  71. package/dist/tempo/SignatureEnvelope.d.ts +72 -140
  72. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  73. package/dist/tempo/SignatureEnvelope.js +130 -181
  74. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  75. package/dist/tempo/Transaction.d.ts +2 -0
  76. package/dist/tempo/Transaction.d.ts.map +1 -1
  77. package/dist/tempo/TransactionReceipt.d.ts +2 -0
  78. package/dist/tempo/TransactionReceipt.d.ts.map +1 -1
  79. package/dist/tempo/TransactionRequest.d.ts +4 -2
  80. package/dist/tempo/TransactionRequest.d.ts.map +1 -1
  81. package/dist/tempo/TransactionRequest.js +6 -1
  82. package/dist/tempo/TransactionRequest.js.map +1 -1
  83. package/dist/tempo/index.d.ts +3 -1
  84. package/dist/tempo/index.d.ts.map +1 -1
  85. package/dist/tempo/index.js +3 -1
  86. package/dist/tempo/index.js.map +1 -1
  87. package/dist/zod/Block.d.ts +123 -0
  88. package/dist/zod/Block.d.ts.map +1 -1
  89. package/dist/zod/Frame.d.ts +73 -0
  90. package/dist/zod/Frame.d.ts.map +1 -0
  91. package/dist/zod/Frame.js +74 -0
  92. package/dist/zod/Frame.js.map +1 -0
  93. package/dist/zod/FrameReceipt.d.ts +50 -0
  94. package/dist/zod/FrameReceipt.d.ts.map +1 -0
  95. package/dist/zod/FrameReceipt.js +37 -0
  96. package/dist/zod/FrameReceipt.js.map +1 -0
  97. package/dist/zod/FrameSignature.d.ts +63 -0
  98. package/dist/zod/FrameSignature.d.ts.map +1 -0
  99. package/dist/zod/FrameSignature.js +66 -0
  100. package/dist/zod/FrameSignature.js.map +1 -0
  101. package/dist/zod/RpcSchema.d.ts +806 -11
  102. package/dist/zod/RpcSchema.d.ts.map +1 -1
  103. package/dist/zod/Transaction.d.ts +252 -0
  104. package/dist/zod/Transaction.d.ts.map +1 -1
  105. package/dist/zod/Transaction.js +54 -0
  106. package/dist/zod/Transaction.js.map +1 -1
  107. package/dist/zod/TransactionEnvelope.d.ts +233 -4
  108. package/dist/zod/TransactionEnvelope.d.ts.map +1 -1
  109. package/dist/zod/TransactionEnvelope.js +9 -0
  110. package/dist/zod/TransactionEnvelope.js.map +1 -1
  111. package/dist/zod/TransactionReceipt.d.ts +48 -0
  112. package/dist/zod/TransactionReceipt.d.ts.map +1 -1
  113. package/dist/zod/TransactionReceipt.js +8 -3
  114. package/dist/zod/TransactionReceipt.js.map +1 -1
  115. package/dist/zod/TransactionRequest.d.ts +50 -2
  116. package/dist/zod/TransactionRequest.d.ts.map +1 -1
  117. package/dist/zod/TransactionRequest.js +10 -4
  118. package/dist/zod/TransactionRequest.js.map +1 -1
  119. package/dist/zod/TxEnvelopeEip8141.d.ts +166 -0
  120. package/dist/zod/TxEnvelopeEip8141.d.ts.map +1 -0
  121. package/dist/zod/TxEnvelopeEip8141.js +76 -0
  122. package/dist/zod/TxEnvelopeEip8141.js.map +1 -0
  123. package/dist/zod/internal/Frame.d.ts +4 -0
  124. package/dist/zod/internal/Frame.d.ts.map +1 -0
  125. package/dist/zod/internal/Frame.js +17 -0
  126. package/dist/zod/internal/Frame.js.map +1 -0
  127. package/dist/zod/internal/rpcSchemas/Eth.d.ts +842 -11
  128. package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
  129. package/dist/zod/internal/rpcSchemas/Wallet.d.ts +56 -2
  130. package/dist/zod/internal/rpcSchemas/Wallet.d.ts.map +1 -1
  131. package/dist/zod/tempo/AuthorizationTempo.d.ts +350 -10
  132. package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
  133. package/dist/zod/tempo/KeyAuthorization.d.ts +242 -422
  134. package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
  135. package/dist/zod/tempo/KeyAuthorization.js +29 -31
  136. package/dist/zod/tempo/KeyAuthorization.js.map +1 -1
  137. package/dist/zod/tempo/MultisigSimulation.d.ts +8 -76
  138. package/dist/zod/tempo/MultisigSimulation.d.ts.map +1 -1
  139. package/dist/zod/tempo/MultisigSimulation.js +3 -37
  140. package/dist/zod/tempo/MultisigSimulation.js.map +1 -1
  141. package/dist/zod/tempo/RpcSchemaTempo.d.ts +424 -228
  142. package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
  143. package/dist/zod/tempo/SignatureEnvelope.d.ts +105 -3
  144. package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
  145. package/dist/zod/tempo/SignatureEnvelope.js +21 -9
  146. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  147. package/dist/zod/tempo/Transaction.d.ts +783 -432
  148. package/dist/zod/tempo/Transaction.d.ts.map +1 -1
  149. package/dist/zod/tempo/TransactionRequest.d.ts +590 -473
  150. package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
  151. package/dist/zod/tempo/TransactionRequest.js +8 -0
  152. package/dist/zod/tempo/TransactionRequest.js.map +1 -1
  153. package/dist/zod/tempo/TxEnvelopeTempo.d.ts +327 -213
  154. package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  155. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +105 -3
  156. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
  157. package/dist/zod/z.d.ts +4 -0
  158. package/dist/zod/z.d.ts.map +1 -1
  159. package/dist/zod/z.js +4 -0
  160. package/dist/zod/z.js.map +1 -1
  161. package/package.json +41 -1
  162. package/src/core/AbiEvent.ts +11 -9
  163. package/src/core/Blobs.ts +6 -2
  164. package/src/core/Frame.ts +443 -0
  165. package/src/core/FrameReceipt.ts +117 -0
  166. package/src/core/FrameSignature.ts +593 -0
  167. package/src/core/Signature.ts +41 -11
  168. package/src/core/Siwe.ts +20 -1
  169. package/src/core/Transaction.ts +82 -5
  170. package/src/core/TransactionReceipt.ts +41 -3
  171. package/src/core/TransactionRequest.ts +71 -4
  172. package/src/core/TxEnvelope.ts +159 -90
  173. package/src/core/TxEnvelopeEip8141.ts +715 -0
  174. package/src/core/_test/AbiEvent.test.ts +45 -0
  175. package/src/core/_test/Blobs.test.ts +22 -0
  176. package/src/core/_test/Frame.test-d.ts +96 -0
  177. package/src/core/_test/Frame.test.ts +267 -0
  178. package/src/core/_test/FrameReceipt.test.ts +86 -0
  179. package/src/core/_test/FrameSignature.test-d.ts +93 -0
  180. package/src/core/_test/FrameSignature.test.ts +554 -0
  181. package/src/core/_test/Signature.test.ts +166 -0
  182. package/src/core/_test/Siwe.test.ts +100 -1
  183. package/src/core/_test/Transaction.test.ts +33 -0
  184. package/src/core/_test/TransactionEnvelope.test-d.ts +74 -0
  185. package/src/core/_test/TransactionEnvelope.test.ts +107 -0
  186. package/src/core/_test/TransactionReceipt.test.ts +59 -0
  187. package/src/core/_test/TransactionRequest.test-d.ts +50 -0
  188. package/src/core/_test/TransactionRequest.test.ts +88 -1
  189. package/src/core/_test/TxEnvelopeEip8141.test-d.ts +44 -0
  190. package/src/core/_test/TxEnvelopeEip8141.test.ts +1775 -0
  191. package/src/core/_test/curves.test.ts +6 -1
  192. package/src/core/_test/index.test.ts +4 -0
  193. package/src/core/internal/curves.ts +4 -0
  194. package/src/index.ts +77 -0
  195. package/src/tempo/AuthorizationTempo.test.ts +8 -4
  196. package/src/tempo/KeyAuthorization.test-d.ts +16 -63
  197. package/src/tempo/KeyAuthorization.test.ts +69 -11
  198. package/src/tempo/KeyAuthorization.ts +107 -63
  199. package/src/tempo/MultisigConfig.test.ts +44 -20
  200. package/src/tempo/MultisigConfig.ts +65 -23
  201. package/src/tempo/MultisigOperation.test.ts +79 -550
  202. package/src/tempo/MultisigOperation.ts +31 -146
  203. package/src/tempo/MultisigSimulation.test-d.ts +2 -2
  204. package/src/tempo/MultisigSimulation.test.ts +21 -110
  205. package/src/tempo/MultisigSimulation.ts +25 -99
  206. package/src/tempo/SignatureEnvelope.test-d.ts +29 -47
  207. package/src/tempo/SignatureEnvelope.test.ts +328 -541
  208. package/src/tempo/SignatureEnvelope.ts +196 -291
  209. package/src/tempo/Transaction.test.ts +4 -4
  210. package/src/tempo/TransactionRequest.test.ts +17 -80
  211. package/src/tempo/TransactionRequest.ts +19 -2
  212. package/src/tempo/index.ts +3 -1
  213. package/src/tempo/multisig.e2e.test.ts +321 -860
  214. package/src/version.ts +1 -1
  215. package/src/zod/Frame.ts +82 -0
  216. package/src/zod/FrameReceipt.ts +48 -0
  217. package/src/zod/FrameSignature.ts +78 -0
  218. package/src/zod/Transaction.ts +63 -0
  219. package/src/zod/TransactionEnvelope.ts +33 -0
  220. package/src/zod/TransactionReceipt.ts +14 -3
  221. package/src/zod/TransactionRequest.ts +18 -3
  222. package/src/zod/TxEnvelopeEip8141.ts +102 -0
  223. package/src/zod/_test/Frame.test-d.ts +41 -0
  224. package/src/zod/_test/Frame.test.ts +54 -0
  225. package/src/zod/_test/FrameReceipt.test.ts +75 -0
  226. package/src/zod/_test/FrameSignature.test.ts +94 -0
  227. package/src/zod/_test/TxEnvelopeEip8141.test.ts +116 -0
  228. package/src/zod/internal/Frame.ts +26 -0
  229. package/src/zod/tempo/KeyAuthorization.ts +50 -39
  230. package/src/zod/tempo/MultisigSimulation.ts +3 -48
  231. package/src/zod/tempo/SignatureEnvelope.ts +46 -35
  232. package/src/zod/tempo/TransactionRequest.ts +14 -0
  233. package/src/zod/tempo/_test/KeyAuthorization.test.ts +69 -20
  234. package/src/zod/tempo/_test/MultisigSimulation.test.ts +6 -31
  235. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +118 -85
  236. package/src/zod/tempo/_test/TransactionRequest.test.ts +9 -19
  237. package/src/zod/z.ts +4 -0
@@ -1,4 +1,6 @@
1
1
  import {
2
+ type Frame,
3
+ type FrameSignature,
2
4
  TransactionEnvelope,
3
5
  type TransactionRequest as TransactionRequestNs,
4
6
  TransactionRequest,
@@ -117,9 +119,57 @@ describe('round-trip: Request → Envelope → Request', () => {
117
119
  value: 1n,
118
120
  }
119
121
  const envelope = TransactionRequest.toEnvelope(request)
122
+ if ('frames' in envelope) throw new Error('Expected a non-frame envelope')
120
123
  const roundtripped = TransactionEnvelope.toTransactionRequest(envelope)
121
124
  expectTypeOf(
122
125
  roundtripped,
123
126
  ).toEqualTypeOf<TransactionRequestNs.TransactionRequest>()
124
127
  })
125
128
  })
129
+
130
+ describe('frame generics', () => {
131
+ test('decoded defaults', () => {
132
+ expectTypeOf<
133
+ TransactionRequest.TransactionRequest['frames']
134
+ >().toEqualTypeOf<readonly Frame.Frame[] | undefined>()
135
+ expectTypeOf<
136
+ TransactionRequest.TransactionRequest['signatures']
137
+ >().toEqualTypeOf<readonly FrameSignature.FrameSignature[] | undefined>()
138
+ })
139
+
140
+ test('RPC types', () => {
141
+ expectTypeOf<TransactionRequest.Rpc['frames']>().toEqualTypeOf<
142
+ readonly Frame.Rpc[] | undefined
143
+ >()
144
+ expectTypeOf<TransactionRequest.Rpc['signatures']>().toEqualTypeOf<
145
+ readonly FrameSignature.Rpc[] | undefined
146
+ >()
147
+ })
148
+
149
+ test('custom frame and signature types', () => {
150
+ type Request = TransactionRequest.TransactionRequest<
151
+ bigint,
152
+ number,
153
+ string,
154
+ Frame.Frame & { label: string },
155
+ FrameSignature.Arbitrary
156
+ >
157
+ expectTypeOf<Request['frames']>().toEqualTypeOf<
158
+ readonly (Frame.Frame & { label: string })[] | undefined
159
+ >()
160
+ expectTypeOf<Request['signatures']>().toEqualTypeOf<
161
+ readonly FrameSignature.Arbitrary[] | undefined
162
+ >()
163
+ })
164
+ })
165
+
166
+ test('chain ID remains a number for every request type', () => {
167
+ expectTypeOf<
168
+ TransactionRequest.TransactionRequest['chainId']
169
+ >().toEqualTypeOf<number | undefined>()
170
+ expectTypeOf<
171
+ TransactionRequest.TransactionRequest<bigint, number, 'eip8141'>['chainId']
172
+ >().toEqualTypeOf<number | undefined>()
173
+ // @ts-expect-error Request chain IDs must be numbers.
174
+ TransactionRequest.toEnvelope({ chainId: 1n, type: 'eip1559' })
175
+ })
@@ -1,4 +1,13 @@
1
- import { Blobs, Hex, TransactionRequest, Value } from 'ox'
1
+ import {
2
+ Blobs,
3
+ Frame,
4
+ FrameSignature,
5
+ Hex,
6
+ TransactionEnvelope,
7
+ TransactionRequest,
8
+ TxEnvelopeEip8141,
9
+ Value,
10
+ } from 'ox'
2
11
  import { describe, expect, test } from 'vp/test'
3
12
  import { kzg } from '../../../test/kzg.js'
4
13
  import { anvilMainnet } from '../../../test/prool.js'
@@ -428,3 +437,81 @@ test('exports', () => {
428
437
  ]
429
438
  `)
430
439
  })
440
+
441
+ describe('frame transactions', () => {
442
+ test('derives frame blob sidecars and replaces stale hashes', () => {
443
+ const blobs = Blobs.from('0xdeadbeef')
444
+ const request = {
445
+ blobVersionedHashes: [],
446
+ blobs,
447
+ chainId: 1,
448
+ frames: [Frame.from({})],
449
+ from: '0x1111111111111111111111111111111111111111' as const,
450
+ maxFeePerBlobGas: 1n,
451
+ }
452
+ expect(() => TransactionRequest.toEnvelope(request)).toThrow(
453
+ TransactionRequest.MissingKzgError,
454
+ )
455
+ const envelope = TransactionRequest.toEnvelope(request, { kzg })
456
+ expect(envelope.type).toBe('eip8141')
457
+ if (envelope.type !== 'eip8141') throw new Error('Expected frame envelope')
458
+ expect(envelope.sidecars?.blobs).toEqual(blobs)
459
+ expect(envelope.sidecars?.cellProofs).toHaveLength(128)
460
+ expect(
461
+ TxEnvelopeEip8141.deserialize(TxEnvelopeEip8141.serialize(envelope))
462
+ .blobVersionedHashes,
463
+ ).toEqual(envelope.blobVersionedHashes)
464
+ })
465
+
466
+ test('round-trips frame requests and envelopes', () => {
467
+ const envelope = TxEnvelopeEip8141.from({
468
+ chainId: 8141,
469
+ frames: [Frame.from({ gas: 50_000n, mode: 'verify' })],
470
+ sender: '0x1111111111111111111111111111111111111111',
471
+ signatures: [FrameSignature.from('0xaabb')],
472
+ })
473
+ const request = TransactionEnvelope.toTransactionRequest(envelope)
474
+ const rpc = TransactionRequest.toRpc(request)
475
+ expect(rpc.chainId).toBe('0x1fcd')
476
+ expect(rpc.type).toBe('0x6')
477
+ expect(rpc.signatures).toEqual([
478
+ { msg: '0x', scheme: 0, signature: '0xaabb' },
479
+ ])
480
+ const decoded = TransactionRequest.fromRpc(rpc)
481
+ expect(decoded.chainId).toBe(8141)
482
+ expect(
483
+ TxEnvelopeEip8141.serialize(
484
+ TransactionRequest.toEnvelope(
485
+ decoded,
486
+ ) as TxEnvelopeEip8141.TxEnvelopeEip8141,
487
+ ),
488
+ ).toBe(TxEnvelopeEip8141.serialize(envelope))
489
+ })
490
+ test('requires a sender', () => {
491
+ expect(() =>
492
+ TransactionRequest.toEnvelope({ chainId: 1, frames: [] }),
493
+ ).toThrowErrorMatchingInlineSnapshot(
494
+ `[Quantity.MissingFieldError: Missing required field \`from\` on \`TransactionRequest\`.]`,
495
+ )
496
+ })
497
+ })
498
+
499
+ describe('chain ID precision', () => {
500
+ test('rejects unsafe RPC chain IDs', () => {
501
+ expect(() =>
502
+ TransactionRequest.fromRpc({
503
+ chainId: '0x20000000000001',
504
+ frames: [],
505
+ type: '0x6',
506
+ }),
507
+ ).toThrow()
508
+ })
509
+ test('rejects unsafe envelope chain IDs when converting to a request', () => {
510
+ const envelope = TxEnvelopeEip8141.from({
511
+ chainId: 9007199254740993n,
512
+ frames: [Frame.from({})],
513
+ sender: '0x1111111111111111111111111111111111111111',
514
+ })
515
+ expect(() => TransactionEnvelope.toTransactionRequest(envelope)).toThrow()
516
+ })
517
+ })
@@ -0,0 +1,44 @@
1
+ import { TxEnvelopeEip8141 } from 'ox'
2
+ import { expectTypeOf, test } from 'vp/test'
3
+
4
+ test('default', () => {
5
+ const envelope = TxEnvelopeEip8141.from({
6
+ chainId: 1,
7
+ frames: [{ gas: 50000n }],
8
+ sender: '0x1111111111111111111111111111111111111111',
9
+ })
10
+ expectTypeOf(envelope).toEqualTypeOf<{
11
+ readonly chainId: 1
12
+ readonly frames: readonly [{ readonly gas: 50000n }]
13
+ readonly sender: '0x1111111111111111111111111111111111111111'
14
+ readonly type: 'eip8141'
15
+ }>()
16
+ expectTypeOf(envelope).toMatchTypeOf<TxEnvelopeEip8141.TxEnvelopeEip8141>()
17
+ expectTypeOf(
18
+ TxEnvelopeEip8141.serialize(envelope),
19
+ ).toEqualTypeOf<TxEnvelopeEip8141.Serialized>()
20
+ })
21
+
22
+ test('serialized', () => {
23
+ const envelope = TxEnvelopeEip8141.from(
24
+ '0x06' as TxEnvelopeEip8141.Serialized,
25
+ )
26
+ expectTypeOf(envelope).toEqualTypeOf<TxEnvelopeEip8141.TxEnvelopeEip8141>()
27
+ })
28
+
29
+ test('unsigned signature', () => {
30
+ const envelope = TxEnvelopeEip8141.from({
31
+ chainId: 1n,
32
+ frames: [{}],
33
+ sender: '0x1111111111111111111111111111111111111111',
34
+ signatures: [{ scheme: 'secp256k1' }],
35
+ })
36
+ expectTypeOf(envelope).toEqualTypeOf<{
37
+ readonly chainId: 1n
38
+ readonly frames: readonly [{}]
39
+ readonly sender: '0x1111111111111111111111111111111111111111'
40
+ readonly signatures: readonly [{ readonly scheme: 'secp256k1' }]
41
+ readonly type: 'eip8141'
42
+ }>()
43
+ expectTypeOf(envelope).toMatchTypeOf<TxEnvelopeEip8141.TxEnvelopeEip8141>()
44
+ })