import { DerivationNonce, IDerivedKey, IEncryptableKey, IKey, IKeyDerivationStrategy, IPublicKey, KeyInformation } from './interfaces.js';
/**
 * Implementation of a key derivation strategy for AES-256 GCM keys.
 */
export declare class AES256GCMKeyDerivationStrategy implements IKeyDerivationStrategy {
    /**
     * Recover a derived key from a master key and a derivation nonce.
     * @param masterKey The master key used for derivation.
     * @param nonce The derivation nonce used to derive the key.
     * @returns A Promise that resolves to an AES256GCMKey.
     */
    hydrate(masterKey: CryptoKey, nonce: DerivationNonce): Promise<AES256GCMKey>;
    /**
     * Create a new key from a raw key represented as a Uint8Array.
     * @param rawKey The raw key as a Uint8Array.
     * @returns A Promise that resolves to an IKey implementation.
     */
    fromRaw(rawKey: Uint8Array): Promise<IKey>;
    /**
     * Create a new AES-256 GCM key derived from a master key and a salt value.
     * @param masterKey The master key for key derivation.
     * @param salt The salt value used for key derivation.
     * @returns A Promise that resolves to an AES256GCMKey.
     */
    create(masterKey: CryptoKey, salt: string): Promise<AES256GCMKey>;
}
export declare class AES256GCMFingerprint implements IPublicKey {
    bytes: Uint8Array;
    constructor(bytes: Uint8Array);
    getPublicKeyHex(): Promise<string>;
    getPublicKeyBytes(): Promise<Uint8Array>;
    verify(_signature: Uint8Array, _message: Uint8Array): Promise<boolean>;
}
export declare class AES256GCMKey implements IKey, IDerivedKey, IEncryptableKey {
    private key;
    private rawSecretBytes?;
    private derivation_path?;
    constructor(key: CryptoKey, rawSecretBytes?: Uint8Array | undefined, derivation_path?: DerivationNonce | undefined);
    toJWK({ includePrivate }: {
        includePrivate: boolean;
    }): Promise<{
        kid: string;
        alg?: string | undefined;
        crv?: string | undefined;
        d?: string | undefined;
        dp?: string | undefined;
        dq?: string | undefined;
        e?: string | undefined;
        ext?: boolean | undefined;
        k?: string | undefined;
        key_ops?: string[] | undefined;
        kty?: string | undefined;
        n?: string | undefined;
        oth?: {
            d?: string | undefined;
            r?: string | undefined;
            t?: string | undefined;
        }[] | undefined;
        p?: string | undefined;
        q?: string | undefined;
        qi?: string | undefined;
        use?: string | undefined;
        x?: string | undefined;
        y?: string | undefined;
        x5c?: string[] | undefined;
        x5t?: string | undefined;
        'x5t#S256'?: string | undefined;
        x5u?: string | undefined;
    }>;
    toCryptoKey(): Promise<CryptoKey>;
    exportKeyInformation(): Promise<KeyInformation>;
    getChainCode(): Uint8Array;
    encrypt(message: Uint8Array): Promise<Uint8Array>;
    decrypt(encryptedMessage: Uint8Array): Promise<Uint8Array>;
    getPath(): DerivationNonce;
    getFingerprint(): Promise<Uint8Array>;
    getPublicKey(): Promise<AES256GCMFingerprint>;
}
