import { PlatformError, OperationError, ResourceError } from './base.errors.js';
import type { IErrorContext } from './base.errors.js';
/**
 * Base class for reputation-related errors
 */
export declare class ReputationError extends OperationError {
    /**
     * Creates a new reputation error
     *
     * @param message Error message
     * @param code Error code
     * @param context Additional context
     */
    constructor(message: string, code: string, context?: IErrorContext);
}
/**
 * Error class for reputation check errors
 */
export declare class ReputationCheckError extends ReputationError {
    /**
     * Creates a new reputation check error
     *
     * @param message Error message
     * @param context Additional context
     */
    constructor(message: string, context?: IErrorContext);
    /**
     * Creates a new instance with updated context
     */
    protected createWithContext(context: IErrorContext): PlatformError;
    /**
     * Creates an instance for an IP reputation check error
     *
     * @param ip IP address
     * @param provider Reputation provider
     * @param originalError Original error
     * @param context Additional context
     */
    static ipCheckFailed(ip: string, provider: string, originalError?: Error, context?: IErrorContext): ReputationCheckError;
    /**
     * Creates an instance for a domain reputation check error
     *
     * @param domain Domain
     * @param provider Reputation provider
     * @param originalError Original error
     * @param context Additional context
     */
    static domainCheckFailed(domain: string, provider: string, originalError?: Error, context?: IErrorContext): ReputationCheckError;
}
/**
 * Error class for reputation data errors
 */
export declare class ReputationDataError extends ReputationError {
    /**
     * Creates a new reputation data error
     *
     * @param message Error message
     * @param context Additional context
     */
    constructor(message: string, context?: IErrorContext);
    /**
     * Creates a new instance with updated context
     */
    protected createWithContext(context: IErrorContext): PlatformError;
    /**
     * Creates an instance for a data access error
     *
     * @param entity Entity type (domain, ip)
     * @param entityId Entity identifier
     * @param operation Operation that failed (read, write, update)
     * @param originalError Original error
     * @param context Additional context
     */
    static dataAccessFailed(entity: string, entityId: string, operation: string, originalError?: Error, context?: IErrorContext): ReputationDataError;
}
/**
 * Error class for blocklist-related errors
 */
export declare class BlocklistError extends ReputationError {
    /**
     * Creates a new blocklist error
     *
     * @param message Error message
     * @param context Additional context
     */
    constructor(message: string, context?: IErrorContext);
    /**
     * Creates a new instance with updated context
     */
    protected createWithContext(context: IErrorContext): PlatformError;
    /**
     * Creates an instance for an entity found on a blocklist
     *
     * @param entity Entity type (domain, ip)
     * @param entityId Entity identifier
     * @param blocklist Blocklist name
     * @param reason Reason for listing (if available)
     * @param context Additional context
     */
    static entityBlocked(entity: string, entityId: string, blocklist: string, reason?: string, context?: IErrorContext): BlocklistError;
}
/**
 * Error class for reputation update errors
 */
export declare class ReputationUpdateError extends ReputationError {
    /**
     * Creates a new reputation update error
     *
     * @param message Error message
     * @param context Additional context
     */
    constructor(message: string, context?: IErrorContext);
    /**
     * Creates a new instance with updated context
     */
    protected createWithContext(context: IErrorContext): PlatformError;
}
/**
 * Error class for IP warmup allocation errors
 */
export declare class WarmupAllocationError extends ReputationError {
    /**
     * Creates a new warmup allocation error
     *
     * @param message Error message
     * @param context Additional context
     */
    constructor(message: string, context?: IErrorContext);
    /**
     * Creates a new instance with updated context
     */
    protected createWithContext(context: IErrorContext): PlatformError;
    /**
     * Creates an instance for no available IPs
     *
     * @param domain Domain requesting an IP
     * @param policy Allocation policy that was used
     * @param context Additional context
     */
    static noAvailableIps(domain: string, policy: string, context?: IErrorContext): WarmupAllocationError;
}
/**
 * Error class for IP warmup limit exceeded errors
 */
export declare class WarmupLimitError extends ResourceError {
    /**
     * Creates a new warmup limit error
     *
     * @param message Error message
     * @param context Additional context
     */
    constructor(message: string, context?: IErrorContext);
    /**
     * Creates a new instance with updated context
     */
    protected createWithContext(context: IErrorContext): PlatformError;
    /**
     * Creates an instance for daily sending limit exceeded
     *
     * @param ip IP address
     * @param domain Domain
     * @param limit Daily limit
     * @param sent Number of emails sent
     * @param context Additional context
     */
    static dailyLimitExceeded(ip: string, domain: string, limit: number, sent: number, context?: IErrorContext): WarmupLimitError;
}
/**
 * Error class for IP warmup schedule errors
 */
export declare class WarmupScheduleError extends ReputationError {
    /**
     * Creates a new warmup schedule error
     *
     * @param message Error message
     * @param context Additional context
     */
    constructor(message: string, context?: IErrorContext);
    /**
     * Creates a new instance with updated context
     */
    protected createWithContext(context: IErrorContext): PlatformError;
}
