tempo.ts 0.0.0 → 0.0.1

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 (153) hide show
  1. package/README.md +92 -0
  2. package/dist/chains.d.ts +1477 -0
  3. package/dist/chains.d.ts.map +1 -0
  4. package/dist/chains.js +43 -0
  5. package/dist/chains.js.map +1 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/internal/types.d.ts +284 -0
  11. package/dist/internal/types.d.ts.map +1 -0
  12. package/dist/internal/types.js +2 -0
  13. package/dist/internal/types.js.map +1 -0
  14. package/dist/ox/TokenId.d.ts +18 -0
  15. package/dist/ox/TokenId.d.ts.map +1 -0
  16. package/dist/ox/TokenId.js +29 -0
  17. package/dist/ox/TokenId.js.map +1 -0
  18. package/dist/ox/TokenRole.d.ts +11 -0
  19. package/dist/ox/TokenRole.d.ts.map +1 -0
  20. package/dist/ox/TokenRole.js +22 -0
  21. package/dist/ox/TokenRole.js.map +1 -0
  22. package/dist/ox/Transaction.d.ts +161 -0
  23. package/dist/ox/Transaction.d.ts.map +1 -0
  24. package/dist/ox/Transaction.js +117 -0
  25. package/dist/ox/Transaction.js.map +1 -0
  26. package/dist/ox/TransactionEnvelopeFeeToken.d.ts +393 -0
  27. package/dist/ox/TransactionEnvelopeFeeToken.d.ts.map +1 -0
  28. package/dist/ox/TransactionEnvelopeFeeToken.js +452 -0
  29. package/dist/ox/TransactionEnvelopeFeeToken.js.map +1 -0
  30. package/dist/ox/TransactionRequest.d.ts +62 -0
  31. package/dist/ox/TransactionRequest.d.ts.map +1 -0
  32. package/dist/ox/TransactionRequest.js +66 -0
  33. package/dist/ox/TransactionRequest.js.map +1 -0
  34. package/dist/ox/index.d.ts +5 -0
  35. package/dist/ox/index.d.ts.map +1 -0
  36. package/dist/ox/index.js +5 -0
  37. package/dist/ox/index.js.map +1 -0
  38. package/dist/prool/Instance.d.ts +92 -0
  39. package/dist/prool/Instance.d.ts.map +1 -0
  40. package/dist/prool/Instance.js +96 -0
  41. package/dist/prool/Instance.js.map +1 -0
  42. package/dist/prool/index.d.ts +2 -0
  43. package/dist/prool/index.d.ts.map +1 -0
  44. package/dist/prool/index.js +2 -0
  45. package/dist/prool/index.js.map +1 -0
  46. package/dist/viem/abis.d.ts +2058 -0
  47. package/dist/viem/abis.d.ts.map +1 -0
  48. package/dist/viem/abis.js +1599 -0
  49. package/dist/viem/abis.js.map +1 -0
  50. package/dist/viem/actions/amm.d.ts +2091 -0
  51. package/dist/viem/actions/amm.d.ts.map +1 -0
  52. package/dist/viem/actions/amm.js +876 -0
  53. package/dist/viem/actions/amm.js.map +1 -0
  54. package/dist/viem/actions/fee.d.ts +727 -0
  55. package/dist/viem/actions/fee.d.ts.map +1 -0
  56. package/dist/viem/actions/fee.js +230 -0
  57. package/dist/viem/actions/fee.js.map +1 -0
  58. package/dist/viem/actions/index.d.ts +5 -0
  59. package/dist/viem/actions/index.d.ts.map +1 -0
  60. package/dist/viem/actions/index.js +5 -0
  61. package/dist/viem/actions/index.js.map +1 -0
  62. package/dist/viem/actions/policy.d.ts +1900 -0
  63. package/dist/viem/actions/policy.d.ts.map +1 -0
  64. package/dist/viem/actions/policy.js +841 -0
  65. package/dist/viem/actions/policy.js.map +1 -0
  66. package/dist/viem/actions/token.d.ts +13759 -0
  67. package/dist/viem/actions/token.d.ts.map +1 -0
  68. package/dist/viem/actions/token.js +2579 -0
  69. package/dist/viem/actions/token.js.map +1 -0
  70. package/dist/viem/addresses.d.ts +8 -0
  71. package/dist/viem/addresses.d.ts.map +1 -0
  72. package/dist/viem/addresses.js +8 -0
  73. package/dist/viem/addresses.js.map +1 -0
  74. package/dist/viem/chain.d.ts +341 -0
  75. package/dist/viem/chain.d.ts.map +1 -0
  76. package/dist/viem/chain.js +22 -0
  77. package/dist/viem/chain.js.map +1 -0
  78. package/dist/viem/client.d.ts +27 -0
  79. package/dist/viem/client.d.ts.map +1 -0
  80. package/dist/viem/client.js +28 -0
  81. package/dist/viem/client.js.map +1 -0
  82. package/dist/viem/decorator.d.ts +1636 -0
  83. package/dist/viem/decorator.d.ts.map +1 -0
  84. package/dist/viem/decorator.js +95 -0
  85. package/dist/viem/decorator.js.map +1 -0
  86. package/dist/viem/formatters.d.ts +4 -0
  87. package/dist/viem/formatters.d.ts.map +1 -0
  88. package/dist/viem/formatters.js +69 -0
  89. package/dist/viem/formatters.js.map +1 -0
  90. package/dist/viem/index.d.ts +9 -0
  91. package/dist/viem/index.d.ts.map +1 -0
  92. package/dist/viem/index.js +9 -0
  93. package/dist/viem/index.js.map +1 -0
  94. package/dist/viem/transaction.d.ts +54 -0
  95. package/dist/viem/transaction.d.ts.map +1 -0
  96. package/dist/viem/transaction.js +108 -0
  97. package/dist/viem/transaction.js.map +1 -0
  98. package/dist/viem/transport.d.ts +16 -0
  99. package/dist/viem/transport.d.ts.map +1 -0
  100. package/dist/viem/transport.js +33 -0
  101. package/dist/viem/transport.js.map +1 -0
  102. package/dist/viem/types.d.ts +10 -0
  103. package/dist/viem/types.d.ts.map +1 -0
  104. package/dist/viem/types.js +2 -0
  105. package/dist/viem/types.js.map +1 -0
  106. package/dist/viem/utils.d.ts +8 -0
  107. package/dist/viem/utils.d.ts.map +1 -0
  108. package/dist/viem/utils.js +9 -0
  109. package/dist/viem/utils.js.map +1 -0
  110. package/package.json +100 -2
  111. package/src/chains.ts +46 -0
  112. package/src/index.ts +1 -0
  113. package/src/internal/types.ts +414 -0
  114. package/src/ox/TokenId.test.ts +29 -0
  115. package/src/ox/TokenId.ts +35 -0
  116. package/src/ox/TokenRole.test.ts +20 -0
  117. package/src/ox/TokenRole.ts +27 -0
  118. package/src/ox/Transaction.test.ts +257 -0
  119. package/src/ox/Transaction.ts +247 -0
  120. package/src/ox/TransactionEnvelopeFeeToken.test.ts +1215 -0
  121. package/src/ox/TransactionEnvelopeFeeToken.ts +717 -0
  122. package/src/ox/TransactionRequest.ts +100 -0
  123. package/src/ox/index.ts +4 -0
  124. package/src/prool/Instance.test.ts +43 -0
  125. package/src/prool/Instance.ts +190 -0
  126. package/src/prool/index.ts +1 -0
  127. package/src/prool/internal/chain.json +106 -0
  128. package/src/prool/internal/consensus.toml +32 -0
  129. package/src/viem/abis.ts +1606 -0
  130. package/src/viem/actions/amm.test.ts +425 -0
  131. package/src/viem/actions/amm.ts +1308 -0
  132. package/src/viem/actions/fee.test.ts +281 -0
  133. package/src/viem/actions/fee.ts +362 -0
  134. package/src/viem/actions/index.ts +4 -0
  135. package/src/viem/actions/policy.test.ts +514 -0
  136. package/src/viem/actions/policy.ts +1284 -0
  137. package/src/viem/actions/token.test.ts +2172 -0
  138. package/src/viem/actions/token.ts +3830 -0
  139. package/src/viem/addresses.ts +10 -0
  140. package/src/viem/chain.ts +27 -0
  141. package/src/viem/client.bench-d.ts +8 -0
  142. package/src/viem/client.test.ts +152 -0
  143. package/src/viem/client.ts +91 -0
  144. package/src/viem/decorator.bench-d.ts +11 -0
  145. package/src/viem/decorator.test.ts +35 -0
  146. package/src/viem/decorator.ts +1914 -0
  147. package/src/viem/e2e.test.ts +410 -0
  148. package/src/viem/formatters.ts +100 -0
  149. package/src/viem/index.ts +8 -0
  150. package/src/viem/transaction.ts +253 -0
  151. package/src/viem/transport.ts +47 -0
  152. package/src/viem/types.ts +55 -0
  153. package/src/viem/utils.ts +37 -0
