viem 0.0.1-alpha.21 → 0.0.1-alpha.22
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/dist/{chain-32f56cfa.d.ts → chain-4b39613a.d.ts} +2 -2
- package/dist/{chain-f12cdc7f.d.ts → chain-aa4898d0.d.ts} +1 -1
- package/dist/chains.d.ts +3 -3
- package/dist/chains.js +46 -46
- package/dist/chains.mjs +1 -1
- package/dist/{chunk-46BO7YAQ.mjs → chunk-JMFNAGCD.mjs} +4 -3
- package/dist/chunk-JMFNAGCD.mjs.map +1 -0
- package/dist/{chunk-KZMJR27B.js → chunk-MVD4Y3AE.js} +67 -63
- package/dist/chunk-MVD4Y3AE.js.map +1 -0
- package/dist/{chunk-57ZOFERP.mjs → chunk-OZIBQJYR.mjs} +2 -2
- package/dist/{chunk-57ZOFERP.mjs.map → chunk-OZIBQJYR.mjs.map} +0 -0
- package/dist/{chunk-KEHGSYDO.js → chunk-PMPJGAHY.js} +14 -13
- package/dist/chunk-PMPJGAHY.js.map +1 -0
- package/dist/{chunk-W7BWWAC4.js → chunk-QA3IE5DU.js} +14 -14
- package/dist/{chunk-W7BWWAC4.js.map → chunk-QA3IE5DU.js.map} +0 -0
- package/dist/{chunk-DSPMAIDO.mjs → chunk-QN2NCTEN.mjs} +2 -2
- package/dist/{chunk-DSPMAIDO.mjs.map → chunk-QN2NCTEN.mjs.map} +1 -1
- package/dist/{chunk-EC3NUIJE.js → chunk-S77NLWHO.js} +13 -13
- package/dist/{chunk-EC3NUIJE.js.map → chunk-S77NLWHO.js.map} +1 -1
- package/dist/{chunk-O2GYLJVD.js → chunk-V5U5S7PQ.js} +403 -165
- package/dist/chunk-V5U5S7PQ.js.map +1 -0
- package/dist/{chunk-62VTYU2V.mjs → chunk-WWJ5YPTJ.mjs} +404 -166
- package/dist/chunk-WWJ5YPTJ.mjs.map +1 -0
- package/dist/{chunk-DGO77E2H.mjs → chunk-ZXXEENRD.mjs} +7 -3
- package/dist/chunk-ZXXEENRD.mjs.map +1 -0
- package/dist/clients/index.d.ts +7 -7
- package/dist/clients/index.js +3 -3
- package/dist/clients/index.mjs +2 -2
- package/dist/{contract-9af4608b.d.ts → contract-74f34ac9.d.ts} +14 -3
- package/dist/{createClient-5d316c7e.d.ts → createClient-55a04188.d.ts} +2 -2
- package/dist/{createPublicClient-9d2b42e1.d.ts → createPublicClient-3b27b282.d.ts} +3 -3
- package/dist/{createTestClient-79498dab.d.ts → createTestClient-93f9eac6.d.ts} +3 -3
- package/dist/{createWalletClient-f69a5230.d.ts → createWalletClient-c10df94d.d.ts} +3 -3
- package/dist/{eip1193-6c485d63.d.ts → eip1193-4c24765a.d.ts} +1 -1
- package/dist/ens.d.ts +1 -0
- package/dist/ens.js +11 -0
- package/dist/ens.js.map +1 -0
- package/dist/ens.mjs +11 -0
- package/dist/ens.mjs.map +1 -0
- package/dist/index.d.ts +125 -113
- package/dist/index.js +14 -6
- package/dist/index.mjs +13 -5
- package/dist/normalize-ef9240c0.d.ts +33 -0
- package/dist/{parseGwei-4308ad80.d.ts → parseGwei-b323fb0a.d.ts} +101 -37
- package/dist/public.d.ts +9 -9
- package/dist/public.js +4 -4
- package/dist/public.mjs +3 -3
- package/dist/{sendTransaction-1c8290a9.d.ts → sendTransaction-f17a2389.d.ts} +3 -3
- package/dist/{stopImpersonatingAccount-7781842a.d.ts → stopImpersonatingAccount-afb26486.d.ts} +2 -2
- package/dist/test.d.ts +5 -5
- package/dist/test.js +3 -3
- package/dist/test.mjs +2 -2
- package/dist/{transactionRequest-341b6ed2.d.ts → transactionRequest-93e9f001.d.ts} +2 -2
- package/dist/utils/index.d.ts +14 -16
- package/dist/utils/index.js +8 -2
- package/dist/utils/index.mjs +7 -1
- package/dist/wallet.d.ts +7 -7
- package/dist/wallet.js +3 -3
- package/dist/wallet.mjs +2 -2
- package/dist/{watchAsset-afaad3c7.d.ts → watchAsset-efd3dd05.d.ts} +3 -3
- package/dist/{watchPendingTransactions-3b722547.d.ts → watchPendingTransactions-a8688b26.d.ts} +17 -27
- package/dist/{webSocket-b180e679.d.ts → webSocket-d2e7bd0e.d.ts} +2 -2
- package/dist/window.d.ts +2 -2
- package/package.json +8 -2
- package/src/_test/abis.ts +7 -0
- package/src/_test/bench.ts +4 -4
- package/src/_test/index.ts +3 -1
- package/src/_test/utils.ts +39 -1
- package/src/actions/public/call.bench.ts +5 -5
- package/src/actions/public/deployContract.ts +4 -4
- package/src/actions/public/estimateGas.bench.ts +6 -6
- package/src/actions/public/getBlock.bench.ts +5 -5
- package/src/actions/public/getBlockNumber.bench.ts +5 -5
- package/src/actions/public/getGasPrice.bench.ts +1 -10
- package/src/actions/public/getTransaction.bench.ts +5 -5
- package/src/actions/public/getTransactionReceipt.bench.ts +5 -5
- package/src/actions/public/multicall.test.ts +452 -0
- package/src/actions/public/multicall.ts +103 -0
- package/src/actions/public/readContract.test.ts +226 -26
- package/src/actions/public/readContract.ts +13 -27
- package/src/actions/public/simulateContract.bench.ts +10 -0
- package/src/actions/public/simulateContract.test.ts +209 -37
- package/src/actions/public/simulateContract.ts +17 -21
- package/src/actions/public/watchContractEvent.test.ts +36 -32
- package/src/actions/public/watchEvent.test.ts +34 -29
- package/src/actions/wallet/signMessage.test.ts +0 -1
- package/src/actions/wallet/switchChain.test.ts +1 -2
- package/src/actions/wallet/watchAsset.test.ts +1 -2
- package/src/actions/wallet/writeContract.test.ts +37 -7
- package/src/actions/wallet/writeContract.ts +5 -14
- package/src/clients/transports/fallback.test.ts +34 -0
- package/src/clients/transports/fallback.ts +3 -1
- package/src/clients/transports/http.test.ts +0 -1
- package/src/clients/transports/webSocket.test.ts +0 -1
- package/src/constants/abis.test.ts +53 -0
- package/src/constants/abis.ts +44 -0
- package/src/constants/index.test.ts +14 -0
- package/src/constants/index.ts +3 -0
- package/src/constants/solidity.test.ts +41 -0
- package/src/constants/solidity.ts +35 -0
- package/src/ens.ts +5 -0
- package/src/errors/abi.test.ts +0 -2
- package/src/errors/base.test.ts +44 -2
- package/src/errors/base.ts +12 -12
- package/src/errors/block.test.ts +6 -6
- package/src/errors/contract.test.ts +233 -0
- package/src/errors/contract.ts +133 -80
- package/src/errors/index.ts +4 -2
- package/src/errors/request.test.ts +3 -4
- package/src/errors/request.ts +17 -17
- package/src/errors/rpc.test.ts +1 -2
- package/src/errors/transaction.test.ts +12 -12
- package/src/errors/transport.test.ts +0 -1
- package/src/index.test.ts +46 -0
- package/src/index.ts +8 -0
- package/src/types/contract.ts +55 -4
- package/src/types/index.ts +5 -0
- package/src/types/multicall.ts +82 -0
- package/src/utils/abi/decodeAbi.test.ts +1 -2
- package/src/utils/abi/decodeAbi.ts +11 -7
- package/src/utils/abi/decodeDeployData.test.ts +7 -15
- package/src/utils/abi/decodeDeployData.ts +10 -7
- package/src/utils/abi/decodeErrorResult.test.ts +103 -3
- package/src/utils/abi/decodeErrorResult.ts +30 -13
- package/src/utils/abi/decodeFunctionData.test.ts +0 -1
- package/src/utils/abi/decodeFunctionResult.test.ts +80 -9
- package/src/utils/abi/decodeFunctionResult.ts +15 -11
- package/src/utils/abi/encodeAbi.test.ts +3 -4
- package/src/utils/abi/encodeAbi.ts +19 -10
- package/src/utils/abi/encodeDeployData.test.ts +6 -13
- package/src/utils/abi/encodeDeployData.ts +10 -7
- package/src/utils/abi/encodeErrorResult.test.ts +2 -7
- package/src/utils/abi/encodeErrorResult.ts +18 -11
- package/src/utils/abi/encodeEventTopics.test.ts +11 -14
- package/src/utils/abi/encodeEventTopics.ts +15 -9
- package/src/utils/abi/encodeFunctionData.test.ts +5 -7
- package/src/utils/abi/encodeFunctionData.ts +16 -9
- package/src/utils/abi/encodeFunctionResult.test.ts +10 -15
- package/src/utils/abi/encodeFunctionResult.ts +9 -7
- package/src/utils/abi/getAbiItem.test.ts +547 -0
- package/src/utils/abi/getAbiItem.ts +93 -3
- package/src/utils/abi/index.ts +5 -1
- package/src/utils/address/getAddress.test.ts +6 -6
- package/src/utils/contract/getContractError.test.ts +247 -62
- package/src/utils/contract/getContractError.ts +30 -38
- package/src/utils/data/pad.bench.ts +0 -9
- package/src/utils/data/trim.bench.ts +0 -16
- package/src/utils/encoding/encodeBytes.bench.ts +0 -12
- package/src/utils/encoding/encodeHex.bench.ts +0 -11
- package/src/utils/ens/index.test.ts +13 -0
- package/src/utils/ens/index.ts +5 -0
- package/src/utils/ens/labelhash.test.ts +55 -0
- package/src/utils/ens/labelhash.ts +16 -0
- package/src/utils/ens/namehash.test.ts +65 -0
- package/src/utils/ens/namehash.ts +28 -0
- package/src/utils/ens/normalize.bench.ts +14 -0
- package/src/utils/ens/normalize.test.ts +35 -0
- package/src/utils/ens/normalize.ts +14 -0
- package/src/utils/hash/keccak256.ts +3 -5
- package/src/utils/index.test.ts +3 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/rpc.test.ts +3 -6
- package/src/utils/unit/formatUnit.bench.ts +0 -5
- package/src/utils/unit/parseUnit.bench.ts +0 -5
- package/dist/chunk-46BO7YAQ.mjs.map +0 -1
- package/dist/chunk-62VTYU2V.mjs.map +0 -1
- package/dist/chunk-DGO77E2H.mjs.map +0 -1
- package/dist/chunk-KEHGSYDO.js.map +0 -1
- package/dist/chunk-KZMJR27B.js.map +0 -1
- package/dist/chunk-O2GYLJVD.js.map +0 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
2
2
|
|
3
|
-
var
|
3
|
+
var _chunkS77NLWHOjs = require('./chunk-S77NLWHO.js');
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -26,7 +26,7 @@ var _chunkEC3NUIJEjs = require('./chunk-EC3NUIJE.js');
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
var
|
29
|
+
var _chunkV5U5S7PQjs = require('./chunk-V5U5S7PQ.js');
|
30
30
|
|
31
31
|
// src/actions/public/call.ts
|
32
32
|
async function call(client, {
|
@@ -46,10 +46,10 @@ async function call(client, {
|
|
46
46
|
...rest
|
47
47
|
}) {
|
48
48
|
if (maxFeePerGas !== void 0 && maxPriorityFeePerGas !== void 0 && maxFeePerGas < maxPriorityFeePerGas)
|
49
|
-
throw new (0,
|
50
|
-
const blockNumberHex = blockNumber ?
|
49
|
+
throw new (0, _chunkV5U5S7PQjs.InvalidGasArgumentsError)();
|
50
|
+
const blockNumberHex = blockNumber ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
51
51
|
const formatter = _optionalChain([chain, 'optionalAccess', _ => _.formatters, 'optionalAccess', _2 => _2.transactionRequest]);
|
52
|
-
const request_ =
|
52
|
+
const request_ = _chunkV5U5S7PQjs.format.call(void 0,
|
53
53
|
{
|
54
54
|
from,
|
55
55
|
accessList,
|
@@ -61,10 +61,10 @@ async function call(client, {
|
|
61
61
|
nonce,
|
62
62
|
to,
|
63
63
|
value,
|
64
|
-
...
|
64
|
+
..._chunkV5U5S7PQjs.extract.call(void 0, rest, { formatter })
|
65
65
|
},
|
66
66
|
{
|
67
|
-
formatter: formatter ||
|
67
|
+
formatter: formatter || _chunkV5U5S7PQjs.formatTransactionRequest
|
68
68
|
}
|
69
69
|
);
|
70
70
|
const response = await client.request({
|
@@ -84,7 +84,7 @@ async function simulateContract(client, {
|
|
84
84
|
functionName,
|
85
85
|
...callRequest
|
86
86
|
}) {
|
87
|
-
const calldata =
|
87
|
+
const calldata = _chunkV5U5S7PQjs.encodeFunctionData.call(void 0, {
|
88
88
|
abi,
|
89
89
|
args,
|
90
90
|
functionName
|
@@ -95,8 +95,9 @@ async function simulateContract(client, {
|
|
95
95
|
to: address,
|
96
96
|
...callRequest
|
97
97
|
});
|
98
|
-
const result =
|
98
|
+
const result = _chunkV5U5S7PQjs.decodeFunctionResult.call(void 0, {
|
99
99
|
abi,
|
100
|
+
args,
|
100
101
|
functionName,
|
101
102
|
data: data || "0x"
|
102
103
|
});
|
@@ -111,10 +112,11 @@ async function simulateContract(client, {
|
|
111
112
|
}
|
112
113
|
};
|
113
114
|
} catch (err) {
|
114
|
-
throw
|
115
|
+
throw _chunkV5U5S7PQjs.getContractError.call(void 0, err, {
|
115
116
|
abi,
|
116
117
|
address,
|
117
118
|
args,
|
119
|
+
docsPath: "/docs/contract/simulateContract",
|
118
120
|
functionName,
|
119
121
|
sender: callRequest.from
|
120
122
|
});
|
@@ -154,8 +156,8 @@ async function createEventFilter(client, {
|
|
154
156
|
params: [
|
155
157
|
{
|
156
158
|
address,
|
157
|
-
fromBlock: typeof fromBlock === "bigint" ?
|
158
|
-
toBlock: typeof toBlock === "bigint" ?
|
159
|
+
fromBlock: typeof fromBlock === "bigint" ? _chunkV5U5S7PQjs.numberToHex.call(void 0, fromBlock) : fromBlock,
|
160
|
+
toBlock: typeof toBlock === "bigint" ? _chunkV5U5S7PQjs.numberToHex.call(void 0, toBlock) : toBlock,
|
159
161
|
...topics.length ? { topics } : {}
|
160
162
|
}
|
161
163
|
]
|
@@ -166,7 +168,7 @@ function buildFilterTopics({
|
|
166
168
|
event,
|
167
169
|
args: _args
|
168
170
|
}) {
|
169
|
-
const signature =
|
171
|
+
const signature = _chunkV5U5S7PQjs.getEventSignature.call(void 0, event);
|
170
172
|
return [signature];
|
171
173
|
}
|
172
174
|
|
@@ -179,7 +181,7 @@ async function createContractEventFilter(client, {
|
|
179
181
|
fromBlock,
|
180
182
|
toBlock
|
181
183
|
}) {
|
182
|
-
const topics = eventName ?
|
184
|
+
const topics = eventName ? _chunkV5U5S7PQjs.encodeEventTopics.call(void 0, {
|
183
185
|
abi,
|
184
186
|
args,
|
185
187
|
eventName
|
@@ -189,8 +191,8 @@ async function createContractEventFilter(client, {
|
|
189
191
|
params: [
|
190
192
|
{
|
191
193
|
address,
|
192
|
-
fromBlock: typeof fromBlock === "bigint" ?
|
193
|
-
toBlock: typeof toBlock === "bigint" ?
|
194
|
+
fromBlock: typeof fromBlock === "bigint" ? _chunkV5U5S7PQjs.numberToHex.call(void 0, fromBlock) : fromBlock,
|
195
|
+
toBlock: typeof toBlock === "bigint" ? _chunkV5U5S7PQjs.numberToHex.call(void 0, toBlock) : toBlock,
|
194
196
|
topics
|
195
197
|
}
|
196
198
|
]
|
@@ -200,12 +202,12 @@ async function createContractEventFilter(client, {
|
|
200
202
|
|
201
203
|
// src/actions/public/deployContract.ts
|
202
204
|
function deployContract(walletClient, { abi, args, bytecode, ...request }) {
|
203
|
-
const calldata =
|
205
|
+
const calldata = _chunkV5U5S7PQjs.encodeDeployData.call(void 0, {
|
204
206
|
abi,
|
205
207
|
args,
|
206
208
|
bytecode
|
207
209
|
});
|
208
|
-
return
|
210
|
+
return _chunkS77NLWHOjs.sendTransaction.call(void 0, walletClient, {
|
209
211
|
...request,
|
210
212
|
data: calldata
|
211
213
|
});
|
@@ -224,16 +226,16 @@ async function estimateGas(client, {
|
|
224
226
|
to,
|
225
227
|
value
|
226
228
|
}) {
|
227
|
-
const blockNumberHex = blockNumber ?
|
229
|
+
const blockNumberHex = blockNumber ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
228
230
|
const parameters = {
|
229
231
|
data,
|
230
232
|
from,
|
231
|
-
gas: gas ?
|
232
|
-
gasPrice: gasPrice ?
|
233
|
-
maxFeePerGas: maxFeePerGas ?
|
234
|
-
maxPriorityFeePerGas: maxPriorityFeePerGas ?
|
233
|
+
gas: gas ? _chunkV5U5S7PQjs.numberToHex.call(void 0, gas) : void 0,
|
234
|
+
gasPrice: gasPrice ? _chunkV5U5S7PQjs.numberToHex.call(void 0, gasPrice) : void 0,
|
235
|
+
maxFeePerGas: maxFeePerGas ? _chunkV5U5S7PQjs.numberToHex.call(void 0, maxFeePerGas) : void 0,
|
236
|
+
maxPriorityFeePerGas: maxPriorityFeePerGas ? _chunkV5U5S7PQjs.numberToHex.call(void 0, maxPriorityFeePerGas) : void 0,
|
235
237
|
to,
|
236
|
-
value: value ?
|
238
|
+
value: value ? _chunkV5U5S7PQjs.numberToHex.call(void 0, value) : void 0
|
237
239
|
};
|
238
240
|
const balance = await client.request({
|
239
241
|
method: "eth_estimateGas",
|
@@ -244,7 +246,7 @@ async function estimateGas(client, {
|
|
244
246
|
|
245
247
|
// src/actions/public/getBalance.ts
|
246
248
|
async function getBalance(client, { address, blockNumber, blockTag = "latest" }) {
|
247
|
-
const blockNumberHex = blockNumber ?
|
249
|
+
const blockNumberHex = blockNumber ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
248
250
|
const balance = await client.request({
|
249
251
|
method: "eth_getBalance",
|
250
252
|
params: [address, blockNumberHex || blockTag]
|
@@ -259,7 +261,7 @@ async function getBlock(client, {
|
|
259
261
|
blockTag = "latest",
|
260
262
|
includeTransactions = false
|
261
263
|
} = {}) {
|
262
|
-
const blockNumberHex = blockNumber !== void 0 ?
|
264
|
+
const blockNumberHex = blockNumber !== void 0 ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
263
265
|
let block = null;
|
264
266
|
if (blockHash) {
|
265
267
|
block = await client.request({
|
@@ -273,19 +275,19 @@ async function getBlock(client, {
|
|
273
275
|
});
|
274
276
|
}
|
275
277
|
if (!block)
|
276
|
-
throw new (0,
|
277
|
-
return
|
278
|
-
formatter: _optionalChain([client, 'access', _3 => _3.chain, 'optionalAccess', _4 => _4.formatters, 'optionalAccess', _5 => _5.block]) ||
|
278
|
+
throw new (0, _chunkV5U5S7PQjs.BlockNotFoundError)({ blockHash, blockNumber });
|
279
|
+
return _chunkV5U5S7PQjs.format.call(void 0, block, {
|
280
|
+
formatter: _optionalChain([client, 'access', _3 => _3.chain, 'optionalAccess', _4 => _4.formatters, 'optionalAccess', _5 => _5.block]) || _chunkV5U5S7PQjs.formatBlock
|
279
281
|
});
|
280
282
|
}
|
281
283
|
|
282
284
|
// src/actions/public/getBlockNumber.ts
|
283
285
|
var cacheKey = (id) => `blockNumber.${id}`;
|
284
286
|
function getBlockNumberCache(id) {
|
285
|
-
return
|
287
|
+
return _chunkV5U5S7PQjs.getCache.call(void 0, cacheKey(id));
|
286
288
|
}
|
287
289
|
async function getBlockNumber(client, { maxAge = client.pollingInterval } = {}) {
|
288
|
-
const blockNumberHex = await
|
290
|
+
const blockNumberHex = await _chunkV5U5S7PQjs.withCache.call(void 0,
|
289
291
|
() => client.request({
|
290
292
|
method: "eth_blockNumber"
|
291
293
|
}),
|
@@ -300,7 +302,7 @@ async function getBlockTransactionCount(client, {
|
|
300
302
|
blockNumber,
|
301
303
|
blockTag = "latest"
|
302
304
|
} = {}) {
|
303
|
-
const blockNumberHex = blockNumber !== void 0 ?
|
305
|
+
const blockNumberHex = blockNumber !== void 0 ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
304
306
|
let count = null;
|
305
307
|
if (blockHash) {
|
306
308
|
count = await client.request({
|
@@ -313,12 +315,12 @@ async function getBlockTransactionCount(client, {
|
|
313
315
|
params: [blockNumberHex || blockTag]
|
314
316
|
});
|
315
317
|
}
|
316
|
-
return
|
318
|
+
return _chunkV5U5S7PQjs.hexToNumber.call(void 0, count);
|
317
319
|
}
|
318
320
|
|
319
321
|
// src/actions/public/getBytecode.ts
|
320
322
|
async function getBytecode(client, { address, blockNumber, blockTag = "latest" }) {
|
321
|
-
const blockNumberHex = blockNumber !== void 0 ?
|
323
|
+
const blockNumberHex = blockNumber !== void 0 ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
322
324
|
const hex = await client.request({
|
323
325
|
method: "eth_getCode",
|
324
326
|
params: [address, blockNumberHex || blockTag]
|
@@ -331,7 +333,7 @@ async function getBytecode(client, { address, blockNumber, blockTag = "latest" }
|
|
331
333
|
// src/actions/public/getChainId.ts
|
332
334
|
async function getChainId(client) {
|
333
335
|
const chainIdHex = await client.request({ method: "eth_chainId" });
|
334
|
-
return
|
336
|
+
return _chunkV5U5S7PQjs.hexToNumber.call(void 0, chainIdHex);
|
335
337
|
}
|
336
338
|
|
337
339
|
// src/actions/public/getFeeHistory.ts
|
@@ -341,16 +343,16 @@ async function getFeeHistory(client, {
|
|
341
343
|
blockTag = "latest",
|
342
344
|
rewardPercentiles
|
343
345
|
}) {
|
344
|
-
const blockNumberHex = blockNumber ?
|
346
|
+
const blockNumberHex = blockNumber ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
345
347
|
const feeHistory = await client.request({
|
346
348
|
method: "eth_feeHistory",
|
347
349
|
params: [
|
348
|
-
|
350
|
+
_chunkV5U5S7PQjs.numberToHex.call(void 0, blockCount),
|
349
351
|
blockNumberHex || blockTag,
|
350
352
|
rewardPercentiles
|
351
353
|
]
|
352
354
|
});
|
353
|
-
return
|
355
|
+
return _chunkV5U5S7PQjs.formatFeeHistory.call(void 0, feeHistory);
|
354
356
|
}
|
355
357
|
|
356
358
|
// src/actions/public/getFilterChanges.ts
|
@@ -360,7 +362,7 @@ async function getFilterChanges(client, { filter }) {
|
|
360
362
|
params: [filter.id]
|
361
363
|
});
|
362
364
|
return logs.map(
|
363
|
-
(log) => typeof log === "string" ? log :
|
365
|
+
(log) => typeof log === "string" ? log : _chunkV5U5S7PQjs.formatLog.call(void 0, log)
|
364
366
|
);
|
365
367
|
}
|
366
368
|
|
@@ -370,7 +372,7 @@ async function getFilterLogs(client, { filter }) {
|
|
370
372
|
method: "eth_getFilterLogs",
|
371
373
|
params: [filter.id]
|
372
374
|
});
|
373
|
-
return logs.map(
|
375
|
+
return logs.map(_chunkV5U5S7PQjs.formatLog);
|
374
376
|
}
|
375
377
|
|
376
378
|
// src/actions/public/getGasPrice.ts
|
@@ -407,18 +409,18 @@ async function getLogs(client, {
|
|
407
409
|
{
|
408
410
|
address,
|
409
411
|
topics,
|
410
|
-
fromBlock: typeof fromBlock === "bigint" ?
|
411
|
-
toBlock: typeof toBlock === "bigint" ?
|
412
|
+
fromBlock: typeof fromBlock === "bigint" ? _chunkV5U5S7PQjs.numberToHex.call(void 0, fromBlock) : fromBlock,
|
413
|
+
toBlock: typeof toBlock === "bigint" ? _chunkV5U5S7PQjs.numberToHex.call(void 0, toBlock) : toBlock
|
412
414
|
}
|
413
415
|
]
|
414
416
|
});
|
415
417
|
}
|
416
|
-
return logs.map(
|
418
|
+
return logs.map(_chunkV5U5S7PQjs.formatLog);
|
417
419
|
}
|
418
420
|
|
419
421
|
// src/actions/public/getStorageAt.ts
|
420
422
|
async function getStorageAt(client, { address, blockNumber, blockTag = "latest", slot }) {
|
421
|
-
const blockNumberHex = blockNumber !== void 0 ?
|
423
|
+
const blockNumberHex = blockNumber !== void 0 ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
422
424
|
const data = await client.request({
|
423
425
|
method: "eth_getStorageAt",
|
424
426
|
params: [address, slot, blockNumberHex || blockTag]
|
@@ -434,7 +436,7 @@ async function getTransaction(client, {
|
|
434
436
|
hash,
|
435
437
|
index
|
436
438
|
}) {
|
437
|
-
const blockNumberHex = blockNumber !== void 0 ?
|
439
|
+
const blockNumberHex = blockNumber !== void 0 ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : void 0;
|
438
440
|
let transaction = null;
|
439
441
|
if (hash) {
|
440
442
|
transaction = await client.request({
|
@@ -444,24 +446,24 @@ async function getTransaction(client, {
|
|
444
446
|
} else if (blockHash) {
|
445
447
|
transaction = await client.request({
|
446
448
|
method: "eth_getTransactionByBlockHashAndIndex",
|
447
|
-
params: [blockHash,
|
449
|
+
params: [blockHash, _chunkV5U5S7PQjs.numberToHex.call(void 0, index)]
|
448
450
|
});
|
449
451
|
} else if (blockNumberHex || blockTag) {
|
450
452
|
transaction = await client.request({
|
451
453
|
method: "eth_getTransactionByBlockNumberAndIndex",
|
452
|
-
params: [blockNumberHex || blockTag,
|
454
|
+
params: [blockNumberHex || blockTag, _chunkV5U5S7PQjs.numberToHex.call(void 0, index)]
|
453
455
|
});
|
454
456
|
}
|
455
457
|
if (!transaction)
|
456
|
-
throw new (0,
|
458
|
+
throw new (0, _chunkV5U5S7PQjs.TransactionNotFoundError)({
|
457
459
|
blockHash,
|
458
460
|
blockNumber,
|
459
461
|
blockTag,
|
460
462
|
hash,
|
461
463
|
index
|
462
464
|
});
|
463
|
-
return
|
464
|
-
formatter: _optionalChain([client, 'access', _6 => _6.chain, 'optionalAccess', _7 => _7.formatters, 'optionalAccess', _8 => _8.transaction]) ||
|
465
|
+
return _chunkV5U5S7PQjs.format.call(void 0, transaction, {
|
466
|
+
formatter: _optionalChain([client, 'access', _6 => _6.chain, 'optionalAccess', _7 => _7.formatters, 'optionalAccess', _8 => _8.transaction]) || _chunkV5U5S7PQjs.formatTransaction
|
465
467
|
});
|
466
468
|
}
|
467
469
|
|
@@ -481,9 +483,9 @@ async function getTransactionConfirmations(client, { hash, transactionReceipt })
|
|
481
483
|
async function getTransactionCount(client, { address, blockTag = "latest", blockNumber }) {
|
482
484
|
const count = await client.request({
|
483
485
|
method: "eth_getTransactionCount",
|
484
|
-
params: [address, blockNumber ?
|
486
|
+
params: [address, blockNumber ? _chunkV5U5S7PQjs.numberToHex.call(void 0, blockNumber) : blockTag]
|
485
487
|
});
|
486
|
-
return
|
488
|
+
return _chunkV5U5S7PQjs.hexToNumber.call(void 0, count);
|
487
489
|
}
|
488
490
|
|
489
491
|
// src/actions/public/getTransactionReceipt.ts
|
@@ -493,9 +495,9 @@ async function getTransactionReceipt(client, { hash }) {
|
|
493
495
|
params: [hash]
|
494
496
|
});
|
495
497
|
if (!receipt)
|
496
|
-
throw new (0,
|
497
|
-
return
|
498
|
-
formatter: _optionalChain([client, 'access', _11 => _11.chain, 'optionalAccess', _12 => _12.formatters, 'optionalAccess', _13 => _13.transactionReceipt]) ||
|
498
|
+
throw new (0, _chunkV5U5S7PQjs.TransactionReceiptNotFoundError)({ hash });
|
499
|
+
return _chunkV5U5S7PQjs.format.call(void 0, receipt, {
|
500
|
+
formatter: _optionalChain([client, 'access', _11 => _11.chain, 'optionalAccess', _12 => _12.formatters, 'optionalAccess', _13 => _13.transactionReceipt]) || _chunkV5U5S7PQjs.formatTransactionReceipt
|
499
501
|
});
|
500
502
|
}
|
501
503
|
|
@@ -507,7 +509,7 @@ async function readContract(client, {
|
|
507
509
|
functionName,
|
508
510
|
...callRequest
|
509
511
|
}) {
|
510
|
-
const calldata =
|
512
|
+
const calldata = _chunkV5U5S7PQjs.encodeFunctionData.call(void 0, {
|
511
513
|
abi,
|
512
514
|
args,
|
513
515
|
functionName
|
@@ -518,16 +520,18 @@ async function readContract(client, {
|
|
518
520
|
to: address,
|
519
521
|
...callRequest
|
520
522
|
});
|
521
|
-
return
|
523
|
+
return _chunkV5U5S7PQjs.decodeFunctionResult.call(void 0, {
|
522
524
|
abi,
|
525
|
+
args,
|
523
526
|
functionName,
|
524
527
|
data: data || "0x"
|
525
528
|
});
|
526
529
|
} catch (err) {
|
527
|
-
throw
|
530
|
+
throw _chunkV5U5S7PQjs.getContractError.call(void 0, err, {
|
528
531
|
abi,
|
529
532
|
address,
|
530
533
|
args,
|
534
|
+
docsPath: "/docs/contract/readContract",
|
531
535
|
functionName
|
532
536
|
});
|
533
537
|
}
|
@@ -592,12 +596,12 @@ function poll(fn, { emitOnBegin, initialWaitTime, interval }) {
|
|
592
596
|
if (emitOnBegin)
|
593
597
|
data = await fn({ unpoll: unwatch });
|
594
598
|
const initialWait = await _asyncNullishCoalesce(await _optionalChain([initialWaitTime, 'optionalCall', _17 => _17(data)]), async () => ( interval));
|
595
|
-
await
|
599
|
+
await _chunkV5U5S7PQjs.wait.call(void 0, initialWait);
|
596
600
|
const poll2 = async () => {
|
597
601
|
if (!active)
|
598
602
|
return;
|
599
603
|
await fn({ unpoll: unwatch });
|
600
|
-
await
|
604
|
+
await _chunkV5U5S7PQjs.wait.call(void 0, interval);
|
601
605
|
poll2();
|
602
606
|
};
|
603
607
|
poll2();
|
@@ -780,7 +784,7 @@ async function waitForTransactionReceipt(client, {
|
|
780
784
|
return new Promise((resolve, reject) => {
|
781
785
|
if (timeout)
|
782
786
|
setTimeout(
|
783
|
-
() => reject(new (0,
|
787
|
+
() => reject(new (0, _chunkV5U5S7PQjs.WaitForTransactionReceiptTimeoutError)({ hash })),
|
784
788
|
timeout
|
785
789
|
);
|
786
790
|
const unobserve = observe(
|
@@ -810,7 +814,7 @@ async function waitForTransactionReceipt(client, {
|
|
810
814
|
return;
|
811
815
|
done(() => emit.resolve(receipt));
|
812
816
|
} catch (err) {
|
813
|
-
if (transaction && (err instanceof
|
817
|
+
if (transaction && (err instanceof _chunkV5U5S7PQjs.TransactionNotFoundError || err instanceof _chunkV5U5S7PQjs.TransactionReceiptNotFoundError)) {
|
814
818
|
replacedTransaction = transaction;
|
815
819
|
const block = await getBlock(client, {
|
816
820
|
blockNumber,
|
@@ -886,4 +890,4 @@ async function waitForTransactionReceipt(client, {
|
|
886
890
|
|
887
891
|
|
888
892
|
exports.call = call; exports.simulateContract = simulateContract; exports.createPendingTransactionFilter = createPendingTransactionFilter; exports.createBlockFilter = createBlockFilter; exports.createEventFilter = createEventFilter; exports.createContractEventFilter = createContractEventFilter; exports.deployContract = deployContract; exports.estimateGas = estimateGas; exports.getBalance = getBalance; exports.getBlock = getBlock; exports.getBlockNumberCache = getBlockNumberCache; exports.getBlockNumber = getBlockNumber; exports.getBlockTransactionCount = getBlockTransactionCount; exports.getBytecode = getBytecode; exports.getChainId = getChainId; exports.getFeeHistory = getFeeHistory; exports.getFilterChanges = getFilterChanges; exports.getFilterLogs = getFilterLogs; exports.getGasPrice = getGasPrice; exports.getLogs = getLogs; exports.getStorageAt = getStorageAt; exports.getTransaction = getTransaction; exports.getTransactionConfirmations = getTransactionConfirmations; exports.getTransactionCount = getTransactionCount; exports.getTransactionReceipt = getTransactionReceipt; exports.readContract = readContract; exports.uninstallFilter = uninstallFilter; exports.waitForTransactionReceipt = waitForTransactionReceipt; exports.watchBlockNumber = watchBlockNumber; exports.watchBlocks = watchBlocks; exports.watchPendingTransactions = watchPendingTransactions;
|
889
|
-
//# sourceMappingURL=chunk-
|
893
|
+
//# sourceMappingURL=chunk-MVD4Y3AE.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/actions/public/call.ts","../src/actions/public/simulateContract.ts","../src/actions/public/createPendingTransactionFilter.ts","../src/actions/public/createBlockFilter.ts","../src/actions/public/createEventFilter.ts","../src/actions/public/createContractEventFilter.ts","../src/actions/public/deployContract.ts","../src/actions/public/estimateGas.ts","../src/actions/public/getBalance.ts","../src/actions/public/getBlock.ts","../src/actions/public/getBlockNumber.ts","../src/actions/public/getBlockTransactionCount.ts","../src/actions/public/getBytecode.ts","../src/actions/public/getChainId.ts","../src/actions/public/getFeeHistory.ts","../src/actions/public/getFilterChanges.ts","../src/actions/public/getFilterLogs.ts","../src/actions/public/getGasPrice.ts","../src/actions/public/getLogs.ts","../src/actions/public/getStorageAt.ts","../src/actions/public/getTransaction.ts","../src/actions/public/getTransactionConfirmations.ts","../src/actions/public/getTransactionCount.ts","../src/actions/public/getTransactionReceipt.ts","../src/actions/public/readContract.ts","../src/actions/public/uninstallFilter.ts","../src/utils/observe.ts","../src/utils/poll.ts","../src/actions/public/watchBlockNumber.ts","../src/actions/public/watchBlocks.ts","../src/actions/public/watchPendingTransactions.ts","../src/actions/public/waitForTransactionReceipt.ts"],"names":["listeners","cleanup","poll","block"],"mappings":"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","sourcesContent":["import type { PublicClient } from '../../clients'\nimport { InvalidGasArgumentsError } from '../../errors'\nimport type {\n Address,\n BlockTag,\n Chain,\n Formatter,\n Hex,\n MergeIntersectionProperties,\n TransactionRequest,\n} from '../../types'\nimport { extract, Formatted, TransactionRequestFormatter } from '../../utils'\nimport { format, formatTransactionRequest, numberToHex } from '../../utils'\n\nexport type FormattedCall<\n TFormatter extends Formatter | undefined = Formatter,\n> = MergeIntersectionProperties<\n Formatted<TFormatter, TransactionRequest, true>,\n TransactionRequest\n>\n\nexport type CallArgs<TChain extends Chain = Chain> = FormattedCall<\n TransactionRequestFormatter<TChain>\n> & {\n chain?: TChain\n from?: Address\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockNumber?: never\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag\n }\n )\n\nexport type CallResponse = { data: Hex | undefined }\n\nexport async function call<TChain extends Chain>(\n client: PublicClient,\n {\n blockNumber,\n blockTag = 'latest',\n chain,\n from,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n ...rest\n }: CallArgs<TChain>,\n): Promise<CallResponse> {\n if (\n maxFeePerGas !== undefined &&\n maxPriorityFeePerGas !== undefined &&\n maxFeePerGas < maxPriorityFeePerGas\n )\n throw new InvalidGasArgumentsError()\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n\n const formatter = chain?.formatters?.transactionRequest\n const request_ = format(\n {\n from,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { formatter }),\n } as TransactionRequest,\n {\n formatter: formatter || formatTransactionRequest,\n },\n )\n\n const response = await client.request({\n method: 'eth_call',\n params: [request_, blockNumberHex || blockTag],\n })\n if (response === '0x') return { data: undefined }\n return { data: response }\n}\n","import { Abi, Narrow } from 'abitype'\n\nimport type { PublicClient } from '../../clients'\nimport { BaseError } from '../../errors'\nimport type {\n Address,\n Chain,\n ContractConfig,\n ExtractArgsFromAbi,\n ExtractResultFromAbi,\n ExtractFunctionNameFromAbi,\n GetValue,\n} from '../../types'\nimport {\n EncodeFunctionDataArgs,\n decodeFunctionResult,\n encodeFunctionData,\n getContractError,\n DecodeFunctionResultArgs,\n} from '../../utils'\nimport { WriteContractArgs } from '../wallet'\nimport { call, CallArgs } from './call'\n\nexport type SimulateContractArgs<\n TChain extends Chain = Chain,\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n> = Omit<CallArgs<TChain>, 'to' | 'data' | 'value'> &\n ContractConfig<TAbi, TFunctionName, 'payable' | 'nonpayable'> & {\n value?: GetValue<TAbi, TFunctionName, CallArgs<TChain>['value']>\n }\n\nexport type SimulateContractResponse<\n TChain extends Chain = Chain,\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = string,\n> = {\n result: ExtractResultFromAbi<TAbi, TFunctionName>\n request: WriteContractArgs<TChain, TAbi, TFunctionName> &\n ContractConfig<TAbi, TFunctionName, 'payable' | 'nonpayable'>\n}\n\nexport async function simulateContract<\n TChain extends Chain,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n>(\n client: PublicClient,\n {\n abi,\n address,\n args,\n functionName,\n ...callRequest\n }: SimulateContractArgs<TChain, TAbi, TFunctionName>,\n): Promise<SimulateContractResponse<TChain, TAbi, TFunctionName>> {\n const calldata = encodeFunctionData({\n abi,\n args,\n functionName,\n } as unknown as EncodeFunctionDataArgs<TAbi, TFunctionName>)\n try {\n const { data } = await call(client, {\n data: calldata,\n to: address,\n ...callRequest,\n } as unknown as CallArgs<TChain>)\n const result = decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n } as DecodeFunctionResultArgs)\n return {\n result,\n request: {\n abi,\n address,\n args,\n functionName,\n ...callRequest,\n },\n } as unknown as SimulateContractResponse<TChain, TAbi, TFunctionName>\n } catch (err) {\n throw getContractError(err as BaseError, {\n abi: abi as Abi,\n address,\n args,\n docsPath: '/docs/contract/simulateContract',\n functionName,\n sender: callRequest.from,\n })\n }\n}\n","import type { PublicClient } from '../../clients'\n\nimport type { Filter } from '../../types'\n\nexport type CreatePendingTransactionFilterResponse = Filter<'transaction'>\n\nexport async function createPendingTransactionFilter(\n client: PublicClient,\n): Promise<CreatePendingTransactionFilterResponse> {\n const id = await client.request({\n method: 'eth_newPendingTransactionFilter',\n })\n return { id, type: 'transaction' }\n}\n","import type { PublicClient } from '../../clients'\n\nimport type { Filter } from '../../types'\n\nexport type CreateBlockFilterResponse = Filter<'block'>\n\nexport async function createBlockFilter(\n client: PublicClient,\n): Promise<CreateBlockFilterResponse> {\n const id = await client.request({\n method: 'eth_newBlockFilter',\n })\n return { id, type: 'block' }\n}\n","import type { PublicClient } from '../../clients'\n\nimport type {\n Address,\n BlockNumber,\n BlockTag,\n EventDefinition,\n ExtractArgsFromEventDefinition,\n Filter,\n LogTopic,\n} from '../../types'\nimport { getEventSignature, numberToHex } from '../../utils'\n\nexport type EventFilterArgs<TEventDefinition extends EventDefinition> =\n ExtractArgsFromEventDefinition<TEventDefinition>\n\nexport type CreateEventFilterArgs<TEventDefinition extends EventDefinition> = {\n address?: Address | Address[]\n fromBlock?: BlockNumber | BlockTag\n toBlock?: BlockNumber | BlockTag\n} & (\n | {\n event: TEventDefinition\n args?: EventFilterArgs<TEventDefinition>\n }\n | {\n event?: never\n args?: never\n }\n)\nexport type CreateEventFilterResponse = Filter<'event'>\n\nexport async function createEventFilter<\n TEventDefinition extends EventDefinition,\n>(\n client: PublicClient,\n {\n address,\n event,\n args,\n fromBlock,\n toBlock,\n }: CreateEventFilterArgs<TEventDefinition> = {},\n): Promise<CreateEventFilterResponse> {\n let topics: LogTopic[] = []\n if (event) {\n topics = buildFilterTopics({ event, args })\n }\n const id = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock:\n typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n ...(topics.length ? { topics } : {}),\n },\n ],\n })\n return { id, type: 'event' }\n}\n\nexport function buildFilterTopics<TEventDefinition extends EventDefinition,>({\n event,\n args: _args,\n}: {\n event: TEventDefinition\n args?: EventFilterArgs<TEventDefinition>\n}) {\n const signature = getEventSignature(event)\n\n // TODO: support args\n\n return [signature]\n}\n","import { Abi } from 'abitype'\nimport type { PublicClient } from '../../clients'\n\nimport type {\n Address,\n BlockNumber,\n BlockTag,\n EventDefinition,\n ExtractArgsFromEventDefinition,\n ExtractEventArgsFromAbi,\n ExtractEventNameFromAbi,\n Filter,\n} from '../../types'\nimport {\n encodeEventTopics,\n EncodeEventTopicsArgs,\n numberToHex,\n} from '../../utils'\n\nexport type EventFilterArgs<TEventDefinition extends EventDefinition> =\n ExtractArgsFromEventDefinition<TEventDefinition>\n\nexport type CreateContractEventFilterArgs<\n TAbi extends Abi | readonly unknown[] = Abi,\n TEventName extends string = any,\n> = {\n address?: Address | Address[]\n abi: TAbi\n eventName: ExtractEventNameFromAbi<TAbi, TEventName>\n fromBlock?: BlockNumber | BlockTag\n toBlock?: BlockNumber | BlockTag\n} & ExtractEventArgsFromAbi<TAbi, TEventName>\nexport type CreateContractEventFilterResponse = Filter<'event'>\n\nexport async function createContractEventFilter<\n TAbi extends Abi | readonly unknown[] = Abi,\n TEventName extends string = any,\n>(\n client: PublicClient,\n {\n address,\n abi,\n args,\n eventName,\n fromBlock,\n toBlock,\n }: CreateContractEventFilterArgs<TAbi, TEventName>,\n): Promise<CreateContractEventFilterResponse> {\n const topics = eventName\n ? encodeEventTopics({\n abi,\n args,\n eventName,\n } as unknown as EncodeEventTopicsArgs)\n : undefined\n const id = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock:\n typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n topics,\n },\n ],\n })\n return { id, type: 'event' }\n}\n","import { Abi, Narrow } from 'abitype'\nimport { WalletClient } from '../../clients'\n\nimport { Chain, ExtractConstructorArgsFromAbi, Hex } from '../../types'\nimport { encodeDeployData } from '../../utils'\nimport {\n sendTransaction,\n SendTransactionArgs,\n SendTransactionResponse,\n} from '../wallet'\n\nexport type DeployContractArgs<\n TChain extends Chain = Chain,\n TAbi extends Abi | readonly unknown[] = Abi,\n> = Omit<\n SendTransactionArgs<TChain>,\n 'accessList' | 'to' | 'data' | 'value'\n> & {\n abi: Narrow<TAbi>\n bytecode: Hex\n} & ExtractConstructorArgsFromAbi<TAbi>\n\nexport type DeployContractResponse = SendTransactionResponse\n\nexport function deployContract<TChain extends Chain, TAbi extends Abi>(\n walletClient: WalletClient,\n { abi, args, bytecode, ...request }: DeployContractArgs<TChain, TAbi>,\n): Promise<DeployContractResponse> {\n const calldata = encodeDeployData({\n abi,\n args,\n bytecode,\n } as unknown as DeployContractArgs<TChain, TAbi>)\n return sendTransaction(walletClient, {\n ...request,\n data: calldata,\n } as unknown as SendTransactionArgs<TChain>)\n}\n","import type { PublicClient } from '../../clients'\nimport type {\n BlockTag,\n EstimateGasParameters,\n RpcEstimateGasParameters,\n} from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type EstimateGasArgs = EstimateGasParameters &\n (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockNumber?: never\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag\n }\n )\n\nexport type EstimateGasResponse = bigint\n\n/**\n * @description Estimates the gas necessary to complete a transaction without submitting it to the network.\n */\nexport async function estimateGas(\n client: PublicClient,\n {\n blockNumber,\n blockTag = 'latest',\n data,\n from,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n to,\n value,\n }: EstimateGasArgs,\n): Promise<EstimateGasResponse> {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const parameters = {\n data,\n from,\n gas: gas ? numberToHex(gas) : undefined,\n gasPrice: gasPrice ? numberToHex(gasPrice) : undefined,\n maxFeePerGas: maxFeePerGas ? numberToHex(maxFeePerGas) : undefined,\n maxPriorityFeePerGas: maxPriorityFeePerGas\n ? numberToHex(maxPriorityFeePerGas)\n : undefined,\n to,\n value: value ? numberToHex(value) : undefined,\n } as RpcEstimateGasParameters\n const balance = await client.request({\n method: 'eth_estimateGas',\n params: [parameters, blockNumberHex || blockTag],\n })\n return BigInt(balance)\n}\n","import type { PublicClient } from '../../clients'\nimport type { Address, BlockTag } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type GetBalanceArgs = {\n /** The address of the account. */\n address: Address\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockNumber?: never\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag\n }\n)\n\nexport type GetBalanceResponse = bigint\n\n/**\n * @description Returns the balance of an address in wei.\n */\nexport async function getBalance(\n client: PublicClient,\n { address, blockNumber, blockTag = 'latest' }: GetBalanceArgs,\n): Promise<GetBalanceResponse> {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n\n const balance = await client.request({\n method: 'eth_getBalance',\n params: [address, blockNumberHex || blockTag],\n })\n return BigInt(balance)\n}\n","import type { PublicClient } from '../../clients'\nimport { BlockNotFoundError } from '../../errors'\nimport type { BlockTag, Chain, Hash, RpcBlock } from '../../types'\nimport type { BlockFormatter, FormattedBlock } from '../../utils'\nimport { format, formatBlock, numberToHex } from '../../utils'\n\nexport type GetBlockArgs = {\n /** Whether or not to include transaction data in the response. */\n includeTransactions?: boolean\n} & (\n | {\n /** Hash of the block. */\n blockHash?: Hash\n blockNumber?: never\n blockTag?: never\n }\n | {\n blockHash?: never\n /** The block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockHash?: never\n blockNumber?: never\n /** The block tag. Defaults to 'latest'. */\n blockTag?: BlockTag\n }\n)\n\nexport type GetBlockResponse<TChain extends Chain = Chain> = FormattedBlock<\n BlockFormatter<TChain>\n>\n\nexport async function getBlock<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n blockHash,\n blockNumber,\n blockTag = 'latest',\n includeTransactions = false,\n }: GetBlockArgs = {},\n): Promise<GetBlockResponse<TChain>> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let block: RpcBlock | null = null\n if (blockHash) {\n block = await client.request({\n method: 'eth_getBlockByHash',\n params: [blockHash, includeTransactions],\n })\n } else {\n block = await client.request({\n method: 'eth_getBlockByNumber',\n params: [blockNumberHex || blockTag, includeTransactions],\n })\n }\n\n if (!block) throw new BlockNotFoundError({ blockHash, blockNumber })\n\n return format(block, {\n formatter: client.chain?.formatters?.block || formatBlock,\n })\n}\n","import type { PublicClient } from '../../clients'\nimport { getCache, withCache } from '../../utils/promise'\n\nexport type GetBlockNumberArgs = {\n /** The maximum age (in ms) of the cached value. */\n maxAge?: number\n}\n\nexport type GetBlockNumberResponse = bigint\n\nconst cacheKey = (id: string) => `blockNumber.${id}`\n\nexport function getBlockNumberCache(id: string) {\n return getCache(cacheKey(id))\n}\n\n/**\n * @description Returns the number of the most recent block seen.\n */\nexport async function getBlockNumber(\n client: PublicClient,\n { maxAge = client.pollingInterval }: GetBlockNumberArgs = {},\n): Promise<GetBlockNumberResponse> {\n const blockNumberHex = await withCache(\n () =>\n client.request({\n method: 'eth_blockNumber',\n }),\n { cacheKey: cacheKey(client.uid), maxAge },\n )\n return BigInt(blockNumberHex)\n}\n","import type { PublicClient } from '../../clients'\nimport type { BlockTag, Chain, Hash, Quantity } from '../../types'\nimport { hexToNumber, numberToHex } from '../../utils'\n\nexport type GetBlockTransactionCountArgs =\n | {\n /** Hash of the block. */\n blockHash?: Hash\n blockNumber?: never\n blockTag?: never\n }\n | {\n blockHash?: never\n /** The block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockHash?: never\n blockNumber?: never\n /** The block tag. Defaults to 'latest'. */\n blockTag?: BlockTag\n }\n\nexport type GetBlockTransactionCountResponse = number\n\nexport async function getBlockTransactionCount<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n blockHash,\n blockNumber,\n blockTag = 'latest',\n }: GetBlockTransactionCountArgs = {},\n): Promise<GetBlockTransactionCountResponse> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let count: Quantity | null = null\n if (blockHash) {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByHash',\n params: [blockHash],\n })\n } else {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByNumber',\n params: [blockNumberHex || blockTag],\n })\n }\n\n return hexToNumber(count)\n}\n","import { PublicClient } from '../../clients'\nimport { Address, BlockTag, Hex } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type GetBytecodeArgs = {\n address: Address\n} & (\n | {\n blockNumber?: never\n blockTag?: BlockTag\n }\n | {\n blockNumber?: bigint\n blockTag?: never\n }\n)\n\nexport type GetBytecodeResponse = Hex | undefined\n\nexport async function getBytecode(\n client: PublicClient,\n { address, blockNumber, blockTag = 'latest' }: GetBytecodeArgs,\n): Promise<GetBytecodeResponse> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n const hex = await client.request({\n method: 'eth_getCode',\n params: [address, blockNumberHex || blockTag],\n })\n if (hex === '0x') return undefined\n return hex\n}\n","import type { PublicClient } from '../../clients'\nimport { hexToNumber } from '../../utils'\n\nexport async function getChainId(client: PublicClient) {\n const chainIdHex = await client.request({ method: 'eth_chainId' })\n return hexToNumber(chainIdHex)\n}\n","import type { PublicClient } from '../../clients'\nimport type { BlockTag, FeeHistory } from '../../types'\n\nimport { numberToHex } from '../../utils'\nimport { formatFeeHistory } from '../../utils/formatters'\n\nexport type GetFeeHistoryArgs = {\n blockCount: number\n rewardPercentiles: number[]\n} & (\n | {\n blockNumber?: never\n blockTag?: BlockTag\n }\n | {\n blockNumber?: bigint\n blockTag?: never\n }\n)\nexport type GetFeeHistoryResponse = FeeHistory\n\n/**\n * @description Returns a collection of historical gas information.\n */\nexport async function getFeeHistory(\n client: PublicClient,\n {\n blockCount,\n blockNumber,\n blockTag = 'latest',\n rewardPercentiles,\n }: GetFeeHistoryArgs,\n): Promise<GetFeeHistoryResponse> {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const feeHistory = await client.request({\n method: 'eth_feeHistory',\n params: [\n numberToHex(blockCount),\n blockNumberHex || blockTag,\n rewardPercentiles,\n ],\n })\n return formatFeeHistory(feeHistory)\n}\n","import type { PublicClient } from '../../clients'\nimport type { Filter, FilterType, Hash, Log } from '../../types'\n\nimport { formatLog } from '../../utils/formatters/log'\n\nexport type GetFilterChangesArgs<TFilterType extends FilterType> = {\n filter: Filter<TFilterType>\n}\nexport type GetFilterChangesResponse<TFilterType extends FilterType> =\n TFilterType extends 'event' ? Log[] : Hash[]\n\nexport async function getFilterChanges<TFilterType extends FilterType>(\n client: PublicClient,\n { filter }: GetFilterChangesArgs<TFilterType>,\n) {\n const logs = await client.request({\n method: 'eth_getFilterChanges',\n params: [filter.id],\n })\n return logs.map((log) =>\n typeof log === 'string' ? log : formatLog(log),\n ) as GetFilterChangesResponse<TFilterType>\n}\n","import type { PublicClient } from '../../clients'\nimport type { Filter, FilterType, Hash, Log } from '../../types'\n\nimport { formatLog } from '../../utils/formatters/log'\n\nexport type GetFilterLogsArgs = {\n filter: Filter<'event'>\n}\nexport type GetFilterLogsResponse = Log[]\n\nexport async function getFilterLogs<TFilterType extends FilterType>(\n client: PublicClient,\n { filter }: GetFilterLogsArgs,\n): Promise<GetFilterLogsResponse> {\n const logs = await client.request({\n method: 'eth_getFilterLogs',\n params: [filter.id],\n })\n return logs.map(formatLog)\n}\n","import type { PublicClient } from '../../clients'\n\nexport type GetGasPriceResponse = bigint\n\n/**\n * @description Returns the current price of gas (in wei).\n */\nexport async function getGasPrice(\n client: PublicClient,\n): Promise<GetGasPriceResponse> {\n const gasPrice = await client.request({\n method: 'eth_gasPrice',\n })\n return BigInt(gasPrice)\n}\n","import type { PublicClient } from '../../clients'\nimport type {\n Log,\n RpcLog,\n Address,\n BlockNumber,\n BlockTag,\n EventDefinition,\n Hash,\n LogTopic,\n} from '../../types'\nimport { numberToHex } from '../../utils'\nimport { formatLog } from '../../utils/formatters/log'\nimport { buildFilterTopics, EventFilterArgs } from './createEventFilter'\n\nexport type GetLogsArgs<TEventDefinition extends EventDefinition> = {\n /** Address or list of addresses from which logs originated */\n address?: Address | Address[]\n} & (\n | { event: TEventDefinition; args?: EventFilterArgs<TEventDefinition> }\n | {\n event?: never\n args?: never\n }\n) &\n (\n | {\n /** Block number or tag after which to include logs */\n fromBlock?: BlockNumber<bigint> | BlockTag\n /** Block number or tag before which to include logs */\n toBlock?: BlockNumber<bigint> | BlockTag\n blockHash?: never\n }\n | {\n fromBlock?: never\n toBlock?: never\n /** Hash of block to include logs from */\n blockHash?: Hash\n }\n )\n\nexport type GetLogsResponse = Log[]\n\n/**\n * @description Returns a collection of event logs.\n */\nexport async function getLogs<TEventDefinition extends EventDefinition,>(\n client: PublicClient,\n {\n address,\n blockHash,\n fromBlock,\n toBlock,\n event,\n args,\n }: GetLogsArgs<TEventDefinition> = {},\n): Promise<GetLogsResponse> {\n let topics: LogTopic[] = []\n if (event) {\n topics = buildFilterTopics({ event, args })\n }\n let logs: RpcLog[]\n if (blockHash) {\n logs = await client.request({\n method: 'eth_getLogs',\n params: [{ address, topics, blockHash }],\n })\n } else {\n logs = await client.request({\n method: 'eth_getLogs',\n params: [\n {\n address,\n topics,\n fromBlock:\n typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n },\n ],\n })\n }\n\n return logs.map(formatLog)\n}\n","import { PublicClient } from '../../clients'\nimport { Address, BlockTag, Hex } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type GetStorageAtArgs = {\n address: Address\n slot: Hex\n} & (\n | {\n blockNumber?: never\n blockTag?: BlockTag\n }\n | {\n blockNumber?: bigint\n blockTag?: never\n }\n)\n\nexport type GetStorageAtResponse = Hex | undefined\n\nexport async function getStorageAt(\n client: PublicClient,\n { address, blockNumber, blockTag = 'latest', slot }: GetStorageAtArgs,\n): Promise<GetStorageAtResponse> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n const data = await client.request({\n method: 'eth_getStorageAt',\n params: [address, slot, blockNumberHex || blockTag],\n })\n return data\n}\n","import type { PublicClient } from '../../clients'\nimport { TransactionNotFoundError } from '../../errors'\nimport type { BlockTag, Chain, Hash, RpcTransaction } from '../../types'\nimport { format, numberToHex } from '../../utils'\nimport type {\n FormattedTransaction,\n TransactionFormatter,\n} from '../../utils/formatters/transaction'\nimport { formatTransaction } from '../../utils/formatters/transaction'\n\nexport type GetTransactionArgs =\n | {\n /** The block hash */\n blockHash: Hash\n blockNumber?: never\n blockTag?: never\n hash?: never\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: never\n /** The block number */\n blockNumber: bigint\n blockTag?: never\n hash?: never\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: never\n blockNumber?: never\n /** The block tag. */\n blockTag: BlockTag\n hash?: never\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: never\n blockNumber?: never\n blockTag?: never\n /** The hash of the transaction. */\n hash: Hash\n index?: number\n }\n\nexport type GetTransactionResponse<TChain extends Chain = Chain> =\n FormattedTransaction<TransactionFormatter<TChain>>\n\n/** @description Returns information about a transaction given a hash or block identifier. */\nexport async function getTransaction<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n blockHash,\n blockNumber,\n blockTag = 'latest',\n hash,\n index,\n }: GetTransactionArgs,\n): Promise<GetTransactionResponse<TChain>> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let transaction: RpcTransaction | null = null\n if (hash) {\n transaction = await client.request({\n method: 'eth_getTransactionByHash',\n params: [hash],\n })\n } else if (blockHash) {\n transaction = await client.request({\n method: 'eth_getTransactionByBlockHashAndIndex',\n params: [blockHash, numberToHex(index)],\n })\n } else if (blockNumberHex || blockTag) {\n transaction = await client.request({\n method: 'eth_getTransactionByBlockNumberAndIndex',\n params: [blockNumberHex || blockTag, numberToHex(index)],\n })\n }\n\n if (!transaction)\n throw new TransactionNotFoundError({\n blockHash,\n blockNumber,\n blockTag,\n hash,\n index,\n })\n\n return format(transaction, {\n formatter: client.chain?.formatters?.transaction || formatTransaction,\n })\n}\n","import type { PublicClient } from '../../clients'\nimport type { Chain, Hash } from '../../types'\nimport type {\n FormattedTransactionReceipt,\n TransactionReceiptFormatter,\n} from '../../utils'\nimport { getBlockNumber } from './getBlockNumber'\nimport { getTransaction } from './getTransaction'\n\nexport type GetTransactionConfirmationsArgs<TChain extends Chain> =\n | {\n /** The transaction hash. */\n hash: Hash\n transactionReceipt?: never\n }\n | {\n hash?: never\n /** The transaction receipt. */\n transactionReceipt: FormattedTransactionReceipt<\n TransactionReceiptFormatter<TChain>\n >\n }\n\nexport type GetTransactionConfirmationsResponse = bigint\n\nexport async function getTransactionConfirmations<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n { hash, transactionReceipt }: GetTransactionConfirmationsArgs<TChain>,\n): Promise<GetTransactionConfirmationsResponse> {\n const [blockNumber, transaction] = await Promise.all([\n getBlockNumber(client),\n hash ? getTransaction(client, { hash }) : undefined,\n ])\n const transactionBlockNumber =\n transactionReceipt?.blockNumber || transaction?.blockNumber\n if (!transactionBlockNumber) return 0n\n return blockNumber - transactionBlockNumber! + 1n\n}\n","import type { PublicClient } from '../../clients'\nimport type { Address, BlockTag } from '../../types'\nimport { hexToNumber, numberToHex } from '../../utils'\n\nexport type GetTransactionCountArgs = {\n /** The account address. */\n address: Address\n} & (\n | {\n /** The block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockNumber?: never\n /** The block tag. Defaults to 'latest'. */\n blockTag?: BlockTag\n }\n)\nexport type GetTransactionCountResponse = number\n\n/**\n * @description Returns the number of transactions an account has broadcast / sent.\n */\nexport async function getTransactionCount(\n client: PublicClient,\n { address, blockTag = 'latest', blockNumber }: GetTransactionCountArgs,\n): Promise<GetTransactionCountResponse> {\n const count = await client.request({\n method: 'eth_getTransactionCount',\n params: [address, blockNumber ? numberToHex(blockNumber) : blockTag],\n })\n return hexToNumber(count)\n}\n","import type { PublicClient } from '../../clients'\nimport { TransactionReceiptNotFoundError } from '../../errors'\nimport type { Chain, Hash } from '../../types'\nimport { format } from '../../utils'\nimport type {\n FormattedTransactionReceipt,\n TransactionReceiptFormatter,\n} from '../../utils/formatters/transactionReceipt'\nimport { formatTransactionReceipt } from '../../utils/formatters/transactionReceipt'\n\nexport type GetTransactionReceiptArgs = {\n /** The hash of the transaction. */\n hash: Hash\n}\n\nexport type GetTransactionReceiptResponse<TChain extends Chain = Chain> =\n FormattedTransactionReceipt<TransactionReceiptFormatter<TChain>>\n\nexport async function getTransactionReceipt<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n { hash }: GetTransactionReceiptArgs,\n) {\n const receipt = await client.request({\n method: 'eth_getTransactionReceipt',\n params: [hash],\n })\n\n if (!receipt) throw new TransactionReceiptNotFoundError({ hash })\n\n return format(receipt, {\n formatter:\n client.chain?.formatters?.transactionReceipt || formatTransactionReceipt,\n }) as GetTransactionReceiptResponse<TChain>\n}\n","import { Abi } from 'abitype'\n\nimport type { PublicClient } from '../../clients'\nimport { BaseError } from '../../errors'\nimport type {\n ContractConfig,\n ExtractResultFromAbi,\n Formatter,\n} from '../../types'\nimport {\n EncodeFunctionDataArgs,\n decodeFunctionResult,\n encodeFunctionData,\n getContractError,\n DecodeFunctionResultArgs,\n} from '../../utils'\nimport { call, CallArgs, FormattedCall } from './call'\n\nexport type FormattedReadContract<\n TFormatter extends Formatter | undefined = Formatter,\n> = FormattedCall<TFormatter>\n\nexport type ReadContractArgs<\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = string,\n> = Pick<CallArgs, 'blockNumber' | 'blockTag'> &\n ContractConfig<TAbi, TFunctionName, 'view' | 'pure'>\n\nexport type ReadContractResponse<\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = string,\n> = ExtractResultFromAbi<TAbi, TFunctionName>\n\nexport async function readContract<\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n>(\n client: PublicClient,\n {\n abi,\n address,\n args,\n functionName,\n ...callRequest\n }: ReadContractArgs<TAbi, TFunctionName>,\n): Promise<ReadContractResponse<TAbi, TFunctionName>> {\n const calldata = encodeFunctionData({\n abi,\n args,\n functionName,\n } as unknown as EncodeFunctionDataArgs<TAbi, TFunctionName>)\n try {\n const { data } = await call(client, {\n data: calldata,\n to: address,\n ...callRequest,\n } as unknown as CallArgs)\n return decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n } as DecodeFunctionResultArgs<TAbi, TFunctionName>)\n } catch (err) {\n throw getContractError(err as BaseError, {\n abi: abi as Abi,\n address,\n args,\n docsPath: '/docs/contract/readContract',\n functionName,\n })\n }\n}\n","import type { PublicClient } from '../../clients'\nimport type { Filter } from '../../types'\n\nexport type UninstallFilterArgs = {\n filter: Filter<any>\n}\nexport type UninstallFilterResponse = boolean\n\nexport async function uninstallFilter(\n client: PublicClient,\n { filter }: UninstallFilterArgs,\n): Promise<UninstallFilterResponse> {\n return client.request({\n method: 'eth_uninstallFilter',\n params: [filter.id],\n })\n}\n","import type { MaybePromise } from '../types/utils'\n\ntype Callback = ((...args: any[]) => any) | undefined\ntype Callbacks = Record<string, Callback>\n\nconst listenersCache = new Map<string, { id: number; fns: Callbacks }[]>()\nconst cleanupCache = new Map<string, () => void>()\n\ntype EmitFunction<TCallbacks extends Callbacks> = (\n emit: TCallbacks,\n) => MaybePromise<void | (() => void)>\n\nlet callbackCount = 0\n\n/**\n * @description Sets up an observer for a given function. If another function\n * is set up under the same observer id, the function will only be called once\n * for both instances of the observer.\n */\nexport function observe<TCallbacks extends Callbacks>(\n observerId: string,\n callbacks: TCallbacks,\n fn: EmitFunction<TCallbacks>,\n) {\n const callbackId = ++callbackCount\n\n const getListeners = () => listenersCache.get(observerId) || []\n\n const unsubscribe = () => {\n const listeners = getListeners()\n listenersCache.set(\n observerId,\n listeners.filter((cb: any) => cb.id !== callbackId),\n )\n }\n\n const unwatch = () => {\n const cleanup = cleanupCache.get(observerId)\n if (getListeners().length === 1 && cleanup) cleanup()\n unsubscribe()\n }\n\n const listeners = getListeners()\n listenersCache.set(observerId, [\n ...listeners,\n { id: callbackId, fns: callbacks },\n ])\n\n if (listeners && listeners.length > 0) return unwatch\n\n let emit: TCallbacks = {} as TCallbacks\n for (const key in callbacks) {\n emit[key] = ((\n ...args: Parameters<NonNullable<TCallbacks[keyof TCallbacks]>>\n ) => {\n const listeners = getListeners()\n if (listeners.length === 0) return\n listeners.forEach((listener) => listener.fns[key]?.(...args))\n }) as TCallbacks[Extract<keyof TCallbacks, string>]\n }\n\n const cleanup = fn(emit)\n if (typeof cleanup === 'function') cleanupCache.set(observerId, cleanup)\n\n return unwatch\n}\n","import { wait } from './wait'\n\ntype PollOptions<TData> = {\n // Whether or not to emit when the polling starts.\n emitOnBegin?: boolean\n // The initial wait time (in ms) before polling.\n initialWaitTime?: (data: TData | void) => Promise<number>\n // The interval (in ms).\n interval: number\n}\n\n/**\n * @description Polls a function at a specified interval.\n */\nexport function poll<TData>(\n fn: ({ unpoll }: { unpoll: () => void }) => Promise<TData | void>,\n { emitOnBegin, initialWaitTime, interval }: PollOptions<TData>,\n) {\n let active = true\n\n const unwatch = () => (active = false)\n\n const watch = async () => {\n let data: TData | void\n if (emitOnBegin) data = await fn({ unpoll: unwatch })\n\n const initialWait = (await initialWaitTime?.(data)) ?? interval\n await wait(initialWait)\n\n const poll = async () => {\n if (!active) return\n await fn({ unpoll: unwatch })\n await wait(interval)\n poll()\n }\n\n poll()\n }\n watch()\n\n return unwatch\n}\n","import type { PublicClient } from '../../clients'\nimport { observe } from '../../utils/observe'\nimport { poll } from '../../utils/poll'\nimport type { GetBlockNumberResponse } from './getBlockNumber'\nimport { getBlockNumber } from './getBlockNumber'\n\nexport type OnBlockNumberResponse = GetBlockNumberResponse\nexport type OnBlockNumber = (\n blockNumber: OnBlockNumberResponse,\n prevBlockNumber: OnBlockNumberResponse | undefined,\n) => void\n\nexport type WatchBlockNumberArgs = {\n /** Whether or not to emit the missed block numbers to the callback. */\n emitMissed?: boolean\n /** Whether or not to emit the latest block number to the callback when the subscription opens. */\n emitOnBegin?: boolean\n /** The callback to call when a new block number is received. */\n onBlockNumber: OnBlockNumber\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: (error: Error) => void\n /** Polling frequency (in ms). Defaults to Client's pollingInterval config. */\n pollingInterval?: number\n}\n\n/** @description Watches and returns incoming block numbers. */\nexport function watchBlockNumber(\n client: PublicClient,\n {\n emitOnBegin = false,\n emitMissed = false,\n onBlockNumber,\n onError,\n pollingInterval = client.pollingInterval,\n }: WatchBlockNumberArgs,\n) {\n const observerId = JSON.stringify([\n 'watchBlockNumber',\n client.uid,\n emitOnBegin,\n emitMissed,\n pollingInterval,\n ])\n\n let prevBlockNumber: GetBlockNumberResponse | undefined\n\n return observe(observerId, { onBlockNumber, onError }, (emit) =>\n poll(\n async () => {\n try {\n const blockNumber = await getBlockNumber(client, { maxAge: 0 })\n\n if (prevBlockNumber) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (blockNumber === prevBlockNumber) return\n\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (blockNumber - prevBlockNumber > 1 && emitMissed) {\n for (let i = prevBlockNumber + 1n; i < blockNumber; i++) {\n emit.onBlockNumber(i, prevBlockNumber)\n prevBlockNumber = i\n }\n }\n }\n prevBlockNumber = blockNumber\n emit.onBlockNumber(blockNumber, prevBlockNumber)\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin,\n interval: pollingInterval,\n },\n ),\n )\n}\n","import type { PublicClient } from '../../clients'\nimport type { BlockTag, Chain } from '../../types'\nimport { observe } from '../../utils/observe'\nimport { poll } from '../../utils/poll'\nimport type { GetBlockResponse } from './getBlock'\nimport { getBlock } from './getBlock'\n\nexport type OnBlockResponse<\n TChain extends Chain = Chain,\n TIncludeTransactions = false,\n> = Omit<\n GetBlockResponse<TChain>,\n TIncludeTransactions extends false ? 'transactions' : ''\n>\nexport type OnBlock<\n TChain extends Chain = Chain,\n TIncludeTransactions = false,\n> = (\n block: OnBlockResponse<TChain, TIncludeTransactions>,\n prevBlock: OnBlockResponse<TChain, TIncludeTransactions> | undefined,\n) => void\n\nexport type WatchBlocksArgs<TChain extends Chain = Chain> = {\n /** The block tag. Defaults to \"latest\". */\n blockTag?: BlockTag\n /** Whether or not to emit the missed blocks to the callback. */\n emitMissed?: boolean\n /** Whether or not to emit the block to the callback when the subscription opens. */\n emitOnBegin?: boolean\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: (error: Error) => void\n /** Polling frequency (in ms). Defaults to the client's pollingInterval config. */\n pollingInterval?: number\n} & (\n | {\n /** Whether or not to include transaction data in the response. */\n includeTransactions: true\n /** The callback to call when a new block is received. */\n onBlock: OnBlock<TChain, true>\n }\n | {\n /** Whether or not to include transaction data in the response. */\n includeTransactions?: false\n /** The callback to call when a new block is received. */\n onBlock: OnBlock<TChain>\n }\n)\n\n/** @description Watches and returns information for incoming blocks. */\nexport function watchBlocks<\n TChain extends Chain,\n TWatchBlocksArgs extends WatchBlocksArgs<TChain>,\n>(\n client: PublicClient<any, TChain>,\n {\n blockTag = 'latest',\n emitMissed = false,\n emitOnBegin = false,\n onBlock,\n onError,\n includeTransactions = false,\n pollingInterval = client.pollingInterval,\n }: TWatchBlocksArgs,\n) {\n const observerId = JSON.stringify([\n 'watchBlocks',\n client.uid,\n emitMissed,\n emitOnBegin,\n includeTransactions,\n pollingInterval,\n ])\n\n let prevBlock: GetBlockResponse<TChain> | undefined\n\n return observe(observerId, { onBlock, onError }, (emit) =>\n poll(\n async () => {\n try {\n const block = await getBlock(client, {\n blockTag,\n includeTransactions,\n })\n if (block.number && prevBlock?.number) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (block.number === prevBlock.number) return\n\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (block.number - prevBlock.number > 1 && emitMissed) {\n for (let i = prevBlock?.number + 1n; i < block.number; i++) {\n const block = await getBlock(client, {\n blockNumber: i,\n includeTransactions,\n })\n emit.onBlock(block, prevBlock)\n prevBlock = block\n }\n }\n }\n emit.onBlock(block, prevBlock)\n prevBlock = block\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin,\n interval: pollingInterval,\n },\n ),\n )\n}\n","import type { PublicClient } from '../../clients'\nimport type { Filter, Hash } from '../../types'\nimport { observe } from '../../utils/observe'\nimport { poll } from '../../utils/poll'\nimport { createPendingTransactionFilter } from './createPendingTransactionFilter'\nimport { getFilterChanges } from './getFilterChanges'\nimport { uninstallFilter } from './uninstallFilter'\n\nexport type OnTransactionsResponse = Hash[]\nexport type OnTransactions = (transactions: OnTransactionsResponse) => void\n\nexport type WatchPendingTransactionsArgs = {\n /** Whether or not the transaction hashes should be batched on each invocation. */\n batch?: boolean\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: (error: Error) => void\n /** The callback to call when new transactions are received. */\n onTransactions: OnTransactions\n /** Polling frequency (in ms). Defaults to Client's pollingInterval config. */\n pollingInterval?: number\n}\n\nexport function watchPendingTransactions(\n client: PublicClient,\n {\n batch = true,\n onError,\n onTransactions,\n pollingInterval = client.pollingInterval,\n }: WatchPendingTransactionsArgs,\n) {\n const observerId = JSON.stringify([\n 'watchPendingTransactions',\n client.uid,\n batch,\n pollingInterval,\n ])\n\n return observe(observerId, { onTransactions, onError }, (emit) => {\n let filter: Filter<'transaction'>\n\n const unwatch = poll(\n async () => {\n try {\n if (!filter) {\n try {\n filter = await createPendingTransactionFilter(client)\n return\n } catch (err) {\n unwatch()\n throw err\n }\n }\n\n const hashes = await getFilterChanges(client, { filter })\n if (hashes.length === 0) return\n if (batch) emit.onTransactions(hashes)\n else hashes.forEach((hash) => emit.onTransactions([hash]))\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin: true,\n interval: pollingInterval,\n },\n )\n\n return async () => {\n if (filter) await uninstallFilter(client, { filter })\n unwatch()\n }\n })\n}\n","import type { PublicClient } from '../../clients'\nimport {\n TransactionNotFoundError,\n TransactionReceiptNotFoundError,\n WaitForTransactionReceiptTimeoutError,\n} from '../../errors'\nimport type { Chain, Hash, Transaction } from '../../types'\nimport { observe } from '../../utils/observe'\nimport { getBlock, watchBlockNumber } from '../public'\n\nimport type { GetTransactionResponse } from './getTransaction'\nimport { getTransaction } from './getTransaction'\nimport type { GetTransactionReceiptResponse } from './getTransactionReceipt'\nimport { getTransactionReceipt } from './getTransactionReceipt'\n\nexport type ReplacementReason = 'cancelled' | 'replaced' | 'repriced'\nexport type ReplacementResponse<TChain extends Chain = Chain> = {\n reason: ReplacementReason\n replacedTransaction: Transaction\n transaction: Transaction\n transactionReceipt: GetTransactionReceiptResponse<TChain>\n}\n\nexport type WaitForTransactionReceiptResponse<TChain extends Chain = Chain> =\n GetTransactionReceiptResponse<TChain>\n\nexport type WaitForTransactionReceiptArgs<TChain extends Chain = Chain> = {\n /** The number of confirmations (blocks that have passed) to wait before resolving. */\n confirmations?: number\n /** The hash of the transaction. */\n hash: Hash\n onReplaced?: (response: ReplacementResponse<TChain>) => void\n /** Polling frequency (in ms). Defaults to the client's pollingInterval config. */\n pollingInterval?: number\n /** Optional timeout (in milliseconds) to wait before stopping polling. */\n timeout?: number\n}\n\nexport async function waitForTransactionReceipt<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n confirmations = 1,\n hash,\n onReplaced,\n pollingInterval = client.pollingInterval,\n timeout,\n }: WaitForTransactionReceiptArgs<TChain>,\n): Promise<WaitForTransactionReceiptResponse<TChain>> {\n const observerId = JSON.stringify([\n 'waitForTransactionReceipt',\n client.uid,\n hash,\n ])\n\n let transaction: GetTransactionResponse<TChain> | undefined\n let replacedTransaction: GetTransactionResponse<TChain> | undefined\n let receipt: GetTransactionReceiptResponse<TChain>\n\n return new Promise((resolve, reject) => {\n if (timeout)\n setTimeout(\n () => reject(new WaitForTransactionReceiptTimeoutError({ hash })),\n timeout,\n )\n\n const unobserve = observe(\n observerId,\n { onReplaced, resolve, reject },\n (emit) => {\n const unwatch = watchBlockNumber(client, {\n emitMissed: true,\n emitOnBegin: true,\n pollingInterval,\n async onBlockNumber(blockNumber) {\n const done = async (fn: () => void) => {\n unwatch()\n fn()\n unobserve()\n }\n\n try {\n // If we already have a valid receipt, let's check if we have enough\n // confirmations. If we do, then we can resolve.\n if (receipt) {\n if (blockNumber - receipt.blockNumber + 1n < confirmations)\n return\n\n done(() => emit.resolve(receipt))\n return\n }\n\n // Get the transaction to check if it's been replaced.\n transaction = await getTransaction(client, { hash })\n\n // Get the receipt to check if it's been processed.\n receipt = await getTransactionReceipt(client, { hash })\n\n // Check if we have enough confirmations. If not, continue polling.\n if (blockNumber - receipt.blockNumber + 1n < confirmations) return\n\n done(() => emit.resolve(receipt))\n } catch (err) {\n // If the receipt is not found, the transaction will be pending.\n // We need to check if it has potentially been replaced.\n if (\n transaction &&\n (err instanceof TransactionNotFoundError ||\n err instanceof TransactionReceiptNotFoundError)\n ) {\n replacedTransaction = transaction\n\n // Let's retrieve the transactions from the current block.\n const block = await getBlock(client, {\n blockNumber,\n includeTransactions: true,\n })\n\n const replacementTransaction = (\n block.transactions as Transaction[]\n ).find(\n ({ from, nonce }) =>\n from === replacedTransaction!.from &&\n nonce === replacedTransaction!.nonce,\n )\n\n // If we couldn't find a replacement transaction, continue polling.\n if (!replacementTransaction) return\n\n // If we found a replacement transaction, return it's receipt.\n receipt = await getTransactionReceipt(client, {\n hash: replacementTransaction.hash,\n })\n\n // Check if we have enough confirmations. If not, continue polling.\n if (blockNumber - receipt.blockNumber + 1n < confirmations)\n return\n\n let reason: ReplacementReason = 'replaced'\n if (\n replacementTransaction.to === replacedTransaction.to &&\n replacementTransaction.value === replacedTransaction.value\n ) {\n reason = 'repriced'\n } else if (\n replacementTransaction.from === replacementTransaction.to &&\n replacementTransaction.value === 0n\n ) {\n reason = 'cancelled'\n }\n\n done(() => {\n emit.onReplaced?.({\n reason,\n replacedTransaction: replacedTransaction!,\n transaction: replacementTransaction,\n transactionReceipt: receipt,\n })\n emit.resolve(receipt)\n })\n } else {\n done(() => emit.reject(err))\n }\n }\n },\n })\n return unwatch\n },\n )\n })\n}\n"]}
|
@@ -2,7 +2,7 @@ import {
|
|
2
2
|
formatTransactionRequest,
|
3
3
|
hexToNumber,
|
4
4
|
numberToHex
|
5
|
-
} from "./chunk-
|
5
|
+
} from "./chunk-WWJ5YPTJ.mjs";
|
6
6
|
|
7
7
|
// src/actions/test/dropTransaction.ts
|
8
8
|
async function dropTransaction(client, { hash }) {
|
@@ -253,4 +253,4 @@ export {
|
|
253
253
|
snapshot,
|
254
254
|
stopImpersonatingAccount
|
255
255
|
};
|
256
|
-
//# sourceMappingURL=chunk-
|
256
|
+
//# sourceMappingURL=chunk-OZIBQJYR.mjs.map
|
File without changes
|