viem 0.0.0-main.20230730T091111 → 0.0.0-main.20230731T042109
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/actions/public/createEventFilter.js +14 -8
- package/dist/cjs/actions/public/createEventFilter.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/watchEvent.js +4 -2
- package/dist/cjs/actions/public/watchEvent.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 +106 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/actions/public/createEventFilter.js +14 -8
- package/dist/esm/actions/public/createEventFilter.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/watchEvent.js +4 -2
- package/dist/esm/actions/public/watchEvent.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 +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/types/actions/public/createEventFilter.d.ts +18 -5
- package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterChanges.d.ts +3 -3
- package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterLogs.d.ts +3 -3
- package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
- package/dist/types/actions/public/getLogs.d.ts +15 -4
- package/dist/types/actions/public/getLogs.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/clients/decorators/public.d.ts +5 -5
- 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 +2 -1
- package/dist/types/index.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 +1 -1
- package/dist/types/types/filter.d.ts.map +1 -1
- package/dist/types/types/log.d.ts +3 -3
- package/dist/types/types/log.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/public/createEventFilter.ts +52 -20
- package/src/actions/public/getFilterChanges.ts +5 -5
- package/src/actions/public/getFilterLogs.ts +5 -5
- package/src/actions/public/getLogs.ts +56 -15
- package/src/actions/public/watchEvent.ts +50 -17
- package/src/clients/decorators/public.ts +31 -12
- package/src/constants/number.ts +98 -0
- package/src/errors/version.ts +1 -1
- package/src/index.ts +99 -1
- package/src/types/contract.ts +7 -3
- package/src/types/filter.ts +1 -1
- package/src/types/log.ts +7 -3
@@ -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'
|
@@ -20,20 +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,
|
25
29
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
26
|
-
_Abi extends Abi | readonly unknown[] = [TAbiEvent],
|
27
30
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
28
31
|
_Args extends
|
29
|
-
| MaybeExtractEventArgsFromAbi<
|
32
|
+
| MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
30
33
|
| undefined = undefined,
|
31
34
|
> = {
|
32
35
|
address?: Address | Address[]
|
33
36
|
fromBlock?: TFromBlock | BlockNumber | BlockTag
|
34
37
|
toBlock?: TToBlock | BlockNumber | BlockTag
|
35
38
|
} & (MaybeExtractEventArgsFromAbi<
|
36
|
-
|
39
|
+
TAbiEvents,
|
37
40
|
_EventName
|
38
41
|
> extends infer TEventFilterArgs
|
39
42
|
?
|
@@ -42,6 +45,7 @@ export type CreateEventFilterParameters<
|
|
42
45
|
| TEventFilterArgs
|
43
46
|
| (_Args extends TEventFilterArgs ? _Args : never)
|
44
47
|
event: Narrow<TAbiEvent>
|
48
|
+
events?: never
|
45
49
|
/**
|
46
50
|
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
47
51
|
* @default false
|
@@ -51,6 +55,7 @@ export type CreateEventFilterParameters<
|
|
51
55
|
| {
|
52
56
|
args?: never
|
53
57
|
event?: Narrow<TAbiEvent>
|
58
|
+
events?: never
|
54
59
|
/**
|
55
60
|
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
56
61
|
* @default false
|
@@ -60,26 +65,41 @@ export type CreateEventFilterParameters<
|
|
60
65
|
| {
|
61
66
|
args?: never
|
62
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
|
63
79
|
strict?: never
|
64
80
|
}
|
65
81
|
: {
|
66
82
|
args?: never
|
67
83
|
event?: never
|
84
|
+
events?: never
|
68
85
|
strict?: never
|
69
86
|
})
|
70
87
|
|
71
88
|
export type CreateEventFilterReturnType<
|
72
89
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
90
|
+
TAbiEvents extends
|
91
|
+
| readonly AbiEvent[]
|
92
|
+
| readonly unknown[]
|
93
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
73
94
|
TStrict extends boolean | undefined = undefined,
|
74
95
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
75
96
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
76
|
-
_Abi extends Abi | readonly unknown[] = [TAbiEvent],
|
77
97
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
78
98
|
_Args extends
|
79
|
-
| MaybeExtractEventArgsFromAbi<
|
99
|
+
| MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
80
100
|
| undefined = undefined,
|
81
101
|
> = Prettify<
|
82
|
-
Filter<'event',
|
102
|
+
Filter<'event', TAbiEvents, _EventName, _Args, TStrict, TFromBlock, TToBlock>
|
83
103
|
>
|
84
104
|
|
85
105
|
/**
|
@@ -107,14 +127,17 @@ export type CreateEventFilterReturnType<
|
|
107
127
|
*/
|
108
128
|
export async function createEventFilter<
|
109
129
|
TChain extends Chain | undefined,
|
110
|
-
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,
|
111
135
|
TStrict extends boolean | undefined = undefined,
|
112
136
|
TFromBlock extends BlockNumber<bigint> | BlockTag | undefined = undefined,
|
113
137
|
TToBlock extends BlockNumber<bigint> | BlockTag | undefined = undefined,
|
114
|
-
_Abi extends Abi | readonly unknown[] = [TAbiEvent],
|
115
138
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
116
139
|
_Args extends
|
117
|
-
| MaybeExtractEventArgsFromAbi<
|
140
|
+
| MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
118
141
|
| undefined = undefined,
|
119
142
|
>(
|
120
143
|
client: Client<Transport, TChain>,
|
@@ -122,40 +145,49 @@ export async function createEventFilter<
|
|
122
145
|
address,
|
123
146
|
args,
|
124
147
|
event,
|
148
|
+
events: events_,
|
125
149
|
fromBlock,
|
126
150
|
strict,
|
127
151
|
toBlock,
|
128
152
|
}: CreateEventFilterParameters<
|
129
153
|
TAbiEvent,
|
154
|
+
TAbiEvents,
|
130
155
|
TStrict,
|
131
156
|
TFromBlock,
|
132
157
|
TToBlock,
|
133
|
-
_Abi,
|
134
158
|
_EventName,
|
135
159
|
_Args
|
136
160
|
> = {} as any,
|
137
161
|
): Promise<
|
138
162
|
CreateEventFilterReturnType<
|
139
163
|
TAbiEvent,
|
164
|
+
TAbiEvents,
|
140
165
|
TStrict,
|
141
166
|
TFromBlock,
|
142
167
|
TToBlock,
|
143
|
-
_Abi,
|
144
168
|
_EventName,
|
145
169
|
_Args
|
146
170
|
>
|
147
171
|
> {
|
172
|
+
const events = events_ ?? (event ? [event] : undefined)
|
173
|
+
|
148
174
|
const getRequest = createFilterRequestScope(client, {
|
149
175
|
method: 'eth_newFilter',
|
150
176
|
})
|
151
177
|
|
152
178
|
let topics: LogTopic[] = []
|
153
|
-
if (
|
154
|
-
topics =
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
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
|
+
}
|
159
191
|
|
160
192
|
const id: Hex = await client.request({
|
161
193
|
method: 'eth_newFilter',
|
@@ -171,7 +203,7 @@ export async function createEventFilter<
|
|
171
203
|
})
|
172
204
|
|
173
205
|
return {
|
174
|
-
abi:
|
206
|
+
abi: events,
|
175
207
|
args,
|
176
208
|
eventName: event ? (event as AbiEvent).name : undefined,
|
177
209
|
fromBlock,
|
@@ -182,10 +214,10 @@ export async function createEventFilter<
|
|
182
214
|
type: 'event',
|
183
215
|
} as unknown as CreateEventFilterReturnType<
|
184
216
|
TAbiEvent,
|
217
|
+
TAbiEvents,
|
185
218
|
TStrict,
|
186
219
|
TFromBlock,
|
187
220
|
TToBlock,
|
188
|
-
_Abi,
|
189
221
|
_EventName,
|
190
222
|
_Args
|
191
223
|
>
|
@@ -16,8 +16,8 @@ import { formatLog } from '../../utils/formatters/log.js'
|
|
16
16
|
|
17
17
|
export type GetFilterChangesParameters<
|
18
18
|
TFilterType extends FilterType = FilterType,
|
19
|
-
TAbi extends Abi | readonly unknown[] =
|
20
|
-
TEventName extends string | undefined =
|
19
|
+
TAbi extends Abi | readonly unknown[] | undefined = undefined,
|
20
|
+
TEventName extends string | undefined = undefined,
|
21
21
|
TStrict extends boolean | undefined = undefined,
|
22
22
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
23
23
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -35,8 +35,8 @@ export type GetFilterChangesParameters<
|
|
35
35
|
|
36
36
|
export type GetFilterChangesReturnType<
|
37
37
|
TFilterType extends FilterType = FilterType,
|
38
|
-
TAbi extends Abi | readonly unknown[] =
|
39
|
-
TEventName extends string | undefined =
|
38
|
+
TAbi extends Abi | readonly unknown[] | undefined = undefined,
|
39
|
+
TEventName extends string | undefined = undefined,
|
40
40
|
TStrict extends boolean | undefined = undefined,
|
41
41
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
42
42
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -138,7 +138,7 @@ export async function getFilterChanges<
|
|
138
138
|
TTransport extends Transport,
|
139
139
|
TChain extends Chain | undefined,
|
140
140
|
TFilterType extends FilterType,
|
141
|
-
TAbi extends Abi | readonly unknown[],
|
141
|
+
TAbi extends Abi | readonly unknown[] | undefined,
|
142
142
|
TEventName extends string | undefined,
|
143
143
|
TStrict extends boolean | undefined = undefined,
|
144
144
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -14,8 +14,8 @@ import { decodeEventLog } from '../../utils/abi/decodeEventLog.js'
|
|
14
14
|
import { formatLog } from '../../utils/formatters/log.js'
|
15
15
|
|
16
16
|
export type GetFilterLogsParameters<
|
17
|
-
TAbi extends Abi | readonly unknown[] =
|
18
|
-
TEventName extends string | undefined =
|
17
|
+
TAbi extends Abi | readonly unknown[] | undefined = undefined,
|
18
|
+
TEventName extends string | undefined = undefined,
|
19
19
|
TStrict extends boolean | undefined = undefined,
|
20
20
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
21
21
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -23,8 +23,8 @@ export type GetFilterLogsParameters<
|
|
23
23
|
filter: Filter<'event', TAbi, TEventName, any, TStrict, TFromBlock, TToBlock>
|
24
24
|
}
|
25
25
|
export type GetFilterLogsReturnType<
|
26
|
-
TAbi extends Abi | readonly unknown[] =
|
27
|
-
TEventName extends string | undefined =
|
26
|
+
TAbi extends Abi | readonly unknown[] | undefined = undefined,
|
27
|
+
TEventName extends string | undefined = undefined,
|
28
28
|
TStrict extends boolean | undefined = undefined,
|
29
29
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
30
30
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -67,7 +67,7 @@ export type GetFilterLogsReturnType<
|
|
67
67
|
*/
|
68
68
|
export async function getFilterLogs<
|
69
69
|
TChain extends Chain | undefined,
|
70
|
-
TAbi extends Abi | readonly unknown[],
|
70
|
+
TAbi extends Abi | readonly unknown[] | undefined,
|
71
71
|
TEventName extends string | undefined,
|
72
72
|
TStrict extends boolean | undefined = undefined,
|
73
73
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -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,6 +25,10 @@ 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,
|
29
33
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
30
34
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -35,7 +39,8 @@ export type GetLogsParameters<
|
|
35
39
|
} & (
|
36
40
|
| {
|
37
41
|
event: Narrow<TAbiEvent>
|
38
|
-
|
42
|
+
events?: never
|
43
|
+
args?: MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
39
44
|
/**
|
40
45
|
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
41
46
|
* @default false
|
@@ -44,6 +49,17 @@ export type GetLogsParameters<
|
|
44
49
|
}
|
45
50
|
| {
|
46
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
|
47
63
|
args?: never
|
48
64
|
strict?: never
|
49
65
|
}
|
@@ -66,6 +82,10 @@ export type GetLogsParameters<
|
|
66
82
|
|
67
83
|
export type GetLogsReturnType<
|
68
84
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
85
|
+
TAbiEvents extends
|
86
|
+
| readonly AbiEvent[]
|
87
|
+
| readonly unknown[]
|
88
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
69
89
|
TStrict extends boolean | undefined = undefined,
|
70
90
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
71
91
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -73,7 +93,7 @@ export type GetLogsReturnType<
|
|
73
93
|
_Pending extends boolean =
|
74
94
|
| (TFromBlock extends 'pending' ? true : false)
|
75
95
|
| (TToBlock extends 'pending' ? true : false),
|
76
|
-
> = Log<bigint, number, _Pending, TAbiEvent, TStrict,
|
96
|
+
> = Log<bigint, number, _Pending, TAbiEvent, TStrict, TAbiEvents, _EventName>[]
|
77
97
|
|
78
98
|
/**
|
79
99
|
* Returns a list of event logs matching the provided parameters.
|
@@ -99,7 +119,11 @@ export type GetLogsReturnType<
|
|
99
119
|
*/
|
100
120
|
export async function getLogs<
|
101
121
|
TChain extends Chain | undefined,
|
102
|
-
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,
|
103
127
|
TStrict extends boolean | undefined = undefined,
|
104
128
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
105
129
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -111,19 +135,35 @@ export async function getLogs<
|
|
111
135
|
fromBlock,
|
112
136
|
toBlock,
|
113
137
|
event,
|
138
|
+
events: events_,
|
114
139
|
args,
|
115
140
|
strict: strict_,
|
116
|
-
}: GetLogsParameters<
|
117
|
-
|
141
|
+
}: GetLogsParameters<
|
142
|
+
TAbiEvent,
|
143
|
+
TAbiEvents,
|
144
|
+
TStrict,
|
145
|
+
TFromBlock,
|
146
|
+
TToBlock
|
147
|
+
> = {},
|
148
|
+
): Promise<
|
149
|
+
GetLogsReturnType<TAbiEvent, TAbiEvents, TStrict, TFromBlock, TToBlock>
|
150
|
+
> {
|
118
151
|
const strict = strict_ ?? false
|
152
|
+
const events = events_ ?? (event ? [event] : undefined)
|
119
153
|
|
120
154
|
let topics: LogTopic[] = []
|
121
|
-
if (
|
122
|
-
topics =
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
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
|
+
}
|
127
167
|
|
128
168
|
let logs: RpcLog[]
|
129
169
|
if (blockHash) {
|
@@ -149,15 +189,15 @@ export async function getLogs<
|
|
149
189
|
return logs
|
150
190
|
.map((log) => {
|
151
191
|
try {
|
152
|
-
const { eventName, args } =
|
192
|
+
const { eventName, args } = events
|
153
193
|
? decodeEventLog({
|
154
|
-
abi:
|
194
|
+
abi: events as Abi,
|
155
195
|
data: log.data,
|
156
196
|
topics: log.topics as any,
|
157
197
|
strict,
|
158
198
|
})
|
159
199
|
: { eventName: undefined, args: undefined }
|
160
|
-
return formatLog(log, { args, eventName })
|
200
|
+
return formatLog(log, { args, eventName: eventName as string })
|
161
201
|
} catch (err) {
|
162
202
|
let eventName
|
163
203
|
let isUnnamed
|
@@ -177,6 +217,7 @@ export async function getLogs<
|
|
177
217
|
})
|
178
218
|
.filter(Boolean) as unknown as GetLogsReturnType<
|
179
219
|
TAbiEvent,
|
220
|
+
TAbiEvents,
|
180
221
|
TStrict,
|
181
222
|
TFromBlock,
|
182
223
|
TToBlock
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { AbiEvent, Address } from 'abitype'
|
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'
|
@@ -19,24 +19,38 @@ import {
|
|
19
19
|
} from './createEventFilter.js'
|
20
20
|
import { getBlockNumber } from './getBlockNumber.js'
|
21
21
|
import { getFilterChanges } from './getFilterChanges.js'
|
22
|
-
import { getLogs } from './getLogs.js'
|
22
|
+
import { type GetLogsParameters, getLogs } from './getLogs.js'
|
23
23
|
import { uninstallFilter } from './uninstallFilter.js'
|
24
24
|
|
25
25
|
export type WatchEventOnLogsParameter<
|
26
26
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
27
|
+
TAbiEvents extends
|
28
|
+
| readonly AbiEvent[]
|
29
|
+
| readonly unknown[]
|
30
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
27
31
|
TStrict extends boolean | undefined = undefined,
|
28
32
|
TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
29
|
-
> = Log<bigint, number, false, TAbiEvent, TStrict,
|
33
|
+
> = Log<bigint, number, false, TAbiEvent, TStrict, TAbiEvents, TEventName>[]
|
30
34
|
export type WatchEventOnLogsFn<
|
31
35
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
36
|
+
TAbiEvents extends
|
37
|
+
| readonly AbiEvent[]
|
38
|
+
| readonly unknown[]
|
39
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
32
40
|
TStrict extends boolean | undefined = undefined,
|
33
|
-
|
34
|
-
> = (
|
41
|
+
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
42
|
+
> = (
|
43
|
+
logs: WatchEventOnLogsParameter<TAbiEvent, TAbiEvents, TStrict, _EventName>,
|
44
|
+
) => void
|
35
45
|
|
36
46
|
export type WatchEventParameters<
|
37
47
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
48
|
+
TAbiEvents extends
|
49
|
+
| readonly AbiEvent[]
|
50
|
+
| readonly unknown[]
|
51
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
38
52
|
TStrict extends boolean | undefined = undefined,
|
39
|
-
|
53
|
+
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
40
54
|
> = {
|
41
55
|
/** The address of the contract. */
|
42
56
|
address?: Address | Address[]
|
@@ -48,13 +62,24 @@ export type WatchEventParameters<
|
|
48
62
|
/** The callback to call when an error occurred when trying to get for a new block. */
|
49
63
|
onError?: (error: Error) => void
|
50
64
|
/** The callback to call when new event logs are received. */
|
51
|
-
onLogs: WatchEventOnLogsFn<TAbiEvent, TStrict,
|
65
|
+
onLogs: WatchEventOnLogsFn<TAbiEvent, TAbiEvents, TStrict, _EventName>
|
52
66
|
/** Polling frequency (in ms). Defaults to Client's pollingInterval config. */
|
53
67
|
pollingInterval?: number
|
54
68
|
} & (
|
55
69
|
| {
|
56
|
-
event: TAbiEvent
|
57
|
-
|
70
|
+
event: Narrow<TAbiEvent>
|
71
|
+
events?: never
|
72
|
+
args?: MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
73
|
+
/**
|
74
|
+
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
75
|
+
* @default false
|
76
|
+
*/
|
77
|
+
strict?: TStrict
|
78
|
+
}
|
79
|
+
| {
|
80
|
+
event?: never
|
81
|
+
events?: Narrow<TAbiEvents>
|
82
|
+
args?: never
|
58
83
|
/**
|
59
84
|
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
60
85
|
* @default false
|
@@ -63,6 +88,7 @@ export type WatchEventParameters<
|
|
63
88
|
}
|
64
89
|
| {
|
65
90
|
event?: never
|
91
|
+
events?: never
|
66
92
|
args?: never
|
67
93
|
strict?: never
|
68
94
|
}
|
@@ -104,9 +130,13 @@ export type WatchEventReturnType = () => void
|
|
104
130
|
*/
|
105
131
|
export function watchEvent<
|
106
132
|
TChain extends Chain | undefined,
|
107
|
-
TAbiEvent extends AbiEvent | undefined,
|
108
|
-
|
133
|
+
TAbiEvent extends AbiEvent | undefined = undefined,
|
134
|
+
TAbiEvents extends
|
135
|
+
| readonly AbiEvent[]
|
136
|
+
| readonly unknown[]
|
137
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
109
138
|
TStrict extends boolean | undefined = undefined,
|
139
|
+
_EventName extends string | undefined = undefined,
|
110
140
|
>(
|
111
141
|
client: Client<Transport, TChain>,
|
112
142
|
{
|
@@ -114,11 +144,12 @@ export function watchEvent<
|
|
114
144
|
args,
|
115
145
|
batch = true,
|
116
146
|
event,
|
147
|
+
events,
|
117
148
|
onError,
|
118
149
|
onLogs,
|
119
150
|
pollingInterval = client.pollingInterval,
|
120
151
|
strict: strict_,
|
121
|
-
}: WatchEventParameters<TAbiEvent, TStrict>,
|
152
|
+
}: WatchEventParameters<TAbiEvent, TAbiEvents, TStrict>,
|
122
153
|
): WatchEventReturnType {
|
123
154
|
const observerId = stringify([
|
124
155
|
'watchEvent',
|
@@ -133,7 +164,7 @@ export function watchEvent<
|
|
133
164
|
|
134
165
|
return observe(observerId, { onLogs, onError }, (emit) => {
|
135
166
|
let previousBlockNumber: bigint
|
136
|
-
let filter: Filter<'event',
|
167
|
+
let filter: Filter<'event', TAbiEvents, _EventName, any>
|
137
168
|
let initialized = false
|
138
169
|
|
139
170
|
const unwatch = poll(
|
@@ -144,11 +175,12 @@ export function watchEvent<
|
|
144
175
|
address,
|
145
176
|
args,
|
146
177
|
event: event!,
|
178
|
+
events,
|
147
179
|
strict,
|
148
180
|
} as unknown as CreateEventFilterParameters)) as unknown as Filter<
|
149
181
|
'event',
|
150
|
-
|
151
|
-
|
182
|
+
TAbiEvents,
|
183
|
+
_EventName
|
152
184
|
>
|
153
185
|
} catch {}
|
154
186
|
initialized = true
|
@@ -173,10 +205,11 @@ export function watchEvent<
|
|
173
205
|
logs = await getLogs(client, {
|
174
206
|
address,
|
175
207
|
args,
|
208
|
+
event: event!,
|
209
|
+
events,
|
176
210
|
fromBlock: previousBlockNumber + 1n,
|
177
211
|
toBlock: blockNumber,
|
178
|
-
|
179
|
-
})
|
212
|
+
} as unknown as GetLogsParameters)
|
180
213
|
} else {
|
181
214
|
logs = []
|
182
215
|
}
|
@@ -325,32 +325,35 @@ export type PublicActions<
|
|
325
325
|
* })
|
326
326
|
*/
|
327
327
|
createEventFilter: <
|
328
|
-
TAbiEvent extends AbiEvent | undefined,
|
328
|
+
TAbiEvent extends AbiEvent | undefined = undefined,
|
329
|
+
TAbiEvents extends
|
330
|
+
| readonly AbiEvent[]
|
331
|
+
| readonly unknown[]
|
332
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
329
333
|
TStrict extends boolean | undefined = undefined,
|
330
334
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
331
335
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
332
|
-
_Abi extends Abi | readonly unknown[] = [TAbiEvent],
|
333
336
|
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
334
337
|
_Args extends
|
335
|
-
| MaybeExtractEventArgsFromAbi<
|
338
|
+
| MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
|
336
339
|
| undefined = undefined,
|
337
340
|
>(
|
338
341
|
args?: CreateEventFilterParameters<
|
339
342
|
TAbiEvent,
|
343
|
+
TAbiEvents,
|
340
344
|
TStrict,
|
341
345
|
TFromBlock,
|
342
346
|
TToBlock,
|
343
|
-
_Abi,
|
344
347
|
_EventName,
|
345
348
|
_Args
|
346
349
|
>,
|
347
350
|
) => Promise<
|
348
351
|
CreateEventFilterReturnType<
|
349
352
|
TAbiEvent,
|
353
|
+
TAbiEvents,
|
350
354
|
TStrict,
|
351
355
|
TFromBlock,
|
352
356
|
TToBlock,
|
353
|
-
_Abi,
|
354
357
|
_EventName,
|
355
358
|
_Args
|
356
359
|
>
|
@@ -841,7 +844,7 @@ export type PublicActions<
|
|
841
844
|
*/
|
842
845
|
getFilterChanges: <
|
843
846
|
TFilterType extends FilterType,
|
844
|
-
TAbi extends Abi | readonly unknown[],
|
847
|
+
TAbi extends Abi | readonly unknown[] | undefined,
|
845
848
|
TEventName extends string | undefined,
|
846
849
|
TStrict extends boolean | undefined = undefined,
|
847
850
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -892,7 +895,7 @@ export type PublicActions<
|
|
892
895
|
* const logs = await client.getFilterLogs({ filter })
|
893
896
|
*/
|
894
897
|
getFilterLogs: <
|
895
|
-
TAbi extends Abi | readonly unknown[],
|
898
|
+
TAbi extends Abi | readonly unknown[] | undefined,
|
896
899
|
TEventName extends string | undefined,
|
897
900
|
TStrict extends boolean | undefined = undefined,
|
898
901
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
@@ -948,13 +951,25 @@ export type PublicActions<
|
|
948
951
|
* const logs = await client.getLogs()
|
949
952
|
*/
|
950
953
|
getLogs: <
|
951
|
-
TAbiEvent extends AbiEvent | undefined,
|
954
|
+
TAbiEvent extends AbiEvent | undefined = undefined,
|
955
|
+
TAbiEvents extends
|
956
|
+
| readonly AbiEvent[]
|
957
|
+
| readonly unknown[]
|
958
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
952
959
|
TStrict extends boolean | undefined = undefined,
|
953
960
|
TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
|
954
961
|
TToBlock extends BlockNumber | BlockTag | undefined = undefined,
|
955
962
|
>(
|
956
|
-
args?: GetLogsParameters<
|
957
|
-
|
963
|
+
args?: GetLogsParameters<
|
964
|
+
TAbiEvent,
|
965
|
+
TAbiEvents,
|
966
|
+
TStrict,
|
967
|
+
TFromBlock,
|
968
|
+
TToBlock
|
969
|
+
>,
|
970
|
+
) => Promise<
|
971
|
+
GetLogsReturnType<TAbiEvent, TAbiEvents, TStrict, TFromBlock, TToBlock>
|
972
|
+
>
|
958
973
|
/**
|
959
974
|
* Returns the value from a storage slot at a given address.
|
960
975
|
*
|
@@ -1406,10 +1421,14 @@ export type PublicActions<
|
|
1406
1421
|
* })
|
1407
1422
|
*/
|
1408
1423
|
watchEvent: <
|
1409
|
-
TAbiEvent extends AbiEvent | undefined,
|
1424
|
+
TAbiEvent extends AbiEvent | undefined = undefined,
|
1425
|
+
TAbiEvents extends
|
1426
|
+
| readonly AbiEvent[]
|
1427
|
+
| readonly unknown[]
|
1428
|
+
| undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
|
1410
1429
|
TStrict extends boolean | undefined = undefined,
|
1411
1430
|
>(
|
1412
|
-
args: WatchEventParameters<TAbiEvent, TStrict>,
|
1431
|
+
args: WatchEventParameters<TAbiEvent, TAbiEvents, TStrict>,
|
1413
1432
|
) => WatchEventReturnType
|
1414
1433
|
/**
|
1415
1434
|
* Watches and returns pending transaction hashes.
|