import { validateTimestamp, validateWeekdays } from '../util/timestamp.js'; import type { PropType } from 'vue'; import type { CalendarFormatter, CalendarTimestamp } from '../types.js'; import type { ColorValue } from '../../../composables/color.js'; export declare const makeCalendarBaseProps: (defaults?: Defaults | undefined) => { start: unknown extends Defaults["start"] ? { type: (DateConstructor | NumberConstructor | StringConstructor)[]; validate: typeof validateTimestamp; default: () => string; } : Omit<{ type: (DateConstructor | NumberConstructor | StringConstructor)[]; validate: typeof validateTimestamp; default: () => string; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["start"] ? string | number | Date : Defaults["start"] | NonNullable; }; end: unknown extends Defaults["end"] ? { type: (DateConstructor | NumberConstructor | StringConstructor)[]; validate: typeof validateTimestamp; } : Omit<{ type: (DateConstructor | NumberConstructor | StringConstructor)[]; validate: typeof validateTimestamp; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["end"] ? string | number | Date : Defaults["end"] | NonNullable; }; weekdays: unknown extends Defaults["weekdays"] ? { type: PropType; default: () => number[]; validate: typeof validateWeekdays; } : Omit<{ type: PropType; default: () => number[]; validate: typeof validateWeekdays; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["weekdays"] ? string | number[] : Defaults["weekdays"] | NonNullable; }; firstDayOfWeek: unknown extends Defaults["firstDayOfWeek"] ? (NumberConstructor | StringConstructor)[] : { type: PropType; default: unknown extends Defaults["firstDayOfWeek"] ? string | number : Defaults["firstDayOfWeek"] | NonNullable; }; firstDayOfYear: unknown extends Defaults["firstDayOfYear"] ? (NumberConstructor | StringConstructor)[] : { type: PropType; default: unknown extends Defaults["firstDayOfYear"] ? string | number : Defaults["firstDayOfYear"] | NonNullable; }; weekdayFormat: unknown extends Defaults["weekdayFormat"] ? { type: PropType; default: null; } : Omit<{ type: PropType; default: null; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["weekdayFormat"] ? CalendarFormatter : CalendarFormatter | Defaults["weekdayFormat"]; }; dayFormat: unknown extends Defaults["dayFormat"] ? { type: PropType; default: null; } : Omit<{ type: PropType; default: null; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["dayFormat"] ? CalendarFormatter : CalendarFormatter | Defaults["dayFormat"]; }; locale: unknown extends Defaults["locale"] ? StringConstructor : { type: PropType; default: unknown extends Defaults["locale"] ? string : string | Defaults["locale"]; }; now: unknown extends Defaults["now"] ? { type: StringConstructor; validator: typeof validateTimestamp; } : Omit<{ type: StringConstructor; validator: typeof validateTimestamp; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["now"] ? string : string | Defaults["now"]; }; type: unknown extends Defaults["type"] ? { type: PropType<'month' | 'week' | 'day' | '4day' | 'custom-weekly' | 'custom-daily' | 'category'>; default: string; } : Omit<{ type: PropType<'month' | 'week' | 'day' | '4day' | 'custom-weekly' | 'custom-daily' | 'category'>; default: string; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["type"] ? "4day" | "category" | "custom-daily" | "custom-weekly" | "day" | "month" | "week" : Defaults["type"] | NonNullable<"4day" | "category" | "custom-daily" | "custom-weekly" | "day" | "month" | "week">; }; }; export interface CalendarBaseProps { modelValue?: string | number | Date; categoryDays?: string | number; start: string | number | Date; end: string | number | Date | undefined; weekdays: string | number[]; firstDayOfWeek: number | string | undefined; firstDayOfYear: number | string | undefined; weekdayFormat: CalendarFormatter | string | undefined; dayFormat: CalendarFormatter | string | undefined; locale: string | undefined; now: string | undefined; type: 'month' | 'week' | 'day' | '4day' | 'custom-weekly' | 'custom-daily' | 'category'; } export declare function useCalendarBase(props: CalendarBaseProps): { times: { now: { date: string; time: string; year: number; month: number; day: number; weekday: number; hour: number; minute: number; hasDay: boolean; hasTime: boolean; past: boolean; present: boolean; future: boolean; category?: import("../types.js").CalendarCategory; }; today: { date: string; time: string; year: number; month: number; day: number; weekday: number; hour: number; minute: number; hasDay: boolean; hasTime: boolean; past: boolean; present: boolean; future: boolean; category?: import("../types.js").CalendarCategory; }; }; locale: { name: string; decimalSeparator: import("vue").ShallowRef; messages: import("vue").Ref; current: import("vue").Ref; fallback: import("vue").Ref; t: (key: string, ...params: unknown[]) => string; n: (value: number) => string; provide: (props: import("../../../types.js").LocaleOptions) => import("../../../types.js").LocaleInstance; isRtl: import("vue").Ref; rtl: import("vue").Ref, Record>; rtlClasses: import("vue").Ref; }; parsedValue: import("vue").ComputedRef; parsedWeekdays: import("vue").ComputedRef; effectiveWeekdays: import("vue").ComputedRef; weekdaySkips: import("vue").ComputedRef; parsedStart: import("vue").ComputedRef; parsedEnd: import("vue").ComputedRef; days: import("vue").ComputedRef; dayFormatter: import("vue").ComputedRef; weekdayFormatter: import("vue").ComputedRef; getColorProps: (colors: { background?: ColorValue; text?: ColorValue; }) => { class: string[]; style: import("vue").CSSProperties; }; getRelativeClasses: (timestamp: CalendarTimestamp, outside?: boolean) => { 'v-present': boolean; 'v-past': boolean; 'v-future': boolean; 'v-outside': boolean; }; getWeekNumber: (timestamp: CalendarTimestamp) => number; getStartOfWeek: (timestamp: CalendarTimestamp) => CalendarTimestamp; getEndOfWeek: (timestamp: CalendarTimestamp) => CalendarTimestamp; getFormatter: (options: Intl.DateTimeFormatOptions) => CalendarFormatter; updateTimes: () => void; };