import { RequestHandler, Request, Response } from 'express';
export declare type Get<R> = (conf: {
    filter: Record<string, any>;
    limit: number;
    offset: number;
    order: Array<[string, string]>;
}, opts?: {
    req: Request;
    res: Response;
}) => Promise<{
    rows: R[];
    count: number;
}>;
export interface GetListOptions<R> {
    filters: FiltersOption;
    additionalAttributes: Record<string, (record: R, context: {
        rows: R[];
        req: Request;
    }) => any>;
    additionalAttributesConcurrency: number;
}
declare type FiltersOption = Record<string, (value: any) => any>;
export declare const getMany: <R>(doGetFilteredList: Get<R>, options?: Partial<GetListOptions<R>> | undefined) => RequestHandler;
export declare const parseQuery: (query: any, filtersOption: FiltersOption) => Promise<{
    offset: any;
    limit: number;
    filter: Record<string, any>;
    order: [[string, string]];
}>;
export declare const computeAdditionalAttributes: <R>(additionalAttributes: Record<string, (record: R, context: {
    rows: R[];
    req: Request;
}) => any>, concurrency: number, req: Request) => (records: R[]) => Promise<any[]>;
export {};
