/** * SMTP Server * Core implementation for the refactored SMTP server */ import type { ISmtpServerOptions } from './interfaces.js'; import type { ISmtpServer, ISmtpServerConfig, ISessionManager, IConnectionManager, ICommandHandler, IDataHandler, ITlsHandler, ISecurityHandler } from './interfaces.js'; import { UnifiedEmailServer } from '../../routing/classes.unified.email.server.js'; /** * SMTP Server implementation * The main server class that coordinates all components */ export declare class SmtpServer implements ISmtpServer { /** * Email server reference */ private emailServer; /** * Session manager */ private sessionManager; /** * Connection manager */ private connectionManager; /** * Command handler */ private commandHandler; /** * Data handler */ private dataHandler; /** * TLS handler */ private tlsHandler; /** * Security handler */ private securityHandler; /** * SMTP server options */ private options; /** * Net server instance */ private server; /** * Secure server instance */ private secureServer; /** * Whether the server is running */ private running; /** * Server recovery state */ private recoveryState; /** * Creates a new SMTP server * @param config - Server configuration */ constructor(config: ISmtpServerConfig); /** * Start the SMTP server * @returns Promise that resolves when server is started */ listen(): Promise; /** * Stop the SMTP server * @returns Promise that resolves when server is stopped */ close(): Promise; /** * Get the session manager * @returns Session manager instance */ getSessionManager(): ISessionManager; /** * Get the connection manager * @returns Connection manager instance */ getConnectionManager(): IConnectionManager; /** * Get the command handler * @returns Command handler instance */ getCommandHandler(): ICommandHandler; /** * Get the data handler * @returns Data handler instance */ getDataHandler(): IDataHandler; /** * Get the TLS handler * @returns TLS handler instance */ getTlsHandler(): ITlsHandler; /** * Get the security handler * @returns Security handler instance */ getSecurityHandler(): ISecurityHandler; /** * Get the server options * @returns SMTP server options */ getOptions(): ISmtpServerOptions; /** * Get the email server reference * @returns Email server instance */ getEmailServer(): UnifiedEmailServer; /** * Check if the server is running * @returns Whether the server is running */ isRunning(): boolean; /** * Check if we should attempt to recover from an error * @param error - The error that occurred * @returns Whether recovery should be attempted */ private shouldAttemptRecovery; /** * Attempt to recover the server after a critical error * @param serverType - The type of server to recover ('standard' or 'secure') * @param error - The error that triggered recovery */ private attemptServerRecovery; /** * Clean up all component resources */ destroy(): Promise; }