import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { BookingRepository } from './repositories/booking.repository';
import { QuickBookingService } from './services/quick-booking.service';
import { BookingItineraryService } from './services/booking-itinerary.service';
import { PaymentSettlementService } from '../payment-settlement/payment-settlement.service';
import { DriverService } from '../driver/driver.service';
import { UserReportingService } from '../user/user-reporting.service';
import { UpdateBookingDto, CreateQuickBookingDto } from './dto';
import { BookingEntity, BookingStatus } from '../../entities/booking.entity';
import { BookingHotelItemEntity } from '../../entities/booking-hotel-item.entity';
import { BookingHotelPeriodEntity } from '../../entities/booking-hotel-period.entity';
import { BookingHotelExtraEntity } from '../../entities/booking-hotel-extra.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 { BookingFlightDetailEntity } from '../../entities/booking-flight-detail.entity';
import { QueryEntity } from '../../entities/query.entity';
import { QueryQuoteEntity } from '../../entities/query-quote.entity';
import { QueryQuoteHotelEntity } from '../../entities/query-quote-hotel.entity';
import { QueryQuoteHotelPeriodEntity } from '../../entities/query-quote-hotel-period.entity';
import { QueryQuoteHotelExtraEntity } from '../../entities/query-quote-hotel-extra.entity';
import { QueryQuoteTransportEntity } from '../../entities/query-quote-transport.entity';
import { QueryQuoteActivityEntity } from '../../entities/query-quote-activity.entity';
import { ActivityEntity } from '../../entities/activity.entity';
import { QueryQuoteSpecialEntity } from '../../entities/query-quote-special.entity';
import { AuditService } from '../audit/audit.service';
import { TaxSnapshotService } from '../tax-type/tax-snapshot.service';
import { TaxSlabResolverService } from '../../common/services/tax-slab-resolver.service';
export declare class BookingService {
    private readonly repo;
    private readonly cls;
    private readonly auditService;
    private readonly hotelItemRepo;
    private readonly hotelPeriodRepo;
    private readonly hotelExtraRepo;
    private readonly transportItemRepo;
    private readonly activityItemRepo;
    private readonly specialItemRepo;
    private readonly flightDetailRepo;
    private readonly queryRepo;
    private readonly quoteRepo;
    private readonly quoteHotelRepo;
    private readonly quoteHotelPeriodRepo;
    private readonly quoteHotelExtraRepo;
    private readonly quoteTransportRepo;
    private readonly quoteActivityRepo;
    private readonly activityRepo;
    private readonly quoteSpecialRepo;
    private readonly driverService;
    private readonly taxSnapshot;
    private readonly taxResolver;
    private readonly quickBooking;
    private readonly itinerary;
    private readonly settlements;
    private readonly userReporting;
    constructor(repo: BookingRepository, cls: ClsService, auditService: AuditService, hotelItemRepo: Repository<BookingHotelItemEntity>, hotelPeriodRepo: Repository<BookingHotelPeriodEntity>, hotelExtraRepo: Repository<BookingHotelExtraEntity>, transportItemRepo: Repository<BookingTransportItemEntity>, activityItemRepo: Repository<BookingActivityItemEntity>, specialItemRepo: Repository<BookingSpecialItemEntity>, flightDetailRepo: Repository<BookingFlightDetailEntity>, queryRepo: Repository<QueryEntity>, quoteRepo: Repository<QueryQuoteEntity>, quoteHotelRepo: Repository<QueryQuoteHotelEntity>, quoteHotelPeriodRepo: Repository<QueryQuoteHotelPeriodEntity>, quoteHotelExtraRepo: Repository<QueryQuoteHotelExtraEntity>, quoteTransportRepo: Repository<QueryQuoteTransportEntity>, quoteActivityRepo: Repository<QueryQuoteActivityEntity>, activityRepo: Repository<ActivityEntity>, quoteSpecialRepo: Repository<QueryQuoteSpecialEntity>, driverService: DriverService, taxSnapshot: TaxSnapshotService, taxResolver: TaxSlabResolverService, quickBooking: QuickBookingService, itinerary: BookingItineraryService, settlements: PaymentSettlementService, userReporting: UserReportingService);
    private resolveLineTaxFields;
    private resolveLineTaxSnapshot;
    private getTenantId;
    private assertBookingVisible;
    private isAdminRole;
    private assertBookingNotPast;
    private isBookingVisibleTo;
    private flattenQuery;
    private exposePanFlag;
    private computeSellingComponent;
    findAll(query?: {
        page?: number;
        limit?: number;
        search?: string;
    }, filters?: {
        status?: string;
        destinationId?: string;
        sourceId?: string;
        dateFrom?: string;
        dateTo?: string;
    }): Promise<{
        items: BookingEntity[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    private resolveUserNames;
    findById(id: string): Promise<BookingEntity>;
    findAllForLookup(): Promise<{
        id: string;
        booking_number: string;
        guest_name: string | null;
        guest_mobile: string | null;
        source_id: string | null;
        start_date: string | null;
    }[]>;
    lookupGuestByMobile(mobile: string): Promise<{
        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;
    } | 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, opts?: {
        bypassApprovalGuards?: boolean;
    }): Promise<{
        id: string;
        message: string;
    }>;
    applyApprovedChangeRequest(id: string, payload: Record<string, unknown>, changeRequestId?: string): Promise<{
        id: string;
        message: string;
    }>;
    changeStatus(id: string, status: BookingStatus, holdReason?: string | null): Promise<{
        id: string;
        status: BookingStatus;
        message: string;
    }>;
    setGuarantee(id: string, isGuaranteed: boolean, description?: string): Promise<{
        id: string;
        is_guaranteed: boolean;
        guarantee_description: string | null;
        message: string;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    private recalculateTotals;
    cancelActivityItem(id: string, count: number, notes?: string): Promise<{
        message: string;
        id: string;
    }>;
    refundActivityItem(id: string, notes?: string): Promise<{
        message: string;
        id: string;
    }>;
}
