import DataLoader from 'dataloader'; export declare type AutoHandledBatchFn = (keys: ReadonlyArray) => PromiseLike> | ArrayLike>; export declare type OrderFn = (ids: ReadonlyArray, values: (V | Error)[]) => (V | Error)[]; interface LoadEntityOptions extends Omit, 'batch'> { id?: string; list?: boolean; loadKeyName?: keyof V; batch?: AutoHandledBatchFn; fetch?: (key: K) => Promise; order?: OrderFn; disablePrime?: boolean; } interface EntityLoaderOptions { primeKey?: keyof V; } export declare class EntityLoader { private readonly options?; private listLoaders; private loaders; constructor(options?: EntityLoaderOptions | undefined); loaderName>(options: Options): string; loadEntityList>(options: Options): DataLoader | DataLoader; loadEntity>(options: Options): DataLoader; protected createLoader>(options: Options): DataLoader; protected handleBatch(batchFn: AutoHandledBatchFn, ids: ReadonlyArray, options?: Pick, 'loadKeyName' | 'order'>): Promise>; protected handleOrder(loadKeyName: keyof V, ids: ReadonlyArray, values: (V | Error)[]): (Error | V)[]; } export {};