import { Data } from "../basetypes/Data";
import { AuthType } from "../enums/AuthType";
import { ConnectionType } from "../enums/ConnectionType";
import { MessageHeader } from "../smime/MessageHeader";
import { POPSessionNativeBinding } from '../types';
import { NodeTrustedMailcore2NativeBinding } from "../types/NodeTrustedMailcore2NativeBinding";
import { POPMessageInfo } from "./POPMessageInfo";
declare let bindings: NodeTrustedMailcore2NativeBinding;
/**
 * POPSession Class
 *
 * @public
 */
declare class POPSession extends bindings.POPSession {
    protected handle: POPSessionNativeBinding;
    constructor();
    /**
     * Set hostname
     *
     * @memberof POPSession
     */
    set hostname(hostname: string);
    /**
     * Get hostname
     *
     * @type {string}
     * @memberof POPSession
     */
    get hostname(): string;
    /**
     * Set port
     *
     * @memberof POPSession
     */
    set port(port: number);
    /**
     * Get port
     *
     * @type {number}
     * @memberof POPSession
     */
    get port(): number;
    /**
     * Set string
     *
     * @memberof POPSession
     */
    set username(username: string);
    /**
     * Get string
     *
     * @type {string}
     * @memberof POPSession
     */
    get username(): string;
    /**
     * Set password
     *
     * @memberof POPSession
     */
    set password(password: string);
    /**
     * Get password
     *
     * @type {string}
     * @memberof POPSession
     */
    get password(): string;
    /**
     * Set checkCertificateEnabled
     *
     * @memberof POPSession
     */
    set checkCertificateEnabled(isEnabled: boolean);
    /**
     * Get checkCertificateEnabled
     *
     * @type {boolean}
     * @memberof POPSession
     */
    get checkCertificateEnabled(): boolean;
    /**
     * Set authType
     *
     * @memberof POPSession
     */
    set authType(authType: AuthType);
    /**
     * Get authType
     *
     * @type {AuthType}
     * @memberof POPSession
     */
    get authType(): AuthType;
    /**
     * Set connectionType
     *
     * @memberof POPSession
     */
    set connectionType(connectionType: ConnectionType);
    /**
     * Get connectionType
     *
     * @type {ConnectionType}
     * @memberof POPSession
     */
    get connectionType(): ConnectionType;
    /**
     * Set timeout
     *
     * @memberof POPSession
     */
    set timeout(timeoutValue: number);
    /**
     * Get timeout
     *
     * @type {number}
     * @memberof POPSession
     */
    get timeout(): number;
    /**
     * Set strictGost flag (to force using GOST for TLS)
     *
     * @memberof IMAPSession
     */
    set strictGost(value: Boolean);
    /**
     * Get strictGost flag (to force using GOST for TLS)
     *
     * @type {Boolean}
     * @memberof IMAPSession
     */
    get strictGost(): Boolean;
    /**
     * Validate exist account
     *
     * @returns {number} 0 - success, other - failure
     *
     * @memberof POPSession
     */
    checkAccount(): Promise<number>;
    /**
     * Connect
     *
     * @return {number} returns error code
     * @memberof POPSession
     */
    connect(): number;
    /**
     * Disconnect connection
     *
     * @memberof POPSession
     */
    disconnect(): void;
    /**
     * Login if needed to session
     *
     * @return {*}  {number}
     * @memberof POPSession
     */
    login(): number;
    /**
     * Fetch message info for all messages
     *
     * @return {*}  {POPMessageInfo[]} array of all messages info
     * @memberof POPSession
     */
    fetchMessages(): POPMessageInfo[];
    /**
     * Fetch message header by index or message info
     *
     * @param {number | POPMessageInfo} msg message index or info to fetch header
     * @return {*}  {MessageHeader}
     * @memberof POPSession
     */
    fetchHeader(msg: number | POPMessageInfo): MessageHeader;
    /**
     * Fetch message data by index or info
     *
     * @param {number} index Index or info of message to fetch header
     * @return {*}  {Data}
     * @memberof POPSession
     */
    fetchMessage(msg: number | POPMessageInfo): Data;
    /**
     * Delets message by index or message info
     *
     * @param {number} index Index or info of message to fetch header
     * @return {*}  {Data}
     * @memberof POPSession
     */
    deleteMessage(msg: number | POPMessageInfo): number;
    /**
     * noop
     *
     * @return {*}  {number} error code
     * @memberof POPSession
     */
    noop(): number;
}
export { POPSession };
//# sourceMappingURL=POPSession.d.ts.map