viem 0.0.0-w-20230821171049 → 0.0.0-w-20230828183856

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 (244) hide show
  1. package/README.md +6 -0
  2. package/dist/cjs/actions/ens/getEnsAddress.js +2 -2
  3. package/dist/cjs/actions/ens/getEnsAddress.js.map +1 -1
  4. package/dist/cjs/actions/index.js +8 -2
  5. package/dist/cjs/actions/index.js.map +1 -1
  6. package/dist/cjs/actions/public/estimateFeesPerGas.js +60 -0
  7. package/dist/cjs/actions/public/estimateFeesPerGas.js.map +1 -0
  8. package/dist/cjs/actions/public/estimateGas.js +2 -2
  9. package/dist/cjs/actions/public/estimateGas.js.map +1 -1
  10. package/dist/cjs/actions/public/estimateMaxPriorityFeePerGas.js +44 -0
  11. package/dist/cjs/actions/public/estimateMaxPriorityFeePerGas.js.map +1 -0
  12. package/dist/cjs/actions/public/verifyHash.js.map +1 -1
  13. package/dist/cjs/actions/public/verifyMessage.js.map +1 -1
  14. package/dist/cjs/actions/public/verifyTypedData.js.map +1 -1
  15. package/dist/cjs/actions/public/waitForTransactionReceipt.js +35 -30
  16. package/dist/cjs/actions/public/waitForTransactionReceipt.js.map +1 -1
  17. package/dist/cjs/actions/public/watchContractEvent.js +10 -7
  18. package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
  19. package/dist/cjs/actions/wallet/deployContract.js.map +1 -1
  20. package/dist/cjs/actions/wallet/prepareTransactionRequest.js +70 -0
  21. package/dist/cjs/actions/wallet/prepareTransactionRequest.js.map +1 -0
  22. package/dist/cjs/actions/wallet/sendRawTransaction.js +11 -0
  23. package/dist/cjs/actions/wallet/sendRawTransaction.js.map +1 -0
  24. package/dist/cjs/actions/wallet/sendTransaction.js +6 -6
  25. package/dist/cjs/actions/wallet/sendTransaction.js.map +1 -1
  26. package/dist/cjs/actions/wallet/signTransaction.js +47 -0
  27. package/dist/cjs/actions/wallet/signTransaction.js.map +1 -0
  28. package/dist/cjs/chains/celo/formatters.js +4 -1
  29. package/dist/cjs/chains/celo/formatters.js.map +1 -1
  30. package/dist/cjs/chains/celo/parsers.js +76 -0
  31. package/dist/cjs/chains/celo/parsers.js.map +1 -0
  32. package/dist/cjs/chains/celo/serializers.js +2 -1
  33. package/dist/cjs/chains/celo/serializers.js.map +1 -1
  34. package/dist/cjs/chains/index.js +3 -2
  35. package/dist/cjs/chains/index.js.map +1 -1
  36. package/dist/cjs/chains/utils.js +3 -1
  37. package/dist/cjs/chains/utils.js.map +1 -1
  38. package/dist/cjs/clients/createTestClient.js.map +1 -1
  39. package/dist/cjs/clients/decorators/public.js +8 -0
  40. package/dist/cjs/clients/decorators/public.js.map +1 -1
  41. package/dist/cjs/clients/decorators/wallet.js +6 -0
  42. package/dist/cjs/clients/decorators/wallet.js.map +1 -1
  43. package/dist/cjs/errors/fee.js +42 -0
  44. package/dist/cjs/errors/fee.js.map +1 -0
  45. package/dist/cjs/index.js +9 -6
  46. package/dist/cjs/index.js.map +1 -1
  47. package/dist/cjs/public.js +5 -1
  48. package/dist/cjs/public.js.map +1 -1
  49. package/dist/cjs/utils/data/isBytesEqual.js +4 -3
  50. package/dist/cjs/utils/data/isBytesEqual.js.map +1 -1
  51. package/dist/cjs/utils/ens/encodedLabelToLabelhash.js +2 -2
  52. package/dist/cjs/utils/ens/encodedLabelToLabelhash.js.map +1 -1
  53. package/dist/cjs/utils/formatters/transactionRequest.js +9 -1
  54. package/dist/cjs/utils/formatters/transactionRequest.js.map +1 -1
  55. package/dist/cjs/utils/index.js +3 -3
  56. package/dist/cjs/utils/index.js.map +1 -1
  57. package/dist/cjs/utils/rpc.js +5 -7
  58. package/dist/cjs/utils/rpc.js.map +1 -1
  59. package/dist/cjs/utils/transaction/parseTransaction.js +8 -3
  60. package/dist/cjs/utils/transaction/parseTransaction.js.map +1 -1
  61. package/dist/cjs/version.js +1 -1
  62. package/dist/esm/actions/ens/getEnsAddress.js +2 -2
  63. package/dist/esm/actions/ens/getEnsAddress.js.map +1 -1
  64. package/dist/esm/actions/index.js +3 -0
  65. package/dist/esm/actions/index.js.map +1 -1
  66. package/dist/esm/actions/public/estimateFeesPerGas.js +78 -0
  67. package/dist/esm/actions/public/estimateFeesPerGas.js.map +1 -0
  68. package/dist/esm/actions/public/estimateGas.js +2 -2
  69. package/dist/esm/actions/public/estimateGas.js.map +1 -1
  70. package/dist/esm/actions/public/estimateMaxPriorityFeePerGas.js +64 -0
  71. package/dist/esm/actions/public/estimateMaxPriorityFeePerGas.js.map +1 -0
  72. package/dist/esm/actions/public/verifyHash.js.map +1 -1
  73. package/dist/esm/actions/public/verifyMessage.js.map +1 -1
  74. package/dist/esm/actions/public/verifyTypedData.js.map +1 -1
  75. package/dist/esm/actions/public/waitForTransactionReceipt.js +39 -34
  76. package/dist/esm/actions/public/waitForTransactionReceipt.js.map +1 -1
  77. package/dist/esm/actions/public/watchContractEvent.js +5 -2
  78. package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
  79. package/dist/esm/actions/wallet/deployContract.js.map +1 -1
  80. package/dist/esm/actions/wallet/prepareTransactionRequest.js +109 -0
  81. package/dist/esm/actions/wallet/prepareTransactionRequest.js.map +1 -0
  82. package/dist/esm/actions/wallet/sendRawTransaction.js +31 -0
  83. package/dist/esm/actions/wallet/sendRawTransaction.js.map +1 -0
  84. package/dist/esm/actions/wallet/sendTransaction.js +6 -6
  85. package/dist/esm/actions/wallet/sendTransaction.js.map +1 -1
  86. package/dist/esm/actions/wallet/signTransaction.js +87 -0
  87. package/dist/esm/actions/wallet/signTransaction.js.map +1 -0
  88. package/dist/esm/chains/celo/formatters.js +4 -1
  89. package/dist/esm/chains/celo/formatters.js.map +1 -1
  90. package/dist/esm/chains/celo/parsers.js +72 -0
  91. package/dist/esm/chains/celo/parsers.js.map +1 -0
  92. package/dist/esm/chains/celo/serializers.js +1 -3
  93. package/dist/esm/chains/celo/serializers.js.map +1 -1
  94. package/dist/esm/chains/index.js +1 -0
  95. package/dist/esm/chains/index.js.map +1 -1
  96. package/dist/esm/chains/utils.js +1 -0
  97. package/dist/esm/chains/utils.js.map +1 -1
  98. package/dist/esm/clients/createTestClient.js.map +1 -1
  99. package/dist/esm/clients/decorators/public.js +8 -0
  100. package/dist/esm/clients/decorators/public.js.map +1 -1
  101. package/dist/esm/clients/decorators/wallet.js +6 -0
  102. package/dist/esm/clients/decorators/wallet.js.map +1 -1
  103. package/dist/esm/errors/fee.js +36 -0
  104. package/dist/esm/errors/fee.js.map +1 -0
  105. package/dist/esm/index.js +2 -2
  106. package/dist/esm/index.js.map +1 -1
  107. package/dist/esm/public.js +2 -0
  108. package/dist/esm/public.js.map +1 -1
  109. package/dist/esm/utils/data/isBytesEqual.js +2 -1
  110. package/dist/esm/utils/data/isBytesEqual.js.map +1 -1
  111. package/dist/esm/utils/ens/encodedLabelToLabelhash.js +1 -1
  112. package/dist/esm/utils/ens/encodedLabelToLabelhash.js.map +1 -1
  113. package/dist/esm/utils/formatters/transactionRequest.js +8 -0
  114. package/dist/esm/utils/formatters/transactionRequest.js.map +1 -1
  115. package/dist/esm/utils/index.js +3 -1
  116. package/dist/esm/utils/index.js.map +1 -1
  117. package/dist/esm/utils/rpc.js +5 -7
  118. package/dist/esm/utils/rpc.js.map +1 -1
  119. package/dist/esm/utils/transaction/parseTransaction.js +6 -3
  120. package/dist/esm/utils/transaction/parseTransaction.js.map +1 -1
  121. package/dist/esm/version.js +1 -1
  122. package/dist/types/actions/ens/getEnsAddress.d.ts.map +1 -1
  123. package/dist/types/actions/index.d.ts +3 -0
  124. package/dist/types/actions/index.d.ts.map +1 -1
  125. package/dist/types/actions/public/estimateFeesPerGas.d.ts +48 -0
  126. package/dist/types/actions/public/estimateFeesPerGas.d.ts.map +1 -0
  127. package/dist/types/actions/public/estimateMaxPriorityFeePerGas.d.ts +37 -0
  128. package/dist/types/actions/public/estimateMaxPriorityFeePerGas.d.ts.map +1 -0
  129. package/dist/types/actions/public/verifyHash.d.ts +1 -1
  130. package/dist/types/actions/public/verifyHash.d.ts.map +1 -1
  131. package/dist/types/actions/public/verifyMessage.d.ts +2 -2
  132. package/dist/types/actions/public/verifyMessage.d.ts.map +1 -1
  133. package/dist/types/actions/public/verifyTypedData.d.ts +2 -2
  134. package/dist/types/actions/public/verifyTypedData.d.ts.map +1 -1
  135. package/dist/types/actions/public/waitForTransactionReceipt.d.ts.map +1 -1
  136. package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
  137. package/dist/types/actions/wallet/deployContract.d.ts +2 -1
  138. package/dist/types/actions/wallet/deployContract.d.ts.map +1 -1
  139. package/dist/types/actions/wallet/prepareTransactionRequest.d.ts +52 -0
  140. package/dist/types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -0
  141. package/dist/types/actions/wallet/sendRawTransaction.d.ts +38 -0
  142. package/dist/types/actions/wallet/sendRawTransaction.d.ts.map +1 -0
  143. package/dist/types/actions/wallet/sendTransaction.d.ts +2 -1
  144. package/dist/types/actions/wallet/sendTransaction.d.ts.map +1 -1
  145. package/dist/types/actions/wallet/signTransaction.d.ts +55 -0
  146. package/dist/types/actions/wallet/signTransaction.d.ts.map +1 -0
  147. package/dist/types/chains/celo/formatters.d.ts +503 -5
  148. package/dist/types/chains/celo/formatters.d.ts.map +1 -1
  149. package/dist/types/chains/celo/parsers.d.ts +6 -0
  150. package/dist/types/chains/celo/parsers.d.ts.map +1 -0
  151. package/dist/types/chains/celo/serializers.d.ts +3 -14
  152. package/dist/types/chains/celo/serializers.d.ts.map +1 -1
  153. package/dist/types/chains/celo/types.d.ts +54 -14
  154. package/dist/types/chains/celo/types.d.ts.map +1 -1
  155. package/dist/types/chains/index.d.ts +15876 -3730
  156. package/dist/types/chains/index.d.ts.map +1 -1
  157. package/dist/types/chains/utils.d.ts +3 -2
  158. package/dist/types/chains/utils.d.ts.map +1 -1
  159. package/dist/types/clients/createTestClient.d.ts +1 -1
  160. package/dist/types/clients/createTestClient.d.ts.map +1 -1
  161. package/dist/types/clients/decorators/public.d.ts +112 -0
  162. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  163. package/dist/types/clients/decorators/wallet.d.ts +111 -0
  164. package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
  165. package/dist/types/errors/fee.d.ts +16 -0
  166. package/dist/types/errors/fee.d.ts.map +1 -0
  167. package/dist/types/index.d.ts +23 -17
  168. package/dist/types/index.d.ts.map +1 -1
  169. package/dist/types/public.d.ts +2 -0
  170. package/dist/types/public.d.ts.map +1 -1
  171. package/dist/types/types/chain.d.ts +64 -11
  172. package/dist/types/types/chain.d.ts.map +1 -1
  173. package/dist/types/types/contract.d.ts +2 -2
  174. package/dist/types/types/contract.d.ts.map +1 -1
  175. package/dist/types/types/eip1193.d.ts +14 -2
  176. package/dist/types/types/eip1193.d.ts.map +1 -1
  177. package/dist/types/types/fee.d.ts +1 -0
  178. package/dist/types/types/fee.d.ts.map +1 -1
  179. package/dist/types/utils/chain.d.ts +2 -2
  180. package/dist/types/utils/chain.d.ts.map +1 -1
  181. package/dist/types/utils/data/isBytesEqual.d.ts +1 -1
  182. package/dist/types/utils/data/isBytesEqual.d.ts.map +1 -1
  183. package/dist/types/utils/ens/encodeLabelhash.d.ts +1 -1
  184. package/dist/types/utils/ens/encodeLabelhash.d.ts.map +1 -1
  185. package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts +1 -1
  186. package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts.map +1 -1
  187. package/dist/types/utils/formatters/transactionRequest.d.ts +5 -0
  188. package/dist/types/utils/formatters/transactionRequest.d.ts.map +1 -1
  189. package/dist/types/utils/index.d.ts +3 -1
  190. package/dist/types/utils/index.d.ts.map +1 -1
  191. package/dist/types/utils/rpc.d.ts +1 -1
  192. package/dist/types/utils/rpc.d.ts.map +1 -1
  193. package/dist/types/utils/transaction/parseTransaction.d.ts +5 -1
  194. package/dist/types/utils/transaction/parseTransaction.d.ts.map +1 -1
  195. package/dist/types/version.d.ts +1 -1
  196. package/package.json +1 -1
  197. package/src/actions/ens/getEnsAddress.ts +6 -8
  198. package/src/actions/index.ts +15 -0
  199. package/src/actions/public/estimateFeesPerGas.ts +154 -0
  200. package/src/actions/public/estimateGas.ts +5 -5
  201. package/src/actions/public/estimateMaxPriorityFeePerGas.ts +98 -0
  202. package/src/actions/public/verifyHash.ts +1 -1
  203. package/src/actions/public/verifyMessage.ts +3 -2
  204. package/src/actions/public/verifyTypedData.ts +3 -2
  205. package/src/actions/public/waitForTransactionReceipt.ts +48 -44
  206. package/src/actions/public/watchContractEvent.ts +9 -6
  207. package/src/actions/wallet/deployContract.ts +2 -1
  208. package/src/actions/wallet/prepareTransactionRequest.ts +179 -0
  209. package/src/actions/wallet/sendRawTransaction.ts +48 -0
  210. package/src/actions/wallet/sendTransaction.ts +8 -7
  211. package/src/actions/wallet/signTransaction.ts +137 -0
  212. package/src/chains/celo/formatters.ts +11 -12
  213. package/src/chains/celo/parsers.ts +123 -0
  214. package/src/chains/celo/serializers.ts +13 -34
  215. package/src/chains/celo/types.ts +114 -26
  216. package/src/chains/index.ts +1 -0
  217. package/src/chains/utils.ts +10 -6
  218. package/src/clients/createTestClient.ts +2 -1
  219. package/src/clients/decorators/public.ts +145 -0
  220. package/src/clients/decorators/wallet.ts +133 -0
  221. package/src/errors/fee.ts +27 -0
  222. package/src/errors/rpc.ts +1 -1
  223. package/src/index.ts +46 -25
  224. package/src/public.ts +10 -0
  225. package/src/types/chain.ts +80 -12
  226. package/src/types/contract.ts +2 -2
  227. package/src/types/eip1193.ts +14 -2
  228. package/src/types/fee.ts +2 -0
  229. package/src/utils/chain.ts +2 -2
  230. package/src/utils/data/isBytesEqual.ts +4 -1
  231. package/src/utils/ens/encodeLabelhash.ts +1 -1
  232. package/src/utils/ens/encodedLabelToLabelhash.ts +2 -2
  233. package/src/utils/formatters/transactionRequest.ts +10 -0
  234. package/src/utils/index.ts +4 -1
  235. package/src/utils/rpc.ts +5 -8
  236. package/src/utils/transaction/parseTransaction.ts +7 -9
  237. package/src/version.ts +1 -1
  238. package/dist/cjs/utils/transaction/prepareRequest.js +0 -64
  239. package/dist/cjs/utils/transaction/prepareRequest.js.map +0 -1
  240. package/dist/esm/utils/transaction/prepareRequest.js +0 -64
  241. package/dist/esm/utils/transaction/prepareRequest.js.map +0 -1
  242. package/dist/types/utils/transaction/prepareRequest.d.ts +0 -20
  243. package/dist/types/utils/transaction/prepareRequest.d.ts.map +0 -1
  244. package/src/utils/transaction/prepareRequest.ts +0 -143
