import { App } from 'vue';
import { ButtonProps } from 'primevue/button';
import { ButtonSlots } from 'primevue/button';
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { ComputedRef } from 'vue';
import { CronFormat } from '@vue-js-cron/core';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { Field } from '@vue-js-cron/core';
import { FieldItem } from '@vue-js-cron/core';
import { ListboxChangeEvent } from 'primevue/listbox';
import { ListboxFilterEvent } from 'primevue/listbox';
import { ListboxOptionDblClickEvent } from 'primevue/listbox';
import { ListboxProps } from 'primevue/listbox';
import { ListboxSlots } from 'primevue/listbox';
import { Localization } from '@vue-js-cron/core';
import { Period } from '@vue-js-cron/core';
import { PopoverMethods } from 'primevue/popover';
import { PopoverProps } from 'primevue/popover';
import { PopoverSlots } from 'primevue/popover';
import { PropType } from 'vue';
import { PublicProps } from 'vue';
import { Ref } from 'vue';

declare const __VLS_export: DefineComponent<ExtractPropTypes<{
    modelValue: {
        type: StringConstructor;
    };
    period: {
        type: StringConstructor;
    };
    format: {
        type: PropType<CronFormat>;
    };
    locale: {
        type: StringConstructor;
    };
    fields: {
        type: PropType< Field[]>;
    };
    periods: {
        type: PropType< Period[]>;
    };
    customLocale: {
        type: PropType<Localization>;
    };
    cols: {
        type: PropType<Record<string, number>>;
        default: () => {
            second: number;
            minute: number;
            hour: number;
            day: number;
        };
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    clearable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Properties of PrimeVue Button
     *
     * @remarks
     * See {@link https://primevue.org/button/#api.button.props}
     */
    buttonProps: {
        type: ObjectConstructor;
        default(): {};
    };
    /**
     * Properties of PrimeVue Popover
     *
     * @remarks
     * See {@link https://primevue.org/popover/#api.popover.props}
     */
    popoverProps: {
        type: ObjectConstructor;
        default: () => void;
    };
}>, {
    cron: Ref<string, string>;
    error: Ref<string, string>;
    segments: {
        id: string;
        items: FieldItem[];
        cron: Ref<string, string>;
        selected: Ref<number[], number[]>;
        error: Ref<string, string>;
        select: (evt: number[]) => void;
        text: Ref<string, string>;
        prefix: Ref<string, string>;
        suffix: Ref<string, string>;
    }[];
    selected: ComputedRef<{
        id: string;
        items: FieldItem[];
        cron: Ref<string, string>;
        selected: Ref<number[], number[]>;
        error: Ref<string, string>;
        select: (evt: number[]) => void;
        text: Ref<string, string>;
        prefix: Ref<string, string>;
        suffix: Ref<string, string>;
    }[]>;
    period: {
        select: (periodId: string) => void;
        selected: Ref<{
            id: string;
            value: string[];
            text?: string | undefined;
        } | {
            text: any;
            id: string;
            value: string[];
        }, Period | {
            text: any;
            id: string;
            value: string[];
        } | {
            id: string;
            value: string[];
            text?: string | undefined;
        } | {
            text: any;
            id: string;
            value: string[];
        }>;
        items: {
            text: any;
            id: string;
            value: string[];
        }[];
        prefix: Ref<string, string>;
        suffix: Ref<string, string>;
    };
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("update:model-value" | "update:period" | "error")[], "update:model-value" | "update:period" | "error", PublicProps, Readonly<ExtractPropTypes<{
    modelValue: {
        type: StringConstructor;
    };
    period: {
        type: StringConstructor;
    };
    format: {
        type: PropType<CronFormat>;
    };
    locale: {
        type: StringConstructor;
    };
    fields: {
        type: PropType< Field[]>;
    };
    periods: {
        type: PropType< Period[]>;
    };
    customLocale: {
        type: PropType<Localization>;
    };
    cols: {
        type: PropType<Record<string, number>>;
        default: () => {
            second: number;
            minute: number;
            hour: number;
            day: number;
        };
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    clearable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Properties of PrimeVue Button
     *
     * @remarks
     * See {@link https://primevue.org/button/#api.button.props}
     */
    buttonProps: {
        type: ObjectConstructor;
        default(): {};
    };
    /**
     * Properties of PrimeVue Popover
     *
     * @remarks
     * See {@link https://primevue.org/popover/#api.popover.props}
     */
    popoverProps: {
        type: ObjectConstructor;
        default: () => void;
    };
}>> & Readonly<{
    onError?: ((...args: any[]) => any) | undefined;
    "onUpdate:model-value"?: ((...args: any[]) => any) | undefined;
    "onUpdate:period"?: ((...args: any[]) => any) | undefined;
}>, {
    buttonProps: Record<string, any>;
    popoverProps: Record<string, any>;
    clearable: boolean;
    cols: Record<string, number>;
    disabled: boolean;
}, {}, {
    CustomSelect: DefineComponent<ExtractPropTypes<{
        buttonProps: {
            type: PropType<ButtonProps>;
            default: () => void;
        };
        popoverProps: {
            type: PropType<PopoverProps>;
            default: () => void;
        };
        hideOnClick: {
            type: BooleanConstructor;
            default: boolean;
        };
        modelValue: {
            type: PropType<string | number | (string | number)[]>;
        };
        selection: {
            type: StringConstructor;
        };
        clearable: {
            type: BooleanConstructor;
            default: boolean;
        };
        items: {
            type: PropType<any[]>;
            default: () => never[];
        };
        multiple: {
            type: BooleanConstructor;
            default: boolean;
        };
        cols: {
            type: NumberConstructor;
            default: number;
        };
        itemText: {
            type: PropType<string | ((item: any) => string)>;
            default: string;
        };
        itemValue: {
            type: PropType<string | ((item: any) => string | number)>;
            default: string;
        };
        disabled: {
            type: BooleanConstructor;
            default: boolean;
        };
    }>, {
        popover: Ref<any, any>;
        toggle: (evt: Event) => void;
        cx: (name: string) => string;
        select: (evt: Event, item: any) => void;
        selected: Ref<string | number | (string | number)[] | (string | number | (string | number)[] | undefined)[] | undefined, string | number | (string | number)[] | (string | number | (string | number)[] | undefined)[] | undefined>;
        selectedStr: Ref<string, string>;
        itemRows: any[][];
        setItems: (items: any[]) => void;
        setValues: (values: string | number | (string | number)[] | (string | number | (string | number)[] | undefined)[] | undefined) => void;
        isEmpty: ComputedRef<boolean>;
        has: (item: any) => boolean;
        values: Set<any>;
        add: (item: any) => void;
        remove: (item: any) => void;
        clear: () => void;
        updated: Ref<number, number>;
        equals: (items: any[]) => boolean;
    }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "update:model-value"[], "update:model-value", PublicProps, Readonly<ExtractPropTypes<{
        buttonProps: {
            type: PropType<ButtonProps>;
            default: () => void;
        };
        popoverProps: {
            type: PropType<PopoverProps>;
            default: () => void;
        };
        hideOnClick: {
            type: BooleanConstructor;
            default: boolean;
        };
        modelValue: {
            type: PropType<string | number | (string | number)[]>;
        };
        selection: {
            type: StringConstructor;
        };
        clearable: {
            type: BooleanConstructor;
            default: boolean;
        };
        items: {
            type: PropType<any[]>;
            default: () => never[];
        };
        multiple: {
            type: BooleanConstructor;
            default: boolean;
        };
        cols: {
            type: NumberConstructor;
            default: number;
        };
        itemText: {
            type: PropType<string | ((item: any) => string)>;
            default: string;
        };
        itemValue: {
            type: PropType<string | ((item: any) => string | number)>;
            default: string;
        };
        disabled: {
            type: BooleanConstructor;
            default: boolean;
        };
    }>> & Readonly<{
        "onUpdate:model-value"?: ((...args: any[]) => any) | undefined;
    }>, {
        buttonProps: ButtonProps;
        popoverProps: PopoverProps;
        hideOnClick: boolean;
        clearable: boolean;
        items: any[];
        multiple: boolean;
        cols: number;
        itemText: string | ((item: any) => string);
        itemValue: string | ((item: any) => string | number);
        disabled: boolean;
    }, {}, {
        PButton: DefineComponent<ButtonProps, ButtonSlots, (e: string, ...args: any[]) => void>;
        PPopover: DefineComponent<PopoverProps, PopoverSlots, ((e: "show") => void) & ((e: "hide") => void), PopoverMethods>;
        Listbox: DefineComponent<ListboxProps, ListboxSlots, ((e: "update:modelValue", value: any) => void) & ((e: "value-change", value: any) => void) & ((e: "change", event: ListboxChangeEvent) => void) & ((e: "focus", event: Event) => void) & ((e: "blur", event: Event) => void) & ((e: "filter", event: ListboxFilterEvent) => void) & ((e: "item-dblclick", event: ListboxOptionDblClickEvent) => void) & ((e: "option-dblclick", event: ListboxOptionDblClickEvent) => void)>;
    }, {}, string, ComponentProvideOptions, true, {}, any>;
}, {}, string, ComponentProvideOptions, true, {}, any>;

/**
 * @class
 */
export declare const CronPrime: typeof __VLS_export;

declare const CronPrimePlugin: {
    install: (app: App) => void;
};
export { CronPrimePlugin }
export default CronPrimePlugin;

/**
 * Props of {@link CronPrime}
 *
 * See {@link @vue-js-cron/core!CronCoreProps | CronCoreProps} for a detailed description of each prop
 *
 * @interface
 */
export declare type CronPrimeProps = Partial<ExtractPropTypes<ReturnType<typeof cronPrimeProps>>>;

export declare const cronPrimeProps: () => {
    modelValue: {
        type: StringConstructor;
    };
    period: {
        type: StringConstructor;
    };
    format: {
        type: PropType<CronFormat>;
    };
    locale: {
        type: StringConstructor;
    };
    fields: {
        type: PropType< Field[]>;
    };
    periods: {
        type: PropType< Period[]>;
    };
    customLocale: {
        type: PropType<Localization>;
    };
    cols: {
        type: PropType<Record<string, number>>;
        default: () => {
            second: number;
            minute: number;
            hour: number;
            day: number;
        };
    };
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    clearable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Properties of PrimeVue Button
     *
     * @remarks
     * See {@link https://primevue.org/button/#api.button.props}
     */
    buttonProps: {
        type: ObjectConstructor;
        default(): {};
    };
    /**
     * Properties of PrimeVue Popover
     *
     * @remarks
     * See {@link https://primevue.org/popover/#api.popover.props}
     */
    popoverProps: {
        type: ObjectConstructor;
        default: () => void;
    };
};

export { }
