tempo.ts 0.1.2 → 0.1.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 (126) hide show
  1. package/dist/chains.d.ts +1180 -0
  2. package/dist/chains.d.ts.map +1 -0
  3. package/dist/chains.js +30 -0
  4. package/dist/chains.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/internal/types.d.ts +284 -0
  10. package/dist/internal/types.d.ts.map +1 -0
  11. package/dist/internal/types.js +2 -0
  12. package/dist/internal/types.js.map +1 -0
  13. package/dist/ox/SignatureEnvelope.d.ts +245 -0
  14. package/dist/ox/SignatureEnvelope.d.ts.map +1 -0
  15. package/dist/ox/SignatureEnvelope.js +437 -0
  16. package/dist/ox/SignatureEnvelope.js.map +1 -0
  17. package/dist/ox/TokenId.d.ts +25 -0
  18. package/dist/ox/TokenId.d.ts.map +1 -0
  19. package/dist/ox/TokenId.js +41 -0
  20. package/dist/ox/TokenId.js.map +1 -0
  21. package/dist/ox/TokenRole.d.ts +11 -0
  22. package/dist/ox/TokenRole.d.ts.map +1 -0
  23. package/dist/ox/TokenRole.js +22 -0
  24. package/dist/ox/TokenRole.js.map +1 -0
  25. package/dist/ox/Transaction.d.ts +198 -0
  26. package/dist/ox/Transaction.d.ts.map +1 -0
  27. package/dist/ox/Transaction.js +162 -0
  28. package/dist/ox/Transaction.js.map +1 -0
  29. package/dist/ox/TransactionEnvelopeAA.d.ts +461 -0
  30. package/dist/ox/TransactionEnvelopeAA.d.ts.map +1 -0
  31. package/dist/ox/TransactionEnvelopeAA.js +528 -0
  32. package/dist/ox/TransactionEnvelopeAA.js.map +1 -0
  33. package/dist/ox/TransactionRequest.d.ts +64 -0
  34. package/dist/ox/TransactionRequest.d.ts.map +1 -0
  35. package/dist/ox/TransactionRequest.js +75 -0
  36. package/dist/ox/TransactionRequest.js.map +1 -0
  37. package/dist/ox/index.d.ts +6 -0
  38. package/dist/ox/index.d.ts.map +1 -0
  39. package/dist/ox/index.js +6 -0
  40. package/dist/ox/index.js.map +1 -0
  41. package/dist/prool/Instance.d.ts +88 -0
  42. package/dist/prool/Instance.d.ts.map +1 -0
  43. package/dist/prool/Instance.js +96 -0
  44. package/dist/prool/Instance.js.map +1 -0
  45. package/dist/prool/index.d.ts +2 -0
  46. package/dist/prool/index.d.ts.map +1 -0
  47. package/dist/prool/index.js +2 -0
  48. package/dist/prool/index.js.map +1 -0
  49. package/dist/viem/Abis.d.ts +1885 -0
  50. package/dist/viem/Abis.d.ts.map +1 -0
  51. package/dist/viem/Abis.js +1174 -0
  52. package/dist/viem/Abis.js.map +1 -0
  53. package/dist/viem/Actions/amm.d.ts +2006 -0
  54. package/dist/viem/Actions/amm.d.ts.map +1 -0
  55. package/dist/viem/Actions/amm.js +900 -0
  56. package/dist/viem/Actions/amm.js.map +1 -0
  57. package/dist/viem/Actions/dex.d.ts +3279 -0
  58. package/dist/viem/Actions/dex.d.ts.map +1 -0
  59. package/dist/viem/Actions/dex.js +1357 -0
  60. package/dist/viem/Actions/dex.js.map +1 -0
  61. package/dist/viem/Actions/fee.d.ts +374 -0
  62. package/dist/viem/Actions/fee.d.ts.map +1 -0
  63. package/dist/viem/Actions/fee.js +235 -0
  64. package/dist/viem/Actions/fee.js.map +1 -0
  65. package/dist/viem/Actions/index.d.ts +6 -0
  66. package/dist/viem/Actions/index.d.ts.map +1 -0
  67. package/dist/viem/Actions/index.js +6 -0
  68. package/dist/viem/Actions/index.js.map +1 -0
  69. package/dist/viem/Actions/policy.d.ts +1672 -0
  70. package/dist/viem/Actions/policy.d.ts.map +1 -0
  71. package/dist/viem/Actions/policy.js +875 -0
  72. package/dist/viem/Actions/policy.js.map +1 -0
  73. package/dist/viem/Actions/token.d.ts +13714 -0
  74. package/dist/viem/Actions/token.d.ts.map +1 -0
  75. package/dist/viem/Actions/token.js +3058 -0
  76. package/dist/viem/Actions/token.js.map +1 -0
  77. package/dist/viem/Addresses.d.ts +9 -0
  78. package/dist/viem/Addresses.d.ts.map +1 -0
  79. package/dist/viem/Addresses.js +9 -0
  80. package/dist/viem/Addresses.js.map +1 -0
  81. package/dist/viem/Chain.d.ts +365 -0
  82. package/dist/viem/Chain.d.ts.map +1 -0
  83. package/dist/viem/Chain.js +22 -0
  84. package/dist/viem/Chain.js.map +1 -0
  85. package/dist/viem/Client.d.ts +27 -0
  86. package/dist/viem/Client.d.ts.map +1 -0
  87. package/dist/viem/Client.js +28 -0
  88. package/dist/viem/Client.js.map +1 -0
  89. package/dist/viem/Decorator.d.ts +2161 -0
  90. package/dist/viem/Decorator.d.ts.map +1 -0
  91. package/dist/viem/Decorator.js +122 -0
  92. package/dist/viem/Decorator.js.map +1 -0
  93. package/dist/viem/Formatters.d.ts +4 -0
  94. package/dist/viem/Formatters.d.ts.map +1 -0
  95. package/dist/viem/Formatters.js +76 -0
  96. package/dist/viem/Formatters.js.map +1 -0
  97. package/dist/viem/Tick.d.ts +111 -0
  98. package/dist/viem/Tick.d.ts.map +1 -0
  99. package/dist/viem/Tick.js +127 -0
  100. package/dist/viem/Tick.js.map +1 -0
  101. package/dist/viem/TokenIds.d.ts +3 -0
  102. package/dist/viem/TokenIds.d.ts.map +1 -0
  103. package/dist/viem/TokenIds.js +3 -0
  104. package/dist/viem/TokenIds.js.map +1 -0
  105. package/dist/viem/Transaction.d.ts +57 -0
  106. package/dist/viem/Transaction.d.ts.map +1 -0
  107. package/dist/viem/Transaction.js +137 -0
  108. package/dist/viem/Transaction.js.map +1 -0
  109. package/dist/viem/Transport.d.ts +16 -0
  110. package/dist/viem/Transport.d.ts.map +1 -0
  111. package/dist/viem/Transport.js +33 -0
  112. package/dist/viem/Transport.js.map +1 -0
  113. package/dist/viem/index.d.ts +14 -0
  114. package/dist/viem/index.d.ts.map +1 -0
  115. package/dist/viem/index.js +14 -0
  116. package/dist/viem/index.js.map +1 -0
  117. package/dist/viem/internal/types.d.ts +10 -0
  118. package/dist/viem/internal/types.d.ts.map +1 -0
  119. package/dist/viem/internal/types.js +2 -0
  120. package/dist/viem/internal/types.js.map +1 -0
  121. package/dist/viem/internal/utils.d.ts +8 -0
  122. package/dist/viem/internal/utils.d.ts.map +1 -0
  123. package/dist/viem/internal/utils.js +9 -0
  124. package/dist/viem/internal/utils.js.map +1 -0
  125. package/package.json +2 -2
  126. package/src/viem/index.ts +4 -1
