import { WeekDay } from '@angular/common';
import { OnDestroy } from '@angular/core';
import { BehaviorSubject, Subject } from 'rxjs';
import { DateRangeOptions } from '../date-range-picker/date-range-picker.directive';
import { DateRangeService } from '../date-range-picker/date-range.service';
import { DateTimePickerTimezone } from './date-time-picker.utils';
import * as i0 from "@angular/core";
export declare class DateTimePickerService implements OnDestroy {
    private readonly _config;
    readonly rangeService: DateRangeService;
    readonly rangeOptions: DateRangeOptions;
    mode$: BehaviorSubject<DatePickerMode>;
    date$: BehaviorSubject<Date>;
    timezone$: BehaviorSubject<DateTimePickerTimezone>;
    selected$: BehaviorSubject<Date>;
    month$: BehaviorSubject<number>;
    year$: BehaviorSubject<number>;
    showDate$: BehaviorSubject<boolean>;
    showTime$: BehaviorSubject<boolean>;
    showTimezone$: BehaviorSubject<boolean>;
    showSeconds$: BehaviorSubject<boolean>;
    showMeridian$: BehaviorSubject<boolean>;
    showSpinners$: BehaviorSubject<boolean>;
    showNowBtn$: BehaviorSubject<boolean>;
    weekdays$: BehaviorSubject<string[]>;
    nowBtnText$: BehaviorSubject<string>;
    timezones$: BehaviorSubject<DateTimePickerTimezone[]>;
    min$: BehaviorSubject<Date>;
    max$: BehaviorSubject<Date>;
    header$: BehaviorSubject<string>;
    headerEvent$: Subject<DatePickerHeaderEvent>;
    modeDirection: ModeDirection;
    startOfWeek$: BehaviorSubject<WeekDay>;
    months: string[];
    monthsShort: string[];
    meridians: string[];
    hours: number;
    minutes: number;
    seconds: number;
    yearRange: YearRange;
    /**
     * Store whether or not the component has fully initialised or not. We use this to prevent initial
     * focus on the end date range picker when the popover is first opened
     */
    initialised: boolean;
    private readonly _subscription;
    constructor();
    ngOnDestroy(): void;
    setViewportMonth(month: number): void;
    setViewportYear(year: number): void;
    setDate(day: number, month: number, year: number, hours?: number, minutes?: number, seconds?: number): void;
    setDateToNow(): void;
    setViewportMode(mode: DatePickerMode): void;
    goToChildMode(): void;
    goToParentMode(): void;
    goToNext(): void;
    goToPrevious(): void;
    setHeader(header: string): void;
    isTimezoneAvailable(timezone: DateTimePickerTimezone): boolean;
    getDefaultTimezone(): DateTimePickerTimezone;
    isInRange(date: Date): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DateTimePickerService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DateTimePickerService>;
}
export declare enum DatePickerMode {
    Day = 0,
    Month = 1,
    Year = 2
}
export declare enum ModeDirection {
    None = 0,
    Ascend = 1,
    Descend = 2
}
export declare enum DatePickerHeaderEvent {
    Previous = 0,
    Next = 1
}
export interface YearRange {
    start: number;
    end: number;
    range: number[];
}
