55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
|
|
import type { IEmailDomainConfig } from './interfaces.js';
|
||
|
|
/**
|
||
|
|
* Registry for email domain configurations
|
||
|
|
* Provides fast lookups and validation for domains
|
||
|
|
*/
|
||
|
|
export declare class DomainRegistry {
|
||
|
|
private domains;
|
||
|
|
private defaults;
|
||
|
|
constructor(domainConfigs: IEmailDomainConfig[], defaults?: {
|
||
|
|
dnsMode?: 'forward' | 'internal-dns' | 'external-dns';
|
||
|
|
dkim?: IEmailDomainConfig['dkim'];
|
||
|
|
rateLimits?: IEmailDomainConfig['rateLimits'];
|
||
|
|
});
|
||
|
|
/**
|
||
|
|
* Get default DKIM configuration
|
||
|
|
*/
|
||
|
|
private getDefaultDkimConfig;
|
||
|
|
/**
|
||
|
|
* Apply defaults to a domain configuration
|
||
|
|
*/
|
||
|
|
private applyDefaults;
|
||
|
|
/**
|
||
|
|
* Check if a domain is registered
|
||
|
|
*/
|
||
|
|
isDomainRegistered(domain: string): boolean;
|
||
|
|
/**
|
||
|
|
* Check if an email address belongs to a registered domain
|
||
|
|
*/
|
||
|
|
isEmailRegistered(email: string): boolean;
|
||
|
|
/**
|
||
|
|
* Get domain configuration
|
||
|
|
*/
|
||
|
|
getDomainConfig(domain: string): IEmailDomainConfig | undefined;
|
||
|
|
/**
|
||
|
|
* Get domain configuration for an email address
|
||
|
|
*/
|
||
|
|
getEmailDomainConfig(email: string): IEmailDomainConfig | undefined;
|
||
|
|
/**
|
||
|
|
* Extract domain from email address
|
||
|
|
*/
|
||
|
|
private extractDomain;
|
||
|
|
/**
|
||
|
|
* Get all registered domains
|
||
|
|
*/
|
||
|
|
getAllDomains(): string[];
|
||
|
|
/**
|
||
|
|
* Get all domain configurations
|
||
|
|
*/
|
||
|
|
getAllConfigs(): IEmailDomainConfig[];
|
||
|
|
/**
|
||
|
|
* Get domains by DNS mode
|
||
|
|
*/
|
||
|
|
getDomainsByMode(mode: 'forward' | 'internal-dns' | 'external-dns'): IEmailDomainConfig[];
|
||
|
|
}
|