import { StreamableFile } from '@nestjs/common';
import { BookingService } from './booking.service';
import { BookingPanService } from './services/booking-pan.service';
import { DriverAssignmentService } from './services/driver-assignment.service';
import { MovementChartExportService } from './services/movement-chart-export.service';
import { UpdateBookingDto, AssignTransportItemDto, BulkAssignTransportItemDto, CreateQuickBookingDto, PatchActivityItemDto, BulkPatchActivityItemDto, PatchHotelItemDto, PatchSpecialItemDto, UpdateActualSupplierCostDto, CreateAmendedTransportDto, BookingListQueryDto, SetBookingGuaranteeDto } from './dto';
import { BookingItineraryService } from './services/booking-itinerary.service';
import { Request, Response } from 'express';
import { ActivityTicketMailService } from './services/activity-ticket-mail.service';
import { BookingStatus } from '../../entities/booking.entity';
export declare class BookingController {
    private readonly service;
    private readonly pan;
    private readonly driverAssignment;
    private readonly itinerary;
    private readonly mdExport;
    private readonly ticketMail;
    constructor(service: BookingService, pan: BookingPanService, driverAssignment: DriverAssignmentService, itinerary: BookingItineraryService, mdExport: MovementChartExportService, ticketMail: ActivityTicketMailService);
    findAll(query: BookingListQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities").BookingEntity[]>>;
    getTransportDates(destinationId: string): Promise<import("../../common/responses/api-response").ApiResponse<string[]>>;
    getMovementChart(destinationId: string | undefined, date: string, paymentCollectionStatus?: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        summary: {
            total_ops: number;
            transfers: number;
            activities: number;
            specials: number;
            active_drivers: number;
            completed: number;
            scheduled: number;
        };
        by_driver: any[];
        by_booking: any[];
        by_activity: any[];
        by_special: {
            id: string;
            type: "special";
            booking_id: string;
            booking_number: string;
            booking_status: BookingStatus;
            booking_hold_reason: string | null;
            payment_gate: import("./services/booking-payment-gate").BookingPaymentGate;
            guest_name: string;
            guest_mobile: string;
            salesperson_name: string;
            pax: number;
            service_name: string;
            date: string | null;
            total_price: number;
            actual_supplier_cost: number | null;
            supplier_id: string | null;
            supplier_name: string | null;
            supplier_phone: string | null;
            suppliers: {
                payment_collection: {
                    collection_id: string | null;
                    required: boolean;
                    expected_amount: number;
                    currency_id: string | null;
                    currency_code: string;
                    status: "PENDING" | "COLLECTED" | "CANCELLED" | null;
                    notes: string | null;
                    latest_actual_amount: number | null;
                    latest_difference_reason: string | null;
                    latest_collected_at: string | null;
                };
                id: string;
                supplier_id: string | null;
                name: string;
                phone: string;
                role: string;
                sort_order: number;
                actual_supplier_cost: number | null;
                driver_id: string | null;
                driver_name: string;
                driver_phone: string;
            }[];
            comments: string | null;
            payment_collection: {
                collection_id: string | null;
                required: boolean;
                expected_amount: number;
                currency_id: string | null;
                currency_code: string;
                status: "PENDING" | "COLLECTED" | "CANCELLED" | null;
                notes: string | null;
                latest_actual_amount: number | null;
                latest_difference_reason: string | null;
                latest_collected_at: string | null;
            };
            destination_currency_id: string | null;
            cash_collection: {
                id: string;
                booking_id: string;
                cash_collection_id?: string;
                transport_item_id: string | null;
                activity_item_id: string | null;
                special_item_id: string | null;
                currency_id: string;
                currency_code: string;
                has_expense: boolean;
                has_cash: boolean;
                collected_by_type: "OWN" | "SUPPLIER" | null;
                collector_name: string | null;
                supplier_id: string | null;
                supplier_name: string | null;
                source_kind: "TRANSPORT" | "ACTIVITY" | "SPECIAL" | null;
                activity_id: string | null;
                activity_name: string | null;
                driver_id: string | null;
                driver_name: string | null;
                expected_amount: number;
                notes: string | null;
                status: "PENDING" | "COLLECTED" | "CANCELLED" | null;
                actual_amount: number | null;
                collected_at: string | null;
                difference_reason: string | null;
                collected_by_name: string | null;
                collection_date: string;
                cash_expected_amount: number;
                cash_status: "PENDING" | "COLLECTED" | null;
                cash_actual_amount: number | null;
                cash_collected_by_type: "OWN" | "SUPPLIER" | null;
                cash_collector_name: string | null;
            } | null;
            cash_collections: Record<string, unknown>[];
        }[];
    }>>;
    exportMovementChart(res: Response, destinationId: string | undefined, date: string, dateTo?: string): Promise<void>;
    bulkAssign(dto: BulkAssignTransportItemDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        count: number;
        message: string;
    }>>;
    updateActualSupplierCost(id: string, dto: UpdateActualSupplierCostDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    addAmendedTransport(dto: CreateAmendedTransportDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    assignTransportItem(id: string, dto: AssignTransportItemDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    emailActivityTicket(id: string, req: Request): Promise<import("../../common/responses/api-response").ApiResponse<{
        sent_to: string;
    }>>;
    bulkPatchActivity(dto: BulkPatchActivityItemDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        updated: number;
        message: string;
    }>>;
    patchActivityItem(id: string, dto: PatchActivityItemDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    patchHotelItem(id: string, dto: PatchHotelItemDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    patchSpecialItem(id: string, dto: PatchSpecialItemDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    lookup(): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        booking_number: string;
        guest_name: string | null;
        guest_mobile: string | null;
        source_id: string | null;
        start_date: string | null;
    }[]>>;
    guestLookup(mobile: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        guest_name: string | null;
        guest_mobile: string | null;
        guest_email: string | null;
        guest_alt_phone: string | null;
        destination_id: string;
        source_id: string;
        adults: number;
        children_ages: number[] | null;
        infants: number;
    }>>;
    findById(id: string): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities").BookingEntity>>;
    uploadPanCard(id: string, file: Express.Multer.File): Promise<import("../../common/responses/api-response").ApiResponse<{
        has_pan_card: true;
    }>>;
    downloadPanCard(id: string): Promise<StreamableFile>;
    createFromQuery(queryId: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        booking_number: string;
        message: string;
    }>>;
    createQuick(dto: CreateQuickBookingDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: any;
        booking_number: string;
        query_id: any;
        quote_id: any;
        message: string;
    }>>;
    update(id: string, dto: UpdateBookingDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    changeStatus(id: string, status: BookingStatus, holdReason?: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        status: BookingStatus;
        message: string;
    }>>;
    setGuarantee(id: string, dto: SetBookingGuaranteeDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        is_guaranteed: boolean;
        guarantee_description: string | null;
        message: string;
    }>>;
    remove(id: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        message: string;
    }>>;
    cancelActivityItem(id: string, body: {
        count: number;
        notes?: string;
    }): Promise<import("../../common/responses/api-response").ApiResponse<{
        message: string;
        id: string;
    }>>;
    refundActivityItem(id: string, body: {
        notes?: string;
    }): Promise<import("../../common/responses/api-response").ApiResponse<{
        message: string;
        id: string;
    }>>;
}
