import * as i0 from '@angular/core';
import { MXInputBaseValueComponent, AXValueChangedEvent } from '@acorex/cdk/common';
import * as i1 from '@acorex/components/tabs';
import { AXTabsComponent, AXTabLook, AXTabLocation } from '@acorex/components/tabs';
import * as i2 from '@acorex/components/badge';
import * as i3 from '@acorex/components/decorators';
import * as i4 from '@angular/common';
import * as i5 from '@angular/forms';
import * as i6 from '@acorex/components/select-box';
import * as i7 from '@acorex/components/form';
import * as i8 from '@acorex/components/label';
import * as i9 from '@acorex/components/check-box';
import * as i10 from '@acorex/components/text-box';
import * as i11 from '@acorex/core/translation';
import * as i12 from '@acorex/components/button';

interface IExpression {
    getExpression(): any;
}

declare class Custom$1 {
    specific: Specific$1;
    repeat: Repeat$1;
    between: Between$1;
}
declare class Repeat$1 {
    isRepeat: boolean;
    interval: number;
    startAt: number;
}
declare class Specific$1 {
    isSpecific: boolean;
    values: DropDownItem[];
}
declare class Between$1 {
    isBetween: boolean;
    from: number;
    to: number;
}
declare enum Type {
    Every = "every",
    Custom = "custom"
}
declare class DropDownItem {
    id: number;
    text: string;
    constructor(id: number, text: string);
}

declare class Day {
    type: DayType;
    baseOnWeek: BaseOnWeek;
    baseOnMonth: BaseOnMonth;
}
declare class BaseOnMonth {
    type: BaseOnMonthType;
    custom: BaseOnMonthCustom;
    before: number;
}
declare class BaseOnWeek {
    type: BaseOnWeekType;
    last: Last;
    custom: BaseOnWeekCustom;
}
declare class BaseOnWeekCustom {
    repeat: BaseOnWeekRepeat;
    specific: Specific;
    dayOfMonth: DayOfMonth;
}
declare class BaseOnMonthCustom {
    repeat: BaseOnMonthRepeat;
    specific: Specific;
}
declare class Last {
    day: number;
}
declare class BaseRepeat {
    isRepeat: boolean;
    interval: number;
}
declare class BaseOnWeekRepeat extends BaseRepeat {
    startAt: number;
}
declare class BaseOnMonthRepeat extends BaseRepeat {
    startAt: number;
}
declare class Specific {
    isSpecefic: boolean;
    values: DropDownItem[];
}
declare class DayOfMonth {
    isDayOfMonth: boolean;
    xst: number;
    day: number;
}
declare enum DayType {
    Every = "every",
    BOWeek = "boweek",
    BOMonth = "bomonth"
}
declare enum BaseOnWeekType {
    Last = "last",
    Custom = "custom"
}
declare enum BaseOnMonthType {
    Last = "last",
    Before = "before",
    Custom = "custom"
}

