@atomiqlabs/chain-starknet
Version:
Starknet specific base implementation
57 lines (56 loc) • 3.05 kB
TypeScript
import { Abi } from "abi-wan-kanabi";
import { EventToPrimitiveType, ExtractAbiEventNames } from "abi-wan-kanabi/dist/kanabi";
import { StarknetEvent, StarknetEvents } from "../../chain/modules/StarknetEvents";
import { StarknetContractBase } from "../StarknetContractBase";
import { StarknetChainInterface } from "../../chain/StarknetChainInterface";
export type StarknetAbiEvent<TAbi extends Abi, TEventName extends ExtractAbiEventNames<TAbi>> = {
name: TEventName;
params: EventToPrimitiveType<TAbi, TEventName>;
txHash: string;
blockHash?: string;
blockNumber?: number;
keys: string[];
data: string[];
};
export declare class StarknetContractEvents<TAbi extends Abi> extends StarknetEvents {
private readonly contract;
private readonly abi;
private readonly knownEventNames;
private readonly abiEvents;
private readonly abiStructs;
private readonly abiEnums;
constructor(chainInterface: StarknetChainInterface, contract: StarknetContractBase<TAbi>, abi: TAbi);
toStarknetAbiEvents<T extends ExtractAbiEventNames<TAbi>>(blockEvents: StarknetEvent[]): StarknetAbiEvent<TAbi, T>[];
toFilter<T extends ExtractAbiEventNames<TAbi>>(events: T[], keys: null | (null | string | string[])[]): string[][];
/**
* Returns the events occuring in a range of starknet block as identified by the contract and keys,
* returns pending events if no startHeight & endHeight is passed
*
* @param events
* @param keys
* @param startBlockHeight
* @param endBlockHeight
*/
getContractBlockEvents<T extends ExtractAbiEventNames<TAbi>>(events: T[], keys: (null | string | string[])[], startBlockHeight?: number, endBlockHeight?: number | null): Promise<StarknetAbiEvent<TAbi, T>[]>;
/**
* Runs a search backwards in time, processing the events for a specific topic public key
*
* @param events
* @param keys
* @param processor called for every event, should return a value if the correct event was found, or null
* if the search should continue
* @param abortSignal
*/
findInContractEvents<T, TEvent extends ExtractAbiEventNames<TAbi>>(events: TEvent[], keys: null | (null | string | string[])[], processor: (event: StarknetAbiEvent<TAbi, TEvent>) => Promise<T | null>, abortSignal?: AbortSignal): Promise<T | null>;
/**
* Runs a search forwards in time, processing the events for a specific topic public key
*
* @param events
* @param keys
* @param processor called for every event, should return a value if the correct event was found, or null
* if the search should continue
* @param startHeight
* @param abortSignal
*/
findInContractEventsForward<T, TEvent extends ExtractAbiEventNames<TAbi>>(events: TEvent[], keys: null | (null | string | string[])[], processor: (event: StarknetAbiEvent<TAbi, TEvent>) => Promise<T | null>, startHeight?: number, abortSignal?: AbortSignal): Promise<T | null>;
}