import { nextTick, ComponentInternalInstance, VNodeProps, AllowedComponentProps, ComponentCustomProps, Attrs, Slot, ComponentPublicInstance, ComponentOptionsBase, ComponentOptionsMixin, GlobalComponents, GlobalDirectives, ComponentProvideOptions, DebuggerEvent, WatchOptions, WatchStopHandle, ShallowUnwrapRef, ComponentCustomProperties, DefineComponent, PublicProps } from 'vue';
import { UploadFileItem, UploadProgressEvent, UploadProps, UploadRawFile, UploadRemoveOptions, UploadListType, Awaitable, UploadRequestHandler } from './upload.js';
import { UploadContentProps } from './upload-content.vue.js';
import { OnCleanup } from '@vue/reactivity';
import { ComponentSize } from '../../../xiaoye-primitives/index.js';
declare function handleStart(rawFile: UploadRawFile): Promise<void>;
declare function handleRemove(file: UploadFileItem | UploadRawFile, options?: UploadRemoveOptions): Promise<void>;
declare function submit(): Promise<void>;
declare function abort(file?: UploadFileItem): void;
declare function clearFiles(): Promise<void>;
declare function __VLS_template(): {
    attrs: Partial<{}>;
    slots: {
        file?(_: {
            file: UploadFileItem;
            index: number;
        }): any;
        file?(_: {
            file: UploadFileItem;
            index: number;
        }): any;
        trigger?(_: {}): any;
        trigger?(_: {}): any;
        default?(_: {}): any;
        default?(_: {}): any;
        tip?(_: {}): any;
    };
    refs: {
        uploadRef: ({
            $: ComponentInternalInstance;
            $data: {};
            $props: {
                readonly fileList: UploadFileItem[];
                readonly listType: UploadListType;
                readonly inputId?: string | undefined;
                readonly onStart: (file: UploadRawFile) => Awaitable<void>;
                readonly onProgress: (event: UploadProgressEvent, file: UploadRawFile) => Awaitable<void>;
                readonly onSuccess: (response: unknown, file: UploadRawFile) => Awaitable<void>;
                readonly onError: (error: Error, file: UploadRawFile) => Awaitable<void>;
                readonly onRemove: (file: UploadRawFile | UploadFileItem, options?: {
                    skipBeforeRemove?: boolean;
                    emitRemove?: boolean;
                }) => Awaitable<void>;
                readonly onUpdateRawFile: (uid: string, rawFile: UploadRawFile) => Awaitable<void>;
                readonly onExceed: (files: File[], fileList: UploadFileItem[]) => void;
                readonly drag?: boolean | undefined;
                readonly paste?: boolean | undefined;
                readonly name?: string | undefined;
                readonly data?: ( Awaitable<Record<string, unknown>> | ((file: UploadRawFile) => Awaitable<Record<string, unknown>>)) | undefined;
                readonly disabled?: boolean | undefined;
                readonly multiple?: boolean | undefined;
                readonly action?: string | undefined;
                readonly accept?: string | undefined;
                readonly withCredentials?: boolean | undefined;
                readonly headers?: Record<string, string | number | boolean | null | undefined> | undefined;
                readonly method?: string | undefined;
                readonly limit?: number | undefined;
                readonly directory?: boolean | undefined;
                readonly autoUpload?: boolean | undefined;
                readonly beforeUpload?: ((file: UploadRawFile) => Awaitable<boolean | void | null | undefined | File | Blob>) | undefined;
                readonly httpRequest?: UploadRequestHandler | undefined;
            } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
            $attrs: Attrs;
            $refs: {
                [x: string]: unknown;
            } & {
                inputRef: HTMLInputElement;
            };
            $slots: Readonly<{
                [name: string]: Slot<any> | undefined;
            }>;
            $root: ComponentPublicInstance | null;
            $parent: ComponentPublicInstance | null;
            $host: Element | null;
            $emit: (event: string, ...args: any[]) => void;
            $el: any;
            $options: ComponentOptionsBase<Readonly< UploadContentProps> & Readonly<{}>, {
                abort: (file?: UploadFileItem) => void;
                upload: (rawFile: UploadRawFile) => Promise<void>;
                handleClick: () => void;
            }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
                drag: boolean;
                paste: boolean;
                name: string;
                data: Awaitable<Record<string, unknown>> | ((file: UploadRawFile) => Awaitable<Record<string, unknown>>);
                disabled: boolean;
                multiple: boolean;
                inputId: string;
                action: string;
                accept: string;
                withCredentials: boolean;
                headers: Record<string, string | number | boolean | null | undefined>;
                method: string;
                limit: number;
                directory: boolean;
                autoUpload: boolean;
                beforeUpload: (file: UploadRawFile) => Awaitable<boolean | void | null | undefined | File | Blob>;
                httpRequest: UploadRequestHandler;
            }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & {
                beforeCreate?: (() => void) | (() => void)[];
                created?: (() => void) | (() => void)[];
                beforeMount?: (() => void) | (() => void)[];
                mounted?: (() => void) | (() => void)[];
                beforeUpdate?: (() => void) | (() => void)[];
                updated?: (() => void) | (() => void)[];
                activated?: (() => void) | (() => void)[];
                deactivated?: (() => void) | (() => void)[];
                beforeDestroy?: (() => void) | (() => void)[];
                beforeUnmount?: (() => void) | (() => void)[];
                destroyed?: (() => void) | (() => void)[];
                unmounted?: (() => void) | (() => void)[];
                renderTracked?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
                renderTriggered?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
                errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
            };
            $forceUpdate: () => void;
            $nextTick: typeof nextTick;
            $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, OnCleanup]) => any : (...args: [any, any, OnCleanup]) => any, options?: WatchOptions): WatchStopHandle;
        } & Readonly<{
            drag: boolean;
            paste: boolean;
            name: string;
            data: Awaitable<Record<string, unknown>> | ((file: UploadRawFile) => Awaitable<Record<string, unknown>>);
            disabled: boolean;
            multiple: boolean;
            inputId: string;
            action: string;
            accept: string;
            withCredentials: boolean;
            headers: Record<string, string | number | boolean | null | undefined>;
            method: string;
            limit: number;
            directory: boolean;
            autoUpload: boolean;
            beforeUpload: (file: UploadRawFile) => Awaitable<boolean | void | null | undefined | File | Blob>;
            httpRequest: UploadRequestHandler;
        }> & Omit<Readonly< UploadContentProps> & Readonly<{}>, "abort" | "upload" | "handleClick" | ("drag" | "paste" | "name" | "data" | "disabled" | "multiple" | "inputId" | "action" | "accept" | "withCredentials" | "headers" | "method" | "limit" | "directory" | "autoUpload" | "beforeUpload" | "httpRequest")> & ShallowUnwrapRef<{
            abort: (file?: UploadFileItem) => void;
            upload: (rawFile: UploadRawFile) => Promise<void>;
            handleClick: () => void;
        }> & {} & ComponentCustomProperties & {} & {
            $slots: {
                default?(_: {}): any;
            };
        }) | null;
        previewShellRef: HTMLDivElement;
    };
    rootEl: any;
};
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
declare const __VLS_component: DefineComponent<UploadProps, {
    submit: typeof submit;
    abort: typeof abort;
    clearFiles: typeof clearFiles;
    handleStart: typeof handleStart;
    handleRemove: typeof handleRemove;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    "update:fileList": (value: UploadFileItem[]) => any;
}, string, PublicProps, Readonly<UploadProps> & Readonly<{
    "onUpdate:fileList"?: ((value: UploadFileItem[]) => any) | undefined;
}>, {
    size: ComponentSize;
    drag: boolean;
    paste: boolean;
    name: string;
    data: Awaitable<Record<string, unknown>> | ((file: UploadRawFile) => Awaitable<Record<string, unknown>>);
    disabled: boolean;
    onChange: (file: UploadFileItem, files: UploadFileItem[]) => void;
    onError: (error: Error, file: UploadFileItem, files: UploadFileItem[]) => void;
    onProgress: (event: UploadProgressEvent, file: UploadFileItem, files: UploadFileItem[]) => void;
    multiple: boolean;
    action: string;
    tip: string;
    accept: string;
    withCredentials: boolean;
    headers: Record<string, string | number | boolean | null | undefined>;
    method: string;
    fileList: UploadFileItem[];
    limit: number;
    directory: boolean;
    autoUpload: boolean;
    showFileList: boolean;
    listType: UploadListType;
    beforeUpload: (file: UploadRawFile) => Awaitable<boolean | void | null | undefined | File | Blob>;
    beforeRemove: (file: UploadFileItem, files: UploadFileItem[]) => Awaitable<boolean>;
    onRemove: (file: UploadFileItem, files: UploadFileItem[]) => void;
    onPreview: (file: UploadFileItem) => void;
    previewFile: (file: UploadFileItem) => Awaitable<string | undefined>;
    onSuccess: (response: unknown, file: UploadFileItem, files: UploadFileItem[]) => void;
    onExceed: (files: File[], filesList: UploadFileItem[]) => void;
    httpRequest: UploadRequestHandler;
}, {}, {}, {}, string, ComponentProvideOptions, false, {
    uploadRef: ({
        $: ComponentInternalInstance;
        $data: {};
        $props: {
            readonly fileList: UploadFileItem[];
            readonly listType: UploadListType;
            readonly inputId?: string | undefined;
            readonly onStart: (file: UploadRawFile) => Awaitable<void>;
            readonly onProgress: (event: UploadProgressEvent, file: UploadRawFile) => Awaitable<void>;
            readonly onSuccess: (response: unknown, file: UploadRawFile) => Awaitable<void>;
            readonly onError: (error: Error, file: UploadRawFile) => Awaitable<void>;
            readonly onRemove: (file: UploadRawFile | UploadFileItem, options?: {
                skipBeforeRemove?: boolean;
                emitRemove?: boolean;
            }) => Awaitable<void>;
            readonly onUpdateRawFile: (uid: string, rawFile: UploadRawFile) => Awaitable<void>;
            readonly onExceed: (files: File[], fileList: UploadFileItem[]) => void;
            readonly drag?: boolean | undefined;
            readonly paste?: boolean | undefined;
            readonly name?: string | undefined;
            readonly data?: ( Awaitable<Record<string, unknown>> | ((file: UploadRawFile) => Awaitable<Record<string, unknown>>)) | undefined;
            readonly disabled?: boolean | undefined;
            readonly multiple?: boolean | undefined;
            readonly action?: string | undefined;
            readonly accept?: string | undefined;
            readonly withCredentials?: boolean | undefined;
            readonly headers?: Record<string, string | number | boolean | null | undefined> | undefined;
            readonly method?: string | undefined;
            readonly limit?: number | undefined;
            readonly directory?: boolean | undefined;
            readonly autoUpload?: boolean | undefined;
            readonly beforeUpload?: ((file: UploadRawFile) => Awaitable<boolean | void | null | undefined | File | Blob>) | undefined;
            readonly httpRequest?: UploadRequestHandler | undefined;
        } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
        $attrs: Attrs;
        $refs: {
            [x: string]: unknown;
        } & {
            inputRef: HTMLInputElement;
        };
        $slots: Readonly<{
            [name: string]: Slot<any> | undefined;
        }>;
        $root: ComponentPublicInstance | null;
        $parent: ComponentPublicInstance | null;
        $host: Element | null;
        $emit: (event: string, ...args: any[]) => void;
        $el: any;
        $options: ComponentOptionsBase<Readonly< UploadContentProps> & Readonly<{}>, {
            abort: (file?: UploadFileItem) => void;
            upload: (rawFile: UploadRawFile) => Promise<void>;
            handleClick: () => void;
        }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
            drag: boolean;
            paste: boolean;
            name: string;
            data: Awaitable<Record<string, unknown>> | ((file: UploadRawFile) => Awaitable<Record<string, unknown>>);
            disabled: boolean;
            multiple: boolean;
            inputId: string;
            action: string;
            accept: string;
            withCredentials: boolean;
            headers: Record<string, string | number | boolean | null | undefined>;
            method: string;
            limit: number;
            directory: boolean;
            autoUpload: boolean;
            beforeUpload: (file: UploadRawFile) => Awaitable<boolean | void | null | undefined | File | Blob>;
            httpRequest: UploadRequestHandler;
        }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & {
            beforeCreate?: (() => void) | (() => void)[];
            created?: (() => void) | (() => void)[];
            beforeMount?: (() => void) | (() => void)[];
            mounted?: (() => void) | (() => void)[];
            beforeUpdate?: (() => void) | (() => void)[];
            updated?: (() => void) | (() => void)[];
            activated?: (() => void) | (() => void)[];
            deactivated?: (() => void) | (() => void)[];
            beforeDestroy?: (() => void) | (() => void)[];
            beforeUnmount?: (() => void) | (() => void)[];
            destroyed?: (() => void) | (() => void)[];
            unmounted?: (() => void) | (() => void)[];
            renderTracked?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
            renderTriggered?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
            errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
        };
        $forceUpdate: () => void;
        $nextTick: typeof nextTick;
        $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, OnCleanup]) => any : (...args: [any, any, OnCleanup]) => any, options?: WatchOptions): WatchStopHandle;
    } & Readonly<{
        drag: boolean;
        paste: boolean;
        name: string;
        data: Awaitable<Record<string, unknown>> | ((file: UploadRawFile) => Awaitable<Record<string, unknown>>);
        disabled: boolean;
        multiple: boolean;
        inputId: string;
        action: string;
        accept: string;
        withCredentials: boolean;
        headers: Record<string, string | number | boolean | null | undefined>;
        method: string;
        limit: number;
        directory: boolean;
        autoUpload: boolean;
        beforeUpload: (file: UploadRawFile) => Awaitable<boolean | void | null | undefined | File | Blob>;
        httpRequest: UploadRequestHandler;
    }> & Omit<Readonly< UploadContentProps> & Readonly<{}>, "abort" | "upload" | "handleClick" | ("drag" | "paste" | "name" | "data" | "disabled" | "multiple" | "inputId" | "action" | "accept" | "withCredentials" | "headers" | "method" | "limit" | "directory" | "autoUpload" | "beforeUpload" | "httpRequest")> & ShallowUnwrapRef<{
        abort: (file?: UploadFileItem) => void;
        upload: (rawFile: UploadRawFile) => Promise<void>;
        handleClick: () => void;
    }> & {} & ComponentCustomProperties & {} & {
        $slots: {
            default?(_: {}): any;
        };
    }) | null;
    previewShellRef: HTMLDivElement;
}, any>;
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
