import { validateNumber, validateTime } from '../util/timestamp.js';
import type { PropType, StyleValue } from 'vue';
import type { CalendarBaseProps } from './calendarBase.js';
import type { CalendarDayBodySlotScope, CalendarFormatter, CalendarTimestamp } from '../types.js';
import type { VTime } from '../util/timestamp.js';
export declare const makeCalendarWithIntervalsProps: <Defaults extends {
    maxDays?: unknown;
    intervalHeight?: unknown;
    intervalWidth?: unknown;
    intervalMinutes?: unknown;
    firstInterval?: unknown;
    firstTime?: unknown;
    intervalCount?: unknown;
    intervalFormat?: unknown;
    intervalStyle?: unknown;
    showIntervalLabel?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
    maxDays: unknown extends Defaults["maxDays"] ? {
        type: NumberConstructor;
        default: number;
    } : Omit<{
        type: NumberConstructor;
        default: number;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["maxDays"] ? number : number | Defaults["maxDays"]>;
        default: unknown extends Defaults["maxDays"] ? number : number | Defaults["maxDays"];
    };
    intervalHeight: unknown extends Defaults["intervalHeight"] ? {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    } : Omit<{
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["intervalHeight"] ? string | number : string | number | Defaults["intervalHeight"]>;
        default: unknown extends Defaults["intervalHeight"] ? string | number : Defaults["intervalHeight"] | NonNullable<string | number>;
    };
    intervalWidth: unknown extends Defaults["intervalWidth"] ? {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    } : Omit<{
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["intervalWidth"] ? string | number : string | number | Defaults["intervalWidth"]>;
        default: unknown extends Defaults["intervalWidth"] ? string | number : Defaults["intervalWidth"] | NonNullable<string | number>;
    };
    intervalMinutes: unknown extends Defaults["intervalMinutes"] ? {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    } : Omit<{
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["intervalMinutes"] ? string | number : string | number | Defaults["intervalMinutes"]>;
        default: unknown extends Defaults["intervalMinutes"] ? string | number : Defaults["intervalMinutes"] | NonNullable<string | number>;
    };
    firstInterval: unknown extends Defaults["firstInterval"] ? {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    } : Omit<{
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["firstInterval"] ? string | number : string | number | Defaults["firstInterval"]>;
        default: unknown extends Defaults["firstInterval"] ? string | number : Defaults["firstInterval"] | NonNullable<string | number>;
    };
    firstTime: unknown extends Defaults["firstTime"] ? {
        type: PropType<VTime>;
        validate: typeof validateTime;
    } : Omit<{
        type: PropType<VTime>;
        validate: typeof validateTime;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["firstTime"] ? VTime : Defaults["firstTime"] | VTime>;
        default: unknown extends Defaults["firstTime"] ? VTime : Defaults["firstTime"] | NonNullable<VTime>;
    };
    intervalCount: unknown extends Defaults["intervalCount"] ? {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    } : Omit<{
        type: (NumberConstructor | StringConstructor)[];
        default: number;
        validate: typeof validateNumber;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["intervalCount"] ? string | number : string | number | Defaults["intervalCount"]>;
        default: unknown extends Defaults["intervalCount"] ? string | number : Defaults["intervalCount"] | NonNullable<string | number>;
    };
    intervalFormat: unknown extends Defaults["intervalFormat"] ? {
        type: PropType<CalendarFormatter>;
        default: null;
    } : Omit<{
        type: PropType<CalendarFormatter>;
        default: null;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["intervalFormat"] ? CalendarFormatter : CalendarFormatter | Defaults["intervalFormat"]>;
        default: unknown extends Defaults["intervalFormat"] ? CalendarFormatter : CalendarFormatter | Defaults["intervalFormat"];
    };
    intervalStyle: unknown extends Defaults["intervalStyle"] ? {
        type: PropType<(interval: CalendarTimestamp) => StyleValue>;
        default: null;
    } : Omit<{
        type: PropType<(interval: CalendarTimestamp) => StyleValue>;
        default: null;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["intervalStyle"] ? (interval: CalendarTimestamp) => StyleValue : ((interval: CalendarTimestamp) => StyleValue) | Defaults["intervalStyle"]>;
        default: unknown extends Defaults["intervalStyle"] ? (interval: CalendarTimestamp) => StyleValue : ((interval: CalendarTimestamp) => StyleValue) | Defaults["intervalStyle"];
    };
    showIntervalLabel: unknown extends Defaults["showIntervalLabel"] ? {
        type: PropType<(interval: CalendarTimestamp) => boolean>;
        default: null;
    } : Omit<{
        type: PropType<(interval: CalendarTimestamp) => boolean>;
        default: null;
    }, "default" | "type"> & {
        type: PropType<unknown extends Defaults["showIntervalLabel"] ? (interval: CalendarTimestamp) => boolean : ((interval: CalendarTimestamp) => boolean) | Defaults["showIntervalLabel"]>;
        default: unknown extends Defaults["showIntervalLabel"] ? (interval: CalendarTimestamp) => boolean : ((interval: CalendarTimestamp) => boolean) | Defaults["showIntervalLabel"];
    };
};
interface CalendarWithIntervalsProps extends CalendarBaseProps {
    maxDays: number;
    intervalHeight: string | number;
    intervalMinutes: string | number;
    firstInterval: string | number;
    firstTime: VTime | undefined;
    intervalCount: string | number;
    intervalFormat: CalendarFormatter | string | undefined;
}
export declare function useCalendarWithIntervals(props: CalendarWithIntervalsProps): {
    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<string>;
        messages: import("vue").Ref<import("../../../types.js").LocaleMessages, import("../../../types.js").LocaleMessages>;
        current: import("vue").Ref<string, string>;
        fallback: import("vue").Ref<string, string>;
        t: (key: string, ...params: unknown[]) => string;
        n: (value: number) => string;
        provide: (props: import("../../../types.js").LocaleOptions) => import("../../../types.js").LocaleInstance;
        isRtl: import("vue").Ref<boolean, boolean>;
        rtl: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
        rtlClasses: import("vue").Ref<string, string>;
    };
    parsedValue: import("vue").ComputedRef<CalendarTimestamp>;
    parsedWeekdays: import("vue").ComputedRef<number[]>;
    effectiveWeekdays: import("vue").ComputedRef<number[]>;
    weekdaySkips: import("vue").ComputedRef<number[]>;
    parsedStart: import("vue").ComputedRef<CalendarTimestamp>;
    parsedEnd: import("vue").ComputedRef<CalendarTimestamp>;
    dayFormatter: import("vue").ComputedRef<CalendarFormatter>;
    weekdayFormatter: import("vue").ComputedRef<CalendarFormatter>;
    getColorProps: (colors: {
        background?: import("../../../composables/color.js").ColorValue;
        text?: import("../../../composables/color.js").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;
    scrollAreaRef: import("vue").ShallowRef<HTMLElement | undefined, HTMLElement | undefined>;
    parsedFirstInterval: import("vue").ComputedRef<number>;
    parsedIntervalMinutes: import("vue").ComputedRef<number>;
    parsedIntervalCount: import("vue").ComputedRef<number>;
    parsedIntervalHeight: import("vue").ComputedRef<number>;
    parsedFirstTime: import("vue").ComputedRef<number | false>;
    firstMinute: import("vue").ComputedRef<number>;
    bodyHeight: import("vue").ComputedRef<number>;
    days: import("vue").ComputedRef<CalendarTimestamp[]>;
    intervals: import("vue").ComputedRef<CalendarTimestamp[][]>;
    intervalFormatter: import("vue").ComputedRef<CalendarFormatter>;
    showIntervalLabelDefault: (interval: CalendarTimestamp) => boolean;
    intervalStyleDefault: (_interval: CalendarTimestamp) => StyleValue;
    getTimestampAtEvent: (e: Event, day: CalendarTimestamp) => CalendarTimestamp;
    getSlotScope: (timestamp: CalendarTimestamp) => CalendarDayBodySlotScope;
    scrollToTime: (time: VTime) => boolean;
    minutesToPixels: (minutes: number) => number;
    timeToY: (time: VTime | CalendarTimestamp, targetDateOrClamp?: CalendarTimestamp | boolean) => number | false;
    timeDelta: (time: VTime | CalendarTimestamp, targetDate?: CalendarTimestamp) => number | false;
};

