import Component from '@glimmer/component'; import { type TaskInstance } from 'ember-concurrency'; import { type PowerCalendarRangeDaysSignature } from './power-calendar-range/days'; import { type PowerCalendarRangeNavSignature } from './power-calendar-range/nav'; import { type NormalizeRangeActionValue, type PowerCalendarDay, type SelectedPowerCalendarRange, type NormalizeCalendarValue } from '../utils.ts'; import type { PowerCalendarAPI, PowerCalendarArgs, SelectedDays, TPowerCalendarMoveCenterUnit } from './power-calendar.ts'; import type Owner from '@ember/owner'; import type { ComponentLike } from '@glint/template'; import type PowerCalendarService from '../services/power-calendar.ts'; export interface PowerCalendarRangeDay extends Omit { date: SelectedPowerCalendarRange | Date; } export declare const DAY_IN_MS = 86400000; export type TPowerCalendarRangeOnSelect = (day: NormalizeRangeActionValue, calendar: PowerCalendarRangeAPI, event?: Event) => void; interface PowerCalendarRangeArgs extends Omit { navComponent?: ComponentLike; daysComponent?: ComponentLike; selected?: SelectedPowerCalendarRange; minRange?: string | number; maxRange?: string | number; proximitySelection?: boolean; onSelect?: TPowerCalendarRangeOnSelect; onInit?: (calendar: PowerCalendarRangeAPI) => void; onCenterChange?: (newCenter: NormalizeCalendarValue, calendar: PowerCalendarRangeAPI, event: Event) => Promise | void; } export interface PowerCalendarRangeDefaultBlock extends PowerCalendarRangeAPI { Nav: ComponentLike<{ Args: Omit; Blocks: PowerCalendarRangeNavSignature['Blocks']; }>; Days: ComponentLike<{ Element: PowerCalendarRangeDaysSignature['Element']; Args: Omit; Blocks: PowerCalendarRangeDaysSignature['Blocks']; }>; } interface PowerCalendarRangeSignature { Element: HTMLElement; Args: PowerCalendarRangeArgs; Blocks: { default: [PowerCalendarRangeDefaultBlock]; }; } export interface PowerCalendarRangeActions { changeCenter?: (newCenter: Date, calendar: PowerCalendarRangeAPI, event: Event) => TaskInstance; moveCenter?: (step: number, unit: TPowerCalendarMoveCenterUnit, calendar: PowerCalendarRangeAPI, event: Event | KeyboardEvent) => Promise; select?: (day: PowerCalendarRangeDay, calendar: PowerCalendarRangeAPI, event?: Event) => void; } export interface PowerCalendarRangeAPI extends Omit { type: 'range'; selected?: SelectedPowerCalendarRange; minRange?: number | null; maxRange?: number | null; actions: PowerCalendarRangeActions; } export default class PowerCalendarRange extends Component { powerCalendar: PowerCalendarService; center: null; _selected?: SelectedDays; constructor(owner: Owner, args: PowerCalendarRangeArgs); willDestroy(): void; get publicActions(): PowerCalendarRangeActions; get selected(): SelectedPowerCalendarRange; set selected(v: SelectedPowerCalendarRange); get currentCenter(): Date; get publicAPI(): PowerCalendarRangeAPI; get tagWithDefault(): keyof HTMLElementTagNameMap; get proximitySelection(): boolean; get minRange(): number | null; get maxRange(): number | null; get navComponent(): ComponentLike; get daysComponent(): ComponentLike; calendarAPI(publicAPI: PowerCalendarRangeAPI, components: { Nav: ComponentLike; Days: ComponentLike; }): PowerCalendarRangeDefaultBlock; changeCenterTask: import("ember-concurrency").TaskForAsyncTaskFunction Promise>; select(day: PowerCalendarRangeDay, calendar: PowerCalendarRangeAPI, e?: Event): void; _formatRange(v: string | number | undefined): number | null | undefined; _buildRange(day: { date: Date; }): NormalizeRangeActionValue; _buildRangeByProximity(day: { date: Date; }, start?: Date | null, end?: Date | null): NormalizeRangeActionValue; _buildDefaultRange(day: { date: Date; }, start?: Date | null, end?: Date | null): NormalizeRangeActionValue; registerCalendar(): void; unregisterCalendar(): void; } export {}; //# sourceMappingURL=power-calendar-range.d.ts.map