viem 0.0.1-alpha.24 → 0.0.1-alpha.25
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/contract/package.json +4 -0
- package/dist/call-ac509982.d.ts +23 -0
- package/dist/{chain-e33d019b.d.ts → chain-c4ccb458.d.ts} +1 -1
- package/dist/{chain-afa13f5a.d.ts → chain-f16512e8.d.ts} +20 -1
- package/dist/chains.d.ts +20 -8
- package/dist/chains.js +46 -46
- package/dist/chains.mjs +1 -1
- package/dist/{chunk-YQUC52RL.mjs → chunk-2Y3UZMSP.mjs} +77 -84
- package/dist/chunk-2Y3UZMSP.mjs.map +1 -0
- package/dist/{chunk-A2HXAZXC.js → chunk-CD2XJOBJ.js} +135 -142
- package/dist/chunk-CD2XJOBJ.js.map +1 -0
- package/dist/{chunk-LQVMDX5I.mjs → chunk-KSAO4Y4Q.mjs} +133 -54
- package/dist/chunk-KSAO4Y4Q.mjs.map +1 -0
- package/dist/{chunk-3ARWEJ3G.mjs → chunk-LEPQJNVO.mjs} +18 -2
- package/dist/chunk-LEPQJNVO.mjs.map +1 -0
- package/dist/{chunk-ZYSXBTBB.js → chunk-NUXMGPMK.js} +30 -14
- package/dist/chunk-NUXMGPMK.js.map +1 -0
- package/dist/{chunk-4D5XG6XB.js → chunk-THMRUG4D.js} +148 -69
- package/dist/chunk-THMRUG4D.js.map +1 -0
- package/dist/{contract-70f4ddbe.d.ts → contract-9e76e561.d.ts} +44 -31
- package/dist/contract.d.ts +123 -0
- package/dist/contract.js +53 -0
- package/dist/{clients/index.js.map → contract.js.map} +0 -0
- package/dist/contract.mjs +53 -0
- package/dist/{clients/index.mjs.map → contract.mjs.map} +0 -0
- package/dist/{createClient-60e3ab98.d.ts → createClient-68ee4bb4.d.ts} +3 -3
- package/dist/{createPublicClient-d3d12dc3.d.ts → createPublicClient-b732194e.d.ts} +3 -3
- package/dist/{createTestClient-5f4532c4.d.ts → createTestClient-dedf321e.d.ts} +3 -3
- package/dist/{createWalletClient-9ec3df4f.d.ts → createWalletClient-75813d83.d.ts} +3 -3
- package/dist/decodeErrorResult-0b934d23.d.ts +16 -0
- package/dist/{eip1193-9317a312.d.ts → eip1193-6f9ba163.d.ts} +1 -1
- package/dist/ens.d.ts +82 -1
- package/dist/ens.js +208 -3
- package/dist/ens.js.map +1 -1
- package/dist/ens.mjs +209 -4
- package/dist/ens.mjs.map +1 -1
- package/dist/getAbiItem-c8e6e7d4.d.ts +97 -0
- package/dist/index.d.ts +85 -175
- package/dist/index.js +237 -279
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +245 -287
- package/dist/index.mjs.map +1 -1
- package/dist/public.d.ts +352 -10
- package/dist/public.js +3 -4
- package/dist/public.mjs +6 -7
- package/dist/readContract-4f6e2692.d.ts +10 -0
- package/dist/rpc-a5a7f376.d.ts +121 -0
- package/dist/{sendTransaction-54a0d509.d.ts → sendTransaction-e713f90c.d.ts} +3 -3
- package/dist/test.d.ts +160 -5
- package/dist/test.js +222 -18
- package/dist/test.js.map +1 -1
- package/dist/test.mjs +233 -29
- package/dist/test.mjs.map +1 -1
- package/dist/transactionReceipt-2a86c7c7.d.ts +26 -0
- package/dist/{transactionRequest-bdf57f7d.d.ts → transactionRequest-c7794f5e.d.ts} +1 -1
- package/dist/utils/index.d.ts +224 -20
- package/dist/utils/index.js +2 -6
- package/dist/utils/index.mjs +3 -7
- package/dist/wallet.d.ts +41 -7
- package/dist/wallet.js +3 -3
- package/dist/wallet.mjs +2 -2
- package/dist/watchEvent-c346c12d.d.ts +41 -0
- package/dist/window.d.ts +2 -2
- package/ens/package.json +4 -0
- package/package.json +13 -9
- package/src/_test/constants.ts +2 -0
- package/src/_test/utils.ts +10 -5
- package/src/actions/ens/getEnsAddress.bench.ts +26 -0
- package/src/actions/ens/getEnsAddress.test.ts +97 -0
- package/src/actions/ens/getEnsAddress.ts +122 -0
- package/src/actions/ens/getEnsName.bench.ts +30 -0
- package/src/actions/ens/getEnsName.test.ts +101 -0
- package/src/actions/ens/getEnsName.ts +106 -0
- package/src/actions/ens/index.test.ts +12 -0
- package/src/actions/ens/index.ts +3 -0
- package/src/actions/index.ts +3 -3
- package/src/actions/public/createEventFilter.test.ts +36 -4
- package/src/actions/public/createEventFilter.ts +27 -10
- package/src/actions/public/getFilterChanges.test.ts +198 -4
- package/src/actions/public/getFilterLogs.test.ts +195 -2
- package/src/actions/public/getLogs.test.ts +201 -2
- package/src/actions/public/index.test.ts +0 -1
- package/src/actions/public/index.ts +1 -7
- package/src/actions/public/multicall.ts +8 -3
- package/src/actions/public/simulateContract.ts +1 -4
- package/src/actions/public/watchContractEvent.test.ts +4 -4
- package/src/actions/{public → wallet}/deployContract.test.ts +1 -2
- package/src/actions/{public → wallet}/deployContract.ts +0 -0
- package/src/actions/wallet/index.test.ts +1 -0
- package/src/actions/wallet/index.ts +6 -0
- package/src/chains.test.ts +44 -1517
- package/src/clients/transports/webSocket.test.ts +1 -0
- package/src/clients/transports/webSocket.ts +1 -0
- package/src/contract.test.ts +31 -0
- package/src/contract.ts +68 -0
- package/src/ens.test.ts +15 -0
- package/src/ens.ts +4 -1
- package/src/errors/abi.ts +18 -2
- package/src/errors/chain.test.ts +46 -0
- package/src/errors/chain.ts +33 -0
- package/src/errors/contract.ts +2 -2
- package/src/errors/index.ts +3 -0
- package/src/index.test.ts +0 -147
- package/src/index.ts +0 -257
- package/src/public.test.ts +36 -0
- package/src/public.ts +2 -6
- package/src/test.test.ts +38 -0
- package/src/test.ts +1 -0
- package/src/types/contract.ts +144 -40
- package/src/types/index.ts +2 -1
- package/src/types/utils.ts +21 -0
- package/src/utils/abi/decodeErrorResult.test.ts +1 -1
- package/src/utils/abi/decodeEventLog.test.ts +542 -0
- package/src/utils/abi/decodeEventLog.ts +107 -0
- package/src/utils/abi/decodeFunctionData.test.ts +1 -2
- package/src/utils/abi/decodeFunctionData.ts +5 -2
- package/src/utils/abi/encodeFunctionData.ts +1 -4
- package/src/utils/abi/index.test.ts +1 -0
- package/src/utils/abi/index.ts +6 -0
- package/src/utils/ens/index.test.ts +1 -0
- package/src/utils/ens/index.ts +2 -0
- package/src/utils/ens/packetToBytes.test.ts +11 -0
- package/src/utils/ens/packetToBytes.ts +29 -0
- package/src/utils/index.test.ts +1 -3
- package/src/utils/index.ts +3 -2
- package/src/utils/rpc.test.ts +1 -0
- package/src/utils/rpc.ts +4 -2
- package/src/wallet.test.ts +19 -0
- package/wallet/package.json +4 -0
- package/clients/package.json +0 -4
- package/dist/chunk-3ARWEJ3G.mjs.map +0 -1
- package/dist/chunk-4D5XG6XB.js.map +0 -1
- package/dist/chunk-6QTEW2BE.mjs +0 -260
- package/dist/chunk-6QTEW2BE.mjs.map +0 -1
- package/dist/chunk-A2HXAZXC.js.map +0 -1
- package/dist/chunk-KRPS5CIB.mjs +0 -256
- package/dist/chunk-KRPS5CIB.mjs.map +0 -1
- package/dist/chunk-LQVMDX5I.mjs.map +0 -1
- package/dist/chunk-N3IOPT3R.js +0 -256
- package/dist/chunk-N3IOPT3R.js.map +0 -1
- package/dist/chunk-YQUC52RL.mjs.map +0 -1
- package/dist/chunk-ZSTVHQ6J.js +0 -260
- package/dist/chunk-ZSTVHQ6J.js.map +0 -1
- package/dist/chunk-ZYSXBTBB.js.map +0 -1
- package/dist/clients/index.d.ts +0 -9
- package/dist/clients/index.js +0 -24
- package/dist/clients/index.mjs +0 -24
- package/dist/normalize-ef9240c0.d.ts +0 -33
- package/dist/parseGwei-492ab7dd.d.ts +0 -355
- package/dist/rpc-26932bae.d.ts +0 -61
- package/dist/stopImpersonatingAccount-c1a4b7e5.d.ts +0 -156
- package/dist/watchAsset-d59d6e35.d.ts +0 -38
- package/dist/watchPendingTransactions-ea21b31d.d.ts +0 -373
- package/dist/webSocket-775b4037.d.ts +0 -83
@@ -17,7 +17,7 @@ import {
|
|
17
17
|
setIntervalMining,
|
18
18
|
stopImpersonatingAccount,
|
19
19
|
} from '../test'
|
20
|
-
import { sendTransaction } from '../wallet'
|
20
|
+
import { sendTransaction, writeContract } from '../wallet'
|
21
21
|
import type { Log } from '../../types'
|
22
22
|
import { createEventFilter } from './createEventFilter'
|
23
23
|
import { getFilterLogs } from './getFilterLogs'
|
@@ -27,6 +27,9 @@ beforeAll(async () => {
|
|
27
27
|
await impersonateAccount(testClient, {
|
28
28
|
address: address.vitalik,
|
29
29
|
})
|
30
|
+
await impersonateAccount(testClient, {
|
31
|
+
address: address.usdcHolder,
|
32
|
+
})
|
30
33
|
})
|
31
34
|
|
32
35
|
afterAll(async () => {
|
@@ -34,6 +37,9 @@ afterAll(async () => {
|
|
34
37
|
await stopImpersonatingAccount(testClient, {
|
35
38
|
address: address.vitalik,
|
36
39
|
})
|
40
|
+
await stopImpersonatingAccount(testClient, {
|
41
|
+
address: address.usdcHolder,
|
42
|
+
})
|
37
43
|
})
|
38
44
|
|
39
45
|
test('default', async () => {
|
@@ -84,6 +90,7 @@ describe('events', () => {
|
|
84
90
|
await mine(testClient, { blocks: 1 })
|
85
91
|
|
86
92
|
let logs = await getFilterLogs(publicClient, { filter })
|
93
|
+
console.log(logs[0])
|
87
94
|
assertType<Log[]>(logs)
|
88
95
|
expect(logs.length).toBe(2)
|
89
96
|
})
|
@@ -100,5 +107,191 @@ describe('events', () => {
|
|
100
107
|
expect(logs.length).toBe(1056)
|
101
108
|
})
|
102
109
|
|
103
|
-
test
|
110
|
+
test('args: singular `from`', async () => {
|
111
|
+
const namedFilter = await createEventFilter(publicClient, {
|
112
|
+
event:
|
113
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
114
|
+
args: {
|
115
|
+
from: address.vitalik,
|
116
|
+
},
|
117
|
+
})
|
118
|
+
const unnamedFilter = await createEventFilter(publicClient, {
|
119
|
+
event: 'Transfer(address indexed, address indexed, uint256)',
|
120
|
+
args: [address.vitalik],
|
121
|
+
})
|
122
|
+
|
123
|
+
await writeContract(walletClient, {
|
124
|
+
...usdcContractConfig,
|
125
|
+
from: address.usdcHolder,
|
126
|
+
functionName: 'transfer',
|
127
|
+
args: [accounts[0].address, 1n],
|
128
|
+
})
|
129
|
+
await writeContract(walletClient, {
|
130
|
+
...usdcContractConfig,
|
131
|
+
from: address.vitalik,
|
132
|
+
functionName: 'transfer',
|
133
|
+
args: [accounts[1].address, 1n],
|
134
|
+
})
|
135
|
+
await writeContract(walletClient, {
|
136
|
+
...usdcContractConfig,
|
137
|
+
from: address.vitalik,
|
138
|
+
functionName: 'transfer',
|
139
|
+
args: [accounts[1].address, 1n],
|
140
|
+
})
|
141
|
+
await writeContract(walletClient, {
|
142
|
+
...usdcContractConfig,
|
143
|
+
from: address.vitalik,
|
144
|
+
functionName: 'approve',
|
145
|
+
args: [address.vitalik, 1n],
|
146
|
+
})
|
147
|
+
await mine(testClient, { blocks: 1 })
|
148
|
+
|
149
|
+
expect(
|
150
|
+
(await getFilterLogs(publicClient, { filter: namedFilter })).length,
|
151
|
+
).toBe(2)
|
152
|
+
expect(
|
153
|
+
(await getFilterLogs(publicClient, { filter: unnamedFilter })).length,
|
154
|
+
).toBe(2)
|
155
|
+
})
|
156
|
+
|
157
|
+
test('args: multiple `from`', async () => {
|
158
|
+
const namedFilter = await createEventFilter(publicClient, {
|
159
|
+
event:
|
160
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
161
|
+
args: {
|
162
|
+
from: [address.usdcHolder, address.vitalik],
|
163
|
+
},
|
164
|
+
})
|
165
|
+
const unnamedFilter = await createEventFilter(publicClient, {
|
166
|
+
event: 'Transfer(address indexed, address indexed, uint256)',
|
167
|
+
args: [[address.usdcHolder, address.vitalik]],
|
168
|
+
})
|
169
|
+
|
170
|
+
await writeContract(walletClient, {
|
171
|
+
...usdcContractConfig,
|
172
|
+
from: address.usdcHolder,
|
173
|
+
functionName: 'transfer',
|
174
|
+
args: [accounts[0].address, 1n],
|
175
|
+
})
|
176
|
+
await writeContract(walletClient, {
|
177
|
+
...usdcContractConfig,
|
178
|
+
from: address.vitalik,
|
179
|
+
functionName: 'transfer',
|
180
|
+
args: [accounts[1].address, 1n],
|
181
|
+
})
|
182
|
+
await writeContract(walletClient, {
|
183
|
+
...usdcContractConfig,
|
184
|
+
from: address.vitalik,
|
185
|
+
functionName: 'transfer',
|
186
|
+
args: [accounts[1].address, 1n],
|
187
|
+
})
|
188
|
+
await writeContract(walletClient, {
|
189
|
+
...usdcContractConfig,
|
190
|
+
from: address.vitalik,
|
191
|
+
functionName: 'approve',
|
192
|
+
args: [address.vitalik, 1n],
|
193
|
+
})
|
194
|
+
await mine(testClient, { blocks: 1 })
|
195
|
+
|
196
|
+
expect(
|
197
|
+
(await getFilterLogs(publicClient, { filter: namedFilter })).length,
|
198
|
+
).toBe(3)
|
199
|
+
expect(
|
200
|
+
(await getFilterLogs(publicClient, { filter: unnamedFilter })).length,
|
201
|
+
).toBe(3)
|
202
|
+
})
|
203
|
+
|
204
|
+
test('args: singular `to`', async () => {
|
205
|
+
const namedFilter = await createEventFilter(publicClient, {
|
206
|
+
event:
|
207
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
208
|
+
args: {
|
209
|
+
to: accounts[0].address,
|
210
|
+
},
|
211
|
+
})
|
212
|
+
const unnamedFilter = await createEventFilter(publicClient, {
|
213
|
+
event: 'Transfer(address indexed, address indexed, uint256)',
|
214
|
+
args: [null, accounts[0].address],
|
215
|
+
})
|
216
|
+
|
217
|
+
await writeContract(walletClient, {
|
218
|
+
...usdcContractConfig,
|
219
|
+
from: address.usdcHolder,
|
220
|
+
functionName: 'transfer',
|
221
|
+
args: [accounts[0].address, 1n],
|
222
|
+
})
|
223
|
+
await writeContract(walletClient, {
|
224
|
+
...usdcContractConfig,
|
225
|
+
from: address.vitalik,
|
226
|
+
functionName: 'transfer',
|
227
|
+
args: [accounts[1].address, 1n],
|
228
|
+
})
|
229
|
+
await writeContract(walletClient, {
|
230
|
+
...usdcContractConfig,
|
231
|
+
from: address.vitalik,
|
232
|
+
functionName: 'transfer',
|
233
|
+
args: [accounts[1].address, 1n],
|
234
|
+
})
|
235
|
+
await writeContract(walletClient, {
|
236
|
+
...usdcContractConfig,
|
237
|
+
from: address.vitalik,
|
238
|
+
functionName: 'approve',
|
239
|
+
args: [address.vitalik, 1n],
|
240
|
+
})
|
241
|
+
await mine(testClient, { blocks: 1 })
|
242
|
+
|
243
|
+
expect(
|
244
|
+
(await getFilterLogs(publicClient, { filter: namedFilter })).length,
|
245
|
+
).toBe(1)
|
246
|
+
expect(
|
247
|
+
(await getFilterLogs(publicClient, { filter: unnamedFilter })).length,
|
248
|
+
).toBe(1)
|
249
|
+
})
|
250
|
+
|
251
|
+
test('args: multiple `to`', async () => {
|
252
|
+
const namedFilter = await createEventFilter(publicClient, {
|
253
|
+
event:
|
254
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
255
|
+
args: {
|
256
|
+
to: [accounts[0].address, accounts[1].address],
|
257
|
+
},
|
258
|
+
})
|
259
|
+
const unnamedFilter = await createEventFilter(publicClient, {
|
260
|
+
event: 'Transfer(address indexed, address indexed, uint256)',
|
261
|
+
args: [null, [accounts[0].address, accounts[1].address]],
|
262
|
+
})
|
263
|
+
|
264
|
+
await writeContract(walletClient, {
|
265
|
+
...usdcContractConfig,
|
266
|
+
from: address.usdcHolder,
|
267
|
+
functionName: 'transfer',
|
268
|
+
args: [accounts[0].address, 1n],
|
269
|
+
})
|
270
|
+
await writeContract(walletClient, {
|
271
|
+
...usdcContractConfig,
|
272
|
+
from: address.vitalik,
|
273
|
+
functionName: 'transfer',
|
274
|
+
args: [accounts[1].address, 1n],
|
275
|
+
})
|
276
|
+
await writeContract(walletClient, {
|
277
|
+
...usdcContractConfig,
|
278
|
+
from: address.vitalik,
|
279
|
+
functionName: 'transfer',
|
280
|
+
args: [accounts[1].address, 1n],
|
281
|
+
})
|
282
|
+
await writeContract(walletClient, {
|
283
|
+
...usdcContractConfig,
|
284
|
+
from: address.vitalik,
|
285
|
+
functionName: 'approve',
|
286
|
+
args: [address.vitalik, 1n],
|
287
|
+
})
|
288
|
+
await mine(testClient, { blocks: 1 })
|
289
|
+
|
290
|
+
expect(
|
291
|
+
(await getFilterLogs(publicClient, { filter: namedFilter })).length,
|
292
|
+
).toBe(3)
|
293
|
+
expect(
|
294
|
+
(await getFilterLogs(publicClient, { filter: unnamedFilter })).length,
|
295
|
+
).toBe(3)
|
296
|
+
})
|
104
297
|
})
|
@@ -17,7 +17,7 @@ import {
|
|
17
17
|
setIntervalMining,
|
18
18
|
stopImpersonatingAccount,
|
19
19
|
} from '../test'
|
20
|
-
import { sendTransaction } from '../wallet'
|
20
|
+
import { sendTransaction, writeContract } from '../wallet'
|
21
21
|
import type { Log } from '../../types'
|
22
22
|
import { getLogs } from './getLogs'
|
23
23
|
import { getBlock } from './getBlock'
|
@@ -27,6 +27,9 @@ beforeAll(async () => {
|
|
27
27
|
await impersonateAccount(testClient, {
|
28
28
|
address: address.vitalik,
|
29
29
|
})
|
30
|
+
await impersonateAccount(testClient, {
|
31
|
+
address: address.usdcHolder,
|
32
|
+
})
|
30
33
|
})
|
31
34
|
|
32
35
|
afterAll(async () => {
|
@@ -34,6 +37,9 @@ afterAll(async () => {
|
|
34
37
|
await stopImpersonatingAccount(testClient, {
|
35
38
|
address: address.vitalik,
|
36
39
|
})
|
40
|
+
await impersonateAccount(testClient, {
|
41
|
+
address: address.usdcHolder,
|
42
|
+
})
|
37
43
|
})
|
38
44
|
|
39
45
|
test('default', async () => {
|
@@ -103,5 +109,198 @@ describe('events', () => {
|
|
103
109
|
expect(logs.length).toBe(118)
|
104
110
|
})
|
105
111
|
|
106
|
-
test
|
112
|
+
test('args: singular `from`', async () => {
|
113
|
+
await writeContract(walletClient, {
|
114
|
+
...usdcContractConfig,
|
115
|
+
from: address.usdcHolder,
|
116
|
+
functionName: 'transfer',
|
117
|
+
args: [accounts[0].address, 1n],
|
118
|
+
})
|
119
|
+
await writeContract(walletClient, {
|
120
|
+
...usdcContractConfig,
|
121
|
+
from: address.vitalik,
|
122
|
+
functionName: 'transfer',
|
123
|
+
args: [accounts[1].address, 1n],
|
124
|
+
})
|
125
|
+
await writeContract(walletClient, {
|
126
|
+
...usdcContractConfig,
|
127
|
+
from: address.vitalik,
|
128
|
+
functionName: 'transfer',
|
129
|
+
args: [accounts[1].address, 1n],
|
130
|
+
})
|
131
|
+
await writeContract(walletClient, {
|
132
|
+
...usdcContractConfig,
|
133
|
+
from: address.vitalik,
|
134
|
+
functionName: 'approve',
|
135
|
+
args: [address.vitalik, 1n],
|
136
|
+
})
|
137
|
+
await mine(testClient, { blocks: 1 })
|
138
|
+
|
139
|
+
expect(
|
140
|
+
(
|
141
|
+
await getLogs(publicClient, {
|
142
|
+
event:
|
143
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
144
|
+
args: {
|
145
|
+
from: address.vitalik,
|
146
|
+
},
|
147
|
+
})
|
148
|
+
).length,
|
149
|
+
).toBe(2)
|
150
|
+
expect(
|
151
|
+
(
|
152
|
+
await getLogs(publicClient, {
|
153
|
+
event: 'Transfer(address indexed, address indexed, uint256)',
|
154
|
+
args: [address.vitalik],
|
155
|
+
})
|
156
|
+
).length,
|
157
|
+
).toBe(2)
|
158
|
+
})
|
159
|
+
|
160
|
+
test('args: multiple `from`', async () => {
|
161
|
+
await writeContract(walletClient, {
|
162
|
+
...usdcContractConfig,
|
163
|
+
from: address.usdcHolder,
|
164
|
+
functionName: 'transfer',
|
165
|
+
args: [accounts[0].address, 1n],
|
166
|
+
})
|
167
|
+
await writeContract(walletClient, {
|
168
|
+
...usdcContractConfig,
|
169
|
+
from: address.vitalik,
|
170
|
+
functionName: 'transfer',
|
171
|
+
args: [accounts[1].address, 1n],
|
172
|
+
})
|
173
|
+
await writeContract(walletClient, {
|
174
|
+
...usdcContractConfig,
|
175
|
+
from: address.vitalik,
|
176
|
+
functionName: 'transfer',
|
177
|
+
args: [accounts[1].address, 1n],
|
178
|
+
})
|
179
|
+
await writeContract(walletClient, {
|
180
|
+
...usdcContractConfig,
|
181
|
+
from: address.vitalik,
|
182
|
+
functionName: 'approve',
|
183
|
+
args: [address.vitalik, 1n],
|
184
|
+
})
|
185
|
+
await mine(testClient, { blocks: 1 })
|
186
|
+
|
187
|
+
expect(
|
188
|
+
(
|
189
|
+
await getLogs(publicClient, {
|
190
|
+
event:
|
191
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
192
|
+
args: {
|
193
|
+
from: [address.usdcHolder, address.vitalik],
|
194
|
+
},
|
195
|
+
})
|
196
|
+
).length,
|
197
|
+
).toBe(3)
|
198
|
+
expect(
|
199
|
+
(
|
200
|
+
await getLogs(publicClient, {
|
201
|
+
event:
|
202
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
203
|
+
args: {
|
204
|
+
from: [address.usdcHolder, address.vitalik],
|
205
|
+
},
|
206
|
+
})
|
207
|
+
).length,
|
208
|
+
).toBe(3)
|
209
|
+
})
|
210
|
+
|
211
|
+
test('args: singular `to`', async () => {
|
212
|
+
await writeContract(walletClient, {
|
213
|
+
...usdcContractConfig,
|
214
|
+
from: address.usdcHolder,
|
215
|
+
functionName: 'transfer',
|
216
|
+
args: [accounts[0].address, 1n],
|
217
|
+
})
|
218
|
+
await writeContract(walletClient, {
|
219
|
+
...usdcContractConfig,
|
220
|
+
from: address.vitalik,
|
221
|
+
functionName: 'transfer',
|
222
|
+
args: [accounts[1].address, 1n],
|
223
|
+
})
|
224
|
+
await writeContract(walletClient, {
|
225
|
+
...usdcContractConfig,
|
226
|
+
from: address.vitalik,
|
227
|
+
functionName: 'transfer',
|
228
|
+
args: [accounts[1].address, 1n],
|
229
|
+
})
|
230
|
+
await writeContract(walletClient, {
|
231
|
+
...usdcContractConfig,
|
232
|
+
from: address.vitalik,
|
233
|
+
functionName: 'approve',
|
234
|
+
args: [address.vitalik, 1n],
|
235
|
+
})
|
236
|
+
await mine(testClient, { blocks: 1 })
|
237
|
+
|
238
|
+
expect(
|
239
|
+
(
|
240
|
+
await getLogs(publicClient, {
|
241
|
+
event:
|
242
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
243
|
+
args: {
|
244
|
+
to: accounts[0].address,
|
245
|
+
},
|
246
|
+
})
|
247
|
+
).length,
|
248
|
+
).toBe(1)
|
249
|
+
expect(
|
250
|
+
(
|
251
|
+
await getLogs(publicClient, {
|
252
|
+
event: 'Transfer(address indexed, address indexed, uint256)',
|
253
|
+
args: [null, accounts[0].address],
|
254
|
+
})
|
255
|
+
).length,
|
256
|
+
).toBe(1)
|
257
|
+
})
|
258
|
+
|
259
|
+
test('args: multiple `to`', async () => {
|
260
|
+
await writeContract(walletClient, {
|
261
|
+
...usdcContractConfig,
|
262
|
+
from: address.usdcHolder,
|
263
|
+
functionName: 'transfer',
|
264
|
+
args: [accounts[0].address, 1n],
|
265
|
+
})
|
266
|
+
await writeContract(walletClient, {
|
267
|
+
...usdcContractConfig,
|
268
|
+
from: address.vitalik,
|
269
|
+
functionName: 'transfer',
|
270
|
+
args: [accounts[1].address, 1n],
|
271
|
+
})
|
272
|
+
await writeContract(walletClient, {
|
273
|
+
...usdcContractConfig,
|
274
|
+
from: address.vitalik,
|
275
|
+
functionName: 'transfer',
|
276
|
+
args: [accounts[1].address, 1n],
|
277
|
+
})
|
278
|
+
await writeContract(walletClient, {
|
279
|
+
...usdcContractConfig,
|
280
|
+
from: address.vitalik,
|
281
|
+
functionName: 'approve',
|
282
|
+
args: [address.vitalik, 1n],
|
283
|
+
})
|
284
|
+
await mine(testClient, { blocks: 1 })
|
285
|
+
|
286
|
+
expect(
|
287
|
+
(
|
288
|
+
await getLogs(publicClient, {
|
289
|
+
event:
|
290
|
+
'Transfer(address indexed from, address indexed to, uint256 value)',
|
291
|
+
args: {
|
292
|
+
to: [accounts[0].address, accounts[1].address],
|
293
|
+
},
|
294
|
+
})
|
295
|
+
).length,
|
296
|
+
).toBe(3)
|
297
|
+
expect(
|
298
|
+
(
|
299
|
+
await getLogs(publicClient, {
|
300
|
+
event: 'Transfer(address indexed, address indexed, uint256)',
|
301
|
+
args: [null, [accounts[0].address, accounts[1].address]],
|
302
|
+
})
|
303
|
+
).length,
|
304
|
+
).toBe(3)
|
305
|
+
})
|
107
306
|
})
|
@@ -10,7 +10,6 @@ test('exports actions', () => {
|
|
10
10
|
"createContractEventFilter": [Function],
|
11
11
|
"createEventFilter": [Function],
|
12
12
|
"createPendingTransactionFilter": [Function],
|
13
|
-
"deployContract": [Function],
|
14
13
|
"estimateGas": [Function],
|
15
14
|
"getBalance": [Function],
|
16
15
|
"getBlock": [Function],
|
@@ -25,12 +25,6 @@ export type {
|
|
25
25
|
CreateContractEventFilterResponse,
|
26
26
|
} from './createContractEventFilter'
|
27
27
|
|
28
|
-
export { deployContract } from './deployContract'
|
29
|
-
export type {
|
30
|
-
DeployContractArgs,
|
31
|
-
DeployContractResponse,
|
32
|
-
} from './deployContract'
|
33
|
-
|
34
28
|
export { estimateGas } from './estimateGas'
|
35
29
|
export type { EstimateGasArgs, EstimateGasResponse } from './estimateGas'
|
36
30
|
|
@@ -106,7 +100,7 @@ export type {
|
|
106
100
|
} from './getTransactionReceipt'
|
107
101
|
|
108
102
|
export { multicall } from './multicall'
|
109
|
-
export type { MulticallArgs } from './multicall'
|
103
|
+
export type { MulticallArgs, MulticallResponse } from './multicall'
|
110
104
|
|
111
105
|
export { readContract } from './readContract'
|
112
106
|
export type {
|
@@ -8,16 +8,16 @@ import {
|
|
8
8
|
import { Address, ContractConfig, Hex, MulticallContracts } from '../../types'
|
9
9
|
import { MulticallResults } from '../../types/multicall'
|
10
10
|
import {
|
11
|
+
EncodeFunctionDataArgs,
|
11
12
|
decodeFunctionResult,
|
12
13
|
encodeFunctionData,
|
13
|
-
EncodeFunctionDataArgs,
|
14
14
|
getContractError,
|
15
15
|
} from '../../utils'
|
16
16
|
import { CallArgs } from './call'
|
17
17
|
import { readContract } from './readContract'
|
18
18
|
|
19
19
|
export type MulticallArgs<
|
20
|
-
TContracts extends ContractConfig[],
|
20
|
+
TContracts extends ContractConfig[] = ContractConfig[],
|
21
21
|
TAllowFailure extends boolean = true,
|
22
22
|
> = Pick<CallArgs, 'blockNumber' | 'blockTag'> & {
|
23
23
|
allowFailure?: TAllowFailure
|
@@ -25,13 +25,18 @@ export type MulticallArgs<
|
|
25
25
|
multicallAddress: Address
|
26
26
|
}
|
27
27
|
|
28
|
+
export type MulticallResponse<
|
29
|
+
TContracts extends ContractConfig[] = ContractConfig[],
|
30
|
+
TAllowFailure extends boolean = true,
|
31
|
+
> = MulticallResults<TContracts, TAllowFailure>
|
32
|
+
|
28
33
|
export async function multicall<
|
29
34
|
TContracts extends ContractConfig[],
|
30
35
|
TAllowFailure extends boolean = true,
|
31
36
|
>(
|
32
37
|
client: PublicClient,
|
33
38
|
args: MulticallArgs<TContracts, TAllowFailure>,
|
34
|
-
): Promise<
|
39
|
+
): Promise<MulticallResponse<TContracts, TAllowFailure>> {
|
35
40
|
const {
|
36
41
|
allowFailure = true,
|
37
42
|
blockNumber,
|
@@ -3,20 +3,17 @@ import { Abi, Narrow } from 'abitype'
|
|
3
3
|
import type { PublicClient } from '../../clients'
|
4
4
|
import { BaseError } from '../../errors'
|
5
5
|
import type {
|
6
|
-
Address,
|
7
6
|
Chain,
|
8
7
|
ContractConfig,
|
9
|
-
ExtractArgsFromAbi,
|
10
8
|
ExtractResultFromAbi,
|
11
|
-
ExtractFunctionNameFromAbi,
|
12
9
|
GetValue,
|
13
10
|
} from '../../types'
|
14
11
|
import {
|
12
|
+
DecodeFunctionResultArgs,
|
15
13
|
EncodeFunctionDataArgs,
|
16
14
|
decodeFunctionResult,
|
17
15
|
encodeFunctionData,
|
18
16
|
getContractError,
|
19
|
-
DecodeFunctionResultArgs,
|
20
17
|
} from '../../utils'
|
21
18
|
import { WriteContractArgs } from '../wallet'
|
22
19
|
import { call, CallArgs } from './call'
|
@@ -19,7 +19,7 @@ beforeAll(async () => {
|
|
19
19
|
address: address.vitalik,
|
20
20
|
})
|
21
21
|
await impersonateAccount(testClient, {
|
22
|
-
address:
|
22
|
+
address: address.usdcHolder,
|
23
23
|
})
|
24
24
|
})
|
25
25
|
|
@@ -28,7 +28,7 @@ afterAll(async () => {
|
|
28
28
|
address: address.vitalik,
|
29
29
|
})
|
30
30
|
await stopImpersonatingAccount(testClient, {
|
31
|
-
address:
|
31
|
+
address: address.usdcHolder,
|
32
32
|
})
|
33
33
|
})
|
34
34
|
|
@@ -231,14 +231,14 @@ test('args: args', async () => {
|
|
231
231
|
...usdcContractConfig,
|
232
232
|
eventName: 'Transfer',
|
233
233
|
args: {
|
234
|
-
from:
|
234
|
+
from: address.usdcHolder,
|
235
235
|
},
|
236
236
|
onLogs: (logs_) => logs.push(logs_),
|
237
237
|
})
|
238
238
|
|
239
239
|
await writeContract(walletClient, {
|
240
240
|
...usdcContractConfig,
|
241
|
-
from:
|
241
|
+
from: address.usdcHolder,
|
242
242
|
functionName: 'transfer',
|
243
243
|
args: [accounts[0].address, 1n],
|
244
244
|
})
|
@@ -5,8 +5,7 @@ import { parseEther } from '../../utils'
|
|
5
5
|
import { mine, setBalance } from '../test'
|
6
6
|
|
7
7
|
import { deployContract } from './deployContract'
|
8
|
-
import { getTransactionReceipt } from '
|
9
|
-
import { simulateContract } from './simulateContract'
|
8
|
+
import { getTransactionReceipt } from '../public'
|
10
9
|
|
11
10
|
test('default', async () => {
|
12
11
|
const hash = await deployContract(walletClient, {
|
File without changes
|
@@ -1,5 +1,11 @@
|
|
1
1
|
export { addChain } from './addChain'
|
2
2
|
|
3
|
+
export { deployContract } from './deployContract'
|
4
|
+
export type {
|
5
|
+
DeployContractArgs,
|
6
|
+
DeployContractResponse,
|
7
|
+
} from './deployContract'
|
8
|
+
|
3
9
|
export { getAccounts } from './getAccounts'
|
4
10
|
|
5
11
|
export { getPermissions } from './getPermissions'
|