@@ -0,0 +1,117 @@
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 TransactionEnvelopeFeeToken from "./TransactionEnvelopeFeeToken.js";
6
+ /** Type to RPC Type mapping. */
7
+ export const toRpcType = {
8
+ ...ox_Transaction.toRpcType,
9
+ feeToken: '0x77',
10
+ };
11
+ /** RPC Type to Type mapping. */
12
+ export const fromRpcType = {
13
+ ...ox_Transaction.fromRpcType,
14
+ '0x77': 'feeToken',
15
+ };
16
+ /**
17
+ * Converts an {@link ox#Transaction.Rpc} to an {@link ox#Transaction.Transaction}.
18
+ *
19
+ * @example
20
+ * ```ts twoslash
21
+ * import { Transaction } from 'ox/tempo'
22
+ *
23
+ * const transaction = Transaction.fromRpc({
24
+ * hash: '0x353fdfc38a2f26115daadee9f5b8392ce62b84f410957967e2ed56b35338cdd0',
25
+ * nonce: '0x357',
26
+ * blockHash:
27
+ * '0xc350d807505fb835650f0013632c5515592987ba169bbc6626d9fc54d91f0f0b',
28
+ * blockNumber: '0x12f296f',
29
+ * feeToken: '0x20c0000000000000000000000000000000000000',
30
+ * transactionIndex: '0x2',
31
+ * from: '0x814e5e0e31016b9a7f138c76b7e7b2bb5c1ab6a6',
32
+ * to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad',
33
+ * value: '0x9b6e64a8ec60000',
34
+ * gas: '0x43f5d',
35
+ * maxFeePerGas: '0x2ca6ae494',
36
+ * maxPriorityFeePerGas: '0x41cc3c0',
37
+ * input:
38
+ * '0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000006643504700000000000000000000000000000000000000000000000000000000000000040b080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec60000000000000000000000000000000000000000000000000000019124bb5ae978c000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b80000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c00000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000190240001b9872b',
39
+ * r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',
40
+ * s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',
41
+ * yParity: '0x0',
42
+ * chainId: '0x1',
43
+ * accessList: [],
44
+ * type: '0x77',
45
+ * })
46
+ * ```
47
+ *
48
+ * @param transaction - The RPC transaction to convert.
49
+ * @returns An instantiated {@link ox#Transaction.Transaction}.
50
+ */
51
+ export function fromRpc(transaction, _options = {}) {
52
+ if (!transaction)
53
+ return null;
54
+ const transaction_ = ox_Transaction.fromRpc(transaction);
55
+ transaction_.type = fromRpcType[transaction.type];
56
+ if (transaction.feePayerSignature) {
57
+ transaction_.feePayerSignature = Signature.fromRpc(transaction.feePayerSignature);
58
+ transaction_.feePayerSignature.v = Signature.yParityToV(transaction_.feePayerSignature.yParity);
59
+ // TODO: remove once `feePayer` returned on `eth_getTxBy*`.
60
+ transaction_.feePayer = Secp256k1.recoverAddress({
61
+ payload: TransactionEnvelopeFeeToken.getFeePayerSignPayload(transaction_, { sender: transaction.from }),
62
+ signature: transaction_.feePayerSignature,
63
+ });
64
+ }
65
+ if (transaction.feeToken)
66
+ transaction_.feeToken = transaction.feeToken;
67
+ return transaction_;
68
+ }
69
+ /**
70
+ * Converts an {@link ox#Transaction.Transaction} to an {@link ox#Transaction.Rpc}.
71
+ *
72
+ * @example
73
+ * ```ts twoslash
74
+ * import { Transaction } from 'ox/tempo'
75
+ *
76
+ * const transaction = Transaction.toRpc({
77
+ * accessList: [],
78
+ * blockHash:
79
+ * '0xc350d807505fb835650f0013632c5515592987ba169bbc6626d9fc54d91f0f0b',
80
+ * blockNumber: 19868015n,
81
+ * chainId: 1,
82
+ * feeToken: '0x20c0000000000000000000000000000000000000',
83
+ * from: '0x814e5e0e31016b9a7f138c76b7e7b2bb5c1ab6a6',
84
+ * gas: 278365n,
85
+ * hash: '0x353fdfc38a2f26115daadee9f5b8392ce62b84f410957967e2ed56b35338cdd0',
86
+ * input:
87
+ * '0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000006643504700000000000000000000000000000000000000000000000000000000000000040b080604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000009b6e64a8ec60000000000000000000000000000000000000000000000000000019124bb5ae978c000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b80000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c00000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c56c7a0eaa804f854b536a5f3d5f49d2ec4b12b800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000190240001b9872b',
88
+ * maxFeePerGas: 11985937556n,
89
+ * maxPriorityFeePerGas: 68993984n,
90
+ * nonce: 855n,
91
+ * r: 44944627813007772897391531230081695102703289123332187696115181104739239197517n,
92
+ * s: 36528503505192438307355164441104001310566505351980369085208178712678799181120n,
93
+ * to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad',
94
+ * transactionIndex: 2,
95
+ * type: 'feeToken',
96
+ * v: 27,
97
+ * value: 700000000000000000n,
98
+ * yParity: 0,
99
+ * })
100
+ * ```
101
+ *
102
+ * @param transaction - The transaction to convert.
103
+ * @returns An RPC-formatted transaction.
104
+ */
105
+ export function toRpc(transaction, _options) {
106
+ const rpc = ox_Transaction.toRpc(transaction);
107
+ rpc.type = toRpcType[transaction.type];
108
+ if (transaction.feeToken)
109
+ rpc.feeToken = transaction.feeToken;
110
+ if (transaction.feePayerSignature) {
111
+ rpc.feePayerSignature = Signature.toRpc(transaction.feePayerSignature);
112
+ rpc.feePayerSignature.v = Hex.fromNumber(Signature.yParityToV(transaction.feePayerSignature?.yParity));
113
+ rpc.feePayer = transaction.feePayer;
114
+ }
115
+ return rpc;
116
+ }
117
+ //# sourceMappingURL=Transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/ox/Transaction.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,GAAG,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,SAAS,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,cAAc,MAAM,gBAAgB,CAAA;AAEhD,OAAO,KAAK,2BAA2B,yCAAwC;AAsE/E,gCAAgC;AAChC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,cAAc,CAAC,SAAS;IAC3B,QAAQ,EAAE,MAAM;CACR,CAAA;AAOV,gCAAgC;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,cAAc,CAAC,WAAW;IAC7B,MAAM,EAAE,UAAU;CACV,CAAA;AAQV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,OAAO,CAIrB,WAA8C,EAC9C,WAAqC,EAAE;IAEvC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAa,CAAA;IAEtC,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CACzC,WAA0C,CACnB,CAAA;IAEzB,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,IAAgC,CAAC,CAAA;IAC7E,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAClC,YAAY,CAAC,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAChD,WAAW,CAAC,iBAAiB,CAC9B,CACA;QAAC,YAAY,CAAC,iBAAyB,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAC/D,YAAY,CAAC,iBAAiB,CAAC,OAAO,CACvC,CAAA;QAED,2DAA2D;QAC3D,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC;YAC/C,OAAO,EAAE,2BAA2B,CAAC,sBAAsB,CACzD,YAAqB,EACrB,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAC7B;YACD,SAAS,EAAE,YAAY,CAAC,iBAAiB;SAC1C,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,QAAQ;QAAE,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;IAEtE,OAAO,YAAqB,CAAA;AAC9B,CAAC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,KAAK,CACnB,WAAiC,EACjC,QAAiC;IAEjC,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAC9B,WAAkD,CACnC,CAAA;IAEjB,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,IAA8B,CAAC,CAAA;IAChE,IAAI,WAAW,CAAC,QAAQ;QAAE,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;IAC7D,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAClC,GAAG,CAAC,iBAAiB,GAAG,SAAS,CAAC,KAAK,CACrC,WAAW,CAAC,iBAAiB,CACvB,CACP;QAAC,GAAG,CAAC,iBAAyB,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAChD,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAC7D,CAAA;QACD,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;IACrC,CAAC;IAED,OAAO,GAAmB,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,393 @@
1
+ import * as AccessList from 'ox/AccessList';
2
+ import * as Address from 'ox/Address';
3
+ import * as Authorization from 'ox/Authorization';
4
+ import type * as Errors from 'ox/Errors';
5
+ import * as Hash from 'ox/Hash';
6
+ import * as Hex from 'ox/Hex';
7
+ import * as Rlp from 'ox/Rlp';
8
+ import * as Signature from 'ox/Signature';
9
+ import * as TransactionEnvelope from 'ox/TransactionEnvelope';
10
+ import type { OneOf } from 'viem';
11
+ import type { Assign, Compute, PartialBy, UnionPartialBy } from "../internal/types.js";
12
+ import * as TokenId from "./TokenId.js";
13
+ export type TransactionEnvelopeFeeToken<signed extends boolean = boolean, bigintType = bigint, numberType = number, type extends string = Type> = Compute<TransactionEnvelope.Base<type, signed, bigintType, numberType> & {
14
+ /** EIP-2930 Access List. */
15
+ accessList?: AccessList.AccessList | undefined;
16
+ /** EIP-7702 Authorization List. */
17
+ authorizationList?: Authorization.ListSigned<bigintType, numberType> | undefined;
18
+ /** Fee payer signature. */
19
+ feePayerSignature?: Signature.Signature<true, bigintType, numberType> | null | undefined;
20
+ /** Fee token preference. Address or ID of the TIP-20 token. */
21
+ feeToken?: TokenId.TokenIdOrAddress | undefined;
22
+ /** Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas). */
23
+ maxFeePerGas?: bigintType | undefined;
24
+ /** Max priority fee per gas (in wei). */
25
+ maxPriorityFeePerGas?: bigintType | undefined;
26
+ }>;
27
+ export type Rpc<signed extends boolean = boolean> = TransactionEnvelopeFeeToken<signed, Hex.Hex, Hex.Hex, '0x77'>;
28
+ export declare const feePayerMagic: "0x78";
29
+ export type FeePayerMagic = typeof feePayerMagic;
30
+ export type Serialized = `${SerializedType}${string}`;
31
+ export type Signed = TransactionEnvelopeFeeToken<true>;
32
+ export declare const serializedType: "0x77";
33
+ export type SerializedType = typeof serializedType;
34
+ export declare const type: "feeToken";
35
+ export type Type = typeof type;
36
+ /**
37
+ * Asserts a {@link ox#TransactionEnvelopeFeeToken.TransactionEnvelopeFeeToken} is valid.
38
+ *
39
+ * @example
40
+ * ```ts twoslash
41
+ * import { Value } from 'ox'
42
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
43
+ *
44
+ * TransactionEnvelopeFeeToken.assert({
45
+ * feeToken: '0x20c0000000000000000000000000000000000000',
46
+ * maxFeePerGas: 2n ** 256n - 1n + 1n,
47
+ * chainId: 1,
48
+ * to: '0x0000000000000000000000000000000000000000',
49
+ * value: Value.fromEther('1'),
50
+ * })
51
+ * // @error: FeeCapTooHighError:
52
+ * // @error: The fee cap (`masFeePerGas` = 115792089237316195423570985008687907853269984665640564039457584007913 gwei) cannot be
53
+ * // @error: higher than the maximum allowed value (2^256-1).
54
+ * ```
55
+ *
56
+ * @param envelope - The transaction envelope to assert.
57
+ */
58
+ export declare function assert(envelope: PartialBy<TransactionEnvelopeFeeToken, 'type'>): void;
59
+ export declare namespace assert {
60
+ type ErrorType = Address.assert.ErrorType | TransactionEnvelope.InvalidChainIdError | Errors.GlobalErrorType;
61
+ }
62
+ /**
63
+ * Deserializes a {@link ox#TransactionEnvelopeFeeToken.TransactionEnvelopeFeeToken} from its serialized form.
64
+ *
65
+ * @example
66
+ * ```ts twoslash
67
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
68
+ *
69
+ * const envelope = TransactionEnvelopeFeeToken.deserialize('0x77ef0182031184773594008477359400809470997970c51812dc3a010c7d01b50e0d17dc79c8880de0b6b3a764000080c0')
70
+ * // @log: {
71
+ * // @log: type: 'feeToken',
72
+ * // @log: nonce: 785n,
73
+ * // @log: maxFeePerGas: 2000000000n,
74
+ * // @log: gas: 1000000n,
75
+ * // @log: to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
76
+ * // @log: value: 1000000000000000000n,
77
+ * // @log: }
78
+ * ```
79
+ *
80
+ * @param serialized - The serialized transaction.
81
+ * @returns Deserialized Transaction Envelope.
82
+ */
83
+ export declare function deserialize(serialized: Serialized): Compute<TransactionEnvelopeFeeToken>;
84
+ export declare namespace deserialize {
85
+ type ErrorType = Errors.GlobalErrorType;
86
+ }
87
+ /**
88
+ * Converts an arbitrary transaction object into an Fee Token Transaction Envelope.
89
+ *
90
+ * @example
91
+ * ```ts twoslash
92
+ * import { Value } from 'ox'
93
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
94
+ *
95
+ * const envelope = TransactionEnvelopeFeeToken.from({ // [!code focus]
96
+ * chainId: 1, // [!code focus]
97
+ * feeToken: '0x20c0000000000000000000000000000000000000', // [!code focus]
98
+ * maxFeePerGas: Value.fromGwei('10'), // [!code focus]
99
+ * maxPriorityFeePerGas: Value.fromGwei('1'), // [!code focus]
100
+ * to: '0x0000000000000000000000000000000000000000', // [!code focus]
101
+ * value: Value.fromEther('1'), // [!code focus]
102
+ * }) // [!code focus]
103
+ * ```
104
+ *
105
+ * @example
106
+ * ### Attaching Signatures
107
+ *
108
+ * It is possible to attach a `signature` to the transaction envelope.
109
+ *
110
+ * ```ts twoslash
111
+ * // @noErrors
112
+ * import { Secp256k1, Value } from 'ox'
113
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
114
+ *
115
+ * const envelope = TransactionEnvelopeFeeToken.from({
116
+ * chainId: 1,
117
+ * feeToken: '0x20c0000000000000000000000000000000000000',
118
+ * maxFeePerGas: Value.fromGwei('10'),
119
+ * maxPriorityFeePerGas: Value.fromGwei('1'),
120
+ * to: '0x0000000000000000000000000000000000000000',
121
+ * value: Value.fromEther('1'),
122
+ * })
123
+ *
124
+ * const signature = Secp256k1.sign({
125
+ * payload: TransactionEnvelopeFeeToken.getSignPayload(envelope),
126
+ * privateKey: '0x...',
127
+ * })
128
+ *
129
+ * const envelope_signed = TransactionEnvelopeFeeToken.from(envelope, { // [!code focus]
130
+ * signature, // [!code focus]
131
+ * }) // [!code focus]
132
+ * // @log: {
133
+ * // @log: chainId: 1,
134
+ * // @log: feeToken: '0x20c0000000000000000000000000000000000000',
135
+ * // @log: maxFeePerGas: 10000000000n,
136
+ * // @log: maxPriorityFeePerGas: 1000000000n,
137
+ * // @log: to: '0x0000000000000000000000000000000000000000',
138
+ * // @log: type: 'feeToken',
139
+ * // @log: value: 1000000000000000000n,
140
+ * // @log: r: 125...n,
141
+ * // @log: s: 642...n,
142
+ * // @log: yParity: 0,
143
+ * // @log: }
144
+ * ```
145
+ *
146
+ * @example
147
+ * ### From Serialized
148
+ *
149
+ * It is possible to instantiate an Fee Token Transaction Envelope from a {@link ox#TransactionEnvelopeFeeToken.Serialized} value.
150
+ *
151
+ * ```ts twoslash
152
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
153
+ *
154
+ * const envelope = TransactionEnvelopeFeeToken.from('0x77f858018203118502540be4008504a817c800809470997970c51812dc3a010c7d01b50e0d17dc79c8880de0b6b3a764000080c08477359400e1a001627c687261b0e7f8638af1112efa8a77e23656f6e7945275b19e9deed80261')
155
+ * // @log: {
156
+ * // @log: chainId: 1,
157
+ * // @log: feeToken: '0x20c0000000000000000000000000000000000000',
158
+ * // @log: maxFeePerGas: 10000000000n,
159
+ * // @log: to: '0x0000000000000000000000000000000000000000',
160
+ * // @log: type: 'feeToken',
161
+ * // @log: value: 1000000000000000000n,
162
+ * // @log: }
163
+ * ```
164
+ *
165
+ * @param envelope - The transaction object to convert.
166
+ * @param options - Options.
167
+ * @returns An Fee Token Transaction Envelope.
168
+ */
169
+ export declare function from<const envelope extends UnionPartialBy<TransactionEnvelopeFeeToken, 'type'> | Serialized, const signature extends Signature.Signature | undefined = undefined>(envelope: envelope | UnionPartialBy<TransactionEnvelopeFeeToken, 'type'> | Serialized, options?: from.Options<signature>): from.ReturnValue<envelope, signature>;
170
+ export declare namespace from {
171
+ type Options<signature extends Signature.Signature | undefined = undefined> = {
172
+ feePayerSignature?: Signature.Signature | null | undefined;
173
+ signature?: signature | Signature.Signature | undefined;
174
+ };
175
+ type ReturnValue<envelope extends UnionPartialBy<TransactionEnvelopeFeeToken, 'type'> | Hex.Hex = TransactionEnvelopeFeeToken | Hex.Hex, signature extends Signature.Signature | undefined = undefined> = Compute<envelope extends Hex.Hex ? TransactionEnvelopeFeeToken : Assign<envelope, (signature extends Signature.Signature ? Readonly<signature> : {}) & {
176
+ readonly type: 'feeToken';
177
+ }>>;
178
+ type ErrorType = deserialize.ErrorType | assert.ErrorType | Errors.GlobalErrorType;
179
+ }
180
+ /**
181
+ * Returns the fee payer payload to sign for a {@link ox#TransactionEnvelopeFeeToken.TransactionEnvelopeFeeToken}.
182
+ *
183
+ * @example
184
+ * TODO
185
+ *
186
+ * @param envelope - The transaction envelope to get the fee payer sign payload for.
187
+ * @returns The fee payer sign payload.
188
+ */
189
+ export declare function getFeePayerSignPayload(envelope: TransactionEnvelopeFeeToken, options: getFeePayerSignPayload.Options): getFeePayerSignPayload.ReturnValue;
190
+ export declare namespace getFeePayerSignPayload {
191
+ type Options = {
192
+ /**
193
+ * Whether to get the fee payer sign payload for the **sender** to sign.
194
+ *
195
+ * @default false
196
+ */
197
+ sender: Address.Address;
198
+ };
199
+ type ReturnValue = Hex.Hex;
200
+ type ErrorType = hash.ErrorType | Errors.GlobalErrorType;
201
+ }
202
+ /**
203
+ * Returns the payload to sign for a {@link ox#TransactionEnvelopeFeeToken.TransactionEnvelopeFeeToken}.
204
+ *
205
+ * @example
206
+ * The example below demonstrates how to compute the sign payload which can be used
207
+ * with ECDSA signing utilities like {@link ox#Secp256k1.(sign:function)}.
208
+ *
209
+ * ```ts twoslash
210
+ * // @noErrors
211
+ * import { Secp256k1 } from 'ox'
212
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
213
+ *
214
+ * const envelope = TransactionEnvelopeFeeToken.from({
215
+ * chainId: 1,
216
+ * feeToken: '0x20c0000000000000000000000000000000000000',
217
+ * nonce: 0n,
218
+ * maxFeePerGas: 1000000000n,
219
+ * gas: 21000n,
220
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
221
+ * value: 1000000000000000000n,
222
+ * })
223
+ *
224
+ * const payload = TransactionEnvelopeFeeToken.getSignPayload(envelope) // [!code focus]
225
+ * // @log: '0x...'
226
+ *
227
+ * const signature = Secp256k1.sign({ payload, privateKey: '0x...' })
228
+ * ```
229
+ *
230
+ * @param envelope - The transaction envelope to get the sign payload for.
231
+ * @returns The sign payload.
232
+ */
233
+ export declare function getSignPayload(envelope: TransactionEnvelopeFeeToken): getSignPayload.ReturnValue;
234
+ export declare namespace getSignPayload {
235
+ type ReturnValue = Hex.Hex;
236
+ type ErrorType = hash.ErrorType | Errors.GlobalErrorType;
237
+ }
238
+ /**
239
+ * Hashes a {@link ox#TransactionEnvelopeFeeToken.TransactionEnvelopeFeeToken}. This is the "transaction hash".
240
+ *
241
+ * @example
242
+ * ```ts twoslash
243
+ * // @noErrors
244
+ * import { Secp256k1 } from 'ox'
245
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
246
+ *
247
+ * const envelope = TransactionEnvelopeFeeToken.from({
248
+ * chainId: 1,
249
+ * feeToken: '0x20c0000000000000000000000000000000000000',
250
+ * nonce: 0n,
251
+ * maxFeePerGas: 1000000000n,
252
+ * gas: 21000n,
253
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
254
+ * value: 1000000000000000000n,
255
+ * })
256
+ *
257
+ * const signature = Secp256k1.sign({
258
+ * payload: TransactionEnvelopeFeeToken.getSignPayload(envelope),
259
+ * privateKey: '0x...'
260
+ * })
261
+ *
262
+ * const envelope_signed = TransactionEnvelopeFeeToken.from(envelope, { signature })
263
+ *
264
+ * const hash = TransactionEnvelopeFeeToken.hash(envelope_signed) // [!code focus]
265
+ * ```
266
+ *
267
+ * @param envelope - The Fee Token Transaction Envelope to hash.
268
+ * @param options - Options.
269
+ * @returns The hash of the transaction envelope.
270
+ */
271
+ export declare function hash<presign extends boolean = false>(envelope: TransactionEnvelopeFeeToken<presign extends true ? false : true>, options?: hash.Options<presign>): hash.ReturnValue;
272
+ export declare namespace hash {
273
+ type Options<presign extends boolean = false> = {
274
+ /**
275
+ * Whether to hash this transaction for signing.
276
+ *
277
+ * @default false
278
+ */
279
+ presign?: presign | boolean | undefined;
280
+ };
281
+ type ReturnValue = Hex.Hex;
282
+ type ErrorType = Hash.keccak256.ErrorType | serialize.ErrorType | Errors.GlobalErrorType;
283
+ }
284
+ /**
285
+ * Serializes a {@link ox#TransactionEnvelopeFeeToken.TransactionEnvelopeFeeToken}.
286
+ *
287
+ * @example
288
+ * ```ts twoslash
289
+ * // @noErrors
290
+ * import { Value } from 'ox'
291
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
292
+ *
293
+ * const envelope = TransactionEnvelopeFeeToken.from({
294
+ * chainId: 1,
295
+ * feeToken: '0x20c0000000000000000000000000000000000000',
296
+ * maxFeePerGas: Value.fromGwei('10'),
297
+ * to: '0x0000000000000000000000000000000000000000',
298
+ * value: Value.fromEther('1'),
299
+ * })
300
+ *
301
+ * const serialized = TransactionEnvelopeFeeToken.serialize(envelope) // [!code focus]
302
+ * ```
303
+ *
304
+ * @example
305
+ * ### Attaching Signatures
306
+ *
307
+ * It is possible to attach a `signature` to the serialized Transaction Envelope.
308
+ *
309
+ * ```ts twoslash
310
+ * // @noErrors
311
+ * import { Secp256k1, Value } from 'ox'
312
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
313
+ *
314
+ * const envelope = TransactionEnvelopeFeeToken.from({
315
+ * chainId: 1,
316
+ * feeToken: '0x20c0000000000000000000000000000000000000',
317
+ * maxFeePerGas: Value.fromGwei('10'),
318
+ * to: '0x0000000000000000000000000000000000000000',
319
+ * value: Value.fromEther('1'),
320
+ * })
321
+ *
322
+ * const signature = Secp256k1.sign({
323
+ * payload: TransactionEnvelopeFeeToken.getSignPayload(envelope),
324
+ * privateKey: '0x...',
325
+ * })
326
+ *
327
+ * const serialized = TransactionEnvelopeFeeToken.serialize(envelope, { // [!code focus]
328
+ * signature, // [!code focus]
329
+ * }) // [!code focus]
330
+ *
331
+ * // ... send `serialized` transaction to JSON-RPC `eth_sendRawTransaction`
332
+ * ```
333
+ *
334
+ * @param envelope - The Transaction Envelope to serialize.
335
+ * @param options - Options.
336
+ * @returns The serialized Transaction Envelope.
337
+ */
338
+ export declare function serialize(envelope: PartialBy<TransactionEnvelopeFeeToken, 'type'>, options?: serialize.Options): Serialized;
339
+ export declare namespace serialize {
340
+ type Options = {
341
+ /**
342
+ * Sender signature to append to the serialized envelope.
343
+ */
344
+ signature?: Signature.Signature | undefined;
345
+ } & OneOf<{
346
+ /**
347
+ * Sender address to cover the fee of.
348
+ */
349
+ sender: Address.Address;
350
+ /**
351
+ * Whether to serialize the transaction in the fee payer format.
352
+ *
353
+ * - If `'feePayer'`, then the transaction will be serialized in the fee payer format.
354
+ * - If `undefined` (default), then the transaction will be serialized in the normal format.
355
+ */
356
+ format: 'feePayer';
357
+ } | {
358
+ /**
359
+ * Fee payer signature or the sender to cover the fee of.
360
+ *
361
+ * - If `Signature.Signature`, then this is the fee payer signature.
362
+ * - If `null`, then this indicates the envelope is intended to be signed by a fee payer.
363
+ */
364
+ feePayerSignature?: Signature.Signature | null | undefined;
365
+ format?: undefined;
366
+ }>;
367
+ type ErrorType = assert.ErrorType | Hex.fromNumber.ErrorType | Signature.toTuple.ErrorType | Hex.concat.ErrorType | Rlp.fromHex.ErrorType | Errors.GlobalErrorType;
368
+ }
369
+ /**
370
+ * Validates a {@link ox#TransactionEnvelopeFeeToken.TransactionEnvelopeFeeToken}. Returns `true` if the envelope is valid, `false` otherwise.
371
+ *
372
+ * @example
373
+ * ```ts twoslash
374
+ * import { Value } from 'ox'
375
+ * import { TransactionEnvelopeFeeToken } from 'ox/tempo'
376
+ *
377
+ * const valid = TransactionEnvelopeFeeToken.validate({
378
+ * feeToken: '0x20c0000000000000000000000000000000000000',
379
+ * maxFeePerGas: 2n ** 256n - 1n + 1n,
380
+ * chainId: 1,
381
+ * to: '0x0000000000000000000000000000000000000000',
382
+ * value: Value.fromEther('1'),
383
+ * })
384
+ * // @log: false
385
+ * ```
386
+ *
387
+ * @param envelope - The transaction envelope to validate.
388
+ */
389
+ export declare function validate(envelope: PartialBy<TransactionEnvelopeFeeToken, 'type'>): boolean;
390
+ export declare namespace validate {
391
+ type ErrorType = Errors.GlobalErrorType;
392
+ }
393
+ //# sourceMappingURL=TransactionEnvelopeFeeToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionEnvelopeFeeToken.d.ts","sourceRoot":"","sources":["../../src/ox/TransactionEnvelopeFeeToken.ts"],"names":[],"mappings":"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"}