import { type NormalizedFile } from '../fileuploaderitem/FileUploaderItem.svelte';
type FilesValidationState = Record<string, {
    size: boolean;
    extension: boolean;
    customValidation: boolean;
}>;
/**
 * A file uploader allows users to upload one or multiple files by either dragging and dropping files into a dedicated area or selecting them manually through their local folders. It provides real-time feedback on upload progress and file status, including file name, size, and success or error indicators. File uploaders are commonly used in forms, content management systems, and document submission processes to facilitate seamless file handling.
 *
 * @slot name - Use this slot to display a custom file name.
 * @slot information - Use this slot to display a custom information content.
 * @slot errorMessage - Use this slot to display a custom error message.
 * @event files-update {CustomEvent<NormalizedFile[]>} - Emits when files list changes.
 * @event validation {CustomEvent<FilesValidationState>} - Emits files validation when files list changes.
 */
interface Props {
    [key: string]: any;
    /**
     * Model binding for the selected files (`NormalizedFile`)
     */
    files: NormalizedFile[];
    /**
     * File types allowed by the uploader.
     */
    accept?: HTMLInputElement['accept'];
    /**
     * Enables selecting multiple files at once.
     */
    multiple?: boolean;
    /**
     * File extensions to validate.
     */
    allowedextensions?: string[];
    /**
     * Maximum file size allowed (in bytes).
     */
    maxsize?: number;
    /**
     * Custom validation rules applied to each file.
     */
    rules?: ((file: NormalizedFile) => boolean)[];
    /**
     * Layout format of the item.
     */
    format?: 'inline' | 'stacked';
    /**
     * Custom error message for the file.
     */
    errormessage?: string;
    /**
     * Label for the delete button.
     */
    deletebuttonlabel?: string;
    /**
     * Optional informational text displayed under the file name.
     */
    information?: string;
    /**
     * Enables drag & drop functionality.
     */
    hasdragdrop?: boolean;
    /**
     * Controls the display of the uploaded files list.
     */
    showfileslist?: boolean;
    /**
     * Disables the whole component.
     */
    disabled?: boolean;
    /**
     * Main drag & drop title.
     */
    title?: string;
    /**
     * Subtitle used in the drag & drop area.
     */
    subtitle?: string;
    /**
     * Label of the upload button.
     */
    uploadbuttonlabel?: string;
    /**
     * Callback to call when files validation is updated.
     */
    onvalidation?: (validationState: FilesValidationState) => void;
    /**
     * Callback to call when files are updates.
     */
    onfilesupdate?: (files: NormalizedFile[]) => void;
}
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
    new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
        $$bindings?: Bindings;
    } & Exports;
    (internal: unknown, props: Props & {
        $$events?: Events;
        $$slots?: Slots;
    }): Exports & {
        $set?: any;
        $on?: any;
    };
    z_$$bindings?: Bindings;
}
declare const FileUploader: $$__sveltets_2_IsomorphicComponent<Props, {
    [evt: string]: CustomEvent<any>;
}, {
    name: {
        slot: string;
        file: NormalizedFile;
    };
    information: {
        slot: string;
        file: NormalizedFile;
    };
    errorMessage: {
        slot: string;
        validationState: {
            size: boolean;
            extension: boolean;
            customValidation: boolean;
        };
    };
}, {}, "files">;
type FileUploader = InstanceType<typeof FileUploader>;
export default FileUploader;
//# sourceMappingURL=FileUploader.svelte.d.ts.map