import { ObjectId } from 'mongodb'; /** * Minimal DataLoader-style batching helper for GraphQL resolvers, with no hard * dependency on any GraphQL package. `.load(id)` calls made within the same * microtask are coalesced into a single `$in` query against the repository, so * per-field resolvers never trigger N+1 reads. * * ```ts * const userLoader = createEntityLoader(userRepo); * // in a resolver: () => userLoader.load(post.authorId) * ``` */ export interface EntityLoader { load(id: string | ObjectId): Promise; loadMany(ids: Array): Promise>; prime(id: string | ObjectId, value: T): void; clear(id?: string | ObjectId): void; } /** The slice of a repository the loader needs. Structural, so any repo satisfies it. */ export interface LoaderSource { find(filter: unknown, options?: unknown): Promise; } export declare function createEntityLoader(source: LoaderSource): EntityLoader; //# sourceMappingURL=entity-loader.d.ts.map