import { FinanceType } from "../enums/finance-type";
import { ReservationStatus } from "../enums/reservation-type";
import { Vehicle } from "../../../vehicle/data";
import { DateFilter, PaginationOptions } from "../../../../global";
import { LeadCreateDTO, LeadDTO } from "../../../lead/data/dto/lead_dto";
import { MarketingData } from "../../../../core";
export declare class CreateVehicleReservationDto {
    leadId?: string;
    newLead?: LeadCreateDTO;
    vehicleId: string;
    financeType: FinanceType;
    depositAmount?: number;
    depositPaymentMethod?: string;
    totalAmount?: number;
    notes?: string;
    assignedSalesRepId?: string;
    bankName?: string;
    loanAmount?: number;
    loanTenureMonths?: number;
    interestRate?: number;
    marketing?: MarketingData;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): CreateVehicleReservationDto;
    toPlain(): Record<string, unknown>;
}
export declare class VehicleReservationDto {
    id: string;
    leadId: LeadDTO;
    vehicleId: string;
    financeType: FinanceType;
    depositAmount?: number;
    depositPaymentMethod?: string;
    totalAmount?: number;
    notes?: string;
    assignedSalesRepId?: string;
    bankName?: string;
    loanAmount?: number;
    loanTenureMonths?: number;
    interestRate?: number;
    marketing?: MarketingData;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): CreateVehicleReservationDto;
    toPlain(): Record<string, unknown>;
}
export declare class VehicleReservationResponseDto {
    id: string;
    leadId: string;
    vehicle: Vehicle;
    status: ReservationStatus;
    financeType: FinanceType;
    depositAmount: number;
    isDepositPaid: boolean;
    totalAmount?: number;
    createdAt: Date;
    updatedAt: Date;
    marketing?: MarketingData;
}
export declare class UpdateVehicleReservationDto {
    status?: ReservationStatus;
    depositAmount?: number;
    depositPaymentMethod?: string;
    isDepositPaid?: boolean;
    totalAmount?: number;
    bankName?: string;
    loanAmount?: number;
    loanTenureMonths?: number;
    notes?: string;
    cancellationReason?: string;
    assignedSalesRepId?: string;
    financeRejectionReason?: string;
    financeApprovedAt?: Date;
    financeRejectedAt?: Date;
    cancelledAt?: Date;
    isActive?: boolean;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): UpdateVehicleReservationDto;
    toPlain(): Record<string, unknown>;
}
export declare class VehicleReservationsOptions extends PaginationOptions {
    sort?: {
        field: string;
        direction: "asc" | "desc";
    };
    static fromPlain(plain: Record<string, unknown>): GetVehicleReservationsFilterDto;
    toPlain(): Record<string, unknown>;
}
export declare class GetVehicleReservationsDTO {
    filter: GetVehicleReservationsFilterDto;
    options: VehicleReservationsOptions;
    static fromPlain(plain: Record<string, unknown>): GetVehicleReservationsDTO;
    toPlain(): Record<string, unknown>;
}
export declare class GetVehicleReservationsFilterDto {
    search?: string;
    status?: ReservationStatus;
    exceptStatus?: ReservationStatus;
    financeTypes?: FinanceType[];
    financeType?: FinanceType;
    vehicleId?: string;
    createdAt?: DateFilter;
    leadId?: string;
    isActive?: boolean;
    validate(): string[];
    static fromPlain(plain: Record<string, unknown>): GetVehicleReservationsFilterDto;
    toPlain(): Record<string, unknown>;
}
