viem 1.6.7 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +6 -0
  2. package/dist/cjs/actions/index.js +8 -2
  3. package/dist/cjs/actions/index.js.map +1 -1
  4. package/dist/cjs/actions/public/estimateFeesPerGas.js +60 -0
  5. package/dist/cjs/actions/public/estimateFeesPerGas.js.map +1 -0
  6. package/dist/cjs/actions/public/estimateGas.js +2 -2
  7. package/dist/cjs/actions/public/estimateGas.js.map +1 -1
  8. package/dist/cjs/actions/public/estimateMaxPriorityFeePerGas.js +44 -0
  9. package/dist/cjs/actions/public/estimateMaxPriorityFeePerGas.js.map +1 -0
  10. package/dist/cjs/actions/public/verifyHash.js.map +1 -1
  11. package/dist/cjs/actions/public/verifyMessage.js.map +1 -1
  12. package/dist/cjs/actions/public/verifyTypedData.js.map +1 -1
  13. package/dist/cjs/actions/public/watchContractEvent.js +10 -7
  14. package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
  15. package/dist/cjs/actions/wallet/deployContract.js.map +1 -1
  16. package/dist/cjs/actions/wallet/prepareTransactionRequest.js +70 -0
  17. package/dist/cjs/actions/wallet/prepareTransactionRequest.js.map +1 -0
  18. package/dist/cjs/actions/wallet/sendRawTransaction.js +11 -0
  19. package/dist/cjs/actions/wallet/sendRawTransaction.js.map +1 -0
  20. package/dist/cjs/actions/wallet/sendTransaction.js +6 -6
  21. package/dist/cjs/actions/wallet/sendTransaction.js.map +1 -1
  22. package/dist/cjs/actions/wallet/signTransaction.js +47 -0
  23. package/dist/cjs/actions/wallet/signTransaction.js.map +1 -0
  24. package/dist/cjs/actions/wallet/writeContract.js.map +1 -1
  25. package/dist/cjs/chains/celo/formatters.js +4 -1
  26. package/dist/cjs/chains/celo/formatters.js.map +1 -1
  27. package/dist/cjs/clients/createTestClient.js.map +1 -1
  28. package/dist/cjs/clients/decorators/public.js +8 -0
  29. package/dist/cjs/clients/decorators/public.js.map +1 -1
  30. package/dist/cjs/clients/decorators/wallet.js +6 -0
  31. package/dist/cjs/clients/decorators/wallet.js.map +1 -1
  32. package/dist/cjs/errors/fee.js +42 -0
  33. package/dist/cjs/errors/fee.js.map +1 -0
  34. package/dist/cjs/errors/version.js +1 -1
  35. package/dist/cjs/index.js +9 -6
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/public.js +5 -1
  38. package/dist/cjs/public.js.map +1 -1
  39. package/dist/cjs/utils/data/isBytesEqual.js +4 -3
  40. package/dist/cjs/utils/data/isBytesEqual.js.map +1 -1
  41. package/dist/cjs/utils/ens/encodedLabelToLabelhash.js +2 -2
  42. package/dist/cjs/utils/ens/encodedLabelToLabelhash.js.map +1 -1
  43. package/dist/cjs/utils/formatters/transactionRequest.js +9 -1
  44. package/dist/cjs/utils/formatters/transactionRequest.js.map +1 -1
  45. package/dist/cjs/utils/index.js +3 -3
  46. package/dist/cjs/utils/index.js.map +1 -1
  47. package/dist/esm/actions/index.js +3 -0
  48. package/dist/esm/actions/index.js.map +1 -1
  49. package/dist/esm/actions/public/estimateFeesPerGas.js +78 -0
  50. package/dist/esm/actions/public/estimateFeesPerGas.js.map +1 -0
  51. package/dist/esm/actions/public/estimateGas.js +2 -2
  52. package/dist/esm/actions/public/estimateGas.js.map +1 -1
  53. package/dist/esm/actions/public/estimateMaxPriorityFeePerGas.js +64 -0
  54. package/dist/esm/actions/public/estimateMaxPriorityFeePerGas.js.map +1 -0
  55. package/dist/esm/actions/public/verifyHash.js.map +1 -1
  56. package/dist/esm/actions/public/verifyMessage.js.map +1 -1
  57. package/dist/esm/actions/public/verifyTypedData.js.map +1 -1
  58. package/dist/esm/actions/public/watchContractEvent.js +5 -2
  59. package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
  60. package/dist/esm/actions/wallet/deployContract.js.map +1 -1
  61. package/dist/esm/actions/wallet/prepareTransactionRequest.js +109 -0
  62. package/dist/esm/actions/wallet/prepareTransactionRequest.js.map +1 -0
  63. package/dist/esm/actions/wallet/sendRawTransaction.js +31 -0
  64. package/dist/esm/actions/wallet/sendRawTransaction.js.map +1 -0
  65. package/dist/esm/actions/wallet/sendTransaction.js +6 -6
  66. package/dist/esm/actions/wallet/sendTransaction.js.map +1 -1
  67. package/dist/esm/actions/wallet/signTransaction.js +87 -0
  68. package/dist/esm/actions/wallet/signTransaction.js.map +1 -0
  69. package/dist/esm/actions/wallet/writeContract.js.map +1 -1
  70. package/dist/esm/chains/celo/formatters.js +4 -1
  71. package/dist/esm/chains/celo/formatters.js.map +1 -1
  72. package/dist/esm/clients/createTestClient.js.map +1 -1
  73. package/dist/esm/clients/decorators/public.js +8 -0
  74. package/dist/esm/clients/decorators/public.js.map +1 -1
  75. package/dist/esm/clients/decorators/wallet.js +6 -0
  76. package/dist/esm/clients/decorators/wallet.js.map +1 -1
  77. package/dist/esm/errors/fee.js +36 -0
  78. package/dist/esm/errors/fee.js.map +1 -0
  79. package/dist/esm/errors/version.js +1 -1
  80. package/dist/esm/index.js +2 -2
  81. package/dist/esm/index.js.map +1 -1
  82. package/dist/esm/public.js +2 -0
  83. package/dist/esm/public.js.map +1 -1
  84. package/dist/esm/utils/data/isBytesEqual.js +2 -1
  85. package/dist/esm/utils/data/isBytesEqual.js.map +1 -1
  86. package/dist/esm/utils/ens/encodedLabelToLabelhash.js +1 -1
  87. package/dist/esm/utils/ens/encodedLabelToLabelhash.js.map +1 -1
  88. package/dist/esm/utils/formatters/transactionRequest.js +8 -0
  89. package/dist/esm/utils/formatters/transactionRequest.js.map +1 -1
  90. package/dist/esm/utils/index.js +3 -1
  91. package/dist/esm/utils/index.js.map +1 -1
  92. package/dist/types/actions/index.d.ts +3 -0
  93. package/dist/types/actions/index.d.ts.map +1 -1
  94. package/dist/types/actions/public/estimateFeesPerGas.d.ts +48 -0
  95. package/dist/types/actions/public/estimateFeesPerGas.d.ts.map +1 -0
  96. package/dist/types/actions/public/estimateMaxPriorityFeePerGas.d.ts +37 -0
  97. package/dist/types/actions/public/estimateMaxPriorityFeePerGas.d.ts.map +1 -0
  98. package/dist/types/actions/public/verifyHash.d.ts +1 -1
  99. package/dist/types/actions/public/verifyHash.d.ts.map +1 -1
  100. package/dist/types/actions/public/verifyMessage.d.ts +2 -2
  101. package/dist/types/actions/public/verifyMessage.d.ts.map +1 -1
  102. package/dist/types/actions/public/verifyTypedData.d.ts +2 -2
  103. package/dist/types/actions/public/verifyTypedData.d.ts.map +1 -1
  104. package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
  105. package/dist/types/actions/wallet/deployContract.d.ts +2 -1
  106. package/dist/types/actions/wallet/deployContract.d.ts.map +1 -1
  107. package/dist/types/actions/wallet/prepareTransactionRequest.d.ts +52 -0
  108. package/dist/types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -0
  109. package/dist/types/actions/wallet/sendRawTransaction.d.ts +38 -0
  110. package/dist/types/actions/wallet/sendRawTransaction.d.ts.map +1 -0
  111. package/dist/types/actions/wallet/sendTransaction.d.ts +2 -1
  112. package/dist/types/actions/wallet/sendTransaction.d.ts.map +1 -1
  113. package/dist/types/actions/wallet/signTransaction.d.ts +55 -0
  114. package/dist/types/actions/wallet/signTransaction.d.ts.map +1 -0
  115. package/dist/types/actions/wallet/writeContract.d.ts +2 -1
  116. package/dist/types/actions/wallet/writeContract.d.ts.map +1 -1
  117. package/dist/types/chains/celo/formatters.d.ts +303 -5
  118. package/dist/types/chains/celo/formatters.d.ts.map +1 -1
  119. package/dist/types/chains/celo/types.d.ts +43 -17
  120. package/dist/types/chains/celo/types.d.ts.map +1 -1
  121. package/dist/types/chains/index.d.ts +1084 -190
  122. package/dist/types/chains/index.d.ts.map +1 -1
  123. package/dist/types/chains/utils.d.ts +1 -1
  124. package/dist/types/chains/utils.d.ts.map +1 -1
  125. package/dist/types/clients/createTestClient.d.ts +1 -1
  126. package/dist/types/clients/createTestClient.d.ts.map +1 -1
  127. package/dist/types/clients/decorators/public.d.ts +112 -0
  128. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  129. package/dist/types/clients/decorators/wallet.d.ts +111 -0
  130. package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
  131. package/dist/types/errors/fee.d.ts +16 -0
  132. package/dist/types/errors/fee.d.ts.map +1 -0
  133. package/dist/types/errors/version.d.ts +1 -1
  134. package/dist/types/index.d.ts +22 -16
  135. package/dist/types/index.d.ts.map +1 -1
  136. package/dist/types/public.d.ts +2 -0
  137. package/dist/types/public.d.ts.map +1 -1
  138. package/dist/types/types/chain.d.ts +64 -11
  139. package/dist/types/types/chain.d.ts.map +1 -1
  140. package/dist/types/types/eip1193.d.ts +13 -1
  141. package/dist/types/types/eip1193.d.ts.map +1 -1
  142. package/dist/types/types/fee.d.ts +1 -0
  143. package/dist/types/types/fee.d.ts.map +1 -1
  144. package/dist/types/utils/data/isBytesEqual.d.ts +1 -1
  145. package/dist/types/utils/data/isBytesEqual.d.ts.map +1 -1
  146. package/dist/types/utils/ens/encodeLabelhash.d.ts +1 -1
  147. package/dist/types/utils/ens/encodeLabelhash.d.ts.map +1 -1
  148. package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts +1 -1
  149. package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts.map +1 -1
  150. package/dist/types/utils/formatters/transactionRequest.d.ts +5 -0
  151. package/dist/types/utils/formatters/transactionRequest.d.ts.map +1 -1
  152. package/dist/types/utils/index.d.ts +3 -1
  153. package/dist/types/utils/index.d.ts.map +1 -1
  154. package/package.json +1 -1
  155. package/src/actions/index.ts +15 -0
  156. package/src/actions/public/estimateFeesPerGas.ts +154 -0
  157. package/src/actions/public/estimateGas.ts +5 -5
  158. package/src/actions/public/estimateMaxPriorityFeePerGas.ts +98 -0
  159. package/src/actions/public/verifyHash.ts +1 -1
  160. package/src/actions/public/verifyMessage.ts +3 -2
  161. package/src/actions/public/verifyTypedData.ts +3 -2
  162. package/src/actions/public/watchContractEvent.ts +9 -6
  163. package/src/actions/wallet/deployContract.ts +2 -1
  164. package/src/actions/wallet/prepareTransactionRequest.ts +179 -0
  165. package/src/actions/wallet/sendRawTransaction.ts +48 -0
  166. package/src/actions/wallet/sendTransaction.ts +8 -7
  167. package/src/actions/wallet/signTransaction.ts +137 -0
  168. package/src/actions/wallet/writeContract.ts +2 -1
  169. package/src/chains/celo/formatters.ts +11 -12
  170. package/src/chains/celo/types.ts +86 -30
  171. package/src/chains/utils.ts +4 -4
  172. package/src/clients/createTestClient.ts +2 -1
  173. package/src/clients/decorators/public.ts +145 -0
  174. package/src/clients/decorators/wallet.ts +133 -0
  175. package/src/errors/fee.ts +27 -0
  176. package/src/errors/rpc.ts +1 -1
  177. package/src/errors/version.ts +1 -1
  178. package/src/index.ts +45 -25
  179. package/src/public.ts +10 -0
  180. package/src/types/chain.ts +80 -12
  181. package/src/types/eip1193.ts +13 -1
  182. package/src/types/fee.ts +2 -0
  183. package/src/utils/data/isBytesEqual.ts +4 -1
  184. package/src/utils/ens/encodeLabelhash.ts +1 -1
  185. package/src/utils/ens/encodedLabelToLabelhash.ts +2 -2
  186. package/src/utils/formatters/transactionRequest.ts +10 -0
  187. package/src/utils/index.ts +4 -1
  188. package/chains/dist/cjs/celo/formatters.js +0 -58
  189. package/chains/dist/cjs/celo/formatters.js.map +0 -1
  190. package/chains/dist/cjs/celo/parsers.js +0 -72
  191. package/chains/dist/cjs/celo/parsers.js.map +0 -1
  192. package/chains/dist/cjs/celo/serializers.js +0 -75
  193. package/chains/dist/cjs/celo/serializers.js.map +0 -1
  194. package/chains/dist/cjs/celo/types.js +0 -3
  195. package/chains/dist/cjs/celo/types.js.map +0 -1
  196. package/chains/dist/cjs/index.js +0 -135
  197. package/chains/dist/cjs/index.js.map +0 -1
  198. package/chains/dist/cjs/optimism/fees.js +0 -7
  199. package/chains/dist/cjs/optimism/fees.js.map +0 -1
  200. package/chains/dist/cjs/optimism/formatters.js +0 -52
  201. package/chains/dist/cjs/optimism/formatters.js.map +0 -1
  202. package/chains/dist/cjs/optimism/types.js +0 -3
  203. package/chains/dist/cjs/optimism/types.js.map +0 -1
  204. package/chains/dist/cjs/types.js +0 -3
  205. package/chains/dist/cjs/types.js.map +0 -1
  206. package/chains/dist/cjs/utils.js +0 -49
  207. package/chains/dist/cjs/utils.js.map +0 -1
  208. package/chains/dist/tsconfig.build.tsbuildinfo +0 -1
  209. package/chains/node_modules/.bin/tsc +0 -17
  210. package/chains/node_modules/.bin/tsserver +0 -17
  211. package/chains/tsconfig.tsbuildinfo +0 -1
  212. package/dist/cjs/utils/transaction/prepareRequest.js +0 -64
  213. package/dist/cjs/utils/transaction/prepareRequest.js.map +0 -1
  214. package/dist/esm/utils/transaction/prepareRequest.js +0 -64
  215. package/dist/esm/utils/transaction/prepareRequest.js.map +0 -1
  216. package/dist/types/utils/transaction/prepareRequest.d.ts +0 -20
  217. package/dist/types/utils/transaction/prepareRequest.d.ts.map +0 -1
  218. package/src/utils/transaction/prepareRequest.ts +0 -143
@@ -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
- }