import { Address, Rpc, RpcTransport, SolanaRpcApiFromTransport } from "@solana/kit";
import winston from "winston";
import { SvmCpiEventsClient } from "../../arch/svm";
import { FillStatus, RelayDataWithMessageHash } from "../../interfaces";
import { BigNumber, DepositSearchResult, EventSearchConfig, MakeOptional } from "../../utils";
import { HubPoolClient } from "../HubPoolClient";
import { SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
export declare class SVMSpokePoolClient extends SpokePoolClient {
    svmEventsClient: SvmCpiEventsClient;
    protected programId: Address;
    protected statePda: Address;
    readonly type = "SVM";
    constructor(logger: winston.Logger, hubPoolClient: HubPoolClient | null, chainId: number, deploymentSlot: bigint, eventSearchConfig: MakeOptional<EventSearchConfig, "to">, svmEventsClient: SvmCpiEventsClient, programId: Address, statePda: Address);
    static create(logger: winston.Logger, hubPoolClient: HubPoolClient | null, chainId: number, deploymentSlot: bigint, eventSearchConfig: MakeOptional<EventSearchConfig, "to"> | undefined, rpc: Rpc<SolanaRpcApiFromTransport<RpcTransport>>): Promise<SVMSpokePoolClient>;
    static createWithExistingEventClient(logger: winston.Logger, hubPoolClient: HubPoolClient | null, chainId: number, deploymentSlot: bigint, eventSearchConfig: MakeOptional<EventSearchConfig, "to"> | undefined, eventClient: SvmCpiEventsClient): Promise<SVMSpokePoolClient>;
    _queryableEventNames(): string[];
    protected _update(eventsToQuery: string[]): Promise<SpokePoolUpdate>;
    getMaxFillDeadlineInRange(_startSlot: number, _endSlot: number): Promise<number>;
    getTimestampForBlock(slot: number): Promise<number>;
    getTimeAt(slot: number): Promise<number>;
    findDeposit(depositId: BigNumber): Promise<DepositSearchResult>;
    relayFillStatus(relayData: RelayDataWithMessageHash, atHeight?: number): Promise<FillStatus>;
    fillStatusArray(relayData: RelayDataWithMessageHash[], atHeight?: number, destinationChainId?: number): Promise<(FillStatus | undefined)[]>;
}
