import { type ExtractPublicPropTypes, type PropType } from 'vue';
import { type ThemeComponent } from '../../composables/useTheme';
declare const validators: {
    variant: readonly ["box"];
    size: string[];
};
declare const uploadProps: {
    placeholder: StringConstructor;
    accept: StringConstructor;
    multiple: BooleanConstructor;
    maxFiles: (StringConstructor | NumberConstructor)[];
    maxFileSize: (StringConstructor | NumberConstructor)[];
    variant: {
        type: PropType<"box">;
        default: string;
    };
    action: StringConstructor;
    headers: PropType<Record<string, string>>;
    method: {
        type: PropType<"POST" | "PUT">;
        default: string;
    };
    withCredentials: BooleanConstructor;
    fileFormDataName: {
        type: StringConstructor;
        default: string;
    };
    modelValue: {
        readonly type: PropType<string | number | boolean | object | any[] | undefined>;
        readonly default: undefined;
    };
    id: StringConstructor;
    name: StringConstructor;
    readonly: BooleanConstructor;
    required: BooleanConstructor;
    validateOnInput: {
        readonly type: BooleanConstructor;
        readonly default: true;
    };
    label: StringConstructor;
    helper: StringConstructor;
    error: StringConstructor;
    hideFooter: BooleanConstructor;
    rules: {
        readonly type: ArrayConstructor;
        readonly default: () => never[];
    };
    tooltip: StringConstructor;
    skipFormRegistry: BooleanConstructor;
    disabled: BooleanConstructor;
    loading: BooleanConstructor;
    loadingLabel: StringConstructor;
    loadingStatus: {
        readonly type: PropType<import("../loader/Loader.vue").LoaderStatus>;
        readonly default: "active";
    };
};
export type UploadFile = {
    file: File;
    completed: boolean;
    response?: any;
    progress: number;
    error: string;
};
export type UploadVariant = typeof validators.variant[number];
export type UploadProps = ExtractPublicPropTypes<typeof uploadProps>;
type InternalClasses = 'wrapper' | 'input';
export interface UploadTheme extends ThemeComponent<UploadProps, InternalClasses> {
}
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    placeholder: StringConstructor;
    accept: StringConstructor;
    multiple: BooleanConstructor;
    maxFiles: (StringConstructor | NumberConstructor)[];
    maxFileSize: (StringConstructor | NumberConstructor)[];
    variant: {
        type: PropType<"box">;
        default: string;
    };
    action: StringConstructor;
    headers: PropType<Record<string, string>>;
    method: {
        type: PropType<"POST" | "PUT">;
        default: string;
    };
    withCredentials: BooleanConstructor;
    fileFormDataName: {
        type: StringConstructor;
        default: string;
    };
    modelValue: {
        readonly type: PropType<string | number | boolean | object | any[] | undefined>;
        readonly default: undefined;
    };
    id: StringConstructor;
    name: StringConstructor;
    readonly: BooleanConstructor;
    required: BooleanConstructor;
    validateOnInput: {
        readonly type: BooleanConstructor;
        readonly default: true;
    };
    label: StringConstructor;
    helper: StringConstructor;
    error: StringConstructor;
    hideFooter: BooleanConstructor;
    rules: {
        readonly type: ArrayConstructor;
        readonly default: () => never[];
    };
    tooltip: StringConstructor;
    skipFormRegistry: BooleanConstructor;
    disabled: BooleanConstructor;
    loading: BooleanConstructor;
    loadingLabel: StringConstructor;
    loadingStatus: {
        readonly type: PropType<import("../loader/Loader.vue").LoaderStatus>;
        readonly default: "active";
    };
}>, {
    focus: () => void | undefined;
    blur: () => void | undefined;
    reset: () => void;
    validate: (val?: any) => boolean;
    setError: (val: string) => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, string[], string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    placeholder: StringConstructor;
    accept: StringConstructor;
    multiple: BooleanConstructor;
    maxFiles: (StringConstructor | NumberConstructor)[];
    maxFileSize: (StringConstructor | NumberConstructor)[];
    variant: {
        type: PropType<"box">;
        default: string;
    };
    action: StringConstructor;
    headers: PropType<Record<string, string>>;
    method: {
        type: PropType<"POST" | "PUT">;
        default: string;
    };
    withCredentials: BooleanConstructor;
    fileFormDataName: {
        type: StringConstructor;
        default: string;
    };
    modelValue: {
        readonly type: PropType<string | number | boolean | object | any[] | undefined>;
        readonly default: undefined;
    };
    id: StringConstructor;
    name: StringConstructor;
    readonly: BooleanConstructor;
    required: BooleanConstructor;
    validateOnInput: {
        readonly type: BooleanConstructor;
        readonly default: true;
    };
    label: StringConstructor;
    helper: StringConstructor;
    error: StringConstructor;
    hideFooter: BooleanConstructor;
    rules: {
        readonly type: ArrayConstructor;
        readonly default: () => never[];
    };
    tooltip: StringConstructor;
    skipFormRegistry: BooleanConstructor;
    disabled: BooleanConstructor;
    loading: BooleanConstructor;
    loadingLabel: StringConstructor;
    loadingStatus: {
        readonly type: PropType<import("../loader/Loader.vue").LoaderStatus>;
        readonly default: "active";
    };
}>> & Readonly<{
    [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
}>, {
    disabled: boolean;
    loading: boolean;
    loadingStatus: import("../loader/Loader.vue").LoaderStatus;
    modelValue: string | number | boolean | object | any[] | undefined;
    readonly: boolean;
    required: boolean;
    validateOnInput: boolean;
    hideFooter: boolean;
    rules: unknown[];
    skipFormRegistry: boolean;
    variant: "box";
    multiple: boolean;
    method: "POST" | "PUT";
    withCredentials: boolean;
    fileFormDataName: string;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
    box?(_: {
        isOver: boolean;
    }): any;
    files?(_: {
        files: (string | number | boolean | object | any[] | undefined) & UploadFile[];
    }): any;
    removeIcon?(_: {}): any;
}>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
