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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.d.ts","sourceRoot":"","sources":["../../src/core/Frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,306 @@
1
+ import * as Address from './Address.js';
2
+ import * as Bytes from './Bytes.js';
3
+ import * as Errors from './Errors.js';
4
+ import * as Hex from './Hex.js';
5
+ import * as Quantity from './internal/quantity.js';
6
+ /** Frame execution modes. */
7
+ export const modes = { default: 0, sender: 2, verify: 1 };
8
+ /** Approval and atomic batching flags. */
9
+ export const flags = {
10
+ approveExecution: 2,
11
+ approveExecutionAndPayment: 3,
12
+ approvePayment: 1,
13
+ atomicBatch: 4,
14
+ none: 0,
15
+ };
16
+ /**
17
+ * Asserts that a {@link ox#Frame.Frame} satisfies frame-local constraints.
18
+ *
19
+ * Sender-dependent approval, batch adjacency, expiry, and transaction-wide gas
20
+ * constraints require the enclosing transaction.
21
+ *
22
+ * @example
23
+ * ### Basic Usage
24
+ *
25
+ * Check a verification frame before including it in a transaction.
26
+ *
27
+ * ```ts twoslash
28
+ * import { Frame } from 'ox'
29
+ *
30
+ * Frame.assert({
31
+ * flags: 'approveExecutionAndPayment',
32
+ * gas: 50_000n,
33
+ * mode: 'verify'
34
+ * })
35
+ * ```
36
+ *
37
+ * @param frame - The frame to assert.
38
+ */
39
+ export function assert(frame) {
40
+ const { data = '0x', flags: flagsValue = 0, gas = 0n, mode: modeValue = 0, stateGas = 0n, value = 0n, } = frame;
41
+ const mode = typeof modeValue === 'string' ? modes[modeValue] : modeValue;
42
+ if (!Number.isInteger(mode) || mode < 0 || mode > 2)
43
+ throw new InvalidError('mode must be a supported name or 0, 1, or 2.');
44
+ const flags_ = typeof flagsValue === 'string' ? flags[flagsValue] : flagsValue;
45
+ if (!Number.isInteger(flags_) || flags_ < 0 || flags_ > 7)
46
+ throw new InvalidError('flags must be a supported name or an integer from 0 to 7.');
47
+ if (flags_ & flags.atomicBatch) {
48
+ if (mode === modes.verify)
49
+ throw new InvalidError('VERIFY frames cannot belong to an atomic batch.');
50
+ if (flags_ & flags.approveExecutionAndPayment)
51
+ throw new InvalidError('Atomic batch frames cannot approve execution or payment.');
52
+ }
53
+ if (frame.target !== undefined)
54
+ Address.assert(frame.target, { strict: false });
55
+ for (const [field, limit] of [
56
+ ['gas', gas],
57
+ ['stateGas', stateGas],
58
+ ])
59
+ if (typeof limit !== 'bigint' || limit < 0n || limit >= 2n ** 64n)
60
+ throw new InvalidError(`${field} must be an unsigned 64-bit integer.`);
61
+ if (gas + stateGas >= 2n ** 64n)
62
+ throw new InvalidError('Combined frame gas must be less than 2^64.');
63
+ if (typeof value !== 'bigint' || value < 0n || value >= 2n ** 256n)
64
+ throw new InvalidError('value must be an unsigned 256-bit integer.');
65
+ if (mode !== modes.sender && value !== 0n)
66
+ throw new InvalidError('Only SENDER frames can transfer value.');
67
+ Hex.assert(data, { strict: true });
68
+ if (data.length % 2 !== 0)
69
+ throw new InvalidError('data must contain whole bytes.');
70
+ }
71
+ /**
72
+ * Coerces a frame object into a {@link ox#Frame.Frame}.
73
+ *
74
+ * Validates the frame and returns a copy, preserving literal types and the supplied
75
+ * numeric or named mode and flags. Omitted fields stay omitted;
76
+ * {@link ox#Frame.(toTuple:function)} supplies their defaults when encoding.
77
+ *
78
+ * @example
79
+ * ### Basic Usage
80
+ *
81
+ * Construct a verification frame that approves execution and payment.
82
+ *
83
+ * ```ts twoslash
84
+ * import { Frame } from 'ox'
85
+ *
86
+ * const frame = Frame.from({
87
+ * flags: 'approveExecutionAndPayment',
88
+ * gas: 50_000n,
89
+ * mode: 'verify'
90
+ * })
91
+ * ```
92
+ *
93
+ * @param frame - The frame object to convert.
94
+ * @returns The validated frame.
95
+ */
96
+ export function from(frame) {
97
+ assert(frame);
98
+ return { ...frame };
99
+ }
100
+ /**
101
+ * Converts an RPC frame to a frame.
102
+ *
103
+ * @example
104
+ * ### Basic Usage
105
+ *
106
+ * ```ts twoslash
107
+ * import { Frame } from 'ox'
108
+ *
109
+ * const frame = Frame.fromRpc({
110
+ * data: '0x',
111
+ * executionGasLimit: '0xc350',
112
+ * flags: 3,
113
+ * mode: 1,
114
+ * stateGasLimit: '0x0',
115
+ * value: '0x0'
116
+ * })
117
+ * ```
118
+ *
119
+ * @param frame - The value to convert.
120
+ * @returns The converted value.
121
+ */
122
+ export function fromRpc(frame) {
123
+ return from({
124
+ data: frame.data,
125
+ flags: frame.flags,
126
+ gas: Hex.toBigInt(frame.executionGasLimit),
127
+ mode: frame.mode,
128
+ stateGas: Hex.toBigInt(frame.stateGasLimit),
129
+ ...(frame.target == null ? {} : { target: frame.target }),
130
+ value: Hex.toBigInt(frame.value),
131
+ });
132
+ }
133
+ /**
134
+ * Converts a frame to its JSON-RPC representation.
135
+ *
136
+ * @example
137
+ * ### Basic Usage
138
+ *
139
+ * ```ts twoslash
140
+ * import { Frame } from 'ox'
141
+ *
142
+ * const frame = Frame.from({ gas: 50_000n, mode: 'verify' })
143
+ * const rpc = Frame.toRpc(frame)
144
+ * ```
145
+ *
146
+ * @param frame - The value to convert.
147
+ * @returns The converted value.
148
+ */
149
+ export function toRpc(frame) {
150
+ const { flags: flags_ = 0, mode = 0 } = frame;
151
+ return {
152
+ data: frame.data ?? '0x',
153
+ executionGasLimit: Quantity.fromNumberish(frame.gas ?? 0n),
154
+ flags: typeof flags_ === 'string' ? flags[flags_] : flags_,
155
+ mode: typeof mode === 'string' ? modes[mode] : mode,
156
+ stateGasLimit: Quantity.fromNumberish(frame.stateGas ?? 0n),
157
+ ...(frame.target === undefined ? {} : { target: frame.target }),
158
+ value: Quantity.fromNumberish(frame.value ?? 0n),
159
+ };
160
+ }
161
+ /**
162
+ * Converts a {@link ox#Frame.Tuple} to a {@link ox#Frame.Frame}.
163
+ *
164
+ * Returns numeric mode and flags. An empty target becomes an omitted `target`.
165
+ * Integer fields must use minimal whole-byte encodings, with empty bytes for zero.
166
+ *
167
+ * @example
168
+ * ### Basic Usage
169
+ *
170
+ * Decode a frame tuple with separate execution and state gas limits.
171
+ *
172
+ * ```ts twoslash
173
+ * import { Frame } from 'ox'
174
+ *
175
+ * const frame = Frame.fromTuple([
176
+ * '0x01',
177
+ * '0x03',
178
+ * '0x',
179
+ * ['0xc350', '0x'],
180
+ * '0x',
181
+ * '0x'
182
+ * ])
183
+ * // @log: {
184
+ * // @log: data: '0x',
185
+ * // @log: flags: 3,
186
+ * // @log: gas: 50000n,
187
+ * // @log: mode: 1,
188
+ * // @log: stateGas: 0n,
189
+ * // @log: value: 0n
190
+ * // @log: }
191
+ * ```
192
+ *
193
+ * @param tuple - The frame tuple to convert.
194
+ * @returns The decoded frame.
195
+ */
196
+ export function fromTuple(tuple) {
197
+ if (!Array.isArray(tuple) ||
198
+ tuple.length !== 6 ||
199
+ !Array.isArray(tuple[3]) ||
200
+ tuple[3].length !== 2)
201
+ throw new InvalidError('Expected [mode, flags, target, [execution, state], value, data].');
202
+ const [mode, flags, target, [execution, state], value, data] = tuple;
203
+ Hex.assert(target, { strict: true });
204
+ Hex.assert(data, { strict: true });
205
+ const quantities = [mode, flags, execution, state, value];
206
+ for (const quantity of quantities) {
207
+ Hex.assert(quantity, { strict: true });
208
+ if (quantity.length % 2 !== 0 || quantity.startsWith('0x00'))
209
+ throw new InvalidError('Integers must use minimal whole-byte encodings, with empty bytes for zero.');
210
+ }
211
+ const frame = {
212
+ ...(target === '0x' ? {} : { target }),
213
+ data,
214
+ flags: flags === '0x' ? 0 : Hex.toNumber(flags),
215
+ gas: execution === '0x' ? 0n : Hex.toBigInt(execution),
216
+ mode: mode === '0x' ? 0 : Hex.toNumber(mode),
217
+ stateGas: state === '0x' ? 0n : Hex.toBigInt(state),
218
+ value: value === '0x' ? 0n : Hex.toBigInt(value),
219
+ };
220
+ assert(frame);
221
+ return frame;
222
+ }
223
+ /**
224
+ * Converts a {@link ox#Frame.Frame} to its RLP-ready {@link ox#Frame.Tuple}.
225
+ *
226
+ * Named mode and flags are encoded as integers. An omitted target and zero integer
227
+ * fields are encoded as empty bytes. Omitted mode and flags default to zero;
228
+ * omitted gas limits and value default to `0n`, and data defaults to `'0x'`.
229
+ *
230
+ * @example
231
+ * ### Basic Usage
232
+ *
233
+ * Encode a verification frame in the field order required by EIP-8141.
234
+ *
235
+ * ```ts twoslash
236
+ * import { Frame } from 'ox'
237
+ *
238
+ * const tuple = Frame.toTuple({
239
+ * flags: 'approveExecutionAndPayment',
240
+ * gas: 50_000n,
241
+ * mode: 'verify'
242
+ * })
243
+ * // @log: ['0x01', '0x03', '0x', ['0xc350', '0x'], '0x', '0x']
244
+ * ```
245
+ *
246
+ * @param frame - The frame to convert.
247
+ * @returns The encoded frame tuple.
248
+ */
249
+ export function toTuple(frame) {
250
+ assert(frame);
251
+ const mode = typeof frame.mode === 'string' ? modes[frame.mode] : (frame.mode ?? 0);
252
+ const flags_ = typeof frame.flags === 'string' ? flags[frame.flags] : (frame.flags ?? 0);
253
+ return [
254
+ mode ? Hex.fromBytes(Bytes.fromNumber(mode)) : '0x',
255
+ flags_ ? Hex.fromBytes(Bytes.fromNumber(flags_)) : '0x',
256
+ frame.target ?? '0x',
257
+ [
258
+ frame.gas ? Hex.fromBytes(Bytes.fromNumber(frame.gas)) : '0x',
259
+ frame.stateGas ? Hex.fromBytes(Bytes.fromNumber(frame.stateGas)) : '0x',
260
+ ],
261
+ frame.value ? Hex.fromBytes(Bytes.fromNumber(frame.value)) : '0x',
262
+ frame.data ?? '0x',
263
+ ];
264
+ }
265
+ /**
266
+ * Returns whether a {@link ox#Frame.Frame} satisfies frame-local constraints.
267
+ *
268
+ * Performs the same checks as {@link ox#Frame.(assert:function)}, returning `false`
269
+ * instead of throwing when the frame is invalid.
270
+ *
271
+ * @example
272
+ * ### Basic Usage
273
+ *
274
+ * Check whether a frame is structurally valid.
275
+ *
276
+ * ```ts twoslash
277
+ * import { Frame } from 'ox'
278
+ *
279
+ * const valid = Frame.validate({
280
+ * flags: 'approveExecutionAndPayment',
281
+ * gas: 50_000n,
282
+ * mode: 'verify'
283
+ * })
284
+ * // @log: true
285
+ * ```
286
+ *
287
+ * @param frame - The frame to validate.
288
+ * @returns Whether the frame satisfies frame-local constraints.
289
+ */
290
+ export function validate(frame) {
291
+ try {
292
+ assert(frame);
293
+ return true;
294
+ }
295
+ catch {
296
+ return false;
297
+ }
298
+ }
299
+ /** Thrown when an EIP-8141 frame is structurally invalid. */
300
+ export class InvalidError extends Errors.BaseError {
301
+ name = 'Frame.InvalidError';
302
+ constructor(details) {
303
+ super('Invalid frame.', { details });
304
+ }
305
+ }
306
+ //# sourceMappingURL=Frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.js","sourceRoot":"","sources":["../../src/core/Frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import type * as Errors from './Errors.js';
2
+ import * as Hex from './Hex.js';
3
+ import type * as Log from './Log.js';
4
+ /** Receipt for one frame. Frame logs contain only address, data, and topics. */
5
+ export type FrameReceipt<bigintType = bigint> = {
6
+ /** Execution gas used before transaction-level refunds. */
7
+ gasUsed: bigintType;
8
+ /** Logs emitted by this frame. */
9
+ logs: readonly Pick<Log.Log, 'address' | 'data' | 'topics'>[];
10
+ /** Final state gas after refills and rollbacks. */
11
+ stateGasUsed: bigintType;
12
+ /** Frame execution result. */
13
+ status: Status;
14
+ };
15
+ /** JSON-RPC receipt for one frame. */
16
+ export type Rpc = {
17
+ /** Execution gas used. */
18
+ executionGasUsed: Hex.Hex;
19
+ /** Logs emitted by this frame. */
20
+ logs: readonly Pick<Log.Log, 'address' | 'data' | 'topics'>[];
21
+ /** Final state gas used. */
22
+ stateGasUsed: Hex.Hex;
23
+ /** Zero for failure, one for success, or two for a skipped frame. */
24
+ status: RpcStatus;
25
+ };
26
+ /** Frame execution status. */
27
+ export type Status = 'reverted' | 'skipped' | 'success';
28
+ /** Numeric JSON-RPC frame execution status. */
29
+ export type RpcStatus = 0 | 1 | 2;
30
+ /** RPC status to status mapping. */
31
+ export declare const fromRpcStatus: {
32
+ readonly 0: "reverted";
33
+ readonly 1: "success";
34
+ readonly 2: "skipped";
35
+ };
36
+ /** Status to RPC status mapping. */
37
+ export declare const toRpcStatus: {
38
+ readonly reverted: 0;
39
+ readonly skipped: 2;
40
+ readonly success: 1;
41
+ };
42
+ /**
43
+ * Converts an RPC frame receipt to a {@link ox#FrameReceipt.FrameReceipt}.
44
+ *
45
+ * @example
46
+ * ### Basic Usage
47
+ *
48
+ * ```ts twoslash
49
+ * import { FrameReceipt } from 'ox'
50
+ *
51
+ * const receipt = FrameReceipt.fromRpc({
52
+ * executionGasUsed: '0x5208',
53
+ * logs: [],
54
+ * stateGasUsed: '0x0',
55
+ * status: 1
56
+ * })
57
+ * ```
58
+ *
59
+ * @param receipt - The RPC frame receipt.
60
+ * @returns The frame receipt with bigint gas and a named status.
61
+ */
62
+ export declare function fromRpc(receipt: Rpc): FrameReceipt;
63
+ export declare namespace fromRpc {
64
+ type ErrorType = Hex.toBigInt.ErrorType | Errors.GlobalErrorType;
65
+ }
66
+ /**
67
+ * Converts a {@link ox#FrameReceipt.FrameReceipt} to an RPC frame receipt.
68
+ *
69
+ * @example
70
+ * ### Basic Usage
71
+ *
72
+ * ```ts twoslash
73
+ * import { FrameReceipt } from 'ox'
74
+ *
75
+ * const receipt = FrameReceipt.fromRpc({
76
+ * executionGasUsed: '0x5208',
77
+ * logs: [],
78
+ * stateGasUsed: '0x0',
79
+ * status: 1
80
+ * })
81
+ * const rpc = FrameReceipt.toRpc(receipt)
82
+ * ```
83
+ *
84
+ * @param receipt - The frame receipt. Gas accepts hex, bigint, or number values.
85
+ * @returns The RPC frame receipt with hex gas and a numeric status.
86
+ */
87
+ export declare function toRpc(receipt: toRpc.Input): Rpc;
88
+ export declare namespace toRpc {
89
+ type Input = FrameReceipt<Hex.Hex | bigint | number>;
90
+ type ErrorType = Hex.fromNumber.ErrorType | Errors.GlobalErrorType;
91
+ }
92
+ //# sourceMappingURL=FrameReceipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrameReceipt.d.ts","sourceRoot":"","sources":["../../src/core/FrameReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAA;AAEpC,gFAAgF;AAChF,MAAM,MAAM,YAAY,CAAC,UAAU,GAAG,MAAM,IAAI;IAC9C,2DAA2D;IAC3D,OAAO,EAAE,UAAU,CAAA;IACnB,kCAAkC;IAClC,IAAI,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAA;IAC7D,mDAAmD;IACnD,YAAY,EAAE,UAAU,CAAA;IACxB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,sCAAsC;AACtC,MAAM,MAAM,GAAG,GAAG;IAChB,0BAA0B;IAC1B,gBAAgB,EAAE,GAAG,CAAC,GAAG,CAAA;IACzB,kCAAkC;IAClC,IAAI,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAA;IAC7D,4BAA4B;IAC5B,YAAY,EAAE,GAAG,CAAC,GAAG,CAAA;IACrB,qEAAqE;IACrE,MAAM,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AAEvD,+CAA+C;AAC/C,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAEjC,oCAAoC;AACpC,eAAO,MAAM,aAAa;;;;CAIhB,CAAA;AAEV,oCAAoC;AACpC,eAAO,MAAM,WAAW;;;;CAId,CAAA;AAEV;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,YAAY,CAOlD;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACjE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,GAAG,CAO/C;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,CAAA;IAEpD,KAAK,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACnE"}
@@ -0,0 +1,72 @@
1
+ import * as Hex from './Hex.js';
2
+ import * as Quantity from './internal/quantity.js';
3
+ /** RPC status to status mapping. */
4
+ export const fromRpcStatus = {
5
+ 0: 'reverted',
6
+ 1: 'success',
7
+ 2: 'skipped',
8
+ };
9
+ /** Status to RPC status mapping. */
10
+ export const toRpcStatus = {
11
+ reverted: 0,
12
+ skipped: 2,
13
+ success: 1,
14
+ };
15
+ /**
16
+ * Converts an RPC frame receipt to a {@link ox#FrameReceipt.FrameReceipt}.
17
+ *
18
+ * @example
19
+ * ### Basic Usage
20
+ *
21
+ * ```ts twoslash
22
+ * import { FrameReceipt } from 'ox'
23
+ *
24
+ * const receipt = FrameReceipt.fromRpc({
25
+ * executionGasUsed: '0x5208',
26
+ * logs: [],
27
+ * stateGasUsed: '0x0',
28
+ * status: 1
29
+ * })
30
+ * ```
31
+ *
32
+ * @param receipt - The RPC frame receipt.
33
+ * @returns The frame receipt with bigint gas and a named status.
34
+ */
35
+ export function fromRpc(receipt) {
36
+ return {
37
+ gasUsed: Hex.toBigInt(receipt.executionGasUsed),
38
+ logs: receipt.logs,
39
+ stateGasUsed: Hex.toBigInt(receipt.stateGasUsed),
40
+ status: fromRpcStatus[receipt.status],
41
+ };
42
+ }
43
+ /**
44
+ * Converts a {@link ox#FrameReceipt.FrameReceipt} to an RPC frame receipt.
45
+ *
46
+ * @example
47
+ * ### Basic Usage
48
+ *
49
+ * ```ts twoslash
50
+ * import { FrameReceipt } from 'ox'
51
+ *
52
+ * const receipt = FrameReceipt.fromRpc({
53
+ * executionGasUsed: '0x5208',
54
+ * logs: [],
55
+ * stateGasUsed: '0x0',
56
+ * status: 1
57
+ * })
58
+ * const rpc = FrameReceipt.toRpc(receipt)
59
+ * ```
60
+ *
61
+ * @param receipt - The frame receipt. Gas accepts hex, bigint, or number values.
62
+ * @returns The RPC frame receipt with hex gas and a numeric status.
63
+ */
64
+ export function toRpc(receipt) {
65
+ return {
66
+ executionGasUsed: Quantity.fromNumberish(receipt.gasUsed),
67
+ logs: receipt.logs,
68
+ stateGasUsed: Quantity.fromNumberish(receipt.stateGasUsed),
69
+ status: toRpcStatus[receipt.status],
70
+ };
71
+ }
72
+ //# sourceMappingURL=FrameReceipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrameReceipt.js","sourceRoot":"","sources":["../../src/core/FrameReceipt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAiClD,oCAAoC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,SAAS;CACJ,CAAA;AAEV,oCAAoC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;CACF,CAAA;AAEV;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,OAAY;IAClC,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC/C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;QAChD,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;KACtC,CAAA;AACH,CAAC;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,KAAK,CAAC,OAAoB;IACxC,OAAO;QACL,gBAAgB,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;QACzD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;QAC1D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAA;AACH,CAAC"}