import { Ed25519Keypair, Ed25519PublicKey, X25519PublicKey } from "@dao-xyz/peerbit-crypto";
import { PublicKeyEncryptionResolver, X25519Keypair } from "@dao-xyz/peerbit-crypto";
import { KeyChain } from "@libp2p/interface-keychain";
import { Cache } from "@dao-xyz/cache";
export type StorePublicKeyEncryption = (replicationTopic: string) => PublicKeyEncryptionResolver;
export declare class FastKeychain implements PublicKeyEncryptionResolver {
    readonly identityKeypair: Ed25519Keypair;
    private defaultEncryptionKeypair;
    readonly keychain: KeyChain;
    keychainCache: Cache<X25519Keypair | null>;
    constructor(identityKeypair: Ed25519Keypair, defaultEncryptionKeypair: X25519Keypair, keychain: KeyChain);
    static create(identityKeypair: Ed25519Keypair, keychain: KeyChain): Promise<FastKeychain>;
    keychainKeyIdFromPublicKey(publicKey: X25519PublicKey): string;
    exportKeypair: <T extends X25519PublicKey | Ed25519PublicKey, Q = T extends X25519PublicKey ? X25519PublicKey extends T ? X25519Keypair : Ed25519Keypair : Ed25519Keypair>(publicKey: T) => Promise<Q>;
    importKeypair: (keypair: Ed25519Keypair) => Promise<void>;
    getAnyKeypair: (publicKeys: any) => Promise<{
        index: number;
        keypair: X25519Keypair;
    }>;
    getEncryptionKeypair: () => X25519Keypair;
}
