import { BaseCreateDTO, BaseUpdateDTO } from "./BaseDTO";
import { DynamicMakeDTO } from "./VehicleMakeDTO";
import { DynamicModelDTO } from "./VehicleModelDTO";
import { DynamicVehicleBodyTypeDTO } from "./VehicleTypeDTO";
import { VehicleMediaCreateDTO, VehicleMediaUpdateDTO } from "./VehicleMedia";
import { VehicleFilter, VehicleOptions, VehicleUniqueFilter } from "./VehicleFilterDTO";
import { VehicleFinanceCreateDTO } from "./VehicleFinanceDTO";
import { VehicleWarrantyYearType } from "../enums";
import { VehicleDraft } from "../../../models/Vehicle";
export declare class VehicleGetDTO {
    filter?: VehicleFilter;
    options?: VehicleOptions;
    validate?: (shouldValidate?: boolean) => string[];
    constructor(shouldIncludeValidate?: boolean);
    static fromPlain(plain: Record<string, unknown>): VehicleGetDTO;
    toPlain(): Record<string, unknown>;
}
export declare class VehicleGetUniqueDTO {
    filter?: VehicleUniqueFilter;
    options?: Omit<VehicleOptions, "page" | "limit" | "sort">;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleGetUniqueDTO;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleMetaDataDTO {
    metaTitle?: string;
    metaDescription?: string;
    metaKeywords?: string;
    vehicleDescription: string;
    vehicleId: string;
    others?: Record<string, string>;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleMetaDataDTO;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleCreateDTO extends BaseCreateDTO {
    title: string;
    make: DynamicMakeDTO;
    model: DynamicModelDTO;
    bodyType: DynamicVehicleBodyTypeDTO;
    vin: string;
    vehicleSpec: string;
    chassisNumber: string;
    trim: string;
    mileage: number;
    odometer: number;
    fuelType: string;
    color: string;
    engineCapacity: string;
    numberOfCylinders: number;
    evRange?: number;
    cylinderCapacity: number;
    doors: number;
    seats: number;
    keys: number;
    wheelsType: string;
    airbags: number;
    transmission: string;
    driveType: string;
    emissions: string;
    warrantyYears?: VehicleWarrantyYearType;
    warrantyKm?: number;
    warranty?: string;
    serviceContractYears?: VehicleWarrantyYearType;
    serviceContractKm?: number;
    serviceContract?: string;
    media?: VehicleMediaCreateDTO[];
    finance?: VehicleFinanceCreateDTO;
    year: number;
    price: number;
    status: string;
    features?: string[];
    metaData?: VehicleMetaDataDTO;
    isDraft?: boolean;
    pageNo?: number;
    draft?: VehicleDraft;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleCreateDTO;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleFeaturesUpdateDTO {
    data: string[];
    replace?: boolean;
    filter?: string | string[];
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleFeaturesUpdateDTO;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class VehicleUpdateDTO extends BaseUpdateDTO {
    title: string;
    make: DynamicMakeDTO;
    model: DynamicModelDTO;
    bodyType: DynamicVehicleBodyTypeDTO;
    vin: string;
    chassisNumber: string;
    trim: string;
    mileage: number;
    fuelType: string;
    color: string;
    engineCapacity?: string;
    numberOfCylinders: number;
    evRange?: number;
    cylinderCapacity: number;
    doors: number;
    seats: number;
    keys: number;
    odometer?: number;
    wheelsType: string;
    airbags: number;
    transmission: string;
    driveType: string;
    emissions: string;
    warrantyYears?: VehicleWarrantyYearType;
    warrantyKm?: number;
    serviceContractYears?: VehicleWarrantyYearType;
    serviceContractKm?: number;
    media: VehicleMediaUpdateDTO;
    year: number;
    price: number;
    status: string;
    isDraft?: boolean;
    pageNo?: number;
    features: VehicleFeaturesUpdateDTO;
    metaData: VehicleMetaDataDTO;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): VehicleUpdateDTO;
    static toPlain(entity: any): Record<string, unknown>;
}
export declare class DynamicVehicleDTO {
    existingId?: string;
    new?: VehicleCreateDTO;
    validate(): void;
}
