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";
    }
}
