@atomiqlabs/chain-starknet
Version:
Starknet specific base implementation
41 lines (40 loc) • 1.88 kB
TypeScript
import { Abi } from "abi-wan-kanabi";
import { EventToPrimitiveType, ExtractAbiEventNames } from "abi-wan-kanabi/dist/kanabi";
import { StarknetEvents } from "../../base/modules/StarknetEvents";
import { StarknetContractBase } from "../StarknetContractBase";
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 {
readonly root: StarknetContractBase<TAbi>;
readonly abi: TAbi;
constructor(root: StarknetContractBase<TAbi>, abi: TAbi);
private toStarknetAbiEvents;
private toFilter;
/**
* 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: string[], startBlockHeight?: number, endBlockHeight?: number): Promise<StarknetAbiEvent<TAbi, T>[]>;
/**
* Runs a search forawrds 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: string[], processor: (event: StarknetAbiEvent<TAbi, TEvent>) => Promise<T>, abortSignal?: AbortSignal): Promise<T>;
}