import { IKosDataModel, IKosModelLogger, KosContextLogger, KosCreationContext, PublicModelInterface } from '../../../core';
import { DateBean, KosTimeOptions, TimeBean } from './types';
export declare const MODEL_TYPE = "kos-time-model";
/**
 * KOS Time Model - System time management with real-time synchronization and timezone control.
 *
 * This singleton model provides centralized control over system time, date, and timezone settings
 * with automatic event propagation when changes occur. Essential for applications that need to
 * synchronize time-based operations, schedule events, or maintain consistent timestamps across
 * the system.
 *
 * ## Key Features
 * - **System Time Control** - Update system hours, minutes, and seconds programmatically
 * - **Date Management** - Set system date including month, day, and year
 * - **Timezone Handling** - Change and track timezone with automatic updates
 * - **Real-time Events** - Automatic notifications when time, date, or timezone changes
 * - **EventBus Integration** - Publishes changes to internal EventBus for UI updates
 * - **WebSocket Sync** - Changes propagate across all connected clients
 *
 * ## Topic-Based Reactivity
 * The model listens to three KOS topics for time synchronization:
 * - **`/kos/time/time`** - Fired when system time changes (hour/minute/second)
 * - **`/kos/time/day`** - Fired when the date changes (day rollover or manual change)
 * - **`/kos/time/timezone`** - Fired when timezone is updated
 *
 * Additionally, the model publishes to internal EventBus topics:
 * - `TIME_CHANGE` - For UI components to react to time updates
 * - `DAY_CHANGE` - For date-dependent UI updates
 * - `TIMEZONE_CHANGE` - For timezone-aware components
 *
 * ## Common Use Cases
 * - **System Clock Management** - Synchronize device time with server time
 * - **Scheduled Operations** - Trigger events based on time changes
 * - **Multi-timezone Support** - Handle devices in different time zones
 * - **Time-based UI Updates** - Keep clocks and calendars synchronized
 * - **Audit Logging** - Ensure consistent timestamps across the system
 * - **Day Rollover Handling** - Reset daily counters or refresh data
 *
 * @interface
 * @example Basic Usage
 * ```typescript
 * const timeModel = KosTime.instance().build();
 *
 * // Update system time and date
 * await timeModel.updateSystemTime({ hour: 15, min: 45, sec: 30 });
 * await timeModel.updateSystemDate({ month: 3, day: 15, year: 2024 });
 * await timeModel.updateSystemTimezone('America/New_York');
 * ```
 *
 * @group KOS Model
 * @category System Integration
 * @useDeclaredType
 *
 * @see {@link TimeBean} - Time value structure (hour, minute, second)
 * @see {@link DateBean} - Date value structure (month, day, year)
 * @see {@link KosTimeOptions} - Configuration options for time model
 */
export type KosTimeModel = PublicModelInterface<KosTimeModelImpl>;
/**
 * @ignore
 * @internal
 */
export declare class KosTimeModelImpl implements IKosModelLogger, IKosDataModel {
    id: string;
    logger: KosContextLogger;
    timezone: string;
    constructor(modelId: string, _options: KosTimeOptions, context: KosCreationContext);
    /**
     * Updates the system clock to the provided time.
     *
     * @param time - The time to set the system time to
     */
    updateSystemTime(time: TimeBean): Promise<void>;
    /**
     * Updates the system clock to the provided date.
     *
     * @param date - The date to set the system date to
     */
    updateSystemDate(date: DateBean): Promise<void>;
    /**
     * Updates the system clock to the provided timezone.
     * @param timezone - The timezone to set the system timezone to
     */
    updateSystemTimezone(timezone: string): Promise<void>;
    handleTimeChange(): void;
    handleDayChange(): void;
    handleTimeZoneChange(): Promise<void>;
    /**
     * @internal
     */
    init(): Promise<void>;
    private retrieveTimezone;
    setTimezone(tz: string): void;
    /**
     * @internal
     */
    load(): Promise<void>;
}
//# sourceMappingURL=kos-time-model.d.ts.map