import { EIP712, GeneratePublicKeyParams } from './publicKey';
export type FhevmInstance = {
    encryptBool: (value: boolean | number | bigint) => Uint8Array;
    encrypt4: (value: number | bigint) => Uint8Array;
    encrypt8: (value: number | bigint) => Uint8Array;
    encrypt16: (value: number | bigint) => Uint8Array;
    encrypt32: (value: number | bigint) => Uint8Array;
    encrypt64: (value: number | bigint) => Uint8Array;
    encryptAddress: (value: string) => Uint8Array;
    generatePublicKey: (options: GeneratePublicKeyParams & {
        force?: boolean;
    }) => {
        publicKey: Uint8Array;
        eip712: EIP712;
    };
    setSignature: (contractAddress: string, signature: string) => void;
    getPublicKey: (contractAddress: string) => {
        publicKey: Uint8Array;
        signature: string;
    } | null;
    hasKeypair: (contractAddress: string) => boolean;
    decrypt: (contractAddress: string, ciphertext: string) => bigint;
    serializeKeypairs: () => ExportedContractKeypairs;
};
export type TokenSignature = {
    publicKey: Uint8Array;
    signature: string;
};
export type ExportedContractKeypairs = {
    [key: string]: {
        publicKey: string;
        privateKey: string;
        signature?: string | null;
    };
};
export type FhevmInstanceParams = {
    chainId: number;
    publicKey?: string;
    keypairs?: ExportedContractKeypairs;
};
export declare const getPublicKeyCallParams: () => {
    to: string;
    data: string;
};
export declare const createInstance: (params: FhevmInstanceParams) => Promise<FhevmInstance>;
