import type { JsonWebKey2020 } from './JsonWebKey2020';
export declare enum KeyType {
    Ed25519 = "Ed25519",
    X25519 = "X25519",
    Secp256k1 = "Secp256k1",
    Bls12381G2 = "Bls12381G2"
}
export declare class Multikey {
    id: string;
    type: 'Multikey';
    controller: string;
    publicKeyMultibase: string;
    publicKey: Uint8Array;
    secretKeyMultibase?: string;
    privateKey?: Uint8Array;
    keyType: KeyType;
    private signer?;
    private verifier?;
    constructor(keyType: KeyType, id: string, controller: string, publicKey: Uint8Array, privateKey?: Uint8Array);
    static generate(keyType: KeyType): Promise<Multikey>;
    private static fingerprintFromPublicKey;
    private createSigner;
    private createVerifier;
    sign(data: Uint8Array): Promise<Uint8Array>;
    verify(data: Uint8Array, signature: Uint8Array): Promise<boolean>;
    deriveSecret(peerKey: Multikey): Promise<Uint8Array>;
    encrypt(data: Uint8Array, recipientPublicKey: Multikey): Promise<Uint8Array>;
    decrypt(data: Uint8Array, senderPublicKey: Multikey): Promise<Uint8Array>;
    static encodePublicKey(publicKey: Uint8Array, keyType: KeyType): string;
    static encodePrivateKey(privateKey: Uint8Array, keyType: KeyType): string;
    static decodePublicKey(publicKeyMultibase: string): {
        keyType: KeyType;
        publicKey: Uint8Array;
    };
    static decodePrivateKey(secretKeyMultibase: string): {
        keyType: KeyType;
        privateKey: Uint8Array;
    };
    export(options?: {
        privateKey?: boolean;
        type: 'JsonWebKey2020';
    }): Promise<JsonWebKey2020>;
    toJSON(): any;
    static fromMultibase({ id, controller, publicKeyMultibase, secretKeyMultibase }: {
        id: string;
        controller: string;
        publicKeyMultibase: string;
        secretKeyMultibase?: string;
    }): Multikey;
    static fromSecretKey(secretKeyMultibase: string): Multikey;
}
//# sourceMappingURL=Multikey.d.ts.map