declare const knownChains: readonly ["hardhat", "bsctestnet", "bscmainnet", "sepolia", "ethereum", "opbnbtestnet", "opbnbmainnet", "arbitrumsepolia", "arbitrumone", "opsepolia", "opmainnet", "basesepolia", "basemainnet", "unichainsepolia", "unichainmainnet", "berachainbepolia", "zksyncsepolia", "zksyncmainnet"];
export type Chain = {
    [k in keyof typeof knownChains]: (typeof knownChains)[k];
}[number];
export type BlocksPerYear = number | "time-based";
export declare const blocksPerYear: {
    readonly hardhat: 100;
    readonly bsctestnet: 21024000;
    readonly bscmainnet: 21024000;
    readonly sepolia: 2628000;
    readonly ethereum: 2628000;
    readonly opbnbtestnet: 63072000;
    readonly opbnbmainnet: 63072000;
    readonly arbitrumsepolia: "time-based";
    readonly arbitrumone: "time-based";
    readonly opsepolia: "time-based";
    readonly opmainnet: "time-based";
    readonly basesepolia: "time-based";
    readonly basemainnet: "time-based";
    readonly unichainsepolia: "time-based";
    readonly unichainmainnet: "time-based";
    readonly berachainbepolia: "time-based";
    readonly zksyncsepolia: "time-based";
    readonly zksyncmainnet: "time-based";
};
export type TimeBasedChain = keyof {
    [k in Chain as (typeof blocksPerYear)[k] extends "time-based" ? k : never]: void;
};
export type BlockBasedChain = keyof {
    [k in Chain as (typeof blocksPerYear)[k] extends number ? k : never]: void;
};
export declare const isKnownChain: (networkName: string) => networkName is "hardhat" | "bsctestnet" | "bscmainnet" | "sepolia" | "ethereum" | "opbnbtestnet" | "opbnbmainnet" | "arbitrumsepolia" | "arbitrumone" | "opsepolia" | "opmainnet" | "basesepolia" | "basemainnet" | "unichainsepolia" | "unichainmainnet" | "berachainbepolia" | "zksyncsepolia" | "zksyncmainnet";
export declare const assertKnownChain: (networkName: string) => Chain;
export declare const isTimeBasedChain: (networkName: string) => networkName is "arbitrumsepolia" | "arbitrumone" | "opsepolia" | "opmainnet" | "basesepolia" | "basemainnet" | "unichainsepolia" | "unichainmainnet" | "berachainbepolia" | "zksyncsepolia" | "zksyncmainnet";
export declare const assertTimeBasedChain: (networkName: string) => TimeBasedChain;
export declare const isBlockBasedChain: (networkName: string) => networkName is "hardhat" | "bsctestnet" | "bscmainnet" | "sepolia" | "ethereum" | "opbnbtestnet" | "opbnbmainnet";
export declare const assertBlockBasedChain: (networkName: string) => BlockBasedChain;
export {};