@@ -0,0 +1,198 @@
1
+ import type * as AccessList from 'ox/AccessList';
2
+ import type * as Address from 'ox/Address';
3
+ import type * as Authorization from 'ox/Authorization';
4
+ import type * as Errors from 'ox/Errors';
5
+ import * as Hex from 'ox/Hex';
6
+ import * as ox_Transaction from 'ox/Transaction';
7
+ import type { Compute, OneOf, UnionCompute } from '../internal/types.js';
8
+ import * as SignatureEnvelope from './SignatureEnvelope.js';
9
+ import type { Call } from './TransactionEnvelopeAA.js';
10
+ /**
11
+ * A Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml).
12
+ */
13
+ export type Transaction<pending extends boolean = false, bigintType = bigint, numberType = number> = UnionCompute<OneOf<AA<pending, bigintType, numberType> | ox_Transaction.Transaction<pending, bigintType, numberType>>>;
14
+ /**
15
+ * An RPC Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml).
16
+ */
17
+ export type Rpc<pending extends boolean = false> = UnionCompute<OneOf<AARpc<pending> | ox_Transaction.Rpc<pending>>>;
18
+ /**
19
+ * Native account abstraction transaction.
20
+ */
21
+ export type AA<pending extends boolean = false, bigintType = bigint, numberType = number, type extends string = 'aa'> = Compute<Omit<ox_Transaction.Base<type, pending, bigintType, numberType>, 'input' | 'to' | 'value' | 'v' | 'r' | 's' | 'yParity'> & {
22
+ /** EIP-2930 Access List. */
23
+ accessList: AccessList.AccessList;
24
+ /** EIP-7702 Authorization list for the transaction. */
25
+ authorizationList?: Authorization.ListSigned<bigintType, numberType> | undefined;
26
+ /** Array of calls to execute. */
27
+ calls: readonly Call<bigintType>[];
28
+ /** Fee payer address. */
29
+ feePayer?: Address.Address | undefined;
30
+ /** Fee payer signature. */
31
+ feePayerSignature?: {
32
+ /** ECDSA signature r. */
33
+ r: bigintType;
34
+ /** ECDSA signature s. */
35
+ s: bigintType;
36
+ /** ECDSA signature yParity. */
37
+ yParity: numberType;
38
+ /** @deprecated ECDSA signature v (for backwards compatibility). */
39
+ v?: numberType | undefined;
40
+ } | undefined;
41
+ /** Fee token preference. */
42
+ feeToken: Address.Address;
43
+ /** Effective gas price paid by the sender in wei. */
44
+ gasPrice?: bigintType | undefined;
45
+ /** Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas). */
46
+ maxFeePerGas: bigintType;
47
+ /** Max priority fee per gas (in wei). */
48
+ maxPriorityFeePerGas: bigintType;
49
+ /** Nonce key for 2D nonce system (192 bits). */
50
+ nonceKey?: bigintType | undefined;
51
+ /** Sender signature. */
52
+ signature: SignatureEnvelope.SignatureEnvelope<bigintType, numberType>;
53
+ /** Transaction can only be included in a block before this timestamp. */
54
+ validBefore?: numberType | undefined;
55
+ /** Transaction can only be included in a block after this timestamp. */
56
+ validAfter?: numberType | undefined;
57
+ }>;
58
+ /**
59
+ * Native account abstraction transaction in RPC format.
60
+ */
61
+ export type AARpc<pending extends boolean = false> = Compute<Omit<AA<pending, Hex.Hex, Hex.Hex, ToRpcType['aa']>, 'calls' | 'signature'> & {
62
+ calls: readonly {
63
+ input?: Hex.Hex | undefined;
64
+ to?: Hex.Hex | undefined;
65
+ value?: Hex.Hex | undefined;
66
+ }[] | undefined;
67
+ signature: SignatureEnvelope.SignatureEnvelopeRpc;
68
+ }>;
69
+ /** Type to RPC Type mapping. */
70
+ export declare const toRpcType: {
71
+ readonly aa: "0x76";
72
+ readonly legacy: "0x0";
73
+ readonly eip2930: "0x1";
74
+ readonly eip1559: "0x2";
75
+ readonly eip4844: "0x3";
76
+ readonly eip7702: "0x4";
77
+ };
78
+ /** Type to RPC Type mapping. */
79
+ export type ToRpcType = typeof toRpcType & {
80
+ [type: string]: `0x${string}`;
81
+ };
82
+ /** RPC Type to Type mapping. */
83
+ export declare const fromRpcType: {
84
+ readonly '0x76': "aa";
85
+ readonly '0x0': "legacy";
86
+ readonly '0x1': "eip2930";
87
+ readonly '0x2': "eip1559";
88
+ readonly '0x3': "eip4844";
89
+ readonly '0x4': "eip7702";
90
+ };
91
+ /** RPC Type to Type mapping. */
92
+ export type FromRpcType = typeof fromRpcType & {
93
+ [type: `0x${string}`]: string;
94
+ };
95
+ /**
96
+ * Converts an {@link ox#Transaction.Rpc} to an {@link ox#Transaction.Transaction}.
97
+ *
98
+ * @example
99
+ * ```ts twoslash
100
+ * import { Transaction } from 'ox/tempo'
101
+ *
102
+ * const transaction = Transaction.fromRpc({
103
+ * hash: '0x353fdfc38a2f26115daadee9f5b8392ce62b84f410957967e2ed56b35338cdd0',
104
+ * nonce: '0x357',
105
+ * blockHash:
106
+ * '0xc350d807505fb835650f0013632c5515592987ba169bbc6626d9fc54d91f0f0b',
107
+ * blockNumber: '0x12f296f',
108
+ * calls: [
109
+ * {
110
+ * input: '0xdeadbeef',
111
+ * to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad',
112
+ * value: '0x9b6e64a8ec60000',
113
+ * },
114
+ * ],
115
+ * feeToken: '0x20c0000000000000000000000000000000000000',
116
+ * transactionIndex: '0x2',
117
+ * from: '0x814e5e0e31016b9a7f138c76b7e7b2bb5c1ab6a6',
118
+ * value: '0x9b6e64a8ec60000',
119
+ * gas: '0x43f5d',
120
+ * maxFeePerGas: '0x2ca6ae494',
121
+ * maxPriorityFeePerGas: '0x41cc3c0',
122
+ * input:
123
+ * '0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000006643504700000000000000000000000000000000000000000000000000000000000000040b080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec60000000000000000000000000000000000000000000000000000019124bb5ae978c000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b80000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c00000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000190240001b9872b',
124
+ * signature: {
125
+ * r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',
126
+ * s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',
127
+ * type: 'secp256k1',
128
+ * yParity: '0x0',
129
+ * },
130
+ * chainId: '0x1',
131
+ * accessList: [],
132
+ * type: '0x76',
133
+ * })
134
+ * ```
135
+ *
136
+ * @param transaction - The RPC transaction to convert.
137
+ * @returns An instantiated {@link ox#Transaction.Transaction}.
138
+ */
139
+ export declare function fromRpc<const transaction extends Rpc | null, pending extends boolean = false>(transaction: transaction | Rpc<pending> | null, _options?: fromRpc.Options<pending>): transaction extends Rpc<pending> ? Transaction<pending> : null;
140
+ export declare namespace fromRpc {
141
+ type Options<pending extends boolean = false> = {
142
+ pending?: pending | boolean | undefined;
143
+ };
144
+ type ErrorType = ox_Transaction.fromRpc.ErrorType | Errors.GlobalErrorType;
145
+ }
146
+ /**
147
+ * Converts an {@link ox#Transaction.Transaction} to an {@link ox#Transaction.Rpc}.
148
+ *
149
+ * @example
150
+ * ```ts twoslash
151
+ * import { Transaction } from 'ox/tempo'
152
+ *
153
+ * const transaction = Transaction.toRpc({
154
+ * accessList: [],
155
+ * blockHash:
156
+ * '0xc350d807505fb835650f0013632c5515592987ba169bbc6626d9fc54d91f0f0b',
157
+ * blockNumber: 19868015n,
158
+ * calls: [
159
+ * {
160
+ * data: '0xdeadbeef',
161
+ * to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad',
162
+ * value: 700000000000000000n,
163
+ * },
164
+ * ],
165
+ * chainId: 1,
166
+ * feeToken: '0x20c0000000000000000000000000000000000000',
167
+ * from: '0x814e5e0e31016b9a7f138c76b7e7b2bb5c1ab6a6',
168
+ * gas: 278365n,
169
+ * hash: '0x353fdfc38a2f26115daadee9f5b8392ce62b84f410957967e2ed56b35338cdd0',
170
+ * input:
171
+ * '0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000006643504700000000000000000000000000000000000000000000000000000000000000040b080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec60000000000000000000000000000000000000000000000000000019124bb5ae978c000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b80000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c00000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000190240001b9872b',
172
+ * maxFeePerGas: 11985937556n,
173
+ * maxPriorityFeePerGas: 68993984n,
174
+ * nonce: 855n,
175
+ * signature: {
176
+ * signature: {
177
+ * r: 44944627813007772897391531230081695102703289123332187696115181104739239197517n,
178
+ * s: 36528503505192438307355164441104001310566505351980369085208178712678799181120n,
179
+ * yParity: 0,
180
+ * },
181
+ * type: 'secp256k1',
182
+ * },
183
+ * transactionIndex: 2,
184
+ * type: 'aa',
185
+ * })
186
+ * ```
187
+ *
188
+ * @param transaction - The transaction to convert.
189
+ * @returns An RPC-formatted transaction.
190
+ */
191
+ export declare function toRpc<pending extends boolean = false>(transaction: Transaction<pending>, _options?: toRpc.Options<pending>): Rpc<pending>;
192
+ export declare namespace toRpc {
193
+ type Options<pending extends boolean = false> = {
194
+ pending?: pending | boolean | undefined;
195
+ };
196
+ type ErrorType = ox_Transaction.toRpc.ErrorType | Errors.GlobalErrorType;
197
+ }
198
+ //# sourceMappingURL=Transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../src/ox/Transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ import * as Hex from 'ox/Hex';
2
+ import * as Secp256k1 from 'ox/Secp256k1';
3
+ import * as Signature from 'ox/Signature';
4
+ import * as ox_Transaction from 'ox/Transaction';
5
+ import * as SignatureEnvelope from './SignatureEnvelope.js';
6
+ import * as TransactionEnvelopeAA from './TransactionEnvelopeAA.js';
7
+ /** Type to RPC Type mapping. */
8
+ export const toRpcType = {
9
+ ...ox_Transaction.toRpcType,
10
+ aa: '0x76',
11
+ };
12
+ /** RPC Type to Type mapping. */
13
+ export const fromRpcType = {
14
+ ...ox_Transaction.fromRpcType,
15
+ '0x76': 'aa',
16
+ };
17
+ /**
18
+ * Converts an {@link ox#Transaction.Rpc} to an {@link ox#Transaction.Transaction}.
19
+ *
20
+ * @example
21
+ * ```ts twoslash
22
+ * import { Transaction } from 'ox/tempo'
23
+ *
24
+ * const transaction = Transaction.fromRpc({
25
+ * hash: '0x353fdfc38a2f26115daadee9f5b8392ce62b84f410957967e2ed56b35338cdd0',
26
+ * nonce: '0x357',
27
+ * blockHash:
28
+ * '0xc350d807505fb835650f0013632c5515592987ba169bbc6626d9fc54d91f0f0b',
29
+ * blockNumber: '0x12f296f',
30
+ * calls: [
31
+ * {
32
+ * input: '0xdeadbeef',
33
+ * to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad',
34
+ * value: '0x9b6e64a8ec60000',
35
+ * },
36
+ * ],
37
+ * feeToken: '0x20c0000000000000000000000000000000000000',
38
+ * transactionIndex: '0x2',
39
+ * from: '0x814e5e0e31016b9a7f138c76b7e7b2bb5c1ab6a6',
40
+ * value: '0x9b6e64a8ec60000',
41
+ * gas: '0x43f5d',
42
+ * maxFeePerGas: '0x2ca6ae494',
43
+ * maxPriorityFeePerGas: '0x41cc3c0',
44
+ * input:
45
+ * '0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000006643504700000000000000000000000000000000000000000000000000000000000000040b080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec60000000000000000000000000000000000000000000000000000019124bb5ae978c000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b80000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c00000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000190240001b9872b',
46
+ * signature: {
47
+ * r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',
48
+ * s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',
49
+ * type: 'secp256k1',
50
+ * yParity: '0x0',
51
+ * },
52
+ * chainId: '0x1',
53
+ * accessList: [],
54
+ * type: '0x76',
55
+ * })
56
+ * ```
57
+ *
58
+ * @param transaction - The RPC transaction to convert.
59
+ * @returns An instantiated {@link ox#Transaction.Transaction}.
60
+ */
61
+ export function fromRpc(transaction, _options = {}) {
62
+ if (!transaction)
63
+ return null;
64
+ const transaction_ = ox_Transaction.fromRpc(transaction);
65
+ transaction_.type = fromRpcType[transaction.type];
66
+ if (transaction.calls)
67
+ transaction_.calls = transaction.calls.map((call) => ({
68
+ to: call.to,
69
+ value: call.value ? BigInt(call.value) : undefined,
70
+ data: call.input,
71
+ }));
72
+ if (transaction.feeToken)
73
+ transaction_.feeToken = transaction.feeToken;
74
+ if (transaction.nonceKey)
75
+ transaction_.nonceKey = BigInt(transaction.nonceKey);
76
+ if (transaction.signature)
77
+ transaction_.signature = SignatureEnvelope.fromRpc(transaction.signature);
78
+ if (transaction.validAfter)
79
+ transaction_.validAfter = Number(transaction.validAfter);
80
+ if (transaction.validBefore)
81
+ transaction_.validBefore = Number(transaction.validBefore);
82
+ if (transaction.feePayerSignature) {
83
+ transaction_.feePayerSignature = Signature.fromRpc(transaction.feePayerSignature);
84
+ transaction_.feePayerSignature.v = Signature.yParityToV(transaction_.feePayerSignature.yParity);
85
+ // TODO: remove once `feePayer` returned on `eth_getTxBy*`.
86
+ transaction_.feePayer = Secp256k1.recoverAddress({
87
+ payload: TransactionEnvelopeAA.getFeePayerSignPayload(transaction_, { sender: transaction.from }),
88
+ signature: transaction_.feePayerSignature,
89
+ });
90
+ }
91
+ return transaction_;
92
+ }
93
+ /**
94
+ * Converts an {@link ox#Transaction.Transaction} to an {@link ox#Transaction.Rpc}.
95
+ *
96
+ * @example
97
+ * ```ts twoslash
98
+ * import { Transaction } from 'ox/tempo'
99
+ *
100
+ * const transaction = Transaction.toRpc({
101
+ * accessList: [],
102
+ * blockHash:
103
+ * '0xc350d807505fb835650f0013632c5515592987ba169bbc6626d9fc54d91f0f0b',
104
+ * blockNumber: 19868015n,
105
+ * calls: [
106
+ * {
107
+ * data: '0xdeadbeef',
108
+ * to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad',
109
+ * value: 700000000000000000n,
110
+ * },
111
+ * ],
112
+ * chainId: 1,
113
+ * feeToken: '0x20c0000000000000000000000000000000000000',
114
+ * from: '0x814e5e0e31016b9a7f138c76b7e7b2bb5c1ab6a6',
115
+ * gas: 278365n,
116
+ * hash: '0x353fdfc38a2f26115daadee9f5b8392ce62b84f410957967e2ed56b35338cdd0',
117
+ * input:
118
+ * '0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000006643504700000000000000000000000000000000000000000000000000000000000000040b080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec60000000000000000000000000000000000000000000000000000019124bb5ae978c000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b80000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c00000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000190240001b9872b',
119
+ * maxFeePerGas: 11985937556n,
120
+ * maxPriorityFeePerGas: 68993984n,
121
+ * nonce: 855n,
122
+ * signature: {
123
+ * signature: {
124
+ * r: 44944627813007772897391531230081695102703289123332187696115181104739239197517n,
125
+ * s: 36528503505192438307355164441104001310566505351980369085208178712678799181120n,
126
+ * yParity: 0,
127
+ * },
128
+ * type: 'secp256k1',
129
+ * },
130
+ * transactionIndex: 2,
131
+ * type: 'aa',
132
+ * })
133
+ * ```
134
+ *
135
+ * @param transaction - The transaction to convert.
136
+ * @returns An RPC-formatted transaction.
137
+ */
138
+ export function toRpc(transaction, _options) {
139
+ const rpc = ox_Transaction.toRpc(transaction);
140
+ rpc.type = toRpcType[transaction.type];
141
+ if (transaction.calls)
142
+ rpc.calls = transaction.calls.map((call) => ({
143
+ to: call.to,
144
+ value: call.value ? Hex.fromNumber(call.value) : undefined,
145
+ data: call.data,
146
+ }));
147
+ if (transaction.feeToken)
148
+ rpc.feeToken = transaction.feeToken;
149
+ if (transaction.feePayerSignature) {
150
+ rpc.feePayerSignature = Signature.toRpc(transaction.feePayerSignature);
151
+ rpc.feePayerSignature.v = Hex.fromNumber(Signature.yParityToV(transaction.feePayerSignature?.yParity));
152
+ rpc.feePayer = transaction.feePayer;
153
+ }
154
+ if (transaction.signature)
155
+ rpc.signature = SignatureEnvelope.toRpc(transaction.signature);
156
+ if (typeof transaction.validAfter === 'number')
157
+ rpc.validAfter = Hex.fromNumber(transaction.validAfter);
158
+ if (typeof transaction.validBefore === 'number')
159
+ rpc.validBefore = Hex.fromNumber(transaction.validBefore);
160
+ return rpc;
161
+ }
162
+ //# sourceMappingURL=Transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/ox/Transaction.ts"],"names":[],"mappings":"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"}