import { CdsButton } from '../../CdsButton';
import { NUploader } from '../interface';
import { TCdsIconsName } from '@central-design-system/icons';
import { ExtractPropTypes, PropType } from 'vue';
export declare const makeUploadProps: <Defaults extends {
    name?: unknown;
    capture?: unknown;
    multiple?: unknown;
    action?: unknown;
    method?: unknown;
    directory?: unknown;
    defaultFileList?: unknown;
    showUploadList?: unknown;
    itemRender?: unknown;
    listType?: unknown;
    data?: unknown;
    headers?: unknown;
    accept?: unknown;
    customRequest?: unknown;
    withCredentials?: unknown;
    openFileDialogOnClick?: unknown;
    beforeUpload?: unknown;
    maxCount?: unknown;
    isImageUrl?: unknown;
    showTooltipWithError?: unknown;
    buttonProps?: unknown;
    removeIcon?: unknown;
    downloadIcon?: unknown;
    uploadIcon?: unknown;
} = {}>(defaults?: Defaults | undefined) => import('../../../utils').AppendDefault<{
    name: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * Тип носителя откуда захватывать файл для загрузки на мобильных устройствах
     */
    capture: {
        type: PropType<boolean | "user" | "environment">;
        default: undefined;
    };
    /**
     * Множественная загрузка файлов
     */
    multiple: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * URL куда загружать файлы
     */
    action: {
        type: PropType<NUploader.TAction>;
        default: undefined;
    };
    /**
     * Тип http запроса для загрузки файлов
     */
    method: {
        type: PropType<NUploader.TUploadRequestMethod>;
        default: undefined;
    };
    /**
     * Загружать директории
     */
    directory: {
        type: PropType<boolean>;
        default: undefined;
    };
    /**
     * Список файлов по-умолчанию
     */
    defaultFileList: {
        type: PropType<NUploader.IUploadFile[]>;
        default: undefined;
    };
    /**
     * Показывать список загруженных файлов
     */
    showUploadList: {
        type: PropType<boolean | NUploader.TShowUploadList>;
        default: undefined;
    };
    /**
     * Функция рендера для отображения элемента списка загружаемых файлов
     */
    itemRender: {
        type: PropType<NUploader.TItemRender>;
        default: undefined;
    };
    /**
     * Тип списка загружаемых файлов (поддерживается только 'text')
     */
    listType: {
        type: PropType<NUploader.TUploadListType>;
        default: undefined;
    };
    /**
     * Параметры загрузки файла или функция возвращающая параметры загрузки файла
     */
    data: {
        type: PropType<Record<string, unknown> | ((file: NUploader.IRcFile | string | Blob) => Record<string, unknown>)>;
        default: undefined;
    };
    /**
     * Заголовки запроса
     */
    headers: {
        type: PropType<NUploader.TUploadRequestHeaders>;
        default: undefined;
    };
    /**
     * Типы разрешенных файлов
     */
    accept: {
        type: PropType<string | string[]>;
        default: undefined;
    };
    /**
     * Собственный запрос на загрузку файла. Переопределяет xhr по-умолчанию
     */
    customRequest: {
        type: PropType<(options: NUploader.IUploadRequestOption) => void>;
        default: undefined;
    };
    /**
     * Запрос с передачей cookie
     */
    withCredentials: {
        type: PropType<boolean>;
        default: undefined;
    };
    /**
     * Открывать ли системное окно при клике на загрузчик файлов
     */
    openFileDialogOnClick: {
        type: PropType<boolean>;
        default: undefined;
    };
    /**
     * Хук жизненного цикла перед загрузкой файла
     */
    beforeUpload: {
        type: PropType<(file: NUploader.IUploadFile, fileList: NUploader.IUploadFile[]) => NUploader.TBeforeUploadFileType | Promise<void | NUploader.TBeforeUploadFileType>>;
        default: undefined;
    };
    /**
     * Максимальное количество загружаемых файлов
     */
    maxCount: {
        type: PropType<number>;
        default: undefined;
    };
    /**
     * Настройка отображения миниатюр загружаемых файлов (пока не поддерживается)
     */
    isImageUrl: {
        type: PropType<(file: NUploader.IUploadFile) => boolean>;
        default: undefined;
    };
    /**
     * Показывать ли тултип с ошибкой возле каждого файла
     */
    showTooltipWithError: {
        type: PropType<boolean>;
        default: boolean;
    };
    buttonProps: {
        type: PropType<typeof CdsButton>;
        default: null;
    };
    /**
     * Иконка удаления файла
     */
    removeIcon: {
        type: PropType<TCdsIconsName>;
        default: string;
        validator: (value: TCdsIconsName) => boolean;
    };
    /**
     * Иконка скачивания файла
     */
    downloadIcon: {
        type: PropType<TCdsIconsName>;
        default: string;
        validator: (value: TCdsIconsName) => boolean;
    };
    /**
     * Иконка загрузки файла
     */
    uploadIcon: {
        type: PropType<TCdsIconsName>;
        default: string;
        validator: (value: TCdsIconsName) => boolean;
    };
}, Defaults>;
export interface IUploadProps<T = any> extends Partial<ExtractPropTypes<ReturnType<typeof makeUploadProps>>> {
    onReject?: (file: NUploader.IUploadFile<T>) => void;
    onChange?: (info: NUploader.IUploadChangeParam<NUploader.IUploadFile<T>>) => void;
    onDrop?: (event: DragEvent) => void;
    onPreview?: (file: NUploader.IUploadFile<T>) => void;
    onDownload?: (file: NUploader.IUploadFile<T>) => void;
    onRemove?: (file: NUploader.IUploadFile<T>) => void | boolean | Promise<void | boolean>;
    'onUpdate:modelValue'?: (fileList: NUploader.IUploadChangeParam<NUploader.IUploadFile<T>>['fileList']) => void;
}
export declare const makeUploadListProps: <Defaults extends {
    items?: unknown;
    listType?: unknown;
    itemRender?: unknown;
    showRemoveIcon?: unknown;
    showDownloadIcon?: unknown;
    showPreviewIcon?: unknown;
    showTooltipWithError?: unknown;
    removeIcon?: unknown;
    downloadIcon?: unknown;
    uploadIcon?: unknown;
    isImageUrl?: unknown;
    progress?: unknown;
    onDownload?: unknown;
    onPreview?: unknown;
    onRemove?: unknown;
} = {}>(defaults?: Defaults | undefined) => import('../../../utils').AppendDefault<{
    items: {
        type: PropType<NUploader.IUploadFile[]>;
        default: undefined;
    };
    listType: {
        type: PropType<NUploader.TUploadListType>;
        default: undefined;
    };
    itemRender: {
        type: PropType<NUploader.TItemRender>;
        default: undefined;
    };
    showRemoveIcon: {
        type: PropType<boolean>;
        default: undefined;
    };
    showDownloadIcon: {
        type: PropType<boolean>;
        default: undefined;
    };
    showPreviewIcon: {
        type: PropType<boolean>;
        default: undefined;
    };
    showTooltipWithError: {
        type: PropType<boolean>;
        default: boolean;
    };
    removeIcon: {
        type: PropType<TCdsIconsName>;
        default: string;
        validator: (value: TCdsIconsName) => boolean;
    };
    downloadIcon: {
        type: PropType<TCdsIconsName>;
        default: string;
        validator: (value: TCdsIconsName) => boolean;
    };
    uploadIcon: {
        type: PropType<TCdsIconsName>;
        default: string;
        validator: (value: TCdsIconsName) => boolean;
    };
    isImageUrl: {
        type: PropType<(file: NUploader.IUploadFile) => boolean>;
        default: undefined;
    };
    progress: {
        type: PropType<NUploader.TUploadListProgressProps>;
        default: undefined;
    };
    onDownload: {
        type: PropType<(file: NUploader.IUploadFile) => void>;
        default: undefined;
    };
    onPreview: {
        type: PropType<(file: NUploader.IUploadFile) => void>;
        default: undefined;
    };
    onRemove: {
        type: PropType<(file: NUploader.IUploadFile) => void>;
        default: undefined;
    };
}, Defaults>;
