///
import { UseStateWithGetterResult } from "use-common-hook";
import { Options, UploaderFunction } from "./types";
export declare type BaseItemData = Record<"id" | "name", string> & Record<"size", number>;
export declare type HasBaseData = T & BaseItemData;
export declare type HasGuid = T & {
guid: string;
};
export declare type OptionsProp = Partial>>;
declare type HookSimilarProps = {
initialData?: HasBaseData[];
enabled?: boolean;
};
export declare type UploaderProps = {
uploader: UploaderFunction;
} & OptionsProp & HookSimilarProps;
export declare type ConnectToUploaderProps = {
initialData?: HasBaseData[];
storeId: symbol;
} & HookSimilarProps;
export declare type InternalDataItem = BaseItemData & ({
status: "loading";
discard: () => void;
} | {
status: "error";
} | {
status: "loaded";
data: HasBaseData;
});
export declare type UseUploaderData = {
data: UseStateWithGetterResult[]>["state"];
setData: UseStateWithGetterResult[]>["setter"];
getData: UseStateWithGetterResult[]>["getter"];
};
export declare type GetData = InternalDataItem[];
export declare type DataForSync = Extract, {
status: "loaded";
}>["data"];
export declare type HookResult = {
readonly dragRef: React.RefCallback;
readonly files: {
id: string;
status: "loading" | "error" | "loaded";
name: string;
size: number;
remove: null | (() => void);
data: HasBaseData | null;
}[];
readonly inputProps: Pick, "accept" | "onChange" | "multiple" | "disabled">;
readonly enrich: (filesForEnrich: DataForSync[]) => void;
} & Readonly>;
export declare type LoadFiles = (files: File[]) => void;
export declare type FilesChecker = (files: FileList) => boolean;
export declare type UseProvideUploaderStore = Omit, "initialData">;
export declare type UseCreateStoreEnabledProps = {
id: symbol;
options?: Partial;
uploader: UploaderFunction;
};
export {};