Skip to content

Commit 47ab651

Browse files
authored
Emit Event interfaces (#656)
1 parent 1db4186 commit 47ab651

File tree

14 files changed

+203
-38
lines changed

14 files changed

+203
-38
lines changed

.changeset/stupid-planes-smoke.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
'@typechain/ethers-v5': minor
3+
---
4+
5+
For every event, TypeChain now emits an interface with its named properties.
6+
7+
**Before**
8+
9+
```ts
10+
export type ApprovalEvent = TypedEvent<
11+
[string, string, BigNumber],
12+
{ owner: string; approved: string; tokenId: BigNumber }
13+
>
14+
```
15+
16+
**After**
17+
18+
```ts
19+
export interface ApprovalEventObject {
20+
owner: string
21+
approved: string
22+
tokenId: BigNumber
23+
}
24+
export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>
25+
```

packages/hardhat-test/typechain-types/Counter.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ export interface CounterInterface extends utils.Interface {
5151
getEvent(nameOrSignatureOrTopic: "CountedTo"): EventFragment;
5252
}
5353

54-
export type CountedToEvent = TypedEvent<[BigNumber], { number: BigNumber }>;
54+
export interface CountedToEventObject {
55+
number: BigNumber;
56+
}
57+
export type CountedToEvent = TypedEvent<[BigNumber], CountedToEventObject>;
5558

5659
export type CountedToEventFilter = TypedEventFilter<CountedToEvent>;
5760

packages/hardhat/test/fixture-projects/hardhat-project/typechain-types/externalArtifacts/ERC20.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,16 +122,26 @@ export interface ERC20Interface extends utils.Interface {
122122
getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
123123
}
124124

125+
export interface ApprovalEventObject {
126+
owner: string;
127+
spender: string;
128+
value: BigNumber;
129+
}
125130
export type ApprovalEvent = TypedEvent<
126131
[string, string, BigNumber],
127-
{ owner: string; spender: string; value: BigNumber }
132+
ApprovalEventObject
128133
>;
129134

130135
export type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
131136

137+
export interface TransferEventObject {
138+
from: string;
139+
to: string;
140+
value: BigNumber;
141+
}
132142
export type TransferEvent = TypedEvent<
133143
[string, string, BigNumber],
134-
{ from: string; to: string; value: BigNumber }
144+
TransferEventObject
135145
>;
136146

137147
export type TransferEventFilter = TypedEventFilter<TransferEvent>;

packages/target-ethers-v5-test/test/Events.test.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@ import { BigNumber, ethers } from 'ethers'
22
import { AssertTrue, IsExact, typedAssert } from 'test-utils'
33

44
import type { TypedEventFilter } from '../types/common'
5-
import type { Event1Event, Event1EventFilter, Event3_bool_uint256_Event, Events } from '../types/v0.6.4/Events'
5+
import type {
6+
Event1Event,
7+
Event1EventFilter,
8+
Event3_bool_uint256_Event,
9+
Event3_bool_uint256_EventObject,
10+
Events,
11+
} from '../types/v0.6.4/Events'
612
import { createNewBlockchain, deployContract } from './common'
713

814
describe('Events', () => {
@@ -110,7 +116,8 @@ describe('Events', () => {
110116
{
111117
const filterA = contract.filters['Event3(bool,uint256)']()
112118

113-
type _ = AssertTrue<IsExact<GetEventFromFilter<typeof filterA>, Event3_bool_uint256_Event>>
119+
type _1 = AssertTrue<IsExact<GetEventFromFilter<typeof filterA>, Event3_bool_uint256_Event>>
120+
type _2 = AssertTrue<IsExact<Event3_bool_uint256_EventObject, { value1: boolean; value2: BigNumber }>>
114121

115122
const results = await contract.queryFilter(filterA)
116123
results.map((r) => {

packages/target-ethers-v5-test/types/v0.6.4/Events.ts

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -123,50 +123,72 @@ export interface EventsInterface extends utils.Interface {
123123
getEvent(nameOrSignatureOrTopic: "UpdateFrequencySet"): EventFragment;
124124
}
125125

126-
export type AnonEvent1Event = TypedEvent<[BigNumber], { value1: BigNumber }>;
126+
export interface AnonEvent1EventObject {
127+
value1: BigNumber;
128+
}
129+
export type AnonEvent1Event = TypedEvent<[BigNumber], AnonEvent1EventObject>;
127130

128131
export type AnonEvent1EventFilter = TypedEventFilter<AnonEvent1Event>;
129132

130-
export type Event1Event = TypedEvent<
131-
[BigNumber, BigNumber],
132-
{ value1: BigNumber; value2: BigNumber }
133-
>;
133+
export interface Event1EventObject {
134+
value1: BigNumber;
135+
value2: BigNumber;
136+
}
137+
export type Event1Event = TypedEvent<[BigNumber, BigNumber], Event1EventObject>;
134138

135139
export type Event1EventFilter = TypedEventFilter<Event1Event>;
136140

137-
export type Event2Event = TypedEvent<[BigNumber], { arg0: BigNumber }>;
141+
export interface Event2EventObject {
142+
arg0: BigNumber;
143+
}
144+
export type Event2Event = TypedEvent<[BigNumber], Event2EventObject>;
138145

139146
export type Event2EventFilter = TypedEventFilter<Event2Event>;
140147

148+
export interface Event3_bool_uint256_EventObject {
149+
value1: boolean;
150+
value2: BigNumber;
151+
}
141152
export type Event3_bool_uint256_Event = TypedEvent<
142153
[boolean, BigNumber],
143-
{ value1: boolean; value2: BigNumber }
154+
Event3_bool_uint256_EventObject
144155
>;
145156

146157
export type Event3_bool_uint256_EventFilter =
147158
TypedEventFilter<Event3_bool_uint256_Event>;
148159

160+
export interface Event3_uint256_EventObject {
161+
value1: BigNumber;
162+
}
149163
export type Event3_uint256_Event = TypedEvent<
150164
[BigNumber],
151-
{ value1: BigNumber }
165+
Event3_uint256_EventObject
152166
>;
153167

154168
export type Event3_uint256_EventFilter = TypedEventFilter<Event3_uint256_Event>;
155169

170+
export interface Event4EventObject {
171+
data: Events.EventDataStructOutput;
172+
}
156173
export type Event4Event = TypedEvent<
157174
[Events.EventDataStructOutput],
158-
{ data: Events.EventDataStructOutput }
175+
Event4EventObject
159176
>;
160177

161178
export type Event4EventFilter = TypedEventFilter<Event4Event>;
162179

163-
export type NoArgsEventEvent = TypedEvent<[], {}>;
180+
export interface NoArgsEventEventObject {}
181+
export type NoArgsEventEvent = TypedEvent<[], NoArgsEventEventObject>;
164182

165183
export type NoArgsEventEventFilter = TypedEventFilter<NoArgsEventEvent>;
166184

185+
export interface UpdateFrequencySetEventObject {
186+
arg0: string[];
187+
arg1: BigNumber[];
188+
}
167189
export type UpdateFrequencySetEvent = TypedEvent<
168190
[string[], BigNumber[]],
169-
{ arg0: string[]; arg1: BigNumber[] }
191+
UpdateFrequencySetEventObject
170192
>;
171193

172194
export type UpdateFrequencySetEventFilter =

packages/target-ethers-v5-test/types/v0.6.4/Issue428_Reproduction/A.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ export interface AInterface extends utils.Interface {
2121
getEvent(nameOrSignatureOrTopic: "Committed"): EventFragment;
2222
}
2323

24-
export type CommittedEvent = TypedEvent<[string[]], { whitelist: string[] }>;
24+
export interface CommittedEventObject {
25+
whitelist: string[];
26+
}
27+
export type CommittedEvent = TypedEvent<[string[]], CommittedEventObject>;
2528

2629
export type CommittedEventFilter = TypedEventFilter<CommittedEvent>;
2730

packages/target-ethers-v5-test/types/v0.6.4/Issue428_Reproduction/B.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,23 @@ export interface BInterface extends utils.Interface {
2323
getEvent(nameOrSignatureOrTopic: "Committed(address[])"): EventFragment;
2424
}
2525

26+
export interface Committed_uint256_EventObject {
27+
timelock: BigNumber;
28+
}
2629
export type Committed_uint256_Event = TypedEvent<
2730
[BigNumber],
28-
{ timelock: BigNumber }
31+
Committed_uint256_EventObject
2932
>;
3033

3134
export type Committed_uint256_EventFilter =
3235
TypedEventFilter<Committed_uint256_Event>;
3336

37+
export interface Committed_address_array_EventObject {
38+
whitelist: string[];
39+
}
3440
export type Committed_address_array_Event = TypedEvent<
3541
[string[]],
36-
{ whitelist: string[] }
42+
Committed_address_array_EventObject
3743
>;
3844

3945
export type Committed_address_array_EventFilter =

packages/target-ethers-v5-test/types/v0.8.9/KingOfTheHill/KingOfTheHill.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,12 @@ export interface KingOfTheHillInterface extends utils.Interface {
6565
getEvent(nameOrSignatureOrTopic: "HighestBidIncreased"): EventFragment;
6666
}
6767

68+
export interface HighestBidIncreasedEventObject {
69+
bid: KingOfTheHill.BidStructOutput;
70+
}
6871
export type HighestBidIncreasedEvent = TypedEvent<
6972
[KingOfTheHill.BidStructOutput],
70-
{ bid: KingOfTheHill.BidStructOutput }
73+
HighestBidIncreasedEventObject
7174
>;
7275

7376
export type HighestBidIncreasedEventFilter =

packages/target-ethers-v5-test/types/v0.8.9/Rarity/ERC721.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,23 +125,38 @@ export interface ERC721Interface extends utils.Interface {
125125
getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
126126
}
127127

128+
export interface ApprovalEventObject {
129+
owner: string;
130+
approved: string;
131+
tokenId: BigNumber;
132+
}
128133
export type ApprovalEvent = TypedEvent<
129134
[string, string, BigNumber],
130-
{ owner: string; approved: string; tokenId: BigNumber }
135+
ApprovalEventObject
131136
>;
132137

133138
export type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
134139

140+
export interface ApprovalForAllEventObject {
141+
owner: string;
142+
operator: string;
143+
approved: boolean;
144+
}
135145
export type ApprovalForAllEvent = TypedEvent<
136146
[string, string, boolean],
137-
{ owner: string; operator: string; approved: boolean }
147+
ApprovalForAllEventObject
138148
>;
139149

140150
export type ApprovalForAllEventFilter = TypedEventFilter<ApprovalForAllEvent>;
141151

152+
export interface TransferEventObject {
153+
from: string;
154+
to: string;
155+
tokenId: BigNumber;
156+
}
142157
export type TransferEvent = TypedEvent<
143158
[string, string, BigNumber],
144-
{ from: string; to: string; tokenId: BigNumber }
159+
TransferEventObject
145160
>;
146161

147162
export type TransferEventFilter = TypedEventFilter<TransferEvent>;

packages/target-ethers-v5-test/types/v0.8.9/Rarity/ERC721Enumerable.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,23 +155,38 @@ export interface ERC721EnumerableInterface extends utils.Interface {
155155
getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
156156
}
157157

158+
export interface ApprovalEventObject {
159+
owner: string;
160+
approved: string;
161+
tokenId: BigNumber;
162+
}
158163
export type ApprovalEvent = TypedEvent<
159164
[string, string, BigNumber],
160-
{ owner: string; approved: string; tokenId: BigNumber }
165+
ApprovalEventObject
161166
>;
162167

163168
export type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
164169

170+
export interface ApprovalForAllEventObject {
171+
owner: string;
172+
operator: string;
173+
approved: boolean;
174+
}
165175
export type ApprovalForAllEvent = TypedEvent<
166176
[string, string, boolean],
167-
{ owner: string; operator: string; approved: boolean }
177+
ApprovalForAllEventObject
168178
>;
169179

170180
export type ApprovalForAllEventFilter = TypedEventFilter<ApprovalForAllEvent>;
171181

182+
export interface TransferEventObject {
183+
from: string;
184+
to: string;
185+
tokenId: BigNumber;
186+
}
172187
export type TransferEvent = TypedEvent<
173188
[string, string, BigNumber],
174-
{ from: string; to: string; tokenId: BigNumber }
189+
TransferEventObject
175190
>;
176191

177192
export type TransferEventFilter = TypedEventFilter<TransferEvent>;

packages/target-ethers-v5-test/types/v0.8.9/Rarity/IERC721.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,23 +125,38 @@ export interface IERC721Interface extends utils.Interface {
125125
getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
126126
}
127127

128+
export interface ApprovalEventObject {
129+
owner: string;
130+
approved: string;
131+
tokenId: BigNumber;
132+
}
128133
export type ApprovalEvent = TypedEvent<
129134
[string, string, BigNumber],
130-
{ owner: string; approved: string; tokenId: BigNumber }
135+
ApprovalEventObject
131136
>;
132137

133138
export type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
134139

140+
export interface ApprovalForAllEventObject {
141+
owner: string;
142+
operator: string;
143+
approved: boolean;
144+
}
135145
export type ApprovalForAllEvent = TypedEvent<
136146
[string, string, boolean],
137-
{ owner: string; operator: string; approved: boolean }
147+
ApprovalForAllEventObject
138148
>;
139149

140150
export type ApprovalForAllEventFilter = TypedEventFilter<ApprovalForAllEvent>;
141151

152+
export interface TransferEventObject {
153+
from: string;
154+
to: string;
155+
tokenId: BigNumber;
156+
}
142157
export type TransferEvent = TypedEvent<
143158
[string, string, BigNumber],
144-
{ from: string; to: string; tokenId: BigNumber }
159+
TransferEventObject
145160
>;
146161

147162
export type TransferEventFilter = TypedEventFilter<TransferEvent>;

packages/target-ethers-v5-test/types/v0.8.9/Rarity/IERC721Enumerable.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,23 +155,38 @@ export interface IERC721EnumerableInterface extends utils.Interface {
155155
getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
156156
}
157157

158+
export interface ApprovalEventObject {
159+
owner: string;
160+
approved: string;
161+
tokenId: BigNumber;
162+
}
158163
export type ApprovalEvent = TypedEvent<
159164
[string, string, BigNumber],
160-
{ owner: string; approved: string; tokenId: BigNumber }
165+
ApprovalEventObject
161166
>;
162167

163168
export type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
164169

170+
export interface ApprovalForAllEventObject {
171+
owner: string;
172+
operator: string;
173+
approved: boolean;
174+
}
165175
export type ApprovalForAllEvent = TypedEvent<
166176
[string, string, boolean],
167-
{ owner: string; operator: string; approved: boolean }
177+
ApprovalForAllEventObject
168178
>;
169179

170180
export type ApprovalForAllEventFilter = TypedEventFilter<ApprovalForAllEvent>;
171181

182+
export interface TransferEventObject {
183+
from: string;
184+
to: string;
185+
tokenId: BigNumber;
186+
}
172187
export type TransferEvent = TypedEvent<
173188
[string, string, BigNumber],
174-
{ from: string; to: string; tokenId: BigNumber }
189+
TransferEventObject
175190
>;
176191

177192
export type TransferEventFilter = TypedEventFilter<TransferEvent>;

0 commit comments

Comments
 (0)