export type L1RollupConstants = {
    l1StartBlock: bigint;
    l1GenesisTime: bigint;
    slotDuration: number;
    epochDuration: number;
    ethereumSlotDuration: number;
};
export declare const EmptyL1RollupConstants: L1RollupConstants;
export type EpochConstants = {
    l1GenesisBlock: bigint;
    l1GenesisTime: bigint;
    epochDuration: number;
    slotDuration: number;
};
/** Returns the slot number for a given timestamp. */
export declare function getSlotAtTimestamp(ts: bigint, constants: Pick<EpochConstants, 'l1GenesisTime' | 'slotDuration'>): bigint;
/** Returns the epoch number for a given timestamp. */
export declare function getEpochNumberAtTimestamp(ts: bigint, constants: Pick<EpochConstants, 'epochDuration' | 'slotDuration' | 'l1GenesisTime'>): bigint;
/** Returns the range of L2 slots (inclusive) for a given epoch number. */
export declare function getSlotRangeForEpoch(epochNumber: bigint, constants: Pick<EpochConstants, 'epochDuration'>): bigint[];
/** Returns the range of L1 timestamps (inclusive) for a given epoch number. */
export declare function getTimestampRangeForEpoch(epochNumber: bigint, constants: Pick<EpochConstants, 'l1GenesisTime' | 'slotDuration' | 'epochDuration'>): bigint[];
/**
 * Returns the range of L1 blocks (inclusive) for a given epoch number.
 * @remarks This assumes no time warp has happened.
 */
export declare function getL1BlockRangeForEpoch(epochNumber: bigint, constants: Pick<EpochConstants, 'l1GenesisBlock' | 'epochDuration' | 'slotDuration'>): bigint[];
//# sourceMappingURL=index.d.ts.map