import { Align } from 'ant-design-vue/lib/dropdown/props';
import { App } from 'vue';
import { ButtonHTMLType } from 'ant-design-vue/lib/button/buttonTypes';
import { ButtonProps } from 'ant-design-vue';
import { ButtonShape } from 'ant-design-vue/lib/button';
import { ButtonSize } from 'ant-design-vue/lib/button';
import { ButtonType } from 'ant-design-vue/lib/button';
import { CloseCircleFilledIconType } from '@ant-design/icons-vue/lib/icons/CloseCircleFilled';
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { ComputedRef } from 'vue';
import { CronFormat } from '@vue-js-cron/core';
import { CSSProperties } from 'vue';
import { DefineComponent } from 'vue';
import { DropdownArrowOptions } from 'ant-design-vue/lib/dropdown/props';
import { DropdownProps } from 'ant-design-vue';
import { ExtractPropTypes } from 'vue';
import { Field } from '@vue-js-cron/core';
import { FieldItem } from '@vue-js-cron/core';
import { Localization } from '@vue-js-cron/core';
import { Period } from '@vue-js-cron/core';
import { PropType } from 'vue';
import { PublicProps } from 'vue';
import { Ref } from 'vue';
import { Trigger } from 'ant-design-vue/lib/dropdown/props';
import { VueTypeValidableDef } from 'vue-types';

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 Ant Design Vue Button
     *
     * @remarks
     * See {@link https://antdv.com/components/button#api}
     */
    buttonProps: {
        type: PropType<ButtonProps>;
        default(): {};
    };
    /**
     * Properties of Ant Design Vue Dropdown
     *
     * @remarks
     * See {@link https://antdv.com/components/dropdown#api}
     */
    dropdownProps: {
        type: PropType<DropdownProps>;
        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 Ant Design Vue Button
     *
     * @remarks
     * See {@link https://antdv.com/components/button#api}
     */
    buttonProps: {
        type: PropType<ButtonProps>;
        default(): {};
    };
    /**
     * Properties of Ant Design Vue Dropdown
     *
     * @remarks
     * See {@link https://antdv.com/components/dropdown#api}
     */
    dropdownProps: {
        type: PropType<DropdownProps>;
        default: () => void;
    };
}>> & Readonly<{
    onError?: ((...args: any[]) => any) | undefined;
    "onUpdate:model-value"?: ((...args: any[]) => any) | undefined;
    "onUpdate:period"?: ((...args: any[]) => any) | undefined;
}>, {
    disabled: boolean;
    buttonProps: Partial<ExtractPropTypes<{
        prefixCls: StringConstructor;
        type: PropType< ButtonType>;
        htmlType: {
            type: PropType< ButtonHTMLType>;
            default: string;
        };
        shape: {
            type: PropType< ButtonShape>;
        };
        size: {
            type: PropType< ButtonSize>;
        };
        loading: {
            type: PropType<boolean | {
                delay?: number;
            }>;
            default: () => boolean | {
                delay?: number;
            };
        };
        disabled: {
            type: BooleanConstructor;
            default: any;
        };
        ghost: {
            type: BooleanConstructor;
            default: any;
        };
        block: {
            type: BooleanConstructor;
            default: any;
        };
        danger: {
            type: BooleanConstructor;
            default: any;
        };
        icon: VueTypeValidableDef<any>;
        href: StringConstructor;
        target: StringConstructor;
        title: StringConstructor;
        onClick: {
            type: PropType<(event: MouseEvent) => void>;
        };
        onMousedown: {
            type: PropType<(event: MouseEvent) => void>;
        };
    }>>;
    dropdownProps: Partial<ExtractPropTypes<{
        arrow: {
            type: PropType<boolean | DropdownArrowOptions>;
            default: any;
        };
        trigger: {
            type: PropType< Trigger | Trigger[]>;
        };
        overlay: VueTypeValidableDef<any>;
        visible: {
            type: BooleanConstructor;
            default: any;
        };
        disabled: {
            type: BooleanConstructor;
            default: any;
        };
        align: {
            type: PropType< Align>;
        };
        getPopupContainer: PropType<(triggerNode: HTMLElement) => HTMLElement>;
        prefixCls: StringConstructor;
        transitionName: StringConstructor;
        placement: PropType<"bottom" | "top" | "bottomLeft" | "bottomRight" | "topLeft" | "topRight" | "topCenter" | "bottomCenter">;
        overlayClassName: StringConstructor;
        overlayStyle: {
            type: PropType< CSSProperties>;
            default: CSSProperties;
        };
        forceRender: {
            type: BooleanConstructor;
            default: any;
        };
        mouseEnterDelay: NumberConstructor;
        mouseLeaveDelay: NumberConstructor;
        openClassName: StringConstructor;
        minOverlayWidthMatchTrigger: {
            type: BooleanConstructor;
            default: any;
        };
        destroyPopupOnHide: {
            type: BooleanConstructor;
            default: any;
        };
        onVisibleChange: {
            type: PropType<(val: boolean) => void>;
        };
        'onUpdate:visible': {
            type: PropType<(val: boolean) => void>;
        };
    }>>;
    clearable: boolean;
    cols: Record<string, number>;
}, {}, {
    CustomSelect: DefineComponent<ExtractPropTypes<{
        buttonProps: {
            type: PropType<ButtonProps>;
            default: () => void;
        };
        dropdownProps: {
            type: PropType<DropdownProps>;
            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;
        };
    }>, {
        visible: Ref<boolean, boolean>;
        updateVisibility: () => void;
        selectedKeys: ComputedRef<(string | number)[]>;
        select: (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;
        toggle: (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;
        };
        dropdownProps: {
            type: PropType<DropdownProps>;
            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;
    }>, {
        disabled: boolean;
        buttonProps: Partial<ExtractPropTypes<{
            prefixCls: StringConstructor;
            type: PropType< ButtonType>;
            htmlType: {
                type: PropType< ButtonHTMLType>;
                default: string;
            };
            shape: {
                type: PropType< ButtonShape>;
            };
            size: {
                type: PropType< ButtonSize>;
            };
            loading: {
                type: PropType<boolean | {
                    delay?: number;
                }>;
                default: () => boolean | {
                    delay?: number;
                };
            };
            disabled: {
                type: BooleanConstructor;
                default: any;
            };
            ghost: {
                type: BooleanConstructor;
                default: any;
            };
            block: {
                type: BooleanConstructor;
                default: any;
            };
            danger: {
                type: BooleanConstructor;
                default: any;
            };
            icon: VueTypeValidableDef<any>;
            href: StringConstructor;
            target: StringConstructor;
            title: StringConstructor;
            onClick: {
                type: PropType<(event: MouseEvent) => void>;
            };
            onMousedown: {
                type: PropType<(event: MouseEvent) => void>;
            };
        }>>;
        dropdownProps: Partial<ExtractPropTypes<{
            arrow: {
                type: PropType<boolean | DropdownArrowOptions>;
                default: any;
            };
            trigger: {
                type: PropType< Trigger | Trigger[]>;
            };
            overlay: VueTypeValidableDef<any>;
            visible: {
                type: BooleanConstructor;
                default: any;
            };
            disabled: {
                type: BooleanConstructor;
                default: any;
            };
            align: {
                type: PropType< Align>;
            };
            getPopupContainer: PropType<(triggerNode: HTMLElement) => HTMLElement>;
            prefixCls: StringConstructor;
            transitionName: StringConstructor;
            placement: PropType<"bottom" | "top" | "bottomLeft" | "bottomRight" | "topLeft" | "topRight" | "topCenter" | "bottomCenter">;
            overlayClassName: StringConstructor;
            overlayStyle: {
                type: PropType< CSSProperties>;
                default: CSSProperties;
            };
            forceRender: {
                type: BooleanConstructor;
                default: any;
            };
            mouseEnterDelay: NumberConstructor;
            mouseLeaveDelay: NumberConstructor;
            openClassName: StringConstructor;
            minOverlayWidthMatchTrigger: {
                type: BooleanConstructor;
                default: any;
            };
            destroyPopupOnHide: {
                type: BooleanConstructor;
                default: any;
            };
            onVisibleChange: {
                type: PropType<(val: boolean) => void>;
            };
            'onUpdate:visible': {
                type: PropType<(val: boolean) => void>;
            };
        }>>;
        hideOnClick: boolean;
        clearable: boolean;
        items: any[];
        multiple: boolean;
        cols: number;
        itemText: string | ((item: any) => string);
        itemValue: string | ((item: any) => string | number);
    }, {}, {
        CloseCircleFilled: CloseCircleFilledIconType;
    }, {}, string, ComponentProvideOptions, true, {}, any>;
}, {}, string, ComponentProvideOptions, true, {}, any>;

/**
 * @class
 */
export declare const CronAnt: typeof __VLS_export;

declare const CronAntPlugin: {
    install: (app: App) => void;
};
export { CronAntPlugin }
export default CronAntPlugin;

/**
 * Props of {@link CronAnt}
 *
 * See {@link @vue-js-cron/core!CronCoreProps | CronCoreProps} for a detailed description of each prop
 *
 * @interface
 */
export declare type CronAntProps = Partial<ExtractPropTypes<ReturnType<typeof cronAntProps>>>;

export declare const cronAntProps: () => {
    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 Ant Design Vue Button
     *
     * @remarks
     * See {@link https://antdv.com/components/button#api}
     */
    buttonProps: {
        type: PropType<ButtonProps>;
        default(): {};
    };
    /**
     * Properties of Ant Design Vue Dropdown
     *
     * @remarks
     * See {@link https://antdv.com/components/dropdown#api}
     */
    dropdownProps: {
        type: PropType<DropdownProps>;
        default: () => void;
    };
};

export { }

declare module '@vue/runtime-core' {
  export interface GlobalComponents {
    AButton: (typeof import('ant-design-vue'))['Button']
    AMenu: (typeof import('ant-design-vue'))['Menu']
    ADropdown: (typeof import('ant-design-vue'))['Dropdown']
    AMenuItem: (typeof import('ant-design-vue'))['MenuItem']
  }
}
