Skip to content

Commit

Permalink
feat: added types to decoded events
Browse files Browse the repository at this point in the history
  • Loading branch information
freemanzMrojo committed Oct 29, 2024
1 parent 03dfd27 commit 592cb81
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
9 changes: 6 additions & 3 deletions packages/core/src/vcdm/abi/ABIContract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -211,10 +211,10 @@ class ABIContract extends ABI {
* @returns {DecodeEventLogReturnType} The decoded data of the event log.
* @throws {InvalidAbiDataToEncodeOrDecode}
*/
public decodeEventLog(
public decodeEventLog<TAbi extends ViemABI>(
eventName: string,
eventToDecode: ABIEventData
): DecodeEventLogReturnType {
): DecodeEventLogReturnType<TAbi, undefined> {
try {
const eventAbiItem = getAbiItem({
abi: this.abi,
Expand Down Expand Up @@ -245,7 +245,10 @@ class ABIContract extends ABI {
* @returns {DecodeEventLogReturnType} - A log object representing the decoded log or null if decoding fails.
* @throws {InvalidAbiDataToEncodeOrDecode}
*/
public parseLog(data: Hex, topics: Hex[]): DecodeEventLogReturnType {
public parseLog<TAbi extends ViemABI>(
data: Hex,
topics: Hex[]
): DecodeEventLogReturnType<TAbi, undefined> {
try {
return ABIEvent.parseLog(this.abi, { data, topics });
} catch (e) {
Expand Down
12 changes: 7 additions & 5 deletions packages/core/src/vcdm/abi/ABIEvent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ class ABIEvent extends ABIItem {
* @returns Decoding results.
* @throws {InvalidAbiDataToEncodeOrDecode}
*/
public static parseLog(
abi: ViemABI,
public static parseLog<TAbi extends ViemABI>(
abi: TAbi,
eventData: ABIEventData
): DecodeEventLogReturnType {
): DecodeEventLogReturnType<TAbi, undefined> {
try {
return viemDecodeEventLog({
abi,
Expand Down Expand Up @@ -95,9 +95,11 @@ class ABIEvent extends ABIItem {
* @returns Decoding results.
* @throws {InvalidAbiDataToEncodeOrDecode}
*/
public decodeEventLog(event: ABIEventData): DecodeEventLogReturnType {
public decodeEventLog<TAbi extends ViemABI>(
event: ABIEventData
): DecodeEventLogReturnType<TAbi, undefined> {
try {
return ABIEvent.parseLog([this.abiEvent], event);
return ABIEvent.parseLog([this.abiEvent] as ViemABI, event);
} catch (error) {
throw new InvalidAbiDataToEncodeOrDecode(
'ABIEvent.decodeEventLog',
Expand Down

0 comments on commit 592cb81

Please sign in to comment.