import { IConnection } from "./IConnection";
/**
 * Encryption password.
 *
 * `IEncryptionPassword` is a type of interface who represents encryption password used by
 * the {@link Fetcher} with AES-128/256 algorithm. If your encryption password is not fixed
 * but changes according to the input content, you can utilize the
 * {@link IEncryptionPassword.Closure} function type.
 *
 * @author Jeongho Nam - https://github.com/samchon
 */
export interface IEncryptionPassword {
    /**
     * Secret key.
     */
    key: string;
    /**
     * Initialization Vector.
     */
    iv: string;
}
export declare namespace IEncryptionPassword {
    /**
     * Type of a closure function returning the {@link IEncryptionPassword} object.
     *
     * `IEncryptionPassword.Closure` is a type of closure function who are returning the
     * {@link IEncryptionPassword} object. It would be used when your encryption password
     * be changed according to the input content.
     */
    interface Closure {
        /**
         * Encryption password getter.
         *
         * @param props Properties for predication
         * @returns Encryption password
         */
        (props: IProps): IEncryptionPassword;
    }
    /**
     * Properties for the closure.
     */
    interface IProps {
        headers: Record<string, IConnection.HeaderValue | undefined>;
        body: string;
        direction: "encode" | "decode";
    }
}
