UNPKG

@uplink-protocol/calendar-controller

Version:

Flexible calendar and time picker API supporting both calendar, date-picker, and time-picker integrations for any JavaScript framework or library

41 lines (40 loc) 2.06 kB
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; }