@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
85 lines • 3.9 kB
TypeScript
import { Logger } from 'pino';
import { z } from 'zod';
import { Address } from '@hyperlane-xyz/utils';
import type { ChainMetadataManager } from '../../metadata/ChainMetadataManager.js';
import { MultiProvider } from '../../providers/MultiProvider.js';
import type { ChainNameOrId } from '../../types.js';
import { GetEventLogsResponse } from './types.js';
export type EvmEventLogsReaderConfig = {
chain: ChainNameOrId;
useRPC?: boolean;
paginationBlockRange?: number;
};
export declare const GetLogByTopicOptionsSchema: z.ZodObject<{
eventTopic: z.ZodEffects<z.ZodString, string, string>;
contractAddress: z.ZodString;
fromBlock: z.ZodOptional<z.ZodNumber>;
toBlock: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
contractAddress: string;
eventTopic: string;
fromBlock?: number | undefined;
toBlock?: number | undefined;
}, {
contractAddress: string;
eventTopic: string;
fromBlock?: number | undefined;
toBlock?: number | undefined;
}>;
export declare const RequiredGetLogByTopicOptionsSchema: z.ZodObject<{
eventTopic: z.ZodEffects<z.ZodString, string, string>;
contractAddress: z.ZodString;
fromBlock: z.ZodNumber;
toBlock: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
fromBlock: number;
toBlock: number;
contractAddress: string;
eventTopic: string;
}, {
fromBlock: number;
toBlock: number;
contractAddress: string;
eventTopic: string;
}>;
type GetLogByTopicOptions = z.infer<typeof GetLogByTopicOptionsSchema>;
type RequiredGetLogByTopicOptions = z.infer<typeof RequiredGetLogByTopicOptionsSchema>;
interface IEvmEventLogsReaderStrategy {
getContractDeploymentBlockNumber(address: Address): Promise<number>;
getContractLogs(address: RequiredGetLogByTopicOptions): Promise<GetEventLogsResponse[]>;
}
export declare class EvmEtherscanLikeEventLogsReader implements IEvmEventLogsReaderStrategy {
protected readonly chain: ChainNameOrId;
protected readonly config: Awaited<ReturnType<ChainMetadataManager['getExplorerApi']>>;
protected readonly multiProvider: MultiProvider;
constructor(chain: ChainNameOrId, config: Awaited<ReturnType<ChainMetadataManager['getExplorerApi']>>, multiProvider: MultiProvider);
getContractDeploymentBlockNumber(address: string): Promise<number>;
getContractLogs(options: RequiredGetLogByTopicOptions): Promise<GetEventLogsResponse[]>;
}
export declare class EvmRpcEventLogsReader implements IEvmEventLogsReaderStrategy {
protected readonly chain: ChainNameOrId;
protected readonly config: {
paginationBlockRange?: number;
};
protected readonly multiProvider: MultiProvider;
constructor(chain: ChainNameOrId, config: {
paginationBlockRange?: number;
}, multiProvider: MultiProvider);
getContractDeploymentBlockNumber(address: string): Promise<number>;
getContractLogs(options: RequiredGetLogByTopicOptions): Promise<GetEventLogsResponse[]>;
}
export declare class EvmEventLogsReader {
protected readonly config: EvmEventLogsReaderConfig;
protected readonly multiProvider: MultiProvider;
protected logReaderStrategy: IEvmEventLogsReaderStrategy;
protected readonly logger: Logger;
protected fallbackLogReaderStrategy?: IEvmEventLogsReaderStrategy | undefined;
private deploymentBlockCache;
protected constructor(config: EvmEventLogsReaderConfig, multiProvider: MultiProvider, logReaderStrategy: IEvmEventLogsReaderStrategy, logger: Logger, fallbackLogReaderStrategy?: IEvmEventLogsReaderStrategy | undefined);
static fromConfig(config: EvmEventLogsReaderConfig, multiProvider: MultiProvider, logger?: Logger): EvmEventLogsReader;
getLogsByTopic(options: GetLogByTopicOptions): Promise<GetEventLogsResponse[]>;
private getDeploymentBlock;
private getLogsByTopicWithStrategy;
}
export {};
//# sourceMappingURL=EvmEventLogsReader.d.ts.map