import * as i0 from '@angular/core';
import { OnInit, EventEmitter, OnChanges, SimpleChanges, ModuleWithProviders } from '@angular/core';
import * as i6 from '@angular/forms';
import { ControlValueAccessor } from '@angular/forms';
import * as i5 from '@ngx-translate/core';
import { TranslateService } from '@ngx-translate/core';
import * as i3 from '@angular/common/http';
import { HttpClient } from '@angular/common/http';
import * as i4 from '@angular/common';

declare class TimePickerComponent implements OnInit {
    change: EventEmitter<any>;
    disabled: boolean;
    time: any;
    selectClass: string;
    use24HourTime: boolean;
    hideSeconds: boolean;
    hours: number[];
    minutes: number[];
    seconds: number[];
    hourTypes: string[];
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TimePickerComponent, "cron-time-picker", never, { "disabled": { "alias": "disabled"; "required": false; }; "time": { "alias": "time"; "required": false; }; "selectClass": { "alias": "selectClass"; "required": false; }; "use24HourTime": { "alias": "use24HourTime"; "required": false; }; "hideSeconds": { "alias": "hideSeconds"; "required": false; }; }, { "change": "change"; }, never, never, false, never>;
}

interface CronOptionModel {
    formInputClass: string;
    formSelectClass: string;
    formRadioClass: string;
    formCheckboxClass: string;
    defaultTime: string;
    use24HourTime: boolean;
    hideMinutesTab: boolean;
    hideHourlyTab: boolean;
    hideDailyTab: boolean;
    hideWeeklyTab: boolean;
    hideMonthlyTab: boolean;
    hideYearlyTab: boolean;
    hideAdvancedTab: boolean;
    /** hides the Seconds UI form element */
    hideSeconds: boolean;
    /** removes Seconds from the Cron expression */
    removeSeconds: boolean;
    /** removes Years from the Cron expression */
    removeYears: boolean;
}
declare const defaultCronOptions: CronOptionModel;

declare class TranslateUiService {
    private translateService;
    private http;
    private availableLanguages;
    private translationPath;
    constructor(translateService: TranslateService, http: HttpClient);
    init(language?: string): void;
    private loadTranslation;
    setLanguage(language: string): void;
    getCurrentLanguage(): string;
    getAvailableLanguages(): string[];
    static ɵfac: i0.ɵɵFactoryDeclaration<TranslateUiService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TranslateUiService>;
}

declare class CronEditorComponent implements OnInit, OnChanges, ControlValueAccessor {
    private translate;
    private translateUiService;
    static nextId: number;
    id: number;
    private _language;
    set language(value: string);
    get language(): string;
    disabled: boolean;
    options: CronOptionModel;
    get cron(): string;
    set cron(value: string);
    cronChange: EventEmitter<any>;
    activeTab: string;
    selectOptions: {
        months: number[];
        monthWeeks: string[];
        days: string[];
        minutes: number[];
        fullMinutes: number[];
        seconds: number[];
        hours: number[];
        monthDays: number[];
        monthDaysWithLasts: string[];
        hourTypes: string[];
    };
    state: any;
    private localCron;
    private isDirty;
    constructor(translate: TranslateService, translateUiService: TranslateUiService);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    writeValue(cronExpression: string): void;
    registerOnChange(onChange: (cronExpression: string) => void): void;
    registerOnTouched(onTouched: () => void): void;
    setDisabledState?(isDisabled: boolean): void;
    setActiveTab(tab: string): void;
    dayDisplay(day: string): string;
    monthWeekDisplay(monthWeekNumber: string): string;
    monthDisplay(month: number): string;
    monthDayDisplay(month: string): string;
    regenerateCron(): void;
    private getAmPmHour;
    private getHourType;
    private hourToCron;
    private handleModelChange;
    private validate;
    private getDefaultAdvancedCronExpression;
    private getDefaultState;
    private getOrdinalSuffix;
    private getSelectOptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<CronEditorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CronEditorComponent, "cron-editor", never, { "language": { "alias": "language"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "options": { "alias": "options"; "required": false; }; "cron": { "alias": "cron"; "required": false; }; }, { "cronChange": "cronChange"; }, never, never, false, never>;
}

declare class CronEditorModule {
    static forRoot(): ModuleWithProviders<CronEditorModule>;
    static ɵfac: i0.ɵɵFactoryDeclaration<CronEditorModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<CronEditorModule, [typeof CronEditorComponent, typeof TimePickerComponent], [typeof i3.HttpClientModule, typeof i4.CommonModule, typeof i5.TranslateModule, typeof i6.FormsModule], [typeof CronEditorComponent, typeof TimePickerComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<CronEditorModule>;
}

declare const Days: {
    SUN: string;
    MON: string;
    TUE: string;
    WED: string;
    THU: string;
    FRI: string;
    SAT: string;
};
declare const MonthWeeks: {
    '#1': string;
    '#2': string;
    '#3': string;
    '#4': string;
    '#5': string;
    L: string;
};
declare enum Months {
    January = 1,
    February = 2,
    March = 3,
    April = 4,
    May = 5,
    June = 6,
    July = 7,
    August = 8,
    September = 9,
    October = 10,
    November = 11,
    December = 12
}

export { CronEditorComponent, CronEditorModule, Days, MonthWeeks, Months, TimePickerComponent, TranslateUiService, defaultCronOptions };
export type { CronOptionModel };