declare class DayService implements IExpression {
    private stringService;
    dayModel: Day;
    daysList: Array<string>;
    constructor();
    getExpression(): any;
    expressionValidation(preCronExpressionPattern: string, newCronExpressionPattern: string): string;
    reversExpression(cronExpressionPattern: string): void;
    reversExpressionBasedOnWeek(regex: string): void;
    reversExpressionBasedOnMonth(regex: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DayService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DayService>;
}

declare class Hours {
    type: Type;
    custom: Custom$1;
}

declare class HoursService implements IExpression {
    private stringService;
    hourModel: Hours;
    constructor();
    getExpression(): string;
    reversExpression(cronExpressionPattern: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<HoursService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<HoursService>;
}

declare class Minutes {
    type: Type;
    custom: Custom$1;
}

declare class MinutesService implements IExpression {
    private stringService;
    minuteModel: Minutes;
    constructor();
    getExpression(): string;
    reversExpression(cronExpressionPattern: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<MinutesService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MinutesService>;
}

declare class Month {
    type: Type;
    custom: Custom$1;
}

declare class MonthService implements IExpression {
    private stringService;
    monthModel: Month;
    monthList: Array<string>;
    constructor();
    getExpression(): string;
    reversExpression(cronExpressionPattern: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<MonthService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MonthService>;
}

declare class Seconds {
    type: Type;
    custom: Custom$1;
}

declare class SecondsService implements IExpression {
    private stringService;
    secondModel: Seconds;
    constructor();
    getExpression(): string;
    reversExpression(cronExpressionPattern: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SecondsService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SecondsService>;
}

declare class Year {
    type: Type;
    custom: Custom;
}
declare class Repeat extends Repeat$1 {
    startAt: number;
}
declare class Between extends Between$1 {
    from: number;
    to: number;
}
declare class Custom extends Custom$1 {
    repeat: Repeat;
    between: Between;
}

declare class YearService {
    private stringService;
    yearModel: Year;
    constructor();
    getExpression(): string;
    reversExpression(cronExpressionPattern: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<YearService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<YearService>;
}

declare class AXCronJobContainerComponent extends MXInputBaseValueComponent<string> {
    #private;
    protected secondsService: SecondsService;
    protected minutesService: MinutesService;
    protected hoursService: HoursService;
    protected monthService: MonthService;
    protected dayService: DayService;
    protected yearService: YearService;
    protected tabComponent: i0.Signal<AXTabsComponent>;
    protected activeTab: i0.WritableSignal<string>;
    private onGetModelFired;
    protected options: i0.WritableSignal<{
        fit: boolean;
        look: AXTabLook;
        location: AXTabLocation;
    }>;
    protected onGetModel(): void;
    protected internalValueChanged(cronExpressionPattern: string): void;
    private get __hostName();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCronJobContainerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCronJobContainerComponent, "ax-cron-job-container", never, {}, { "onValueChanged": "onValueChanged"; }, never, never, true, never>;
}

declare class AXCronDayComponent {
    #private;
    protected dayService: DayService;
    protected boWeekDropDownList: DropDownItem[];
    protected boMonthDropDownList: DropDownItem[];
    protected daysIndexInMonth: number[];
    protected zeroTo30: number[];
    dayChanged: i0.OutputEmitterRef<void>;
    protected inputChange(): void;
    protected changeHandler(e: AXValueChangedEvent): void;
    protected changeHandler2(e: AXValueChangedEvent): void;
    protected get daysList(): Array<string>;
    protected get isBoWeek(): boolean;
    protected get isBoMonth(): boolean;
    protected get isBoWeekCustom(): boolean;
    protected get isBoMonthCustom(): boolean;
    protected get isBoMonthBefore(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCronDayComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCronDayComponent, "ax-cron-day", never, {}, { "dayChanged": "dayChanged"; }, never, never, true, never>;
}

declare class AXCronHoursComponent {
    #private;
    protected hoursService: HoursService;
    protected dropdownList: DropDownItem[];
    protected zeroTo23: number[];
    hoursChanged: i0.OutputEmitterRef<void>;
    protected inputChange(): void;
    protected changeHandler(e: AXValueChangedEvent): void;
    protected get isCustom(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCronHoursComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCronHoursComponent, "ax-cron-hours", never, {}, { "hoursChanged": "hoursChanged"; }, never, never, true, never>;
}

declare class AXCronMinutesComponent {
    #private;
    protected minutesService: MinutesService;
    protected dropdownList: DropDownItem[];
    protected zeroTo59: number[];
    minutesChanged: i0.OutputEmitterRef<void>;
    protected inputChange(): void;
    protected changeHandler(e: AXValueChangedEvent): void;
    protected get isCustom(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCronMinutesComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCronMinutesComponent, "ax-cron-minutes", never, {}, { "minutesChanged": "minutesChanged"; }, never, never, true, never>;
}

declare class AXCronMonthComponent {
    #private;
    protected monthService: MonthService;
    protected dropdownList: DropDownItem[];
    protected dropdownList2: DropDownItem[];
    protected oneTo12: DropDownItem[];
    monthChanged: i0.OutputEmitterRef<void>;
    protected inputChange(): void;
    protected changeHandler(e: AXValueChangedEvent): void;
    protected get isCustom(): boolean;
    protected get monthsList(): Array<string>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCronMonthComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCronMonthComponent, "ax-cron-month", never, {}, { "monthChanged": "monthChanged"; }, never, never, true, never>;
}

declare class AXCronSecondsComponent {
    #private;
    protected secondsService: SecondsService;
    secondsChanged: i0.OutputEmitterRef<void>;
    protected dropdownList: DropDownItem[];
    protected zeroTo59: number[];
    protected inputChange(e?: any): void;
    protected changeHandler(e: AXValueChangedEvent): void;
    protected get isCustom(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCronSecondsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCronSecondsComponent, "ax-cron-seconds", never, {}, { "secondsChanged": "secondsChanged"; }, never, never, true, never>;
}

declare class AXCronYearComponent {
    #private;
    protected yearService: YearService;
    protected dropdownList: DropDownItem[];
    protected oneTo100: DropDownItem[];
    yearChanged: i0.OutputEmitterRef<void>;
    protected inputChange(): void;
    protected changeHandler(e: AXValueChangedEvent): void;
    protected get isCustom(): boolean;
    protected getYearByOffset(offset: number): number;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCronYearComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXCronYearComponent, "ax-cron-year", never, {}, { "yearChanged": "yearChanged"; }, never, never, true, never>;
}

declare class AXCronJobModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXCronJobModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXCronJobModule, never, [typeof i1.AXTabsModule, typeof i2.AXBadgeModule, typeof i3.AXDecoratorModule, typeof i4.CommonModule, typeof i5.FormsModule, typeof i6.AXSelectBoxModule, typeof i7.AXFormModule, typeof i8.AXLabelModule, typeof i9.AXCheckBoxModule, typeof i10.AXTextBoxModule, typeof i11.AXTranslationModule, typeof i12.AXButtonModule, typeof i8.AXLabelModule, typeof AXCronJobContainerComponent, typeof AXCronDayComponent, typeof AXCronHoursComponent, typeof AXCronMinutesComponent, typeof AXCronMonthComponent, typeof AXCronSecondsComponent, typeof AXCronYearComponent], [typeof AXCronJobContainerComponent, typeof AXCronDayComponent, typeof AXCronHoursComponent, typeof AXCronMinutesComponent, typeof AXCronMonthComponent, typeof AXCronSecondsComponent, typeof AXCronYearComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXCronJobModule>;
}

export { AXCronDayComponent, AXCronHoursComponent, AXCronJobContainerComponent, AXCronJobModule, AXCronMinutesComponent, AXCronMonthComponent, AXCronSecondsComponent, AXCronYearComponent };
