import { IApiControllerGetListQueryPlan } from '../../../interface/class/api/controller/get-list/query';
import { Type } from '@nestjs/common';
import { ObjectLiteral } from 'typeorm';
import { EApiDtoType, EApiRouteType } from '../../../enum/decorator/api';
import { IApiEntity } from '../../../interface/entity';
/**
 * Creates a base class for list query DTOs with pagination and sorting properties.
 * Includes limit, mode-specific pagination fields, and applicable sorting properties with
 * appropriate validation rules. CURSOR omits orderBy and orderDirection when the plan enables
 * no client-order fields.
 * @param {ObjectLiteral} entity - The entity class or prototype
 * @param {IApiEntity<E>} entityMetadata - The entity metadata containing column information
 * @param {EApiRouteType} method - The API route type (GET_LIST)
 * @param {EApiDtoType} dtoType - The type of DTO (QUERY)
 * @param {IApiControllerGetListQueryPlan} [queryPlan] - Optional normalized plan that narrows sortable fields.
 * @returns {Type<unknown>} A base class for list query DTOs
 * @template E - The entity type
 */
export declare function DtoGetGetListQueryBaseClass<E>(entity: ObjectLiteral, entityMetadata: IApiEntity<E>, method: EApiRouteType, dtoType: EApiDtoType, queryPlan?: IApiControllerGetListQueryPlan): Type<unknown>;
