import { IEventValidationService, ValidationRule, ValidationRuleResult, BusinessRuleConfig, ConflictDetectionConfig, ValidationContext } from '../interfaces/event-validation.interfaces';
import { CalendarEvent, CreateEventInput, UpdateEventInput, EventValidationResult, EventConflict } from '../interfaces/event.interfaces';
/**
 * Implementation of event validation service
 * Provides comprehensive validation for events including business rules
 */
export declare class EventValidationService implements IEventValidationService {
    private rules;
    private businessRules;
    private conflictConfig;
    private stats;
    initialize(businessRules?: BusinessRuleConfig, conflictConfig?: ConflictDetectionConfig): void;
    validateForCreate(input: CreateEventInput, context?: ValidationContext): Promise<EventValidationResult>;
    validateForUpdate(input: UpdateEventInput, context?: ValidationContext): Promise<EventValidationResult>;
    validateForDelete(eventId: string, _context?: ValidationContext): Promise<EventValidationResult>;
    checkConflicts(event: CalendarEvent | CreateEventInput, existingEvents: CalendarEvent[]): EventConflict[];
    validateDateTime(dateTime: any): ValidationRuleResult;
    validateAttendees(attendees: any[]): ValidationRuleResult;
    validateRecurrence(recurrence: any): ValidationRuleResult;
    addValidationRule(rule: ValidationRule): void;
    removeValidationRule(ruleId: string): void;
    getValidationRules(): ValidationRule[];
    updateBusinessRules(rules: BusinessRuleConfig): void;
    updateConflictDetection(config: ConflictDetectionConfig): void;
    getValidationStats(): {
        totalValidations: number;
        passedValidations: number;
        failedValidations: number;
        conflictsDetected: number;
    };
    getValidationStatistics(): {
        totalValidations: number;
        passedValidations: number;
        failedValidations: number;
        conflictsDetected: number;
    };
    private initializeDefaultRules;
    private validateBasicFields;
    private timesOverlap;
}
