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.
- package/README.md +6 -0
- package/dist/cjs/actions/ens/getEnsAddress.js +2 -2
- package/dist/cjs/actions/ens/getEnsAddress.js.map +1 -1
- package/dist/cjs/actions/index.js +8 -2
- package/dist/cjs/actions/index.js.map +1 -1
- package/dist/cjs/actions/public/estimateFeesPerGas.js +60 -0
- package/dist/cjs/actions/public/estimateFeesPerGas.js.map +1 -0
- 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 +44 -0
- package/dist/cjs/actions/public/estimateMaxPriorityFeePerGas.js.map +1 -0
- package/dist/cjs/actions/public/verifyHash.js.map +1 -1
- package/dist/cjs/actions/public/verifyMessage.js.map +1 -1
- package/dist/cjs/actions/public/verifyTypedData.js.map +1 -1
- package/dist/cjs/actions/public/waitForTransactionReceipt.js +35 -30
- package/dist/cjs/actions/public/waitForTransactionReceipt.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/actions/wallet/deployContract.js.map +1 -1
- package/dist/cjs/actions/wallet/prepareTransactionRequest.js +70 -0
- 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/celo/parsers.js +76 -0
- package/dist/cjs/chains/celo/parsers.js.map +1 -0
- package/dist/cjs/chains/celo/serializers.js +2 -1
- package/dist/cjs/chains/celo/serializers.js.map +1 -1
- package/dist/cjs/chains/index.js +3 -2
- package/dist/cjs/chains/index.js.map +1 -1
- package/dist/cjs/chains/utils.js +3 -1
- package/dist/cjs/chains/utils.js.map +1 -1
- package/dist/cjs/clients/createTestClient.js.map +1 -1
- package/dist/cjs/clients/decorators/public.js +8 -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/fee.js +42 -0
- package/dist/cjs/errors/fee.js.map +1 -0
- package/dist/cjs/index.js +9 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/public.js +5 -1
- package/dist/cjs/public.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/cjs/utils/rpc.js +5 -7
- package/dist/cjs/utils/rpc.js.map +1 -1
- package/dist/cjs/utils/transaction/parseTransaction.js +8 -3
- package/dist/cjs/utils/transaction/parseTransaction.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/actions/ens/getEnsAddress.js +2 -2
- package/dist/esm/actions/ens/getEnsAddress.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 +78 -0
- package/dist/esm/actions/public/estimateFeesPerGas.js.map +1 -0
- 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 +64 -0
- package/dist/esm/actions/public/estimateMaxPriorityFeePerGas.js.map +1 -0
- package/dist/esm/actions/public/verifyHash.js.map +1 -1
- package/dist/esm/actions/public/verifyMessage.js.map +1 -1
- package/dist/esm/actions/public/verifyTypedData.js.map +1 -1
- package/dist/esm/actions/public/waitForTransactionReceipt.js +39 -34
- package/dist/esm/actions/public/waitForTransactionReceipt.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/actions/wallet/deployContract.js.map +1 -1
- package/dist/esm/actions/wallet/prepareTransactionRequest.js +109 -0
- 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/celo/parsers.js +72 -0
- package/dist/esm/chains/celo/parsers.js.map +1 -0
- package/dist/esm/chains/celo/serializers.js +1 -3
- package/dist/esm/chains/celo/serializers.js.map +1 -1
- package/dist/esm/chains/index.js +1 -0
- package/dist/esm/chains/index.js.map +1 -1
- package/dist/esm/chains/utils.js +1 -0
- package/dist/esm/chains/utils.js.map +1 -1
- package/dist/esm/clients/createTestClient.js.map +1 -1
- package/dist/esm/clients/decorators/public.js +8 -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/fee.js +36 -0
- package/dist/esm/errors/fee.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/public.js +2 -0
- package/dist/esm/public.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/esm/utils/rpc.js +5 -7
- package/dist/esm/utils/rpc.js.map +1 -1
- package/dist/esm/utils/transaction/parseTransaction.js +6 -3
- package/dist/esm/utils/transaction/parseTransaction.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/actions/ens/getEnsAddress.d.ts.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 +48 -0
- package/dist/types/actions/public/estimateFeesPerGas.d.ts.map +1 -0
- package/dist/types/actions/public/estimateMaxPriorityFeePerGas.d.ts +37 -0
- package/dist/types/actions/public/estimateMaxPriorityFeePerGas.d.ts.map +1 -0
- package/dist/types/actions/public/verifyHash.d.ts +1 -1
- package/dist/types/actions/public/verifyHash.d.ts.map +1 -1
- package/dist/types/actions/public/verifyMessage.d.ts +2 -2
- package/dist/types/actions/public/verifyMessage.d.ts.map +1 -1
- package/dist/types/actions/public/verifyTypedData.d.ts +2 -2
- package/dist/types/actions/public/verifyTypedData.d.ts.map +1 -1
- package/dist/types/actions/public/waitForTransactionReceipt.d.ts.map +1 -1
- package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
- package/dist/types/actions/wallet/deployContract.d.ts +2 -1
- package/dist/types/actions/wallet/deployContract.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 +2 -1
- 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 +503 -5
- package/dist/types/chains/celo/formatters.d.ts.map +1 -1
- package/dist/types/chains/celo/parsers.d.ts +6 -0
- package/dist/types/chains/celo/parsers.d.ts.map +1 -0
- package/dist/types/chains/celo/serializers.d.ts +3 -14
- package/dist/types/chains/celo/serializers.d.ts.map +1 -1
- package/dist/types/chains/celo/types.d.ts +54 -14
- package/dist/types/chains/celo/types.d.ts.map +1 -1
- package/dist/types/chains/index.d.ts +15876 -3730
- package/dist/types/chains/index.d.ts.map +1 -1
- package/dist/types/chains/utils.d.ts +3 -2
- package/dist/types/chains/utils.d.ts.map +1 -1
- package/dist/types/clients/createTestClient.d.ts +1 -1
- package/dist/types/clients/createTestClient.d.ts.map +1 -1
- package/dist/types/clients/decorators/public.d.ts +112 -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/fee.d.ts +16 -0
- package/dist/types/errors/fee.d.ts.map +1 -0
- package/dist/types/index.d.ts +23 -17
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/public.d.ts +2 -0
- package/dist/types/public.d.ts.map +1 -1
- package/dist/types/types/chain.d.ts +64 -11
- package/dist/types/types/chain.d.ts.map +1 -1
- package/dist/types/types/contract.d.ts +2 -2
- package/dist/types/types/contract.d.ts.map +1 -1
- package/dist/types/types/eip1193.d.ts +14 -2
- package/dist/types/types/eip1193.d.ts.map +1 -1
- package/dist/types/types/fee.d.ts +1 -0
- package/dist/types/types/fee.d.ts.map +1 -1
- package/dist/types/utils/chain.d.ts +2 -2
- package/dist/types/utils/chain.d.ts.map +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/dist/types/utils/rpc.d.ts +1 -1
- package/dist/types/utils/rpc.d.ts.map +1 -1
- package/dist/types/utils/transaction/parseTransaction.d.ts +5 -1
- package/dist/types/utils/transaction/parseTransaction.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/actions/ens/getEnsAddress.ts +6 -8
- package/src/actions/index.ts +15 -0
- package/src/actions/public/estimateFeesPerGas.ts +154 -0
- package/src/actions/public/estimateGas.ts +5 -5
- package/src/actions/public/estimateMaxPriorityFeePerGas.ts +98 -0
- package/src/actions/public/verifyHash.ts +1 -1
- package/src/actions/public/verifyMessage.ts +3 -2
- package/src/actions/public/verifyTypedData.ts +3 -2
- package/src/actions/public/waitForTransactionReceipt.ts +48 -44
- package/src/actions/public/watchContractEvent.ts +9 -6
- package/src/actions/wallet/deployContract.ts +2 -1
- package/src/actions/wallet/prepareTransactionRequest.ts +179 -0
- package/src/actions/wallet/sendRawTransaction.ts +48 -0
- package/src/actions/wallet/sendTransaction.ts +8 -7
- package/src/actions/wallet/signTransaction.ts +137 -0
- package/src/chains/celo/formatters.ts +11 -12
- package/src/chains/celo/parsers.ts +123 -0
- package/src/chains/celo/serializers.ts +13 -34
- package/src/chains/celo/types.ts +114 -26
- package/src/chains/index.ts +1 -0
- package/src/chains/utils.ts +10 -6
- package/src/clients/createTestClient.ts +2 -1
- package/src/clients/decorators/public.ts +145 -0
- package/src/clients/decorators/wallet.ts +133 -0
- package/src/errors/fee.ts +27 -0
- package/src/errors/rpc.ts +1 -1
- package/src/index.ts +46 -25
- package/src/public.ts +10 -0
- package/src/types/chain.ts +80 -12
- package/src/types/contract.ts +2 -2
- package/src/types/eip1193.ts +14 -2
- package/src/types/fee.ts +2 -0
- package/src/utils/chain.ts +2 -2
- 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/src/utils/rpc.ts +5 -8
- package/src/utils/transaction/parseTransaction.ts +7 -9
- package/src/version.ts +1 -1
- package/dist/cjs/utils/transaction/prepareRequest.js +0 -64
- package/dist/cjs/utils/transaction/prepareRequest.js.map +0 -1
- package/dist/esm/utils/transaction/prepareRequest.js +0 -64
- package/dist/esm/utils/transaction/prepareRequest.js.map +0 -1
- package/dist/types/utils/transaction/prepareRequest.d.ts +0 -20
- package/dist/types/utils/transaction/prepareRequest.d.ts.map +0 -1
- 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(
|
150
|
-
|
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:
|
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(
|
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(
|
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 =
|
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 =
|
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
|
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.
|
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
|
-
}
|