import * as dayjs from 'dayjs';
import dayjs__default from 'dayjs';
import * as i0 from '@angular/core';
import { PipeTransform, OnInit, TemplateRef, EventEmitter } from '@angular/core';
import { SymbolRegistry } from '@agorapulse/ui-symbol';
import { BehaviorSubject } from 'rxjs';

interface DayDetail {
    date: number;
    day: number;
    month: number;
    timestamp: number;
    dayString: string;
    dayjs: dayjs.Dayjs;
}

declare class DayDisabledPipe implements PipeTransform {
    transform(day: DayDetail, todayTimestamp: number, minDateTimestamp?: number, maxDateTimestamp?: number): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DayDisabledPipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<DayDisabledPipe, "dayDisabled", true>;
}

type NeoDatePickerMode = 'single' | 'multiple';
type NeoDatePickerStartsOn = 'monday' | 'sunday';
type NeoDatePickerLocale = 'en' | 'es' | 'fr' | 'pt' | 'de';
declare class NeoDatepickerComponent implements OnInit {
    symbolRegistry: SymbolRegistry;
    readonly ONE_DAY: number;
    readonly TODAY_TIMESTAMP: number;
    dayTemplate: TemplateRef<{
        day: DayDetail;
    }> | undefined;
    locale: NeoDatePickerLocale;
    private _maxDate;
    set maxDate(maxDate: dayjs__default.Dayjs);
    get maxDate(): dayjs__default.Dayjs | undefined;
    private _minDate;
    set minDate(minDate: dayjs__default.Dayjs);
    get minDate(): dayjs__default.Dayjs | undefined;
    previousMonthAvailable: boolean;
    private _mode;
    set mode(mode: NeoDatePickerMode);
    get mode(): NeoDatePickerMode;
    private _selectedDates;
    set selectedDates(dates: dayjs__default.Dayjs[]);
    get selectedDates(): dayjs__default.Dayjs[];
    startsOn: NeoDatePickerStartsOn;
    datesSelected: EventEmitter<dayjs__default.Dayjs[]>;
    nextMonth: EventEmitter<void>;
    previousMonth: EventEmitter<void>;
    currentYear: number;
    currentMonth: number;
    currentMonthDates$: BehaviorSubject<DayDetail[]>;
    minDateTimestamp: number | undefined;
    maxDateTimestamp: number | undefined;
    months: string[];
    selectedDaysTimestamp: Set<number>;
    weekDays: string[];
    dayDisabledPipe: DayDisabledPipe;
    private destroy$;
    constructor(symbolRegistry: SymbolRegistry);
    ngOnInit(): void;
    getDayDetails(index: number, firstDay: number, month: number, numberOfDays: number, year: number): DayDetail;
    getNumberOfDays(year: number, month: number): number;
    getMonthDetails(year: number, month: number): DayDetail[];
    onPreviousMonth(): void;
    onNextMonth(): void;
    onSelectDay(dayDetail: DayDetail): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NeoDatepickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NeoDatepickerComponent, "ap-neo-date-picker", never, { "dayTemplate": { "alias": "dayTemplate"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "selectedDates": { "alias": "selectedDates"; "required": false; }; "startsOn": { "alias": "startsOn"; "required": false; }; }, { "datesSelected": "datesSelected"; "nextMonth": "nextMonth"; "previousMonth": "previousMonth"; }, never, never, true, never>;
}

export { DayDisabledPipe, NeoDatepickerComponent };
export type { DayDetail, NeoDatePickerLocale, NeoDatePickerMode, NeoDatePickerStartsOn };
