import { ButtonColor, ButtonSize, ButtonType, FileUploaded, ReturnFileType } from '../../types';
import { IVcBaseInputProps } from '../../composables/input/useInputBase';
import { IUseInputErrorProps } from '../../composables/input/useInputError';
import { IUseInputLabelProps } from '../../composables/input/useInputLabel';
import { TIconClass } from '../../types/icons.types';
interface IFUProps extends IVcBaseInputProps, IUseInputErrorProps, IUseInputLabelProps {
    /** @description Array of initially uploaded files */
    files?: Array<FileUploaded>;
    /** @description Array of currently selected uploaded files */
    modelValue?: Array<FileUploaded>;
    /** @description Maximum number of files that can be displayed before showing overflow */
    maxLength?: number;
    /** @description Maximum file size limit in bytes for individual files */
    fileSizeLimit?: number;
    /** @description Maximum total size limit in bytes for all files combined */
    fileListSizeLimit?: number;
    /** @description Accepted file types (mime types or extensions) */
    accept?: string;
    /** @description Visual style variant of the upload button */
    buttonType?: ButtonType;
    /** @description Icon class to display in the upload button */
    buttonIcon?: TIconClass;
    /** @description Text label for the upload button */
    buttonText?: string;
    /** @description Color theme of the upload button */
    buttonColor?: ButtonColor;
    /** @description Size variant of the upload button */
    buttonSize?: ButtonSize;
    /** @description Icon class to display in file name tags */
    tagIcon?: TIconClass;
    /** @description Text to display when no files are selected */
    noDataText?: string;
    /** @description Return type for uploaded files (file, base64, dataUrl) */
    fileType?: ReturnFileType;
    /** @description Maximum width for file name content in tags */
    tagMaxContentWidth?: string;
    /** @description Whether to allow multiple file selection */
    multiple?: boolean;
    /** @description Whether to show uploaded file names as tags */
    showFileName?: boolean;
    /** @description Whether to hide the clear all files action button */
    hideClearAction?: boolean;
}
declare function onTagClose(index: number | undefined): void;
declare function triggerInputClick(): void;
declare function onClear(): void;
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<IFUProps>, {
    disabled: boolean;
    dataTestName: string;
    multiple: boolean;
    showFileName: boolean;
    hideClearAction: boolean;
    files: () => never[];
    modelValue: () => never[];
    buttonType: string;
    buttonColor: string;
    buttonSize: string;
    buttonIcon: string;
    buttonText: string;
    maxLength: number;
    accept: string;
    noDataText: string;
    fileType: string;
    tagIcon: string;
    tagMaxContentWidth: string;
    fileSizeLimit: undefined;
    fileListSizeLimit: undefined;
}>>, {
    clear: typeof onClear;
    click: typeof triggerInputClick;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
    "update:modelValue": (pl: FileUploaded[]) => void;
    input: (pl: FileUploaded[]) => void;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<IFUProps>, {
    disabled: boolean;
    dataTestName: string;
    multiple: boolean;
    showFileName: boolean;
    hideClearAction: boolean;
    files: () => never[];
    modelValue: () => never[];
    buttonType: string;
    buttonColor: string;
    buttonSize: string;
    buttonIcon: string;
    buttonText: string;
    maxLength: number;
    accept: string;
    noDataText: string;
    fileType: string;
    tagIcon: string;
    tagMaxContentWidth: string;
    fileSizeLimit: undefined;
    fileListSizeLimit: undefined;
}>>> & Readonly<{
    "onUpdate:modelValue"?: ((pl: FileUploaded[]) => any) | undefined;
    onInput?: ((pl: FileUploaded[]) => any) | undefined;
}>, {
    maxLength: number;
    disabled: boolean;
    modelValue: FileUploaded[];
    dataTestName: string;
    buttonType: ButtonType;
    multiple: boolean;
    noDataText: string;
    files: FileUploaded[];
    fileSizeLimit: number;
    fileListSizeLimit: number;
    accept: string;
    buttonIcon: string;
    buttonText: string;
    buttonColor: "" | "primary" | "secondary" | "destructive" | "success" | "warning" | "active" | "primary-alternative";
    buttonSize: ButtonSize;
    tagIcon: string;
    fileType: ReturnFileType;
    tagMaxContentWidth: string;
    showFileName: boolean;
    hideClearAction: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
    action?(_: {
        click: typeof triggerInputClick;
    }): any;
    "tag-item"?(_: {
        data: {
            [x: string]: any;
            id?: number | undefined;
            File: string | {
                readonly byteLength: number;
                slice: (begin: number, end?: number | undefined) => ArrayBuffer;
                readonly [Symbol.toStringTag]: string;
            } | {
                readonly lastModified: number;
                readonly name: string;
                readonly webkitRelativePath: string;
                readonly size: number;
                readonly type: string;
                arrayBuffer: () => Promise<ArrayBuffer>;
                slice: (start?: number | undefined, end?: number | undefined, contentType?: string | undefined) => Blob;
                stream: () => ReadableStream<Uint8Array>;
                text: () => Promise<string>;
            } | null;
            readonly lastModified: number;
            readonly name: string;
            readonly webkitRelativePath: string;
            readonly size: number;
            readonly type: string;
            arrayBuffer: () => Promise<ArrayBuffer>;
            slice: (start?: number | undefined, end?: number | undefined, contentType?: string | undefined) => Blob;
            stream: () => ReadableStream<Uint8Array>;
            text: () => Promise<string>;
        };
        close: typeof onTagClose;
    }): any;
    "tag-item-other"?(_: {
        data: {
            [x: string]: any;
            id?: number | undefined;
            File: string | {
                readonly byteLength: number;
                slice: (begin: number, end?: number | undefined) => ArrayBuffer;
                readonly [Symbol.toStringTag]: string;
            } | {
                readonly lastModified: number;
                readonly name: string;
                readonly webkitRelativePath: string;
                readonly size: number;
                readonly type: string;
                arrayBuffer: () => Promise<ArrayBuffer>;
                slice: (start?: number | undefined, end?: number | undefined, contentType?: string | undefined) => Blob;
                stream: () => ReadableStream<Uint8Array>;
                text: () => Promise<string>;
            } | null;
            readonly lastModified: number;
            readonly name: string;
            readonly webkitRelativePath: string;
            readonly size: number;
            readonly type: string;
            arrayBuffer: () => Promise<ArrayBuffer>;
            slice: (start?: number | undefined, end?: number | undefined, contentType?: string | undefined) => Blob;
            stream: () => ReadableStream<Uint8Array>;
            text: () => Promise<string>;
        };
        close: typeof onTagClose;
    }): any;
}>;
export default _default;
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: import('vue').PropType<T[K]>;
        required: true;
    };
};
type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};
type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
