import { AbstractRollup, type RollupCommit, type RollupDeployment } from '../rollup.js';
import type { HexAddress, HexString, HexString32, ProviderPair, ProofSequence } from '../types.js';
import { type ABIHeaderTuple } from './types.js';
import { Contract } from 'ethers/contract';
import { EthProver } from '../eth/EthProver.js';
export type PolygonPoSPoster = {
    readonly address: HexAddress;
    readonly topicHash: HexString32;
    readonly blockNumberStart: bigint;
};
export type PolygonPoSConfig = {
    RootChain: HexAddress;
    apiURL: string;
    poster: PolygonPoSPoster;
};
export type PolygonPoSCommit = RollupCommit<EthProver> & ABIHeaderTuple & {
    readonly rlpEncodedProof: HexString;
    readonly rlpEncodedBlock: HexString;
};
export declare class PolygonPoSRollup extends AbstractRollup<PolygonPoSCommit> {
    static readonly mainnetConfig: RollupDeployment<PolygonPoSConfig>;
    readonly apiURL: string;
    readonly RootChain: Contract;
    readonly poster: PolygonPoSPoster;
    constructor(providers: ProviderPair, config: PolygonPoSConfig);
    findPosterEventBefore(l2BlockNumber: bigint): Promise<any>;
    findPosterHeaderBefore(l2BlockNumber: bigint): Promise<{
        number: bigint;
        l2BlockNumberStart: bigint;
        l2BlockNumberEnd: bigint;
        rootHash: string;
    }>;
    fetchJSON(url: URL): Promise<any>;
    fetchAPIFindHeader(l2BlockNumber: bigint): Promise<{
        number: bigint;
        l2BlockNumberStart: bigint;
        l2BlockNumberEnd: bigint;
        rootHash: string;
    }>;
    fetchAPIReceiptProof(txHash: HexString32): Promise<HexString>;
    fetchLatestCommitIndex(): Promise<bigint>;
    protected _fetchParentCommitIndex(commit: PolygonPoSCommit): Promise<bigint>;
    protected _fetchCommit(index: bigint): Promise<PolygonPoSCommit>;
    encodeWitness(commit: PolygonPoSCommit, proofSeq: ProofSequence): HexString;
    windowFromSec(sec: number): number;
    JSONFromCommit(commit: PolygonPoSCommit): {
        index: string;
        l2BlockNumber: string;
        l2BlockNumberStart: string;
        l2BlockNumberEnd: string;
        rlpEncodedBlock: string;
        rlpEncodedProof: string;
        rootHash: string;
    };
    commitFromJSON(json: ReturnType<this['JSONFromCommit']>): PolygonPoSCommit;
}
//# sourceMappingURL=PolygonPoSRollup.d.ts.map