import type { PrivateKeyJwk, PublicKeyJwk } from '../types/jose-types.js';
export declare enum KeyDerivationScheme {
    ProtocolPath = "protocolPath"
}
export type DerivedPrivateJwk = {
    rootKeyId: string;
    keyId?: string;
    derivationScheme: KeyDerivationScheme;
    derivationPath?: string[];
    derivedPrivateKey: PrivateKeyJwk;
};
/**
 * Class containing hierarchical deterministic key related utility methods used by the DWN.
 */
export declare class HdKey {
    /**
     * Derives a descendant private key.
     * Uses X25519 keys for encryption key derivation.
     */
    static derivePrivateKey(ancestorKey: DerivedPrivateJwk, subDerivationPath: string[]): Promise<DerivedPrivateJwk>;
    /**
     * Derives a descendant public key from an ancestor private key.
     * Uses X25519 keys for encryption key derivation.
     */
    static derivePublicKey(ancestorKey: DerivedPrivateJwk, subDerivationPath: string[]): Promise<PublicKeyJwk>;
    /**
     * Derives a hardened hierarchical deterministic private key.
     */
    static derivePrivateKeyBytes(privateKey: Uint8Array, relativePath: string[]): Promise<Uint8Array>;
    /**
     * Derives a key using  HMAC-based Extract-and-Expand Key Derivation Function (HKDF) as defined in RFC 5869.
     */
    static deriveKeyUsingHkdf(params: {
        hashAlgorithm: 'SHA-256' | 'SHA-384' | 'SHA-512';
        initialKeyMaterial: Uint8Array;
        info: Uint8Array;
        keyLengthInBytes: number;
    }): Promise<Uint8Array>;
    /**
     * Validates that no empty strings exist within the derivation path segments array.
     * @throws {DwnError} with `DwnErrorCode.HdKeyDerivationPathInvalid` if derivation path fails validation.
     */
    private static validateKeyDerivationPath;
}
//# sourceMappingURL=hd-key.d.ts.map