/// <reference types="node" />
import net from "net";
export { Logger, LoggerLevel } from "nodemailer/lib/shared";
import tls from "tls";
import { SMTPServer, SMTPServerAddress, SMTPServerAuthentication, SMTPServerAuthenticationResponse, SMTPServerDataStream, SMTPServerOptions, SMTPServerSession } from "smtp-server";
export * from "smtp-server";
export interface SMTPServerAsPromisedServerAddress {
    address: string;
    family: string;
    port: number;
}
export interface SMTPServerAsPromisedOptions extends SMTPServerOptions {
    onConnect?: never;
    onAuth?: never;
    onMailFrom?: never;
    onRcptTo?: never;
    onData?: never;
    onClose?: never;
    onError?: never;
}
export declare class SMTPServerAsPromised {
    server: SMTPServer;
    protected closed?: boolean;
    protected errorHandler?: (error: Error) => Promise<void>;
    constructor(options?: SMTPServerAsPromisedOptions);
    listen(options?: net.ListenOptions): Promise<SMTPServerAsPromisedServerAddress>;
    close(): Promise<void>;
    updateSecureContext(options: tls.TlsOptions): void;
    destroy(): Promise<void>;
    /** This method can be overriden in subclass */
    protected onAuth(auth: SMTPServerAuthentication, session: SMTPServerSession): Promise<SMTPServerAuthenticationResponse>;
    /** This method can be overriden in subclass */
    protected onClose(session: SMTPServerSession): Promise<void>;
    /** This method can be overriden in subclass */
    protected onConnect(session: SMTPServerSession): Promise<void>;
    /** This method can be overriden in subclass */
    protected onData(stream: SMTPServerDataStream, session: SMTPServerSession): Promise<void>;
    /** This method can be overriden in subclass */
    protected onMailFrom(address: SMTPServerAddress, session: SMTPServerSession): Promise<void>;
    /** This method can be overriden in subclass */
    protected onRcptTo(address: SMTPServerAddress, session: SMTPServerSession): Promise<void>;
    /** This method can be overriden in subclass */
    protected onError(error: Error): Promise<void>;
}
export default SMTPServerAsPromised;
