import { Ref, PropType } from 'vue';
import { createNativeLocaleFormatter, Timestamp } from '../utils/Timestamp';
export interface CommonProps {
    modelValue: string;
    weekdays: number[];
    dateType: 'round' | 'rounded' | 'square';
    weekdayAlign: 'left' | 'center' | 'right';
    dateAlign: 'left' | 'center' | 'right';
    bordered: boolean;
    dark: boolean;
    noAria: boolean;
    noActiveDate: boolean;
    noHeader: boolean;
    noScroll: boolean;
    shortWeekdayLabel: boolean;
    noDefaultHeaderText: boolean;
    noDefaultHeaderBtn: boolean;
    minWeekdayLabel: number | string;
    weekdayBreakpoints: number[];
    locale: string;
    animated: boolean;
    transitionPrev: string;
    transitionNext: string;
    disabledDays?: string[];
    disabledBefore?: string;
    disabledAfter?: string;
    disabledWeekdays?: number[];
    dragEnterFunc?: (_event: Event, _type: string, _scope: any) => boolean;
    dragOverFunc?: (_event: Event, _type: string, _scope: any) => boolean;
    dragLeaveFunc?: (_event: Event, _type: string, _scope: any) => boolean;
    dropFunc?: (_event: Event, _type: string, _scope: any) => boolean;
    selectedDates: string[] | Set<string>;
    selectedStartEndDates: string[];
    hoverable: boolean;
    focusable: boolean;
    focusType: ('day' | 'date' | 'weekday' | 'interval' | 'time' | 'resource' | 'task')[];
}
export declare const useCommonProps: {
    modelValue: {
        type: StringConstructor;
        default: string;
        validator: (v: string) => boolean;
    };
    weekdays: {
        type: () => number[];
        default: () => number[];
    };
    dateType: {
        type: () => "round" | "rounded" | "square";
        default: string;
        validator: (v: string) => boolean;
    };
    weekdayAlign: {
        type: () => "left" | "center" | "right";
        default: string;
        validator: (v: string) => boolean;
    };
    dateAlign: {
        type: () => "left" | "center" | "right";
        default: string;
        validator: (v: string) => boolean;
    };
    bordered: BooleanConstructor;
    dark: BooleanConstructor;
    noAria: BooleanConstructor;
    noActiveDate: BooleanConstructor;
    noHeader: BooleanConstructor;
    noScroll: BooleanConstructor;
    shortWeekdayLabel: BooleanConstructor;
    noDefaultHeaderText: BooleanConstructor;
    noDefaultHeaderBtn: BooleanConstructor;
    minWeekdayLabel: {
        type: PropType<number | string>;
        default: number;
    };
    weekdayBreakpoints: {
        type: () => number[];
        default: () => number[];
        validator: (v: number[]) => boolean;
    };
    locale: {
        type: StringConstructor;
        default: string;
    };
    animated: BooleanConstructor;
    transitionPrev: {
        type: StringConstructor;
        default: string;
    };
    transitionNext: {
        type: StringConstructor;
        default: string;
    };
    disabledDays: () => string[];
    disabledBefore: StringConstructor;
    disabledAfter: StringConstructor;
    disabledWeekdays: {
        type: () => number[];
        default: () => string[] | Set<string>;
    };
    dragEnterFunc: PropType<(_event: Event, _type: string, _scope: any) => boolean>;
    dragOverFunc: PropType<(_event: Event, _type: string, _scope: any) => boolean>;
    dragLeaveFunc: PropType<(_event: Event, _type: string, _scope: any) => boolean>;
    dropFunc: PropType<(_event: Event, _type: string, _scope: any) => boolean>;
    selectedDates: {
        type: PropType<string[] | Set<string>>;
        default: () => string[] | Set<string>;
    };
    selectedStartEndDates: {
        type: () => string[];
        default: () => string[];
    };
    hoverable: BooleanConstructor;
    focusable: BooleanConstructor;
    focusType: {
        type: () => ("day" | "date" | "weekday" | "interval" | "time" | "resource" | "task")[];
        default: () => ("day" | "date" | "weekday" | "interval" | "time" | "resource" | "task")[];
        validator: (v: string[]) => boolean;
    };
};
export interface CommonReturn {
    parsedStart: Ref<Timestamp>;
    parsedEnd: Ref<Timestamp>;
    dayFormatter: Ref<ReturnType<typeof createNativeLocaleFormatter>>;
    weekdayFormatter: Ref<ReturnType<typeof createNativeLocaleFormatter>>;
    ariaDateFormatter: Ref<ReturnType<typeof createNativeLocaleFormatter>>;
    arrayHasDate: (_arr: string[], _timestamp: Timestamp) => boolean;
    checkDays: (_arr: string[], _timestamp: Timestamp) => {
        firstDay: boolean;
        betweenDays: boolean;
        lastDay: boolean;
    };
    getRelativeClasses: (_timestamp: Timestamp, _outside?: boolean, _selectedDays?: string[], _startEndDays?: string[], _hover?: boolean) => Record<string, boolean>;
    startOfWeek: (_timestamp: Timestamp) => Timestamp;
    endOfWeek: (_timestamp: Timestamp) => Timestamp;
    dayStyleDefault: ({ scope }: {
        scope: any;
    }) => {};
}
export default function useCommon(props: CommonProps, { startDate, endDate, times, }: {
    startDate: Ref<string>;
    endDate: Ref<string>;
    times: {
        today: Timestamp;
    };
}): CommonReturn;
