import DataLoader from 'dataloader';
import { Connection } from 'typeorm';
import { ColumnMetadata } from 'typeorm/metadata/ColumnMetadata';
import { RelationMetadata } from 'typeorm/metadata/RelationMetadata';
import { Context } from '../interfaces/context.interface.js';

/**
 * Handles the all data loader handlers common functionality to check the connection and
 * dependency injection.
 */
declare function handler<V>(context: Context, relation: RelationMetadata, columns: ColumnMetadata[], newDataloader: (connection: Connection) => DataLoader<any, V>, callback: (dataloader: DataLoader<any, V>, columns: ColumnMetadata[]) => Promise<any>): Promise<any>;

export { handler };
