import type { HexString, HexString32, ProofRef } from '../types.js';
import { BlockProver, type TargetNeed } from '../vm.js';
import { ZeroAddress } from 'ethers/constants';
import { type RPCLineaGetProof, isInclusionProof, isContract, encodeProof } from './types.js';
export declare class LineaProver extends BlockProver {
    static readonly isInclusionProof: typeof isInclusionProof;
    static readonly isContract: typeof isContract;
    static readonly encodeProof: typeof encodeProof;
    static readonly latest: (provider: import("../types.js").Provider, relBlockTag?: ZeroAddress) => Promise<LineaProver>;
    stateRoot?: HexString32;
    fetchStateRoot(): Promise<string>;
    isShomeiReady(): Promise<boolean>;
    isContract(target: HexString): Promise<boolean>;
    getStorage(target: HexString, slot: bigint, fast?: boolean): Promise<HexString>;
    protected _proveNeed(need: TargetNeed, accountRef: ProofRef, slotRefs: Map<bigint, ProofRef>): Promise<void>;
    getProofs(target: HexString, slots?: bigint[]): Promise<RPCLineaGetProof>;
    fetchProofs(target: HexString, slots?: bigint[]): Promise<RPCLineaGetProof>;
}
//# sourceMappingURL=LineaProver.d.ts.map