import { AuthType } from "../enums/AuthType";
import { ConnectionType } from "../enums/ConnectionType";
import { DsnNotify } from "../enums/DsnNotify";


export declare class ISMTPAsyncSessionNativeBinding {
    get hostname(): string;
    set hostname(hostname: string);
    get port(): number;
    set port(port: number);
    get username(): string;
    set username(username: string);
    get password(): string;
    set password(password: string);
    get checkCertificateEnabled(): boolean;
    set checkCertificateEnabled(isEnabled: boolean);
    get OAuth2Token(): string;
    set OAuth2Token(OAuth2Token: string);
    get authType(): AuthType;
    set authType(authType: AuthType);
    get connectionType(): ConnectionType;
    set connectionType(connectionType: ConnectionType);
    set strictGost(value: Boolean);
    get strictGost(): Boolean;
    checkAccount(from: string): Promise<number>;
    sendMessage(messageData: string | Buffer, from?: string, recipients?: string[]): Promise<number>;
    sendMessageOperation(
        from: string,
        recipients: string[],
        message: string | Buffer,
        notify: DsnNotify,
        done: (error: string | Error | undefined | null, result: number) => void): void;
    disconnect(): void;
    isDisconnected(): boolean;
}

export declare interface ISMTPAsyncSessionNativeBindingObject {
    new(): ISMTPAsyncSessionNativeBinding
    strError(errorCode: number): string
}
