viem 1.4.2 → 1.5.2
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/cjs/accounts/index.js +1 -1
- package/dist/cjs/accounts/index.js.map +1 -1
- package/dist/cjs/accounts/utils/signMessage.js +1 -1
- package/dist/cjs/accounts/utils/signMessage.js.map +1 -1
- package/dist/cjs/accounts/utils/signTypedData.js +1 -1
- package/dist/cjs/accounts/utils/signTypedData.js.map +1 -1
- package/dist/cjs/actions/public/createContractEventFilter.js.map +1 -1
- package/dist/cjs/actions/public/createEventFilter.js +16 -8
- package/dist/cjs/actions/public/createEventFilter.js.map +1 -1
- package/dist/cjs/actions/public/getBlock.js +3 -1
- package/dist/cjs/actions/public/getBlock.js.map +1 -1
- package/dist/cjs/actions/public/getBlockNumber.js +2 -2
- package/dist/cjs/actions/public/getBlockNumber.js.map +1 -1
- package/dist/cjs/actions/public/getFilterChanges.js.map +1 -1
- package/dist/cjs/actions/public/getFilterLogs.js +1 -1
- package/dist/cjs/actions/public/getFilterLogs.js.map +1 -1
- package/dist/cjs/actions/public/getLogs.js +16 -10
- package/dist/cjs/actions/public/getLogs.js.map +1 -1
- package/dist/cjs/actions/public/getTransaction.js +2 -1
- package/dist/cjs/actions/public/getTransaction.js.map +1 -1
- package/dist/cjs/actions/public/watchBlockNumber.js +1 -1
- package/dist/cjs/actions/public/watchBlockNumber.js.map +1 -1
- package/dist/cjs/actions/public/watchBlocks.js +2 -1
- package/dist/cjs/actions/public/watchBlocks.js.map +1 -1
- package/dist/cjs/actions/public/watchContractEvent.js +3 -0
- package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
- package/dist/cjs/actions/public/watchEvent.js +7 -2
- package/dist/cjs/actions/public/watchEvent.js.map +1 -1
- package/dist/cjs/clients/createClient.js +2 -1
- package/dist/cjs/clients/createClient.js.map +1 -1
- package/dist/cjs/clients/createPublicClient.js.map +1 -1
- package/dist/cjs/clients/createTestClient.js.map +1 -1
- package/dist/cjs/clients/createWalletClient.js.map +1 -1
- package/dist/cjs/clients/decorators/public.js.map +1 -1
- package/dist/cjs/constants/number.js +101 -0
- package/dist/cjs/constants/number.js.map +1 -0
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/index.js +110 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/formatters/block.js.map +1 -1
- package/dist/cjs/utils/formatters/formatter.js +1 -0
- package/dist/cjs/utils/formatters/formatter.js.map +1 -1
- package/dist/cjs/utils/formatters/transaction.js.map +1 -1
- package/dist/cjs/utils/hash/hashFunction.js +3 -2
- package/dist/cjs/utils/hash/hashFunction.js.map +1 -1
- package/dist/cjs/utils/promise/withCache.js +3 -3
- package/dist/cjs/utils/promise/withCache.js.map +1 -1
- package/dist/cjs/utils/signature/hexToSignature.js +12 -0
- package/dist/cjs/utils/signature/hexToSignature.js.map +1 -0
- package/dist/cjs/utils/signature/signatureToHex.js.map +1 -0
- package/dist/esm/accounts/index.js +1 -1
- package/dist/esm/accounts/index.js.map +1 -1
- package/dist/esm/accounts/utils/signMessage.js +1 -1
- package/dist/esm/accounts/utils/signMessage.js.map +1 -1
- package/dist/esm/accounts/utils/signTypedData.js +1 -1
- package/dist/esm/accounts/utils/signTypedData.js.map +1 -1
- package/dist/esm/actions/public/createContractEventFilter.js.map +1 -1
- package/dist/esm/actions/public/createEventFilter.js +16 -8
- package/dist/esm/actions/public/createEventFilter.js.map +1 -1
- package/dist/esm/actions/public/getBlock.js +3 -1
- package/dist/esm/actions/public/getBlock.js.map +1 -1
- package/dist/esm/actions/public/getBlockNumber.js +2 -2
- package/dist/esm/actions/public/getBlockNumber.js.map +1 -1
- package/dist/esm/actions/public/getFilterChanges.js.map +1 -1
- package/dist/esm/actions/public/getFilterLogs.js +1 -1
- package/dist/esm/actions/public/getFilterLogs.js.map +1 -1
- package/dist/esm/actions/public/getLogs.js +16 -10
- package/dist/esm/actions/public/getLogs.js.map +1 -1
- package/dist/esm/actions/public/getTransaction.js +2 -1
- package/dist/esm/actions/public/getTransaction.js.map +1 -1
- package/dist/esm/actions/public/watchBlockNumber.js +1 -1
- package/dist/esm/actions/public/watchBlockNumber.js.map +1 -1
- package/dist/esm/actions/public/watchBlocks.js +2 -1
- package/dist/esm/actions/public/watchBlocks.js.map +1 -1
- package/dist/esm/actions/public/watchContractEvent.js +5 -0
- package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
- package/dist/esm/actions/public/watchEvent.js +9 -2
- package/dist/esm/actions/public/watchEvent.js.map +1 -1
- package/dist/esm/clients/createClient.js +2 -1
- package/dist/esm/clients/createClient.js.map +1 -1
- package/dist/esm/clients/createPublicClient.js.map +1 -1
- package/dist/esm/clients/createTestClient.js.map +1 -1
- package/dist/esm/clients/createWalletClient.js.map +1 -1
- package/dist/esm/clients/decorators/public.js.map +1 -1
- package/dist/esm/constants/number.js +97 -0
- package/dist/esm/constants/number.js.map +1 -0
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/formatters/block.js.map +1 -1
- package/dist/esm/utils/formatters/formatter.js +1 -0
- package/dist/esm/utils/formatters/formatter.js.map +1 -1
- package/dist/esm/utils/formatters/transaction.js.map +1 -1
- package/dist/esm/utils/hash/hashFunction.js +3 -2
- package/dist/esm/utils/hash/hashFunction.js.map +1 -1
- package/dist/esm/utils/promise/withCache.js +3 -3
- package/dist/esm/utils/promise/withCache.js.map +1 -1
- package/dist/esm/utils/signature/hexToSignature.js +18 -0
- package/dist/esm/utils/signature/hexToSignature.js.map +1 -0
- package/dist/esm/utils/signature/signatureToHex.js +21 -0
- package/dist/esm/utils/signature/signatureToHex.js.map +1 -0
- package/dist/types/accounts/index.d.ts +1 -1
- package/dist/types/accounts/index.d.ts.map +1 -1
- package/dist/types/actions/public/createContractEventFilter.d.ts +5 -5
- package/dist/types/actions/public/createContractEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/createEventFilter.d.ts +20 -7
- package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/getBlock.d.ts +5 -5
- package/dist/types/actions/public/getBlock.d.ts.map +1 -1
- package/dist/types/actions/public/getBlockNumber.d.ts +4 -2
- package/dist/types/actions/public/getBlockNumber.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterChanges.d.ts +5 -8
- package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterLogs.d.ts +5 -4
- package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
- package/dist/types/actions/public/getLogs.d.ts +17 -6
- package/dist/types/actions/public/getLogs.d.ts.map +1 -1
- package/dist/types/actions/public/getTransaction.d.ts +4 -4
- package/dist/types/actions/public/getTransaction.d.ts.map +1 -1
- package/dist/types/actions/public/watchBlocks.d.ts +10 -10
- package/dist/types/actions/public/watchBlocks.d.ts.map +1 -1
- package/dist/types/actions/public/watchContractEvent.d.ts +1 -1
- package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
- package/dist/types/actions/public/watchEvent.d.ts +19 -8
- package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
- package/dist/types/chains/formatters/celo.d.ts +4 -0
- package/dist/types/chains/formatters/celo.d.ts.map +1 -1
- package/dist/types/chains/formatters/optimism.d.ts +5 -3
- package/dist/types/chains/formatters/optimism.d.ts.map +1 -1
- package/dist/types/chains/index.d.ts +44 -12
- package/dist/types/chains/index.d.ts.map +1 -1
- package/dist/types/clients/createClient.d.ts +7 -0
- package/dist/types/clients/createClient.d.ts.map +1 -1
- package/dist/types/clients/createPublicClient.d.ts +1 -1
- package/dist/types/clients/createPublicClient.d.ts.map +1 -1
- package/dist/types/clients/createTestClient.d.ts +1 -1
- package/dist/types/clients/createTestClient.d.ts.map +1 -1
- package/dist/types/clients/createWalletClient.d.ts +1 -1
- package/dist/types/clients/createWalletClient.d.ts.map +1 -1
- package/dist/types/clients/decorators/public.d.ts +10 -9
- package/dist/types/clients/decorators/public.d.ts.map +1 -1
- package/dist/types/constants/number.d.ts +97 -0
- package/dist/types/constants/number.d.ts.map +1 -0
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/block.d.ts +7 -7
- package/dist/types/types/block.d.ts.map +1 -1
- package/dist/types/types/contract.d.ts +1 -1
- package/dist/types/types/contract.d.ts.map +1 -1
- package/dist/types/types/filter.d.ts +7 -3
- package/dist/types/types/filter.d.ts.map +1 -1
- package/dist/types/types/formatter.d.ts +3 -0
- package/dist/types/types/formatter.d.ts.map +1 -1
- package/dist/types/types/log.d.ts +8 -8
- package/dist/types/types/log.d.ts.map +1 -1
- package/dist/types/types/misc.d.ts.map +1 -1
- package/dist/types/types/rpc.d.ts +3 -3
- package/dist/types/types/rpc.d.ts.map +1 -1
- package/dist/types/types/transaction.d.ts +8 -8
- package/dist/types/types/transaction.d.ts.map +1 -1
- package/dist/types/utils/formatters/block.d.ts +13 -3
- package/dist/types/utils/formatters/block.d.ts.map +1 -1
- package/dist/types/utils/formatters/formatter.d.ts +1 -0
- package/dist/types/utils/formatters/formatter.d.ts.map +1 -1
- package/dist/types/utils/formatters/transaction.d.ts +10 -3
- package/dist/types/utils/formatters/transaction.d.ts.map +1 -1
- package/dist/types/utils/formatters/transactionReceipt.d.ts +1 -0
- package/dist/types/utils/formatters/transactionReceipt.d.ts.map +1 -1
- package/dist/types/utils/formatters/transactionRequest.d.ts +1 -0
- package/dist/types/utils/formatters/transactionRequest.d.ts.map +1 -1
- package/dist/types/utils/hash/hashFunction.d.ts +1 -1
- package/dist/types/utils/hash/hashFunction.d.ts.map +1 -1
- package/dist/types/utils/promise/withCache.d.ts +3 -3
- package/dist/types/utils/promise/withCache.d.ts.map +1 -1
- package/dist/types/utils/signature/hexToSignature.d.ts +13 -0
- package/dist/types/utils/signature/hexToSignature.d.ts.map +1 -0
- package/dist/types/utils/signature/signatureToHex.d.ts +17 -0
- package/dist/types/utils/signature/signatureToHex.d.ts.map +1 -0
- package/package.json +2 -1
- package/src/accounts/index.ts +1 -1
- package/src/accounts/utils/signMessage.ts +1 -1
- package/src/accounts/utils/signTypedData.ts +1 -1
- package/src/actions/public/createContractEventFilter.ts +30 -7
- package/src/actions/public/createEventFilter.ts +78 -24
- package/src/actions/public/getBlock.ts +18 -8
- package/src/actions/public/getBlockNumber.ts +5 -3
- package/src/actions/public/getFilterChanges.ts +46 -10
- package/src/actions/public/getFilterLogs.ts +26 -10
- package/src/actions/public/getLogs.ts +73 -18
- package/src/actions/public/getTransaction.ts +15 -8
- package/src/actions/public/watchBlockNumber.ts +1 -1
- package/src/actions/public/watchBlocks.ts +37 -18
- package/src/actions/public/watchContractEvent.ts +9 -5
- package/src/actions/public/watchEvent.ts +54 -17
- package/src/clients/createClient.ts +9 -0
- package/src/clients/createPublicClient.ts +7 -1
- package/src/clients/createTestClient.ts +7 -1
- package/src/clients/createWalletClient.ts +7 -1
- package/src/clients/decorators/public.ts +114 -25
- package/src/constants/number.ts +98 -0
- package/src/errors/version.ts +1 -1
- package/src/index.ts +101 -1
- package/src/types/block.ts +25 -10
- package/src/types/contract.ts +7 -3
- package/src/types/filter.ts +32 -26
- package/src/types/formatter.ts +9 -0
- package/src/types/log.ts +13 -8
- package/src/types/misc.ts +3 -0
- package/src/types/rpc.ts +20 -6
- package/src/types/transaction.ts +22 -11
- package/src/utils/formatters/block.ts +31 -4
- package/src/utils/formatters/formatter.ts +1 -0
- package/src/utils/formatters/transaction.ts +25 -2
- package/src/utils/hash/hashFunction.ts +3 -2
- package/src/utils/promise/withCache.ts +5 -5
- package/src/utils/signature/hexToSignature.ts +20 -0
- package/src/utils/signature/signatureToHex.ts +26 -0
- package/dist/cjs/accounts/utils/signatureToHex.js.map +0 -1
- package/dist/esm/accounts/utils/signatureToHex.js +0 -7
- package/dist/esm/accounts/utils/signatureToHex.js.map +0 -1
- package/dist/types/accounts/utils/signatureToHex.d.ts +0 -3
- package/dist/types/accounts/utils/signatureToHex.d.ts.map +0 -1
- package/src/accounts/utils/signatureToHex.ts +0 -12
- /package/dist/cjs/{accounts/utils → utils/signature}/signatureToHex.js +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
import type {
|
1
|
+
import type { AbiEvent, Address, Narrow } from 'abitype'
|
2
2
|
|
3
3
|
import type { Client } from '../../clients/createClient.js'
|
4
4
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
@@ -9,7 +9,7 @@ import type {
|
|
9
9
|
MaybeExtractEventArgsFromAbi,
|
10
10
|
} from '../../types/contract.js'
|
11
11
|
import type { Filter } from '../../types/filter.js'
|
12
|
-
import type { LogTopic } from '../../types/misc.js'
|
12
|
+
import type { Hex, LogTopic } from '../../types/misc.js'
|
13
13
|
import type { Prettify } from '../../types/utils.js'
|
14
14
|
import {
|
15
15
|
type EncodeEventTopicsParameters,
|
@@ -20,18 +20,23 @@ import { createFilterRequestScope } from '../../utils/filters/createFilterReques
|
|
20
20
|
|
21
21
|
export type CreateEventFilterParameters<
|
22
22
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
23
|
+
TAbiEvents extends
|
24
|
+
| readonly AbiEvent[]
|
25
|
+
| readonly unknown[]
|
26
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
23
27
|
TStrict extends boolean | undefined = undefined,
|
24
|
-
|
28
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
29
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
25
30
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
26
31
|
_Args extends
|
27
|
-
| MaybeExtractEventArgsFromAbi<
|
32
|
+
| MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
28
33
|
| undefined = undefined,
|
29
34
|
> = {
|
30
35
|
address?: Address | Address[]
|
31
|
-
fromBlock?: BlockNumber | BlockTag
|
32
|
-
toBlock?: BlockNumber | BlockTag
|
36
|
+
fromBlock?: TFromBlock | BlockNumber | BlockTag
|
37
|
+
toBlock?: TToBlock | BlockNumber | BlockTag
|
33
38
|
} & (MaybeExtractEventArgsFromAbi<
|
34
|
-
|
39
|
+
TAbiEvents,
|
35
40
|
_EventName
|
36
41
|
> extends infer TEventFilterArgs
|
37
42
|
?
|
@@ -40,6 +45,7 @@ export type CreateEventFilterParameters<
|
|
40
45
|
| TEventFilterArgs
|
41
46
|
| (_Args extends TEventFilterArgs ? _Args : never)
|
42
47
|
event: Narrow<TAbiEvent>
|
48
|
+
events?: never
|
43
49
|
/**
|
44
50
|
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
45
51
|
* @default false
|
@@ -49,6 +55,7 @@ export type CreateEventFilterParameters<
|
|
49
55
|
| {
|
50
56
|
args?: never
|
51
57
|
event?: Narrow<TAbiEvent>
|
58
|
+
events?: never
|
52
59
|
/**
|
53
60
|
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
54
61
|
* @default false
|
@@ -58,23 +65,42 @@ export type CreateEventFilterParameters<
|
|
58
65
|
| {
|
59
66
|
args?: never
|
60
67
|
event?: never
|
68
|
+
events: Narrow<TAbiEvents>
|
69
|
+
/**
|
70
|
+
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
71
|
+
* @default false
|
72
|
+
*/
|
73
|
+
strict?: TStrict
|
74
|
+
}
|
75
|
+
| {
|
76
|
+
args?: never
|
77
|
+
event?: never
|
78
|
+
events?: never
|
61
79
|
strict?: never
|
62
80
|
}
|
63
81
|
: {
|
64
82
|
args?: never
|
65
83
|
event?: never
|
84
|
+
events?: never
|
66
85
|
strict?: never
|
67
86
|
})
|
68
87
|
|
69
88
|
export type CreateEventFilterReturnType<
|
70
89
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
90
|
+
TAbiEvents extends
|
91
|
+
| readonly AbiEvent[]
|
92
|
+
| readonly unknown[]
|
93
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
71
94
|
TStrict extends boolean | undefined = undefined,
|
72
|
-
|
95
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
96
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
73
97
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
74
98
|
_Args extends
|
75
|
-
| MaybeExtractEventArgsFromAbi<
|
99
|
+
| MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
76
100
|
| undefined = undefined,
|
77
|
-
> = Prettify<
|
101
|
+
> = Prettify<
|
102
|
+
Filter<'event', TAbiEvents, _EventName, _Args, TStrict, TFromBlock, TToBlock>
|
103
|
+
>
|
78
104
|
|
79
105
|
/**
|
80
106
|
* Creates a [`Filter`](https://viem.sh/docs/glossary/types.html#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges.html).
|
@@ -101,12 +127,17 @@ export type CreateEventFilterReturnType<
|
|
101
127
|
*/
|
102
128
|
export async function createEventFilter<
|
103
129
|
TChain extends Chain | undefined,
|
104
|
-
TAbiEvent extends AbiEvent | undefined,
|
130
|
+
TAbiEvent extends AbiEvent | undefined = undefined,
|
131
|
+
TAbiEvents extends
|
132
|
+
| readonly AbiEvent[]
|
133
|
+
| readonly unknown[]
|
134
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
105
135
|
TStrict extends boolean | undefined = undefined,
|
106
|
-
|
136
|
+
TFromBlock extends BlockNumber<bigint> | BlockTag | undefined = undefined,
|
137
|
+
TToBlock extends BlockNumber<bigint> | BlockTag | undefined = undefined,
|
107
138
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
108
139
|
_Args extends
|
109
|
-
| MaybeExtractEventArgsFromAbi<
|
140
|
+
| MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
110
141
|
| undefined = undefined,
|
111
142
|
>(
|
112
143
|
client: Client<Transport, TChain>,
|
@@ -114,32 +145,51 @@ export async function createEventFilter<
|
|
114
145
|
address,
|
115
146
|
args,
|
116
147
|
event,
|
148
|
+
events: events_,
|
117
149
|
fromBlock,
|
118
150
|
strict,
|
119
151
|
toBlock,
|
120
152
|
}: CreateEventFilterParameters<
|
121
153
|
TAbiEvent,
|
154
|
+
TAbiEvents,
|
122
155
|
TStrict,
|
123
|
-
|
156
|
+
TFromBlock,
|
157
|
+
TToBlock,
|
124
158
|
_EventName,
|
125
159
|
_Args
|
126
160
|
> = {} as any,
|
127
161
|
): Promise<
|
128
|
-
CreateEventFilterReturnType<
|
162
|
+
CreateEventFilterReturnType<
|
163
|
+
TAbiEvent,
|
164
|
+
TAbiEvents,
|
165
|
+
TStrict,
|
166
|
+
TFromBlock,
|
167
|
+
TToBlock,
|
168
|
+
_EventName,
|
169
|
+
_Args
|
170
|
+
>
|
129
171
|
> {
|
172
|
+
const events = events_ ?? (event ? [event] : undefined)
|
173
|
+
|
130
174
|
const getRequest = createFilterRequestScope(client, {
|
131
175
|
method: 'eth_newFilter',
|
132
176
|
})
|
133
177
|
|
134
178
|
let topics: LogTopic[] = []
|
135
|
-
if (
|
136
|
-
topics =
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
179
|
+
if (events) {
|
180
|
+
topics = [
|
181
|
+
(events as AbiEvent[]).flatMap((event) =>
|
182
|
+
encodeEventTopics({
|
183
|
+
abi: [event],
|
184
|
+
eventName: (event as AbiEvent).name,
|
185
|
+
args,
|
186
|
+
} as EncodeEventTopicsParameters),
|
187
|
+
),
|
188
|
+
]
|
189
|
+
if (event) topics = topics[0] as LogTopic[]
|
190
|
+
}
|
141
191
|
|
142
|
-
const id = await client.request({
|
192
|
+
const id: Hex = await client.request({
|
143
193
|
method: 'eth_newFilter',
|
144
194
|
params: [
|
145
195
|
{
|
@@ -153,17 +203,21 @@ export async function createEventFilter<
|
|
153
203
|
})
|
154
204
|
|
155
205
|
return {
|
156
|
-
abi:
|
206
|
+
abi: events,
|
157
207
|
args,
|
158
208
|
eventName: event ? (event as AbiEvent).name : undefined,
|
209
|
+
fromBlock,
|
159
210
|
id,
|
160
211
|
request: getRequest(id),
|
161
212
|
strict,
|
213
|
+
toBlock,
|
162
214
|
type: 'event',
|
163
215
|
} as unknown as CreateEventFilterReturnType<
|
164
216
|
TAbiEvent,
|
217
|
+
TAbiEvents,
|
165
218
|
TStrict,
|
166
|
-
|
219
|
+
TFromBlock,
|
220
|
+
TToBlock,
|
167
221
|
_EventName,
|
168
222
|
_Args
|
169
223
|
>
|
@@ -12,9 +12,12 @@ import {
|
|
12
12
|
formatBlock,
|
13
13
|
} from '../../utils/formatters/block.js'
|
14
14
|
|
15
|
-
export type GetBlockParameters
|
15
|
+
export type GetBlockParameters<
|
16
|
+
TIncludeTransactions extends boolean = false,
|
17
|
+
TBlockTag extends BlockTag = 'latest',
|
18
|
+
> = {
|
16
19
|
/** Whether or not to include transaction data in the response. */
|
17
|
-
includeTransactions?:
|
20
|
+
includeTransactions?: TIncludeTransactions
|
18
21
|
} & (
|
19
22
|
| {
|
20
23
|
/** Hash of the block. */
|
@@ -35,13 +38,15 @@ export type GetBlockParameters = {
|
|
35
38
|
* The block tag.
|
36
39
|
* @default 'latest'
|
37
40
|
*/
|
38
|
-
blockTag?: BlockTag
|
41
|
+
blockTag?: TBlockTag | BlockTag
|
39
42
|
}
|
40
43
|
)
|
41
44
|
|
42
45
|
export type GetBlockReturnType<
|
43
46
|
TChain extends Chain | undefined = Chain | undefined,
|
44
|
-
|
47
|
+
TIncludeTransactions extends boolean = false,
|
48
|
+
TBlockTag extends BlockTag = 'latest',
|
49
|
+
> = FormattedBlock<TChain, TIncludeTransactions, TBlockTag>
|
45
50
|
|
46
51
|
/**
|
47
52
|
* Returns information about a block at a block number, hash, or tag.
|
@@ -70,15 +75,20 @@ export type GetBlockReturnType<
|
|
70
75
|
export async function getBlock<
|
71
76
|
TChain extends Chain | undefined,
|
72
77
|
TAccount extends Account | undefined,
|
78
|
+
TIncludeTransactions extends boolean = false,
|
79
|
+
TBlockTag extends BlockTag = 'latest',
|
73
80
|
>(
|
74
81
|
client: Client<Transport, TChain, TAccount>,
|
75
82
|
{
|
76
83
|
blockHash,
|
77
84
|
blockNumber,
|
78
|
-
blockTag
|
79
|
-
includeTransactions
|
80
|
-
}: GetBlockParameters = {},
|
81
|
-
): Promise<GetBlockReturnType<TChain>> {
|
85
|
+
blockTag: blockTag_,
|
86
|
+
includeTransactions: includeTransactions_,
|
87
|
+
}: GetBlockParameters<TIncludeTransactions, TBlockTag> = {},
|
88
|
+
): Promise<GetBlockReturnType<TChain, TIncludeTransactions, TBlockTag>> {
|
89
|
+
const blockTag = blockTag_ ?? 'latest'
|
90
|
+
const includeTransactions = includeTransactions_ ?? false
|
91
|
+
|
82
92
|
const blockNumberHex =
|
83
93
|
blockNumber !== undefined ? numberToHex(blockNumber) : undefined
|
84
94
|
|
@@ -4,7 +4,9 @@ import type { Chain } from '../../types/chain.js'
|
|
4
4
|
import { getCache, withCache } from '../../utils/promise/withCache.js'
|
5
5
|
|
6
6
|
export type GetBlockNumberParameters = {
|
7
|
-
/**
|
7
|
+
/** Time (in ms) that cached block number will remain in memory. */
|
8
|
+
cacheTime?: number
|
9
|
+
/** @deprecated use `cacheTime` instead. */
|
8
10
|
maxAge?: number
|
9
11
|
}
|
10
12
|
|
@@ -41,14 +43,14 @@ export function getBlockNumberCache(id: string) {
|
|
41
43
|
*/
|
42
44
|
export async function getBlockNumber<TChain extends Chain | undefined>(
|
43
45
|
client: Client<Transport, TChain>,
|
44
|
-
{
|
46
|
+
{ cacheTime = client.cacheTime, maxAge }: GetBlockNumberParameters = {},
|
45
47
|
): Promise<GetBlockNumberReturnType> {
|
46
48
|
const blockNumberHex = await withCache(
|
47
49
|
() =>
|
48
50
|
client.request({
|
49
51
|
method: 'eth_blockNumber',
|
50
52
|
}),
|
51
|
-
{ cacheKey: cacheKey(client.uid), maxAge },
|
53
|
+
{ cacheKey: cacheKey(client.uid), cacheTime: maxAge ?? cacheTime },
|
52
54
|
)
|
53
55
|
return BigInt(blockNumberHex)
|
54
56
|
}
|
@@ -6,6 +6,7 @@ import {
|
|
6
6
|
DecodeLogDataMismatch,
|
7
7
|
DecodeLogTopicsMismatch,
|
8
8
|
} from '../../errors/abi.js'
|
9
|
+
import type { BlockNumber, BlockTag } from '../../types/block.js'
|
9
10
|
import type { Chain } from '../../types/chain.js'
|
10
11
|
import type { Filter, FilterType } from '../../types/filter.js'
|
11
12
|
import type { Log } from '../../types/log.js'
|
@@ -15,25 +16,40 @@ import { formatLog } from '../../utils/formatters/log.js'
|
|
15
16
|
|
16
17
|
export type GetFilterChangesParameters<
|
17
18
|
TFilterType extends FilterType = FilterType,
|
18
|
-
TAbi extends Abi | readonly unknown[] =
|
19
|
-
TEventName extends string | undefined =
|
19
|
+
TAbi extends Abi | readonly unknown[] | undefined = undefined,
|
20
|
+
TEventName extends string | undefined = undefined,
|
20
21
|
TStrict extends boolean | undefined = undefined,
|
22
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
23
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
21
24
|
> = {
|
22
|
-
filter: Filter<
|
25
|
+
filter: Filter<
|
26
|
+
TFilterType,
|
27
|
+
TAbi,
|
28
|
+
TEventName,
|
29
|
+
any,
|
30
|
+
TStrict,
|
31
|
+
TFromBlock,
|
32
|
+
TToBlock
|
33
|
+
>
|
23
34
|
}
|
24
35
|
|
25
36
|
export type GetFilterChangesReturnType<
|
26
37
|
TFilterType extends FilterType = FilterType,
|
27
|
-
TAbi extends Abi | readonly unknown[] =
|
28
|
-
TEventName extends string | undefined =
|
38
|
+
TAbi extends Abi | readonly unknown[] | undefined = undefined,
|
39
|
+
TEventName extends string | undefined = undefined,
|
29
40
|
TStrict extends boolean | undefined = undefined,
|
41
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
42
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
30
43
|
_AbiEvent extends AbiEvent | undefined = TAbi extends Abi
|
31
44
|
? TEventName extends string
|
32
45
|
? ExtractAbiEvent<TAbi, TEventName>
|
33
46
|
: undefined
|
34
47
|
: undefined,
|
48
|
+
_Pending extends boolean =
|
49
|
+
| (TFromBlock extends 'pending' ? true : false)
|
50
|
+
| (TToBlock extends 'pending' ? true : false),
|
35
51
|
> = TFilterType extends 'event'
|
36
|
-
? Log<bigint, number, _AbiEvent, TStrict, TAbi, TEventName>[]
|
52
|
+
? Log<bigint, number, _Pending, _AbiEvent, TStrict, TAbi, TEventName>[]
|
37
53
|
: Hash[]
|
38
54
|
|
39
55
|
/**
|
@@ -122,15 +138,33 @@ export async function getFilterChanges<
|
|
122
138
|
TTransport extends Transport,
|
123
139
|
TChain extends Chain | undefined,
|
124
140
|
TFilterType extends FilterType,
|
125
|
-
TAbi extends Abi | readonly unknown[],
|
141
|
+
TAbi extends Abi | readonly unknown[] | undefined,
|
126
142
|
TEventName extends string | undefined,
|
127
143
|
TStrict extends boolean | undefined = undefined,
|
144
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
145
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
128
146
|
>(
|
129
147
|
_client: Client<TTransport, TChain>,
|
130
148
|
{
|
131
149
|
filter,
|
132
|
-
}: GetFilterChangesParameters<
|
133
|
-
|
150
|
+
}: GetFilterChangesParameters<
|
151
|
+
TFilterType,
|
152
|
+
TAbi,
|
153
|
+
TEventName,
|
154
|
+
TStrict,
|
155
|
+
TFromBlock,
|
156
|
+
TToBlock
|
157
|
+
>,
|
158
|
+
): Promise<
|
159
|
+
GetFilterChangesReturnType<
|
160
|
+
TFilterType,
|
161
|
+
TAbi,
|
162
|
+
TEventName,
|
163
|
+
TStrict,
|
164
|
+
TFromBlock,
|
165
|
+
TToBlock
|
166
|
+
>
|
167
|
+
> {
|
134
168
|
const strict = 'strict' in filter && filter.strict
|
135
169
|
|
136
170
|
const logs = await filter.request({
|
@@ -172,6 +206,8 @@ export async function getFilterChanges<
|
|
172
206
|
TFilterType,
|
173
207
|
TAbi,
|
174
208
|
TEventName,
|
175
|
-
TStrict
|
209
|
+
TStrict,
|
210
|
+
TFromBlock,
|
211
|
+
TToBlock
|
176
212
|
>
|
177
213
|
}
|
@@ -6,6 +6,7 @@ import {
|
|
6
6
|
DecodeLogDataMismatch,
|
7
7
|
DecodeLogTopicsMismatch,
|
8
8
|
} from '../../errors/abi.js'
|
9
|
+
import type { BlockNumber, BlockTag } from '../../types/block.js'
|
9
10
|
import type { Chain } from '../../types/chain.js'
|
10
11
|
import type { Filter } from '../../types/filter.js'
|
11
12
|
import type { Log } from '../../types/log.js'
|
@@ -13,22 +14,29 @@ import { decodeEventLog } from '../../utils/abi/decodeEventLog.js'
|
|
13
14
|
import { formatLog } from '../../utils/formatters/log.js'
|
14
15
|
|
15
16
|
export type GetFilterLogsParameters<
|
16
|
-
TAbi extends Abi | readonly unknown[] =
|
17
|
-
TEventName extends string | undefined =
|
17
|
+
TAbi extends Abi | readonly unknown[] | undefined = undefined,
|
18
|
+
TEventName extends string | undefined = undefined,
|
18
19
|
TStrict extends boolean | undefined = undefined,
|
20
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
21
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
19
22
|
> = {
|
20
|
-
filter: Filter<'event', TAbi, TEventName, any, TStrict>
|
23
|
+
filter: Filter<'event', TAbi, TEventName, any, TStrict, TFromBlock, TToBlock>
|
21
24
|
}
|
22
25
|
export type GetFilterLogsReturnType<
|
23
|
-
TAbi extends Abi | readonly unknown[] =
|
24
|
-
TEventName extends string | undefined =
|
26
|
+
TAbi extends Abi | readonly unknown[] | undefined = undefined,
|
27
|
+
TEventName extends string | undefined = undefined,
|
25
28
|
TStrict extends boolean | undefined = undefined,
|
29
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
30
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
26
31
|
_AbiEvent extends AbiEvent | undefined = TAbi extends Abi
|
27
32
|
? TEventName extends string
|
28
33
|
? ExtractAbiEvent<TAbi, TEventName>
|
29
34
|
: undefined
|
30
35
|
: undefined,
|
31
|
-
|
36
|
+
_Pending extends boolean =
|
37
|
+
| (TFromBlock extends 'pending' ? true : false)
|
38
|
+
| (TToBlock extends 'pending' ? true : false),
|
39
|
+
> = Log<bigint, number, _Pending, _AbiEvent, TStrict, TAbi, TEventName>[]
|
32
40
|
|
33
41
|
/**
|
34
42
|
* Returns a list of event logs since the filter was created.
|
@@ -59,13 +67,19 @@ export type GetFilterLogsReturnType<
|
|
59
67
|
*/
|
60
68
|
export async function getFilterLogs<
|
61
69
|
TChain extends Chain | undefined,
|
62
|
-
TAbi extends Abi | readonly unknown[],
|
70
|
+
TAbi extends Abi | readonly unknown[] | undefined,
|
63
71
|
TEventName extends string | undefined,
|
64
72
|
TStrict extends boolean | undefined = undefined,
|
73
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
74
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
65
75
|
>(
|
66
76
|
_client: Client<Transport, TChain>,
|
67
|
-
{
|
68
|
-
|
77
|
+
{
|
78
|
+
filter,
|
79
|
+
}: GetFilterLogsParameters<TAbi, TEventName, TStrict, TFromBlock, TToBlock>,
|
80
|
+
): Promise<
|
81
|
+
GetFilterLogsReturnType<TAbi, TEventName, TStrict, TFromBlock, TToBlock>
|
82
|
+
> {
|
69
83
|
const strict = filter.strict ?? false
|
70
84
|
|
71
85
|
const logs = await filter.request({
|
@@ -105,6 +119,8 @@ export async function getFilterLogs<
|
|
105
119
|
.filter(Boolean) as unknown as GetFilterLogsReturnType<
|
106
120
|
TAbi,
|
107
121
|
TEventName,
|
108
|
-
TStrict
|
122
|
+
TStrict,
|
123
|
+
TFromBlock,
|
124
|
+
TToBlock
|
109
125
|
>
|
110
126
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { AbiEvent, Address, Narrow } from 'abitype'
|
1
|
+
import type { Abi, AbiEvent, Address, Narrow } from 'abitype'
|
2
2
|
|
3
3
|
import type { Client } from '../../clients/createClient.js'
|
4
4
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
@@ -25,7 +25,13 @@ import { formatLog } from '../../utils/formatters/log.js'
|
|
25
25
|
|
26
26
|
export type GetLogsParameters<
|
27
27
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
28
|
+
TAbiEvents extends
|
29
|
+
| readonly AbiEvent[]
|
30
|
+
| readonly unknown[]
|
31
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
28
32
|
TStrict extends boolean | undefined = undefined,
|
33
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
34
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
29
35
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
30
36
|
> = {
|
31
37
|
/** Address or list of addresses from which logs originated */
|
@@ -33,7 +39,8 @@ export type GetLogsParameters<
|
|
33
39
|
} & (
|
34
40
|
| {
|
35
41
|
event: Narrow<TAbiEvent>
|
36
|
-
|
42
|
+
events?: never
|
43
|
+
args?: MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
37
44
|
/**
|
38
45
|
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
39
46
|
* @default false
|
@@ -42,6 +49,17 @@ export type GetLogsParameters<
|
|
42
49
|
}
|
43
50
|
| {
|
44
51
|
event?: never
|
52
|
+
events: Narrow<TAbiEvents>
|
53
|
+
args?: never
|
54
|
+
/**
|
55
|
+
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
56
|
+
* @default false
|
57
|
+
*/
|
58
|
+
strict?: TStrict
|
59
|
+
}
|
60
|
+
| {
|
61
|
+
event?: never
|
62
|
+
events?: never
|
45
63
|
args?: never
|
46
64
|
strict?: never
|
47
65
|
}
|
@@ -49,9 +67,9 @@ export type GetLogsParameters<
|
|
49
67
|
(
|
50
68
|
| {
|
51
69
|
/** Block number or tag after which to include logs */
|
52
|
-
fromBlock?: BlockNumber
|
70
|
+
fromBlock?: TFromBlock | BlockNumber | BlockTag
|
53
71
|
/** Block number or tag before which to include logs */
|
54
|
-
toBlock?: BlockNumber
|
72
|
+
toBlock?: TToBlock | BlockNumber | BlockTag
|
55
73
|
blockHash?: never
|
56
74
|
}
|
57
75
|
| {
|
@@ -64,9 +82,18 @@ export type GetLogsParameters<
|
|
64
82
|
|
65
83
|
export type GetLogsReturnType<
|
66
84
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
85
|
+
TAbiEvents extends
|
86
|
+
| readonly AbiEvent[]
|
87
|
+
| readonly unknown[]
|
88
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
67
89
|
TStrict extends boolean | undefined = undefined,
|
90
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
91
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
68
92
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
69
|
-
|
93
|
+
_Pending extends boolean =
|
94
|
+
| (TFromBlock extends 'pending' ? true : false)
|
95
|
+
| (TToBlock extends 'pending' ? true : false),
|
96
|
+
> = Log<bigint, number, _Pending, TAbiEvent, TStrict, TAbiEvents, _EventName>[]
|
70
97
|
|
71
98
|
/**
|
72
99
|
* Returns a list of event logs matching the provided parameters.
|
@@ -92,8 +119,14 @@ export type GetLogsReturnType<
|
|
92
119
|
*/
|
93
120
|
export async function getLogs<
|
94
121
|
TChain extends Chain | undefined,
|
95
|
-
TAbiEvent extends AbiEvent | undefined,
|
122
|
+
TAbiEvent extends AbiEvent | undefined = undefined,
|
123
|
+
TAbiEvents extends
|
124
|
+
| readonly AbiEvent[]
|
125
|
+
| readonly unknown[]
|
126
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
96
127
|
TStrict extends boolean | undefined = undefined,
|
128
|
+
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
129
|
+
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
97
130
|
>(
|
98
131
|
client: Client<Transport, TChain>,
|
99
132
|
{
|
@@ -102,19 +135,35 @@ export async function getLogs<
|
|
102
135
|
fromBlock,
|
103
136
|
toBlock,
|
104
137
|
event,
|
138
|
+
events: events_,
|
105
139
|
args,
|
106
140
|
strict: strict_,
|
107
|
-
}: GetLogsParameters<
|
108
|
-
|
141
|
+
}: GetLogsParameters<
|
142
|
+
TAbiEvent,
|
143
|
+
TAbiEvents,
|
144
|
+
TStrict,
|
145
|
+
TFromBlock,
|
146
|
+
TToBlock
|
147
|
+
> = {},
|
148
|
+
): Promise<
|
149
|
+
GetLogsReturnType<TAbiEvent, TAbiEvents, TStrict, TFromBlock, TToBlock>
|
150
|
+
> {
|
109
151
|
const strict = strict_ ?? false
|
152
|
+
const events = events_ ?? (event ? [event] : undefined)
|
110
153
|
|
111
154
|
let topics: LogTopic[] = []
|
112
|
-
if (
|
113
|
-
topics =
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
155
|
+
if (events) {
|
156
|
+
topics = [
|
157
|
+
(events as AbiEvent[]).flatMap((event) =>
|
158
|
+
encodeEventTopics({
|
159
|
+
abi: [event],
|
160
|
+
eventName: (event as AbiEvent).name,
|
161
|
+
args,
|
162
|
+
} as EncodeEventTopicsParameters),
|
163
|
+
),
|
164
|
+
]
|
165
|
+
if (event) topics = topics[0] as LogTopic[]
|
166
|
+
}
|
118
167
|
|
119
168
|
let logs: RpcLog[]
|
120
169
|
if (blockHash) {
|
@@ -140,15 +189,15 @@ export async function getLogs<
|
|
140
189
|
return logs
|
141
190
|
.map((log) => {
|
142
191
|
try {
|
143
|
-
const { eventName, args } =
|
192
|
+
const { eventName, args } = events
|
144
193
|
? decodeEventLog({
|
145
|
-
abi:
|
194
|
+
abi: events as Abi,
|
146
195
|
data: log.data,
|
147
196
|
topics: log.topics as any,
|
148
197
|
strict,
|
149
198
|
})
|
150
199
|
: { eventName: undefined, args: undefined }
|
151
|
-
return formatLog(log, { args, eventName })
|
200
|
+
return formatLog(log, { args, eventName: eventName as string })
|
152
201
|
} catch (err) {
|
153
202
|
let eventName
|
154
203
|
let isUnnamed
|
@@ -166,5 +215,11 @@ export async function getLogs<
|
|
166
215
|
return formatLog(log, { args: isUnnamed ? [] : {}, eventName })
|
167
216
|
}
|
168
217
|
})
|
169
|
-
.filter(Boolean) as unknown as GetLogsReturnType<
|
218
|
+
.filter(Boolean) as unknown as GetLogsReturnType<
|
219
|
+
TAbiEvent,
|
220
|
+
TAbiEvents,
|
221
|
+
TStrict,
|
222
|
+
TFromBlock,
|
223
|
+
TToBlock
|
224
|
+
>
|
170
225
|
}
|