import { VehicleSelectFields } from "../../vehicle/data/utilities";
import { LeadThrough, TestDriveRequestStatus } from "./enums";
import { TestDriveRequest } from "./models/TestDriveRequest";
import { DateFilter, PaginationOptions, TypedFilter } from "../../../global/utilities";
export type TestDriveRequestSelectFields = keyof TestDriveRequest;
export declare class TestDriveRequestFilter extends TypedFilter {
    vehicles?: string | string[];
    referenceNumber?: string | string[];
    testerName?: string | string[];
    testerMobile?: string | string[];
    testerEmail?: string | string[];
    search?: string | string[];
    status?: TestDriveRequestStatus | TestDriveRequestStatus[];
    requestedDate?: DateFilter;
    testDriveDate?: DateFilter;
    leadThrough?: LeadThrough | LeadThrough[];
    comments?: string;
    createdAt?: DateFilter;
    validate(): string[];
    fromPlain(plain: Record<string, unknown>): TestDriveRequestFilter;
    toPlain(): Record<string, unknown>;
}
export type TestDriveRequestSort = Record<keyof Pick<TestDriveRequest, 'testerName' | 'testerMobile' | 'testerEmail' | 'requestedDate' | 'testDriveDate' | 'status' | 'leadThrough'>, 'asc' | 'desc'>;
export declare class TestDriveRequestOptions extends PaginationOptions {
    sort?: TestDriveRequestSort;
    withVehicle?: boolean;
    select?: (TestDriveRequestSelectFields | `vehicle.${VehicleSelectFields}`)[];
    validate(): string[];
    fromPlain(plain: Record<string, unknown>): TestDriveRequestOptions;
}
