import { BigNumberish, BytesLike, Provider, Signer } from "ethers";
export declare const FURNACE_TESTNET_CONTRACT_ADDRESS = "0x8192aF4ce49f473fCa7e3e5a8d819B0763Def048";
export declare const FILECOIN_CALIBNET_CONTRACT_ADDRESS = "0x91c7774C7476F3832919adE7690467DF91bfd919";
export declare const BASE_SEPOLIA_CONTRACT_ADDRESS = "0x455bfe4B1B4393b458d413E2B0778A95F9B84B82";
export declare const POLYGON_POS_CONTRACT_ADDRESS = "0x455bfe4B1B4393b458d413E2B0778A95F9B84B82";
export declare function createBlsDst(chainId: bigint): string;
export type RandomnessVerificationParameters = {
    requestID: bigint;
    nonce: bigint;
    randomness: BytesLike;
    signature: BytesLike;
};
export type RandomnessVerificationConfig = {
    shouldBlowUp: boolean;
};
export declare class Randomness {
    private readonly rpc;
    private readonly contractAddress;
    private readonly chainId;
    private readonly defaultRequestTimeoutMs;
    private readonly contract;
    private readonly pk;
    constructor(rpc: Signer | Provider, contractAddress: string | undefined, chainId: bigint, defaultRequestTimeoutMs?: number);
    static createFilecoinCalibnet(rpc: Signer | Provider): Randomness;
    static createFurnace(rpc: Signer | Provider): Randomness;
    static createBaseSepolia(rpc: Signer | Provider): Randomness;
    static createPolygonPos(rpc: Signer | Provider): Randomness;
    static createFromChainId(rpc: Signer | Provider, chainId: BigNumberish): Randomness;
    requestRandomness(confirmations?: number, timeoutMs?: number): Promise<RandomnessVerificationParameters>;
    verify(parameters: RandomnessVerificationParameters, config?: RandomnessVerificationConfig): Promise<boolean>;
}
