import { Buffer } from '@craftzdog/react-native-buffer';
import { CryptoKey } from './keys/classes';
import type { EdKeyPair } from './specs/edKeyPair.nitro';
import type { BinaryLike, CFRGKeyPairType, CryptoKeyPair, DiffieHellmanCallback, DiffieHellmanOptions, GenerateKeyPairCallback, GenerateKeyPairReturn, Hex, KeyPairGenConfig, KeyUsage, SubtleAlgorithm } from './utils';
export declare class Ed {
    type: CFRGKeyPairType;
    config: KeyPairGenConfig;
    native: EdKeyPair;
    constructor(type: CFRGKeyPairType, config: KeyPairGenConfig);
    /**
     * Computes the Diffie-Hellman secret based on a privateKey and a publicKey.
     * Both keys must have the same asymmetricKeyType, which must be one of 'dh'
     * (for Diffie-Hellman), 'ec', 'x448', or 'x25519' (for ECDH).
     *
     * @api nodejs/node
     *
     * @param options `{ privateKey, publicKey }`, both of which are `KeyObject`s
     * @param callback optional `(err, secret) => void`
     * @returns `Buffer` if no callback, or `void` if callback is provided
     */
    diffieHellman(options: DiffieHellmanOptions, callback?: DiffieHellmanCallback): Buffer | void;
    generateKeyPair(): Promise<void>;
    generateKeyPairSync(): void;
    getPublicKey(): ArrayBuffer;
    getPrivateKey(): ArrayBuffer;
    /**
     * Computes the Diffie-Hellman shared secret based on a privateKey and a
     * publicKey for key exchange
     *
     * @api \@paulmillr/noble-curves/ed25519
     *
     * @param privateKey
     * @param publicKey
     * @returns shared secret key
     */
    getSharedSecret(privateKey: Hex, publicKey: Hex): ArrayBuffer;
    sign(message: BinaryLike, key?: BinaryLike): Promise<ArrayBuffer>;
    signSync(message: BinaryLike, key?: BinaryLike): ArrayBuffer;
    verify(signature: BinaryLike, message: BinaryLike, key?: BinaryLike): Promise<boolean>;
    verifySync(signature: BinaryLike, message: BinaryLike, key?: BinaryLike): boolean;
}
export declare function diffieHellman(options: DiffieHellmanOptions, callback?: DiffieHellmanCallback): Buffer | void;
export declare function ed_generateKeyPair(isAsync: boolean, type: CFRGKeyPairType, encoding: KeyPairGenConfig, callback: GenerateKeyPairCallback | undefined): GenerateKeyPairReturn | void;
export declare function ed_generateKeyPairWebCrypto(type: 'ed25519' | 'ed448', extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
export declare function x_generateKeyPairWebCrypto(type: 'x25519' | 'x448', extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
export declare function xDeriveBits(algorithm: SubtleAlgorithm, baseKey: CryptoKey, length: number | null): ArrayBuffer;
//# sourceMappingURL=ed.d.ts.map