import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { BookingRepository } from './repositories/booking.repository';
import { UpdateBookingDto, AssignTransportItemDto, BulkAssignTransportItemDto, CreateQuickBookingDto } from './dto';
import { BookingEntity, BookingStatus } from '../../entities/booking.entity';
import { BookingHotelItemEntity } from '../../entities/booking-hotel-item.entity';
import { BookingTransportItemEntity } from '../../entities/booking-transport-item.entity';
import { BookingActivityItemEntity } from '../../entities/booking-activity-item.entity';
import { BookingSpecialItemEntity } from '../../entities/booking-special-item.entity';
import { QueryEntity } from '../../entities/query.entity';
import { QueryQuoteEntity } from '../../entities/query-quote.entity';
import { QueryQuoteHotelEntity } from '../../entities/query-quote-hotel.entity';
import { QueryQuoteTransportEntity } from '../../entities/query-quote-transport.entity';
import { QueryQuoteActivityEntity } from '../../entities/query-quote-activity.entity';
import { QueryQuoteSpecialEntity } from '../../entities/query-quote-special.entity';
import { AuditService } from '../audit/audit.service';
export declare class BookingService {
    private readonly repo;
    private readonly cls;
    private readonly auditService;
    private readonly hotelItemRepo;
    private readonly transportItemRepo;
    private readonly activityItemRepo;
    private readonly specialItemRepo;
    private readonly queryRepo;
    private readonly quoteRepo;
    private readonly quoteHotelRepo;
    private readonly quoteTransportRepo;
    private readonly quoteActivityRepo;
    private readonly quoteSpecialRepo;
    constructor(repo: BookingRepository, cls: ClsService, auditService: AuditService, hotelItemRepo: Repository<BookingHotelItemEntity>, transportItemRepo: Repository<BookingTransportItemEntity>, activityItemRepo: Repository<BookingActivityItemEntity>, specialItemRepo: Repository<BookingSpecialItemEntity>, queryRepo: Repository<QueryEntity>, quoteRepo: Repository<QueryQuoteEntity>, quoteHotelRepo: Repository<QueryQuoteHotelEntity>, quoteTransportRepo: Repository<QueryQuoteTransportEntity>, quoteActivityRepo: Repository<QueryQuoteActivityEntity>, quoteSpecialRepo: Repository<QueryQuoteSpecialEntity>);
    private getTenantId;
    private flattenQuery;
    private computeSellingComponent;
    findAll(query?: {
        page?: number;
        limit?: number;
        search?: string;
    }, filters?: {
        status?: string;
        destinationId?: string;
        dateFrom?: string;
        dateTo?: string;
    }): Promise<{
        items: BookingEntity[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    private resolveUserNames;
    findById(id: string): Promise<BookingEntity>;
    lookupGuestByMobile(mobile: string): Promise<{
        guest_name: string;
        guest_mobile: string;
        guest_email: string | null;
        guest_alt_phone: string | null;
        destination_id: string;
        source_id: string;
        adults: number;
        children_ages: number[] | null;
        infants: number;
    } | null>;
    createQuick(dto: CreateQuickBookingDto): Promise<{
        id: any;
        booking_number: string;
        query_id: any;
        quote_id: any;
        message: string;
    }>;
    createFromQuery(queryId: string): Promise<{
        id: string;
        booking_number: string;
        message: string;
    }>;
    update(id: string, dto: UpdateBookingDto): Promise<{
        id: string;
        message: string;
    }>;
    changeStatus(id: string, status: BookingStatus): Promise<{
        id: string;
        status: BookingStatus;
        message: string;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    getTransportDates(destinationId: string): Promise<any[]>;
    getMovementChart(destinationId: string, date: string): Promise<{
        summary: {
            total_ops: number;
            transfers: number;
            activities: number;
            active_drivers: number;
            completed: number;
            scheduled: number;
        };
        by_driver: any[];
        by_booking: any[];
        by_activity: any[];
    }>;
    getDriverAssignments(destinationId: string, date: string, transportServiceId?: string): Promise<{
        summary: {
            routes: number;
            total_transfers: number;
            assigned: number;
            pending: number;
            total_pax: any;
        };
        groups: any[];
    }>;
    assignTransportItem(itemId: string, dto: AssignTransportItemDto): Promise<{
        id: string;
        message: string;
    }>;
    bulkAssignTransportItems(dto: BulkAssignTransportItemDto): Promise<{
        count: number;
        message: string;
    }>;
    private recalculateTotals;
}