package/src/utils/rpc.ts CHANGED
@@ -146,17 +146,14 @@ export type Socket = WebSocket & {
146
146
 
147
147
  const sockets = /*#__PURE__*/ new Map<string, Socket>()
148
148
 
149
- export async function getSocket(url_: string) {
150
- const url = new URL(url_)
151
- const urlKey = url.toString()
152
-
153
- let socket = sockets.get(urlKey)
149
+ export async function getSocket(url: string) {
150
+ let socket = sockets.get(url)
154
151
 
155
152
  // If the socket already exists, return it.
156
153
  if (socket) return socket
157
154
 
158
155
  const { schedule } = createBatchScheduler<undefined, [Socket]>({
159
- id: urlKey,
156
+ id: url,
160
157
  fn: async () => {
161
158
  let WebSocket = await import('isomorphic-ws')
162
159
  // Workaround for Vite.
@@ -188,7 +185,7 @@ export async function getSocket(url_: string) {
188
185
  if (!isSubscription) cache.delete(id)
189
186
  }
190
187
  const onClose = () => {
191
- sockets.delete(urlKey)
188
+ sockets.delete(url)
192
189
  webSocket.removeEventListener('close', onClose)
193
190
  webSocket.removeEventListener('message', onMessage)
194
191
  }
@@ -211,7 +208,7 @@ export async function getSocket(url_: string) {
211
208
  requests,
212
209
  subscriptions,
213
210
  })
214
- sockets.set(urlKey, socket)
211
+ sockets.set(url, socket)
215
212
 
216
213
  return [socket]
217
214
  },
@@ -66,10 +66,7 @@ export function parseTransaction<TSerialized extends TransactionSerialized>(
66
66
  function parseTransactionEIP1559(
67
67
  serializedTransaction: TransactionSerializedEIP1559,
68
68
  ): TransactionSerializableEIP1559 {
69
- const transactionArray = fromRlp(
70
- `0x${serializedTransaction.slice(4)}` as Hex,
71
- 'hex',
72
- )
69
+ const transactionArray = toTransactionArray(serializedTransaction)
73
70
 
74
71
  const [
75
72
  chainId,
@@ -140,10 +137,7 @@ function parseTransactionEIP2930(
140
137
  serializedTransaction: TransactionSerializedEIP2930,
141
138
  ): Omit<TransactionRequestEIP2930, 'from'> &
142
139
  ({ chainId: number } | ({ chainId: number } & Signature)) {
143
- const transactionArray = fromRlp(
144
- `0x${serializedTransaction.slice(4)}` as Hex,
145
- 'hex',
146
- )
140
+ const transactionArray = toTransactionArray(serializedTransaction)
147
141
 
148
142
  const [chainId, nonce, gasPrice, gas, to, value, data, accessList, v, r, s] =
149
143
  transactionArray
@@ -263,7 +257,11 @@ function parseTransactionLegacy(
263
257
  return transaction
264
258
  }
265
259
 
266
- function parseAccessList(accessList_: RecursiveArray<Hex>): AccessList {
260
+ export function toTransactionArray(serializedTransaction: string) {
261
+ return fromRlp(`0x${serializedTransaction.slice(4)}` as Hex, 'hex')
262
+ }
263
+
264
+ export function parseAccessList(accessList_: RecursiveArray<Hex>): AccessList {
267
265
  const accessList: AccessList = []
268
266
  for (let i = 0; i < accessList_.length; i++) {
269
267
  const [address, storageKeys] = accessList_[i] as [Hex, Hex[]]
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '1.6.2'
1
+ export const version = '1.8.1'
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prepareRequest = void 0;
4
- const parseAccount_js_1 = require("../../accounts/utils/parseAccount.js");
5
- const estimateGas_js_1 = require("../../actions/public/estimateGas.js");
6
- const getBlock_js_1 = require("../../actions/public/getBlock.js");
7
- const getGasPrice_js_1 = require("../../actions/public/getGasPrice.js");
8
- const getTransactionCount_js_1 = require("../../actions/public/getTransactionCount.js");
9
- const account_js_1 = require("../../errors/account.js");
10
- const base_js_1 = require("../../errors/base.js");
11
- const assertRequest_js_1 = require("./assertRequest.js");
12
- async function prepareRequest(client, args) {
13
- const { account: account_, chain = client.chain, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, } = args;
14
- if (!account_)
15
- throw new account_js_1.AccountNotFoundError();
16
- const account = (0, parseAccount_js_1.parseAccount)(account_);
17
- const block = await (0, getBlock_js_1.getBlock)(client, { blockTag: 'latest' });
18
- const request = { ...args, from: account.address };
19
- if (typeof nonce === 'undefined')
20
- request.nonce = await (0, getTransactionCount_js_1.getTransactionCount)(client, {
21
- address: account.address,
22
- blockTag: 'pending',
23
- });
24
- if (typeof block.baseFeePerGas === 'bigint' &&
25
- typeof gasPrice === 'undefined') {
26
- let defaultPriorityFee = 1500000000n;
27
- if (typeof chain?.fees?.defaultPriorityFee !== 'undefined') {
28
- defaultPriorityFee =
29
- typeof chain.fees.defaultPriorityFee === 'bigint'
30
- ? chain.fees.defaultPriorityFee
31
- : await chain.fees.defaultPriorityFee({
32
- block,
33
- request: request,
34
- });
35
- }
36
- if (typeof maxFeePerGas === 'undefined') {
37
- request.maxPriorityFeePerGas = maxPriorityFeePerGas ?? defaultPriorityFee;
38
- request.maxFeePerGas =
39
- (block.baseFeePerGas * 120n) / 100n + request.maxPriorityFeePerGas;
40
- }
41
- else {
42
- if (typeof maxPriorityFeePerGas === 'undefined' &&
43
- maxFeePerGas < defaultPriorityFee)
44
- throw new base_js_1.BaseError('`maxFeePerGas` cannot be less than the default `maxPriorityFeePerGas` (1.5 gwei).');
45
- request.maxFeePerGas = maxFeePerGas;
46
- request.maxPriorityFeePerGas = maxPriorityFeePerGas ?? defaultPriorityFee;
47
- }
48
- }
49
- else if (typeof gasPrice === 'undefined') {
50
- if (typeof maxFeePerGas !== 'undefined' ||
51
- typeof maxPriorityFeePerGas !== 'undefined')
52
- throw new base_js_1.BaseError('Chain does not support EIP-1559 fees.');
53
- request.gasPrice = ((await (0, getGasPrice_js_1.getGasPrice)(client)) * 120n) / 100n;
54
- }
55
- if (typeof gas === 'undefined')
56
- request.gas = await (0, estimateGas_js_1.estimateGas)(client, {
57
- ...request,
58
- account: { address: account.address, type: 'json-rpc' },
59
- });
60
- (0, assertRequest_js_1.assertRequest)(request);
61
- return request;
62
- }
63
- exports.prepareRequest = prepareRequest;
64
- //# sourceMappingURL=prepareRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareRequest.js","sourceRoot":"","sources":["../../../../src/utils/transaction/prepareRequest.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- import { parseAccount } from '../../accounts/utils/parseAccount.js';
2
- import { estimateGas, } from '../../actions/public/estimateGas.js';
3
- import { getBlock } from '../../actions/public/getBlock.js';
4
- import { getGasPrice } from '../../actions/public/getGasPrice.js';
5
- import { getTransactionCount } from '../../actions/public/getTransactionCount.js';
6
- import { AccountNotFoundError } from '../../errors/account.js';
7
- import { BaseError } from '../../errors/base.js';
8
- import { assertRequest } from './assertRequest.js';
9
- export async function prepareRequest(client, args) {
10
- const { account: account_, chain = client.chain, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, } = args;
11
- if (!account_)
12
- throw new AccountNotFoundError();
13
- const account = parseAccount(account_);
14
- const block = await getBlock(client, { blockTag: 'latest' });
15
- const request = { ...args, from: account.address };
16
- if (typeof nonce === 'undefined')
17
- request.nonce = await getTransactionCount(client, {
18
- address: account.address,
19
- blockTag: 'pending',
20
- });
21
- if (typeof block.baseFeePerGas === 'bigint' &&
22
- typeof gasPrice === 'undefined') {
23
- let defaultPriorityFee = 1500000000n; // 1.5 gwei
24
- if (typeof chain?.fees?.defaultPriorityFee !== 'undefined') {
25
- defaultPriorityFee =
26
- typeof chain.fees.defaultPriorityFee === 'bigint'
27
- ? chain.fees.defaultPriorityFee
28
- : await chain.fees.defaultPriorityFee({
29
- block,
30
- request: request,
31
- });
32
- }
33
- // EIP-1559 fees
34
- if (typeof maxFeePerGas === 'undefined') {
35
- // Set a buffer of 1.2x on top of the base fee to account for fluctuations.
36
- request.maxPriorityFeePerGas = maxPriorityFeePerGas ?? defaultPriorityFee;
37
- request.maxFeePerGas =
38
- (block.baseFeePerGas * 120n) / 100n + request.maxPriorityFeePerGas;
39
- }
40
- else {
41
- if (typeof maxPriorityFeePerGas === 'undefined' &&
42
- maxFeePerGas < defaultPriorityFee)
43
- throw new BaseError('`maxFeePerGas` cannot be less than the default `maxPriorityFeePerGas` (1.5 gwei).');
44
- request.maxFeePerGas = maxFeePerGas;
45
- request.maxPriorityFeePerGas = maxPriorityFeePerGas ?? defaultPriorityFee;
46
- }
47
- }
48
- else if (typeof gasPrice === 'undefined') {
49
- // Legacy fees
50
- if (typeof maxFeePerGas !== 'undefined' ||
51
- typeof maxPriorityFeePerGas !== 'undefined')
52
- throw new BaseError('Chain does not support EIP-1559 fees.');
53
- // Set a buffer of 1.2x on top of the base fee to account for fluctuations.
54
- request.gasPrice = ((await getGasPrice(client)) * 120n) / 100n;
55
- }
56
- if (typeof gas === 'undefined')
57
- request.gas = await estimateGas(client, {
58
- ...request,
59
- account: { address: account.address, type: 'json-rpc' },
60
- });
61
- assertRequest(request);
62
- return request;
63
- }
64
- //# sourceMappingURL=prepareRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareRequest.js","sourceRoot":"","sources":["../../../../src/utils/transaction/prepareRequest.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import type { Address } from 'abitype';
2
- import type { Account } from '../../accounts/types.js';
3
- import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js';
4
- import type { Client } from '../../clients/createClient.js';
5
- import type { Transport } from '../../clients/transports/createTransport.js';
6
- import type { GetAccountParameter } from '../../types/account.js';
7
- import type { Chain, GetChain } from '../../types/chain.js';
8
- import type { UnionOmit } from '../../types/utils.js';
9
- import type { FormattedTransactionRequest } from '../index.js';
10
- export type PrepareRequestParameters<TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined> = UnionOmit<FormattedTransactionRequest<TChainOverride extends Chain ? TChainOverride : TChain>, 'from'> & GetAccountParameter<TAccount> & GetChain<TChain, TChainOverride>;
11
- export type PrepareRequestReturnType<TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, TChainOverride extends Chain | undefined = Chain | undefined, TArgs extends PrepareRequestParameters<TChain, TAccount, TChainOverride> = PrepareRequestParameters<TChain, TAccount, TChainOverride>> = TArgs & {
12
- from: Address;
13
- gas: SendTransactionParameters['gas'];
14
- gasPrice?: SendTransactionParameters['gasPrice'];
15
- maxFeePerGas?: SendTransactionParameters['maxFeePerGas'];
16
- maxPriorityFeePerGas?: SendTransactionParameters['maxPriorityFeePerGas'];
17
- nonce: SendTransactionParameters['nonce'];
18
- };
19
- export declare function prepareRequest<TChain extends Chain | undefined, TAccount extends Account | undefined, TChainOverride extends Chain | undefined, TArgs extends PrepareRequestParameters<TChain, TAccount, TChainOverride>>(client: Client<Transport, TChain, TAccount>, args: TArgs): Promise<PrepareRequestReturnType<TChain, TAccount, TChainOverride, TArgs>>;
20
- //# sourceMappingURL=prepareRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareRequest.d.ts","sourceRoot":"","sources":["../../../../src/utils/transaction/prepareRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAStD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAG5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAG9D,MAAM,MAAM,wBAAwB,CAClC,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAC1D,SAAS,CACX,2BAA2B,CACzB,cAAc,SAAS,KAAK,GAAG,cAAc,GAAG,MAAM,CACvD,EACD,MAAM,CACP,GACC,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAElC,MAAM,MAAM,wBAAwB,CAClC,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EAC5D,KAAK,SAAS,wBAAwB,CACpC,MAAM,EACN,QAAQ,EACR,cAAc,CACf,GAAG,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,IAC5D,KAAK,GAAG;IACV,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAA;IAChD,YAAY,CAAC,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAA;IACxD,oBAAoB,CAAC,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,CAAA;IACxE,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAA;CAC1C,CAAA;AAED,wBAAsB,cAAc,CAClC,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,QAAQ,SAAS,OAAO,GAAG,SAAS,EACpC,cAAc,SAAS,KAAK,GAAG,SAAS,EACxC,KAAK,SAAS,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,EAExE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAC3C,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAiF5E"}
@@ -1,143 +0,0 @@
1
- import type { Address } from 'abitype'
2
-
3
- import type { Account } from '../../accounts/types.js'
4
- import { parseAccount } from '../../accounts/utils/parseAccount.js'
5
- import {
6
- type EstimateGasParameters,
7
- estimateGas,
8
- } from '../../actions/public/estimateGas.js'
9
- import { getBlock } from '../../actions/public/getBlock.js'
10
- import { getGasPrice } from '../../actions/public/getGasPrice.js'
11
- import { getTransactionCount } from '../../actions/public/getTransactionCount.js'
12
- import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'
13
- import type { Client } from '../../clients/createClient.js'
14
- import type { Transport } from '../../clients/transports/createTransport.js'
15
- import { AccountNotFoundError } from '../../errors/account.js'
16
- import { BaseError } from '../../errors/base.js'
17
- import type { GetAccountParameter } from '../../types/account.js'
18
- import type { Chain, GetChain } from '../../types/chain.js'
19
- import type { UnionOmit } from '../../types/utils.js'
20
- import type { FormattedTransactionRequest } from '../index.js'
21
- import { type AssertRequestParameters, assertRequest } from './assertRequest.js'
22
-
23
- export type PrepareRequestParameters<
24
- TChain extends Chain | undefined = Chain | undefined,
25
- TAccount extends Account | undefined = Account | undefined,
26
- TChainOverride extends Chain | undefined = Chain | undefined,
27
- > = UnionOmit<
28
- FormattedTransactionRequest<
29
- TChainOverride extends Chain ? TChainOverride : TChain
30
- >,
31
- 'from'
32
- > &
33
- GetAccountParameter<TAccount> &
34
- GetChain<TChain, TChainOverride>
35
-
36
- export type PrepareRequestReturnType<
37
- TChain extends Chain | undefined = Chain | undefined,
38
- TAccount extends Account | undefined = Account | undefined,
39
- TChainOverride extends Chain | undefined = Chain | undefined,
40
- TArgs extends PrepareRequestParameters<
41
- TChain,
42
- TAccount,
43
- TChainOverride
44
- > = PrepareRequestParameters<TChain, TAccount, TChainOverride>,
45
- > = TArgs & {
46
- from: Address
47
- gas: SendTransactionParameters['gas']
48
- gasPrice?: SendTransactionParameters['gasPrice']
49
- maxFeePerGas?: SendTransactionParameters['maxFeePerGas']
50
- maxPriorityFeePerGas?: SendTransactionParameters['maxPriorityFeePerGas']
51
- nonce: SendTransactionParameters['nonce']
52
- }
53
-
54
- export async function prepareRequest<
55
- TChain extends Chain | undefined,
56
- TAccount extends Account | undefined,
57
- TChainOverride extends Chain | undefined,
58
- TArgs extends PrepareRequestParameters<TChain, TAccount, TChainOverride>,
59
- >(
60
- client: Client<Transport, TChain, TAccount>,
61
- args: TArgs,
62
- ): Promise<PrepareRequestReturnType<TChain, TAccount, TChainOverride, TArgs>> {
63
- const {
64
- account: account_,
65
- chain = client.chain,
66
- gas,
67
- gasPrice,
68
- maxFeePerGas,
69
- maxPriorityFeePerGas,
70
- nonce,
71
- } = args
72
- if (!account_) throw new AccountNotFoundError()
73
- const account = parseAccount(account_)
74
-
75
- const block = await getBlock(client, { blockTag: 'latest' })
76
-
77
- const request = { ...args, from: account.address }
78
-
79
- if (typeof nonce === 'undefined')
80
- request.nonce = await getTransactionCount(client, {
81
- address: account.address,
82
- blockTag: 'pending',
83
- })
84
-
85
- if (
86
- typeof block.baseFeePerGas === 'bigint' &&
87
- typeof gasPrice === 'undefined'
88
- ) {
89
- let defaultPriorityFee = 1_500_000_000n // 1.5 gwei
90
- if (typeof chain?.fees?.defaultPriorityFee !== 'undefined') {
91
- defaultPriorityFee =
92
- typeof chain.fees.defaultPriorityFee === 'bigint'
93
- ? chain.fees.defaultPriorityFee
94
- : await chain.fees.defaultPriorityFee({
95
- block,
96
- request: request as PrepareRequestParameters,
97
- })
98
- }
99
-
100
- // EIP-1559 fees
101
- if (typeof maxFeePerGas === 'undefined') {
102
- // Set a buffer of 1.2x on top of the base fee to account for fluctuations.
103
- request.maxPriorityFeePerGas = maxPriorityFeePerGas ?? defaultPriorityFee
104
- request.maxFeePerGas =
105
- (block.baseFeePerGas * 120n) / 100n + request.maxPriorityFeePerGas
106
- } else {
107
- if (
108
- typeof maxPriorityFeePerGas === 'undefined' &&
109
- maxFeePerGas < defaultPriorityFee
110
- )
111
- throw new BaseError(
112
- '`maxFeePerGas` cannot be less than the default `maxPriorityFeePerGas` (1.5 gwei).',
113
- )
114
- request.maxFeePerGas = maxFeePerGas
115
- request.maxPriorityFeePerGas = maxPriorityFeePerGas ?? defaultPriorityFee
116
- }
117
- } else if (typeof gasPrice === 'undefined') {
118
- // Legacy fees
119
- if (
120
- typeof maxFeePerGas !== 'undefined' ||
121
- typeof maxPriorityFeePerGas !== 'undefined'
122
- )
123
- throw new BaseError('Chain does not support EIP-1559 fees.')
124
-
125
- // Set a buffer of 1.2x on top of the base fee to account for fluctuations.
126
- request.gasPrice = ((await getGasPrice(client)) * 120n) / 100n
127
- }
128
-
129
- if (typeof gas === 'undefined')
130
- request.gas = await estimateGas(client, {
131
- ...request,
132
- account: { address: account.address, type: 'json-rpc' },
133
- } as EstimateGasParameters)
134
-
135
- assertRequest(request as AssertRequestParameters)
136
-
137
- return request as PrepareRequestReturnType<
138
- TChain,
139
- TAccount,
140
- TChainOverride,
141
- TArgs
142
- >
143
- }