import { Vehicle } from "../../models/Vehicle";
import { VehicleBodyType } from "../../models/VehicleBodyType";
import { VehicleFeature } from "../../models/VehicleFeature";
import { VehicleMake } from "../../models/VehicleMake";
import { VehicleMetaData } from "../../models/VehicleMetaData";
import { VehicleModel } from "../../models/VehicleModel";
import { VehicleCategory } from "../../models/VehicleCategory";
import { BaseFilter, PaginationOptions } from "../../../global/utilities";
import { VehicleCategorySelectFields } from "./dto/VehicleFilterDTO";
export type VehicleMakeSelectFields = keyof VehicleMake;
export type VehicleModelSelectFields = keyof VehicleModel;
export type VehicleSelectFields = keyof Vehicle;
export type VehicleBodyTypeSelectFields = keyof VehicleBodyType;
export type VehicleFeatureSelectFields = keyof VehicleFeature;
export type VehicleFeatureCategorySelectFields = keyof VehicleCategory;
export type VehicleMetaDataSelectFields = keyof VehicleMetaData;
export declare class VehicleMakeFilter extends BaseFilter {
    id?: string | string[];
    slug?: string | string[];
    name?: string;
    metaKeywords?: string;
    models?: string | string[];
    vehicles?: string | string[];
    search?: string;
    promoted?: boolean;
    showInFooter?: boolean;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleMakeFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleMakeUniqueFilter extends BaseFilter {
    id?: string;
    slug?: string;
    name?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleMakeFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export type VehicleMakeSort = Partial<Record<keyof Pick<VehicleMake, "name" | "isActive" | "createdAt" | "updatedAt">, "asc" | "desc">>;
export declare class VehicleMakeOptions extends PaginationOptions {
    sort?: VehicleMakeSort;
    withModels?: boolean;
    withVehicles?: boolean;
    select?: (VehicleMakeSelectFields | `models.${VehicleModelSelectFields}` | `vehicles.${VehicleSelectFields}`)[];
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleMakeOptions;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleModelFilter extends BaseFilter {
    id?: string | string[];
    slug?: string | string[];
    name?: string;
    metaKeywords?: string;
    makes?: string | string[];
    vehicles?: string | string[];
    search?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleModelUniqueFilter extends BaseFilter {
    id?: string;
    slug?: string;
    name?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelUniqueFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export type VehicleModelSort = Partial<Record<keyof Pick<VehicleModel, "name" | "isActive" | "createdAt" | "updatedAt">, "asc" | "desc">>;
export declare class VehicleModelOptions extends PaginationOptions {
    sort?: VehicleModelSort;
    withVehicles?: boolean;
    withMake?: boolean;
    select?: (VehicleModelSelectFields | `vehicles.${VehicleSelectFields}` | `make.${VehicleMakeSelectFields}`)[];
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelOptions;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleBodyTypeFilter extends BaseFilter {
    id?: string | string[];
    slug?: string | string[];
    name?: string;
    vehicles?: string | string[];
    models?: string | string[];
    search?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleBodyTypeUniqueFilter {
    id?: string;
    slug?: string;
    name?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export type VehicleBodyTypeSort = Partial<Record<keyof Pick<VehicleBodyType, "name" | "isActive" | "createdAt" | "updatedAt">, "asc" | "desc">>;
export declare class VehicleBodyTypeOptions extends PaginationOptions {
    sort?: VehicleBodyTypeSort;
    withVehicles?: boolean;
    select?: (VehicleBodyTypeSelectFields | `vehicles.${VehicleSelectFields}` | `models.${VehicleModelSelectFields}`)[];
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelOptions;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleFeatureFilter extends BaseFilter {
    id?: string | string[];
    slug?: string | string[];
    name?: string;
    categories?: string | string[];
    search?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleFeatureUniqueFilter {
    id?: string;
    slug?: string;
    name?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export type VehicleFeatureSort = Partial<Record<keyof Pick<VehicleFeature, "name" | "isActive" | "createdAt" | "updatedAt">, "asc" | "desc">>;
export declare class VehicleFeatureOptions extends PaginationOptions {
    sort?: VehicleFeatureSort;
    withCategories?: boolean;
    select?: (VehicleFeatureSelectFields | `categories.${VehicleFeatureCategorySelectFields}`)[];
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleFeatureOptions;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleFeatureCategoryFilter extends BaseFilter {
    id?: string | string[];
    slug?: string | string[];
    name?: string;
    features?: string | string[];
    search?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleFeatureCategoryUniqueFilter {
    id?: string;
    slug?: string;
    name?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleModelFilter;
    static toPlain(entity: any): Record<string, unknown>;
}
export type VehicleFeatureCategorySort = Partial<Record<keyof Pick<VehicleCategory, "name" | "isActive" | "createdAt" | "updatedAt">, "asc" | "desc">>;
export declare class VehicleFeatureCategoryOptions extends PaginationOptions {
    sort?: VehicleFeatureCategorySort;
    withFeatures?: boolean;
    select?: (VehicleFeatureCategorySelectFields | `features.${VehicleFeatureSelectFields}`)[];
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleFeatureOptions;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleCategoryFilter extends BaseFilter {
    id?: string | string[];
    slug?: string | string[];
    name?: string;
    search?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleCategoryFilter;
    static toPlain(entity: VehicleCategoryFilter): Record<string, unknown>;
}
export declare class VehicleCategoryUniqueFilter {
    id?: string;
    slug?: string;
    name?: string;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleCategoryUniqueFilter;
    static toPlain(entity: VehicleCategoryUniqueFilter): Record<string, unknown>;
}
export type VehicleCategorySort = Record<keyof Pick<VehicleCategory, "name" | "isActive" | "createdAt" | "updatedAt">, "asc" | "desc">;
export declare class VehicleCategoryOptions extends PaginationOptions {
    sort?: VehicleCategorySort;
    select?: (VehicleCategorySelectFields | `features.${VehicleFeatureSelectFields}`)[];
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleFeatureOptions;
    static toPlain(entity: VehicleCategoryOptions): Record<string, unknown>;
}
