viem 1.7.0 → 1.8.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.
- package/README.md +6 -0
- package/dist/cjs/actions/index.js +8 -2
- package/dist/cjs/actions/index.js.map +1 -1
- package/dist/cjs/actions/public/estimateFeesPerGas.js +3 -2
- package/dist/cjs/actions/public/estimateFeesPerGas.js.map +1 -1
- package/dist/cjs/actions/public/estimateGas.js +2 -2
- package/dist/cjs/actions/public/estimateGas.js.map +1 -1
- package/dist/cjs/actions/public/estimateMaxPriorityFeePerGas.js +3 -3
- package/dist/cjs/actions/public/estimateMaxPriorityFeePerGas.js.map +1 -1
- package/dist/cjs/actions/public/watchContractEvent.js +10 -7
- package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
- package/dist/cjs/{utils/transaction/prepareRequest.js → actions/wallet/prepareTransactionRequest.js} +19 -10
- package/dist/cjs/actions/wallet/prepareTransactionRequest.js.map +1 -0
- package/dist/cjs/actions/wallet/sendRawTransaction.js +11 -0
- package/dist/cjs/actions/wallet/sendRawTransaction.js.map +1 -0
- package/dist/cjs/actions/wallet/sendTransaction.js +6 -6
- package/dist/cjs/actions/wallet/sendTransaction.js.map +1 -1
- package/dist/cjs/actions/wallet/signTransaction.js +47 -0
- package/dist/cjs/actions/wallet/signTransaction.js.map +1 -0
- package/dist/cjs/chains/celo/formatters.js +4 -1
- package/dist/cjs/chains/celo/formatters.js.map +1 -1
- package/dist/cjs/chains/index.js +3 -2
- package/dist/cjs/chains/index.js.map +1 -1
- package/dist/cjs/clients/decorators/public.js +4 -0
- package/dist/cjs/clients/decorators/public.js.map +1 -1
- package/dist/cjs/clients/decorators/wallet.js +6 -0
- package/dist/cjs/clients/decorators/wallet.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/index.js +4 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/data/isBytesEqual.js +4 -3
- package/dist/cjs/utils/data/isBytesEqual.js.map +1 -1
- package/dist/cjs/utils/ens/encodedLabelToLabelhash.js +2 -2
- package/dist/cjs/utils/ens/encodedLabelToLabelhash.js.map +1 -1
- package/dist/cjs/utils/formatters/transactionRequest.js +9 -1
- package/dist/cjs/utils/formatters/transactionRequest.js.map +1 -1
- package/dist/cjs/utils/index.js +3 -3
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/actions/index.js +3 -0
- package/dist/esm/actions/index.js.map +1 -1
- package/dist/esm/actions/public/estimateFeesPerGas.js +3 -2
- package/dist/esm/actions/public/estimateFeesPerGas.js.map +1 -1
- package/dist/esm/actions/public/estimateGas.js +2 -2
- package/dist/esm/actions/public/estimateGas.js.map +1 -1
- package/dist/esm/actions/public/estimateMaxPriorityFeePerGas.js +3 -3
- package/dist/esm/actions/public/estimateMaxPriorityFeePerGas.js.map +1 -1
- package/dist/esm/actions/public/watchContractEvent.js +5 -2
- package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
- package/dist/esm/{utils/transaction/prepareRequest.js → actions/wallet/prepareTransactionRequest.js} +58 -9
- package/dist/esm/actions/wallet/prepareTransactionRequest.js.map +1 -0
- package/dist/esm/actions/wallet/sendRawTransaction.js +31 -0
- package/dist/esm/actions/wallet/sendRawTransaction.js.map +1 -0
- package/dist/esm/actions/wallet/sendTransaction.js +6 -6
- package/dist/esm/actions/wallet/sendTransaction.js.map +1 -1
- package/dist/esm/actions/wallet/signTransaction.js +87 -0
- package/dist/esm/actions/wallet/signTransaction.js.map +1 -0
- package/dist/esm/chains/celo/formatters.js +4 -1
- package/dist/esm/chains/celo/formatters.js.map +1 -1
- package/dist/esm/chains/index.js +1 -0
- package/dist/esm/chains/index.js.map +1 -1
- package/dist/esm/clients/decorators/public.js +4 -0
- package/dist/esm/clients/decorators/public.js.map +1 -1
- package/dist/esm/clients/decorators/wallet.js +6 -0
- package/dist/esm/clients/decorators/wallet.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/data/isBytesEqual.js +2 -1
- package/dist/esm/utils/data/isBytesEqual.js.map +1 -1
- package/dist/esm/utils/ens/encodedLabelToLabelhash.js +1 -1
- package/dist/esm/utils/ens/encodedLabelToLabelhash.js.map +1 -1
- package/dist/esm/utils/formatters/transactionRequest.js +8 -0
- package/dist/esm/utils/formatters/transactionRequest.js.map +1 -1
- package/dist/esm/utils/index.js +3 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/types/actions/index.d.ts +3 -0
- package/dist/types/actions/index.d.ts.map +1 -1
- package/dist/types/actions/public/estimateFeesPerGas.d.ts +2 -2
- package/dist/types/actions/public/estimateFeesPerGas.d.ts.map +1 -1
- package/dist/types/actions/public/estimateMaxPriorityFeePerGas.d.ts +4 -2
- package/dist/types/actions/public/estimateMaxPriorityFeePerGas.d.ts.map +1 -1
- package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
- package/dist/types/actions/wallet/prepareTransactionRequest.d.ts +52 -0
- package/dist/types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -0
- package/dist/types/actions/wallet/sendRawTransaction.d.ts +38 -0
- package/dist/types/actions/wallet/sendRawTransaction.d.ts.map +1 -0
- package/dist/types/actions/wallet/sendTransaction.d.ts.map +1 -1
- package/dist/types/actions/wallet/signTransaction.d.ts +55 -0
- package/dist/types/actions/wallet/signTransaction.d.ts.map +1 -0
- package/dist/types/chains/celo/formatters.d.ts +303 -5
- package/dist/types/chains/celo/formatters.d.ts.map +1 -1
- package/dist/types/chains/celo/types.d.ts +43 -17
- package/dist/types/chains/celo/types.d.ts.map +1 -1
- package/dist/types/chains/index.d.ts +958 -19
- package/dist/types/chains/index.d.ts.map +1 -1
- package/dist/types/chains/utils.d.ts +1 -1
- package/dist/types/chains/utils.d.ts.map +1 -1
- package/dist/types/clients/decorators/public.d.ts +66 -0
- package/dist/types/clients/decorators/public.d.ts.map +1 -1
- package/dist/types/clients/decorators/wallet.d.ts +111 -0
- package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/chain.d.ts +2 -2
- package/dist/types/types/chain.d.ts.map +1 -1
- package/dist/types/types/eip1193.d.ts +1 -1
- package/dist/types/utils/data/isBytesEqual.d.ts +1 -1
- package/dist/types/utils/data/isBytesEqual.d.ts.map +1 -1
- package/dist/types/utils/ens/encodeLabelhash.d.ts +1 -1
- package/dist/types/utils/ens/encodeLabelhash.d.ts.map +1 -1
- package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts +1 -1
- package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts.map +1 -1
- package/dist/types/utils/formatters/transactionRequest.d.ts +5 -0
- package/dist/types/utils/formatters/transactionRequest.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/index.ts +15 -0
- package/src/actions/public/estimateFeesPerGas.ts +6 -4
- package/src/actions/public/estimateGas.ts +5 -5
- package/src/actions/public/estimateMaxPriorityFeePerGas.ts +7 -5
- package/src/actions/public/watchContractEvent.ts +9 -6
- package/src/{utils/transaction/prepareRequest.ts → actions/wallet/prepareTransactionRequest.ts} +80 -36
- package/src/actions/wallet/sendRawTransaction.ts +48 -0
- package/src/actions/wallet/sendTransaction.ts +6 -6
- package/src/actions/wallet/signTransaction.ts +137 -0
- package/src/chains/celo/formatters.ts +11 -12
- package/src/chains/celo/types.ts +86 -30
- package/src/chains/index.ts +1 -0
- package/src/chains/utils.ts +4 -4
- package/src/clients/decorators/public.ts +81 -0
- package/src/clients/decorators/wallet.ts +133 -0
- package/src/errors/rpc.ts +1 -1
- package/src/errors/version.ts +1 -1
- package/src/index.ts +7 -1
- package/src/types/chain.ts +2 -2
- package/src/types/eip1193.ts +1 -1
- package/src/utils/data/isBytesEqual.ts +4 -1
- package/src/utils/ens/encodeLabelhash.ts +1 -1
- package/src/utils/ens/encodedLabelToLabelhash.ts +2 -2
- package/src/utils/formatters/transactionRequest.ts +10 -0
- package/src/utils/index.ts +4 -1
- package/dist/cjs/utils/transaction/prepareRequest.js.map +0 -1
- package/dist/esm/utils/transaction/prepareRequest.js.map +0 -1
- package/dist/types/utils/transaction/prepareRequest.d.ts +0 -21
- package/dist/types/utils/transaction/prepareRequest.d.ts.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/actions/index.ts
CHANGED
@@ -224,11 +224,26 @@ export {
|
|
224
224
|
} from './test/inspectTxpool.js'
|
225
225
|
export { type ResetParameters, reset } from './test/reset.js'
|
226
226
|
export { type RevertParameters, revert } from './test/revert.js'
|
227
|
+
export {
|
228
|
+
type PrepareTransactionRequestParameters,
|
229
|
+
type PrepareTransactionRequestReturnType,
|
230
|
+
prepareTransactionRequest,
|
231
|
+
} from './wallet/prepareTransactionRequest.js'
|
227
232
|
export {
|
228
233
|
type SendTransactionParameters,
|
229
234
|
type SendTransactionReturnType,
|
230
235
|
sendTransaction,
|
231
236
|
} from './wallet/sendTransaction.js'
|
237
|
+
export {
|
238
|
+
type SignTransactionParameters,
|
239
|
+
type SignTransactionReturnType,
|
240
|
+
signTransaction,
|
241
|
+
} from './wallet/signTransaction.js'
|
242
|
+
export {
|
243
|
+
type SendRawTransactionParameters,
|
244
|
+
type SendRawTransactionReturnType,
|
245
|
+
sendRawTransaction,
|
246
|
+
} from './wallet/sendRawTransaction.js'
|
232
247
|
export {
|
233
248
|
type SendUnsignedTransactionParameters,
|
234
249
|
type SendUnsignedTransactionReturnType,
|
@@ -16,7 +16,7 @@ import type {
|
|
16
16
|
FeeValuesLegacy,
|
17
17
|
FeeValuesType,
|
18
18
|
} from '../../types/fee.js'
|
19
|
-
import type {
|
19
|
+
import type { PrepareTransactionRequestParameters } from '../wallet/prepareTransactionRequest.js'
|
20
20
|
import { internal_estimateMaxPriorityFeePerGas } from './estimateMaxPriorityFeePerGas.js'
|
21
21
|
import { getBlock } from './getBlock.js'
|
22
22
|
import { getGasPrice } from './getGasPrice.js'
|
@@ -85,7 +85,7 @@ export async function internal_estimateFeesPerGas<
|
|
85
85
|
client: Client<Transport, chain>,
|
86
86
|
args: EstimateFeesPerGasParameters<chain, chainOverride, type> & {
|
87
87
|
block?: Block
|
88
|
-
request?:
|
88
|
+
request?: PrepareTransactionRequestParameters
|
89
89
|
},
|
90
90
|
): Promise<EstimateFeesPerGasReturnType<type>> {
|
91
91
|
const {
|
@@ -131,13 +131,15 @@ export async function internal_estimateFeesPerGas<
|
|
131
131
|
: await internal_estimateMaxPriorityFeePerGas(
|
132
132
|
client as Client<Transport, Chain>,
|
133
133
|
{
|
134
|
+
block,
|
134
135
|
chain,
|
135
136
|
request,
|
136
137
|
},
|
137
138
|
)
|
138
139
|
|
139
140
|
const baseFeePerGas = multiply(block.baseFeePerGas)
|
140
|
-
const maxFeePerGas =
|
141
|
+
const maxFeePerGas =
|
142
|
+
request?.maxFeePerGas ?? baseFeePerGas + maxPriorityFeePerGas
|
141
143
|
|
142
144
|
return {
|
143
145
|
maxFeePerGas,
|
@@ -145,7 +147,7 @@ export async function internal_estimateFeesPerGas<
|
|
145
147
|
} as EstimateFeesPerGasReturnType<type>
|
146
148
|
}
|
147
149
|
|
148
|
-
const gasPrice = multiply(await getGasPrice(client))
|
150
|
+
const gasPrice = request?.gasPrice ?? multiply(await getGasPrice(client))
|
149
151
|
return {
|
150
152
|
gasPrice,
|
151
153
|
} as EstimateFeesPerGasReturnType<type>
|
@@ -21,9 +21,9 @@ import {
|
|
21
21
|
assertRequest,
|
22
22
|
} from '../../utils/transaction/assertRequest.js'
|
23
23
|
import {
|
24
|
-
type
|
25
|
-
|
26
|
-
} from '
|
24
|
+
type PrepareTransactionRequestParameters,
|
25
|
+
prepareTransactionRequest,
|
26
|
+
} from '../wallet/prepareTransactionRequest.js'
|
27
27
|
|
28
28
|
export type FormattedEstimateGas<
|
29
29
|
TChain extends Chain | undefined = Chain | undefined,
|
@@ -107,9 +107,9 @@ export async function estimateGas<
|
|
107
107
|
...rest
|
108
108
|
} =
|
109
109
|
account.type === 'local'
|
110
|
-
? ((await
|
110
|
+
? ((await prepareTransactionRequest(
|
111
111
|
client,
|
112
|
-
args as
|
112
|
+
args as PrepareTransactionRequestParameters,
|
113
113
|
)) as EstimateGasParameters)
|
114
114
|
: args
|
115
115
|
|
@@ -2,10 +2,11 @@ import type { Client } from '../../clients/createClient.js'
|
|
2
2
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
3
3
|
import { Eip1559FeesNotSupportedError } from '../../errors/fee.js'
|
4
4
|
import type { Account } from '../../types/account.js'
|
5
|
+
import type { Block } from '../../types/block.js'
|
5
6
|
import type { Chain, ChainFeesFnParameters } from '../../types/chain.js'
|
6
7
|
import type { GetChain } from '../../types/chain.js'
|
7
8
|
import { hexToBigInt } from '../../utils/encoding/fromHex.js'
|
8
|
-
import type {
|
9
|
+
import type { PrepareTransactionRequestParameters } from '../wallet/prepareTransactionRequest.js'
|
9
10
|
import { getBlock } from './getBlock.js'
|
10
11
|
import { getGasPrice } from './getGasPrice.js'
|
11
12
|
|
@@ -53,16 +54,17 @@ export async function internal_estimateMaxPriorityFeePerGas<
|
|
53
54
|
>(
|
54
55
|
client: Client<Transport, chain>,
|
55
56
|
args: EstimateMaxPriorityFeePerGasParameters<chain, chainOverride> & {
|
56
|
-
|
57
|
+
block?: Block
|
58
|
+
request?: PrepareTransactionRequestParameters<
|
57
59
|
chain,
|
58
60
|
Account | undefined,
|
59
61
|
chainOverride
|
60
62
|
>
|
61
63
|
},
|
62
64
|
): Promise<EstimateMaxPriorityFeePerGasReturnType> {
|
63
|
-
const { chain = client.chain, request } = args || {}
|
65
|
+
const { block: block_, chain = client.chain, request } = args || {}
|
64
66
|
if (typeof chain?.fees?.defaultPriorityFee === 'function') {
|
65
|
-
const block = await getBlock(client)
|
67
|
+
const block = block_ || (await getBlock(client))
|
66
68
|
return chain.fees.defaultPriorityFee({
|
67
69
|
block,
|
68
70
|
client,
|
@@ -81,7 +83,7 @@ export async function internal_estimateMaxPriorityFeePerGas<
|
|
81
83
|
// fall back to calculating it manually via `gasPrice - baseFeePerGas`.
|
82
84
|
// See: https://github.com/ethereum/pm/issues/328#:~:text=eth_maxPriorityFeePerGas%20after%20London%20will%20effectively%20return%20eth_gasPrice%20%2D%20baseFee
|
83
85
|
const [block, gasPrice] = await Promise.all([
|
84
|
-
getBlock(client),
|
86
|
+
block_ ? Promise.resolve(block_) : getBlock(client),
|
85
87
|
getGasPrice(client),
|
86
88
|
])
|
87
89
|
|
@@ -2,7 +2,6 @@ import type { Abi, AbiEvent, Address, ExtractAbiEvent } from 'abitype'
|
|
2
2
|
|
3
3
|
import type { Client } from '../../clients/createClient.js'
|
4
4
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
5
|
-
import type { EncodeEventTopicsParameters, LogTopic } from '../../index.js'
|
6
5
|
import type { Chain } from '../../types/chain.js'
|
7
6
|
import type { GetEventArgs, InferEventName } from '../../types/contract.js'
|
8
7
|
import type { Filter } from '../../types/filter.js'
|
@@ -17,14 +16,18 @@ import { observe } from '../../utils/observe.js'
|
|
17
16
|
import { poll } from '../../utils/poll.js'
|
18
17
|
import { stringify } from '../../utils/stringify.js'
|
19
18
|
|
20
|
-
import { DecodeLogDataMismatch } from '../../errors/abi.js'
|
21
19
|
import {
|
20
|
+
DecodeLogDataMismatch,
|
22
21
|
DecodeLogTopicsMismatch,
|
23
|
-
|
24
|
-
|
22
|
+
} from '../../errors/abi.js'
|
23
|
+
import { InvalidInputRpcError } from '../../errors/rpc.js'
|
24
|
+
import type { LogTopic } from '../../types/misc.js'
|
25
|
+
import { decodeEventLog } from '../../utils/abi/decodeEventLog.js'
|
26
|
+
import {
|
27
|
+
type EncodeEventTopicsParameters,
|
25
28
|
encodeEventTopics,
|
26
|
-
|
27
|
-
} from '../../
|
29
|
+
} from '../../utils/abi/encodeEventTopics.js'
|
30
|
+
import { formatLog } from '../../utils/formatters/log.js'
|
28
31
|
import {
|
29
32
|
type CreateContractEventFilterParameters,
|
30
33
|
createContractEventFilter,
|
package/src/{utils/transaction/prepareRequest.ts → actions/wallet/prepareTransactionRequest.ts}
RENAMED
@@ -1,5 +1,3 @@
|
|
1
|
-
import type { Address } from 'abitype'
|
2
|
-
|
3
1
|
import type { Account } from '../../accounts/types.js'
|
4
2
|
import { parseAccount } from '../../accounts/utils/parseAccount.js'
|
5
3
|
import { internal_estimateFeesPerGas } from '../../actions/public/estimateFeesPerGas.js'
|
@@ -9,7 +7,6 @@ import {
|
|
9
7
|
} from '../../actions/public/estimateGas.js'
|
10
8
|
import { getBlock } from '../../actions/public/getBlock.js'
|
11
9
|
import { getTransactionCount } from '../../actions/public/getTransactionCount.js'
|
12
|
-
import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'
|
13
10
|
import type { Client } from '../../clients/createClient.js'
|
14
11
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
15
12
|
import { AccountNotFoundError } from '../../errors/account.js'
|
@@ -20,11 +17,14 @@ import {
|
|
20
17
|
import type { GetAccountParameter } from '../../types/account.js'
|
21
18
|
import type { Chain } from '../../types/chain.js'
|
22
19
|
import type { GetChain } from '../../types/chain.js'
|
20
|
+
import type { TransactionSerializable } from '../../types/transaction.js'
|
23
21
|
import type { UnionOmit } from '../../types/utils.js'
|
24
|
-
import {
|
25
|
-
import {
|
22
|
+
import type { FormattedTransactionRequest } from '../../utils/formatters/transactionRequest.js'
|
23
|
+
import type { AssertRequestParameters } from '../../utils/transaction/assertRequest.js'
|
24
|
+
import { assertRequest } from '../../utils/transaction/assertRequest.js'
|
25
|
+
import { getTransactionType } from '../../utils/transaction/getTransactionType.js'
|
26
26
|
|
27
|
-
export type
|
27
|
+
export type PrepareTransactionRequestParameters<
|
28
28
|
TChain extends Chain | undefined = Chain | undefined,
|
29
29
|
TAccount extends Account | undefined = Account | undefined,
|
30
30
|
TChainOverride extends Chain | undefined = Chain | undefined,
|
@@ -37,34 +37,70 @@ export type PrepareRequestParameters<
|
|
37
37
|
GetAccountParameter<TAccount> &
|
38
38
|
GetChain<TChain, TChainOverride>
|
39
39
|
|
40
|
-
export type
|
40
|
+
export type PrepareTransactionRequestReturnType<
|
41
41
|
TChain extends Chain | undefined = Chain | undefined,
|
42
42
|
TAccount extends Account | undefined = Account | undefined,
|
43
43
|
TChainOverride extends Chain | undefined = Chain | undefined,
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
>
|
50
|
-
|
51
|
-
|
52
|
-
gasPrice?: SendTransactionParameters['gasPrice']
|
53
|
-
maxFeePerGas?: SendTransactionParameters['maxFeePerGas']
|
54
|
-
maxPriorityFeePerGas?: SendTransactionParameters['maxPriorityFeePerGas']
|
55
|
-
nonce: SendTransactionParameters['nonce']
|
56
|
-
}
|
44
|
+
> = UnionOmit<
|
45
|
+
FormattedTransactionRequest<
|
46
|
+
TChainOverride extends Chain ? TChainOverride : TChain
|
47
|
+
>,
|
48
|
+
'from'
|
49
|
+
> &
|
50
|
+
GetAccountParameter<TAccount> &
|
51
|
+
GetChain<TChain, TChainOverride>
|
57
52
|
|
58
|
-
|
53
|
+
/**
|
54
|
+
* Prepares a transaction request for signing.
|
55
|
+
*
|
56
|
+
* - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest.html
|
57
|
+
*
|
58
|
+
* @param args - {@link PrepareTransactionRequestParameters}
|
59
|
+
* @returns The transaction request. {@link PrepareTransactionRequestReturnType}
|
60
|
+
*
|
61
|
+
* @example
|
62
|
+
* import { createWalletClient, custom } from 'viem'
|
63
|
+
* import { mainnet } from 'viem/chains'
|
64
|
+
* import { prepareTransactionRequest } from 'viem/actions'
|
65
|
+
*
|
66
|
+
* const client = createWalletClient({
|
67
|
+
* chain: mainnet,
|
68
|
+
* transport: custom(window.ethereum),
|
69
|
+
* })
|
70
|
+
* const request = await prepareTransactionRequest(client, {
|
71
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
72
|
+
* to: '0x0000000000000000000000000000000000000000',
|
73
|
+
* value: 1n,
|
74
|
+
* })
|
75
|
+
*
|
76
|
+
* @example
|
77
|
+
* // Account Hoisting
|
78
|
+
* import { createWalletClient, http } from 'viem'
|
79
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
80
|
+
* import { mainnet } from 'viem/chains'
|
81
|
+
* import { prepareTransactionRequest } from 'viem/actions'
|
82
|
+
*
|
83
|
+
* const client = createWalletClient({
|
84
|
+
* account: privateKeyToAccount('0x…'),
|
85
|
+
* chain: mainnet,
|
86
|
+
* transport: custom(window.ethereum),
|
87
|
+
* })
|
88
|
+
* const request = await prepareTransactionRequest(client, {
|
89
|
+
* to: '0x0000000000000000000000000000000000000000',
|
90
|
+
* value: 1n,
|
91
|
+
* })
|
92
|
+
*/
|
93
|
+
export async function prepareTransactionRequest<
|
59
94
|
TChain extends Chain | undefined,
|
60
95
|
TAccount extends Account | undefined,
|
61
96
|
TChainOverride extends Chain | undefined,
|
62
|
-
TArgs extends PrepareRequestParameters<TChain, TAccount, TChainOverride>,
|
63
97
|
>(
|
64
98
|
client: Client<Transport, TChain, TAccount>,
|
65
|
-
args:
|
66
|
-
): Promise<
|
67
|
-
|
99
|
+
args: PrepareTransactionRequestParameters<TChain, TAccount, TChainOverride>,
|
100
|
+
): Promise<
|
101
|
+
PrepareTransactionRequestReturnType<TChain, TAccount, TChainOverride>
|
102
|
+
> {
|
103
|
+
const { account: account_ = client.account, chain, gas, nonce, type } = args
|
68
104
|
if (!account_) throw new AccountNotFoundError()
|
69
105
|
const account = parseAccount(account_)
|
70
106
|
|
@@ -78,16 +114,25 @@ export async function prepareRequest<
|
|
78
114
|
blockTag: 'pending',
|
79
115
|
})
|
80
116
|
|
81
|
-
if (
|
82
|
-
|
83
|
-
|
84
|
-
|
117
|
+
if (typeof type === 'undefined') {
|
118
|
+
try {
|
119
|
+
request.type = getTransactionType(
|
120
|
+
request as TransactionSerializable,
|
121
|
+
) as any
|
122
|
+
} catch {
|
123
|
+
// infer type from block
|
124
|
+
request.type =
|
125
|
+
typeof block.baseFeePerGas === 'bigint' ? 'eip1559' : 'legacy'
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
if (request.type === 'eip1559') {
|
85
130
|
// EIP-1559 fees
|
86
131
|
const { maxFeePerGas, maxPriorityFeePerGas } =
|
87
132
|
await internal_estimateFeesPerGas(client, {
|
88
133
|
block,
|
89
134
|
chain,
|
90
|
-
request: request as
|
135
|
+
request: request as PrepareTransactionRequestParameters,
|
91
136
|
})
|
92
137
|
|
93
138
|
if (
|
@@ -100,8 +145,8 @@ export async function prepareRequest<
|
|
100
145
|
})
|
101
146
|
|
102
147
|
request.maxPriorityFeePerGas = maxPriorityFeePerGas
|
103
|
-
request.maxFeePerGas =
|
104
|
-
} else
|
148
|
+
request.maxFeePerGas = maxFeePerGas
|
149
|
+
} else {
|
105
150
|
// Legacy fees
|
106
151
|
if (
|
107
152
|
typeof args.maxFeePerGas !== 'undefined' ||
|
@@ -112,7 +157,7 @@ export async function prepareRequest<
|
|
112
157
|
const { gasPrice: gasPrice_ } = await internal_estimateFeesPerGas(client, {
|
113
158
|
block,
|
114
159
|
chain,
|
115
|
-
request: request as
|
160
|
+
request: request as PrepareTransactionRequestParameters,
|
116
161
|
type: 'legacy',
|
117
162
|
})
|
118
163
|
request.gasPrice = gasPrice_
|
@@ -126,10 +171,9 @@ export async function prepareRequest<
|
|
126
171
|
|
127
172
|
assertRequest(request as AssertRequestParameters)
|
128
173
|
|
129
|
-
return request as
|
174
|
+
return request as PrepareTransactionRequestReturnType<
|
130
175
|
TChain,
|
131
176
|
TAccount,
|
132
|
-
TChainOverride
|
133
|
-
TArgs
|
177
|
+
TChainOverride
|
134
178
|
>
|
135
179
|
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import type { Client } from '../../clients/createClient.js'
|
2
|
+
import type { Transport } from '../../clients/transports/createTransport.js'
|
3
|
+
import type { Chain } from '../../types/chain.js'
|
4
|
+
import type { Hash } from '../../types/misc.js'
|
5
|
+
import type { TransactionSerialized } from '../../types/transaction.js'
|
6
|
+
|
7
|
+
export type SendRawTransactionParameters = {
|
8
|
+
/**
|
9
|
+
* The signed serialized tranasction.
|
10
|
+
*/
|
11
|
+
serializedTransaction: TransactionSerialized
|
12
|
+
}
|
13
|
+
|
14
|
+
export type SendRawTransactionReturnType = Hash
|
15
|
+
|
16
|
+
/**
|
17
|
+
* Sends a **signed** transaction to the network
|
18
|
+
*
|
19
|
+
* - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction.html
|
20
|
+
* - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)
|
21
|
+
*
|
22
|
+
* @param client - Client to use
|
23
|
+
* @param parameters - {@link SendRawTransactionParameters}
|
24
|
+
* @returns The transaction hash. {@link SendRawTransactionReturnType}
|
25
|
+
*
|
26
|
+
* @example
|
27
|
+
* import { createWalletClient, custom } from 'viem'
|
28
|
+
* import { mainnet } from 'viem/chains'
|
29
|
+
* import { sendRawTransaction } from 'viem/wallet'
|
30
|
+
*
|
31
|
+
* const client = createWalletClient({
|
32
|
+
* chain: mainnet,
|
33
|
+
* transport: custom(window.ethereum),
|
34
|
+
* })
|
35
|
+
*
|
36
|
+
* const hash = await sendRawTransaction(client, {
|
37
|
+
* serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'
|
38
|
+
* })
|
39
|
+
*/
|
40
|
+
export async function sendRawTransaction<TChain extends Chain | undefined,>(
|
41
|
+
client: Client<Transport, TChain>,
|
42
|
+
{ serializedTransaction }: SendRawTransactionParameters,
|
43
|
+
): Promise<SendRawTransactionReturnType> {
|
44
|
+
return client.request({
|
45
|
+
method: 'eth_sendRawTransaction',
|
46
|
+
params: [serializedTransaction],
|
47
|
+
})
|
48
|
+
}
|
@@ -24,8 +24,9 @@ import {
|
|
24
24
|
type AssertRequestParameters,
|
25
25
|
assertRequest,
|
26
26
|
} from '../../utils/transaction/assertRequest.js'
|
27
|
-
import { prepareRequest } from '../../utils/transaction/prepareRequest.js'
|
28
27
|
import { getChainId } from '../public/getChainId.js'
|
28
|
+
import { prepareTransactionRequest } from './prepareTransactionRequest.js'
|
29
|
+
import { sendRawTransaction } from './sendRawTransaction.js'
|
29
30
|
|
30
31
|
export type SendTransactionParameters<
|
31
32
|
TChain extends Chain | undefined = Chain | undefined,
|
@@ -130,7 +131,7 @@ export async function sendTransaction<
|
|
130
131
|
|
131
132
|
if (account.type === 'local') {
|
132
133
|
// Prepare the request for signing (assign appropriate fees, etc.)
|
133
|
-
const request = await
|
134
|
+
const request = await prepareTransactionRequest(client, {
|
134
135
|
account,
|
135
136
|
accessList,
|
136
137
|
chain,
|
@@ -148,16 +149,15 @@ export async function sendTransaction<
|
|
148
149
|
if (!chainId) chainId = await getChainId(client)
|
149
150
|
|
150
151
|
const serializer = chain?.serializers?.transaction
|
151
|
-
const
|
152
|
+
const serializedTransaction = (await account.signTransaction(
|
152
153
|
{
|
153
154
|
...request,
|
154
155
|
chainId,
|
155
156
|
} as TransactionSerializable,
|
156
157
|
{ serializer },
|
157
158
|
)) as Hash
|
158
|
-
return await client
|
159
|
-
|
160
|
-
params: [signedRequest],
|
159
|
+
return await sendRawTransaction(client, {
|
160
|
+
serializedTransaction,
|
161
161
|
})
|
162
162
|
}
|
163
163
|
|
@@ -0,0 +1,137 @@
|
|
1
|
+
import type { Account } from '../../accounts/types.js'
|
2
|
+
import { parseAccount } from '../../accounts/utils/parseAccount.js'
|
3
|
+
import type { Client } from '../../clients/createClient.js'
|
4
|
+
import type { Transport } from '../../clients/transports/createTransport.js'
|
5
|
+
import { AccountNotFoundError } from '../../errors/account.js'
|
6
|
+
import type { GetAccountParameter } from '../../types/account.js'
|
7
|
+
import type { Chain, GetChain } from '../../types/chain.js'
|
8
|
+
import { type RpcTransactionRequest } from '../../types/rpc.js'
|
9
|
+
import type {
|
10
|
+
TransactionRequest,
|
11
|
+
TransactionSerializable,
|
12
|
+
TransactionSerialized,
|
13
|
+
} from '../../types/transaction.js'
|
14
|
+
import type { UnionOmit } from '../../types/utils.js'
|
15
|
+
import { assertCurrentChain } from '../../utils/chain.js'
|
16
|
+
import {
|
17
|
+
type FormattedTransactionRequest,
|
18
|
+
formatTransactionRequest,
|
19
|
+
} from '../../utils/formatters/transactionRequest.js'
|
20
|
+
import { numberToHex } from '../../utils/index.js'
|
21
|
+
import { assertRequest } from '../../utils/transaction/assertRequest.js'
|
22
|
+
import { getChainId } from '../public/getChainId.js'
|
23
|
+
|
24
|
+
export type SignTransactionParameters<
|
25
|
+
TChain extends Chain | undefined = Chain | undefined,
|
26
|
+
TAccount extends Account | undefined = Account | undefined,
|
27
|
+
TChainOverride extends Chain | undefined = Chain | undefined,
|
28
|
+
> = UnionOmit<
|
29
|
+
FormattedTransactionRequest<
|
30
|
+
TChainOverride extends Chain ? TChainOverride : TChain
|
31
|
+
>,
|
32
|
+
'from'
|
33
|
+
> &
|
34
|
+
GetAccountParameter<TAccount> &
|
35
|
+
GetChain<TChain, TChainOverride>
|
36
|
+
|
37
|
+
export type SignTransactionReturnType = TransactionSerialized
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Signs a transaction.
|
41
|
+
*
|
42
|
+
* - Docs: https://viem.sh/docs/actions/wallet/signTransaction.html
|
43
|
+
* - JSON-RPC Methods:
|
44
|
+
* - JSON-RPC Accounts: [`eth_signTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)
|
45
|
+
* - Local Accounts: Signs locally. No JSON-RPC request.
|
46
|
+
*
|
47
|
+
* @param args - {@link SignTransactionParameters}
|
48
|
+
* @returns The signed serialized tranasction. {@link SignTransactionReturnType}
|
49
|
+
*
|
50
|
+
* @example
|
51
|
+
* import { createWalletClient, custom } from 'viem'
|
52
|
+
* import { mainnet } from 'viem/chains'
|
53
|
+
* import { signTransaction } from 'viem/actions'
|
54
|
+
*
|
55
|
+
* const client = createWalletClient({
|
56
|
+
* chain: mainnet,
|
57
|
+
* transport: custom(window.ethereum),
|
58
|
+
* })
|
59
|
+
* const signature = await signTransaction(client, {
|
60
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
61
|
+
* to: '0x0000000000000000000000000000000000000000',
|
62
|
+
* value: 1n,
|
63
|
+
* })
|
64
|
+
*
|
65
|
+
* @example
|
66
|
+
* // Account Hoisting
|
67
|
+
* import { createWalletClient, http } from 'viem'
|
68
|
+
* import { privateKeyToAccount } from 'viem/accounts'
|
69
|
+
* import { mainnet } from 'viem/chains'
|
70
|
+
* import { signTransaction } from 'viem/actions'
|
71
|
+
*
|
72
|
+
* const client = createWalletClient({
|
73
|
+
* account: privateKeyToAccount('0x…'),
|
74
|
+
* chain: mainnet,
|
75
|
+
* transport: custom(window.ethereum),
|
76
|
+
* })
|
77
|
+
* const signature = await signTransaction(client, {
|
78
|
+
* to: '0x0000000000000000000000000000000000000000',
|
79
|
+
* value: 1n,
|
80
|
+
* })
|
81
|
+
*/
|
82
|
+
export async function signTransaction<
|
83
|
+
TChain extends Chain | undefined,
|
84
|
+
TAccount extends Account | undefined,
|
85
|
+
TChainOverride extends Chain | undefined,
|
86
|
+
>(
|
87
|
+
client: Client<Transport, TChain, TAccount>,
|
88
|
+
args: SignTransactionParameters<TChain, TAccount, TChainOverride>,
|
89
|
+
): Promise<SignTransactionReturnType> {
|
90
|
+
const {
|
91
|
+
account: account_ = client.account,
|
92
|
+
chain = client.chain,
|
93
|
+
...transaction
|
94
|
+
} = args
|
95
|
+
|
96
|
+
if (!account_)
|
97
|
+
throw new AccountNotFoundError({
|
98
|
+
docsPath: '/docs/actions/wallet/signTransaction',
|
99
|
+
})
|
100
|
+
const account = parseAccount(account_)
|
101
|
+
|
102
|
+
assertRequest({
|
103
|
+
account,
|
104
|
+
...args,
|
105
|
+
})
|
106
|
+
|
107
|
+
const chainId = await getChainId(client)
|
108
|
+
if (chain !== null)
|
109
|
+
assertCurrentChain({
|
110
|
+
currentChainId: chainId,
|
111
|
+
chain,
|
112
|
+
})
|
113
|
+
|
114
|
+
const formatters = chain?.formatters || client.chain?.formatters
|
115
|
+
const format =
|
116
|
+
formatters?.transactionRequest?.format || formatTransactionRequest
|
117
|
+
|
118
|
+
if (account.type === 'local')
|
119
|
+
return account.signTransaction(
|
120
|
+
{
|
121
|
+
chainId,
|
122
|
+
...transaction,
|
123
|
+
} as unknown as TransactionSerializable,
|
124
|
+
{ serializer: client.chain?.serializers?.transaction },
|
125
|
+
) as Promise<SignTransactionReturnType>
|
126
|
+
|
127
|
+
return await client.request({
|
128
|
+
method: 'eth_signTransaction',
|
129
|
+
params: [
|
130
|
+
{
|
131
|
+
...format(transaction as unknown as TransactionRequest),
|
132
|
+
chainId: numberToHex(chainId),
|
133
|
+
from: account.address,
|
134
|
+
} as unknown as RpcTransactionRequest,
|
135
|
+
],
|
136
|
+
})
|
137
|
+
}
|