import { TimeOptions } from "./time.interfaces"; /** * Time constraints service interface * Manages time constraints and validation */ export interface ITimeConstraintsService { /** * Check if a time is disabled based on all constraints * @param time Time to check * @param minTime Minimum allowed time * @param maxTime Maximum allowed time * @param disabledTimes Array of disabled times * @param disabledHours Array of disabled hours * @param disabledMinutes Array of disabled minutes * @param disabledSeconds Array of disabled seconds * @returns Whether the time is disabled */ isTimeDisabled(time: Date, minTime: Date | null, maxTime: Date | null, disabledTimes: Date[], disabledHours: number[], disabledMinutes: number[], disabledSeconds: number[]): boolean; /** * Validate and set disabled hours * @param hours Array of hours to disable (0-23) * @returns Validated array of disabled hours */ setDisabledHours(hours: number[]): number[]; /** * Validate and set disabled minutes * @param minutes Array of minutes to disable (0-59) * @returns Validated array of disabled minutes */ setDisabledMinutes(minutes: number[]): number[]; /** * Validate and set disabled seconds * @param seconds Array of seconds to disable (0-59) * @returns Validated array of disabled seconds */ setDisabledSeconds(seconds: number[]): number[]; /** * Add a disabled time * @param time Time to disable * @param currentDisabledTimes Current array of disabled times * @returns Updated array of disabled times */ addDisabledTime(time: Date, currentDisabledTimes: Date[]): Date[]; /** * Remove a disabled time * @param time Time to enable * @param currentDisabledTimes Current array of disabled times * @returns Updated array of disabled times */ removeDisabledTime(time: Date, currentDisabledTimes: Date[]): Date[]; /** * Add a disabled hour * @param hour Hour to disable (0-23) * @param currentDisabledHours Current array of disabled hours * @returns Updated array of disabled hours */ addDisabledHour(hour: number, currentDisabledHours: number[]): number[]; /** * Remove a disabled hour * @param hour Hour to enable (0-23) * @param currentDisabledHours Current array of disabled hours * @returns Updated array of disabled hours */ removeDisabledHour(hour: number, currentDisabledHours: number[]): number[]; /** * Validate time options * @param options Time options to validate * @returns Validated time options */ validateTimeOptions(options: TimeOptions): TimeOptions; /** * Check if time step is valid * @param step Step value to validate * @param type Type of step ('minute' or 'second') * @returns Whether the step is valid */ isValidStep(step: number, type: 'minute' | 'second'): boolean; }