import type { ChainPair, HexString, Provider, ProviderPair, ProofSequenceV1, ProofSequence, BigNumberish } from './types.js';
import type { AbstractProver } from './vm.js';
export type RollupDeployment<Config> = Readonly<ChainPair & Config>;
export type RollupCommit<P extends AbstractProver> = {
    readonly index: bigint;
    readonly prover: P;
};
export type Rollup = AbstractRollup<RollupCommit<AbstractProver>>;
export type RollupCommitType<R extends Rollup> = Parameters<R['fetchParentCommitIndex']>[0];
export declare abstract class AbstractRollup<C extends RollupCommit<AbstractProver>> {
    configure: (<T extends C>(commit: T) => void) | undefined;
    latestBlockTag: BigNumberish;
    getLogsStepSize: number;
    readonly provider1: Provider;
    readonly provider2: Provider;
    constructor(providers: ProviderPair);
    protected abstract _fetchCommit(index: bigint): Promise<C>;
    abstract fetchLatestCommitIndex(): Promise<bigint>;
    abstract encodeWitness(commit: C, proofSeq: ProofSequence): HexString;
    abstract windowFromSec(sec: number): number;
    get unfinalized(): boolean;
    protected _fetchParentCommitIndex(commit: C): Promise<bigint>;
    isCommitStillValid(_commit: C): Promise<boolean>;
    fetchParentCommitIndex(commit: C): Promise<bigint>;
    fetchCommit(index: bigint): Promise<C>;
    fetchLatestCommit(): Promise<C>;
    fetchParentCommit(commit: C): Promise<C>;
    fetchRecentCommits(count: number): Promise<C[]>;
    get defaultWindow(): number;
}
export interface RollupWitnessV1<C extends RollupCommit<AbstractProver>> {
    encodeWitnessV1(commit: C, proofSeq: ProofSequenceV1): HexString;
}
export declare function supportsV1<R extends Rollup>(rollup: R): rollup is R & RollupWitnessV1<RollupCommitType<R>>;
export declare function align(index: bigint, step: number): bigint;
//# sourceMappingURL=rollup.d.ts.map