import type { EmailProcessingMode } from '../delivery/interfaces.js';
export type { EmailProcessingMode };
/**
 * Domain rule interface for pattern-based routing
 */
export interface IDomainRule {
    pattern: string;
    mode: EmailProcessingMode;
    target?: {
        server: string;
        port?: number;
        useTls?: boolean;
        authentication?: {
            user?: string;
            pass?: string;
        };
    };
    mtaOptions?: IMtaOptions;
    contentScanning?: boolean;
    scanners?: IContentScanner[];
    transformations?: ITransformation[];
    rateLimits?: {
        maxMessagesPerMinute?: number;
        maxRecipientsPerMessage?: number;
    };
}
/**
 * MTA options interface
 */
export interface IMtaOptions {
    domain?: string;
    allowLocalDelivery?: boolean;
    localDeliveryPath?: string;
    dkimSign?: boolean;
    dkimOptions?: {
        domainName: string;
        keySelector: string;
        privateKey?: string;
    };
    smtpBanner?: string;
    maxConnections?: number;
    connTimeout?: number;
    spoolDir?: string;
}
/**
 * Content scanner interface
 */
export interface IContentScanner {
    type: 'spam' | 'virus' | 'attachment';
    threshold?: number;
    action: 'tag' | 'reject';
    blockedExtensions?: string[];
}
/**
 * Transformation interface
 */
export interface ITransformation {
    type: string;
    header?: string;
    value?: string;
    domains?: string[];
    append?: boolean;
    [key: string]: any;
}
