import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { BookingRepository } from '../repositories/booking.repository';
import { UpdateBookingDto } from '../dto';
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 { ActivityEntity } from '../../../entities/activity.entity';
import { AuditService } from '../../audit/audit.service';
import { TaxSnapshotService } from '../../tax-type/tax-snapshot.service';
import { TaxSlabResolverService } from '../../../common/services/tax-slab-resolver.service';
import { DriverService } from '../../driver/driver.service';
import { PermissionCheckService } from '../../../common/permissions/permission-check.service';
import { PaymentSettlementService } from '../../payment-settlement/payment-settlement.service';
import { UserReportingService } from '../../user/user-reporting.service';
import { ChangeRequestService } from '../../change-request/change-request.service';
export declare class BookingItineraryService {
    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 activityRepo;
    private readonly driverService;
    private readonly permissions;
    private readonly taxSnapshot;
    private readonly taxResolver;
    private readonly settlements;
    private readonly changeRequestService;
    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>, activityRepo: Repository<ActivityEntity>, driverService: DriverService, permissions: PermissionCheckService, taxSnapshot: TaxSnapshotService, taxResolver: TaxSlabResolverService, settlements: PaymentSettlementService, changeRequestService: ChangeRequestService, userReporting: UserReportingService);
    private getBookingDueDate;
    private getTenantId;
    private isBookingVisibleTo;
    private resolveLineTaxFields;
    private resolveLineTaxSnapshot;
    refreshMarkupTax(bookingId: string, tenantId: string): Promise<void>;
    recalculateTotals(bookingId: string, tenantId: string): Promise<void>;
    private buildItineraryAuditContext;
    private findSellingBelowCostLines;
    applyApprovedChangeRequest(id: string, payload: Record<string, unknown>, changeRequestId?: string): Promise<{
        id: string;
        message: string;
    }>;
    update(id: string, dto: UpdateBookingDto, opts?: {
        bypassApprovalGuards?: boolean;
        triggeredByChangeRequestId?: string | null;
    }): Promise<{
        id: string;
        message: string;
    }>;
    private emitAutoApprovalCR;
    updateActualSupplierCost(transportItemId: string, actual_supplier_cost: number | null | undefined): Promise<{
        id: string;
        message: string;
    }>;
    createAmendedTransport(input: {
        booking_id: string;
        transport_service_id: string;
        vehicle_type_id?: string | null;
        quantity: number;
        unit_price: number;
        date: string;
        pickup_time?: string;
        dropoff_time?: string;
        pickup_address?: string;
        dropoff_address?: string;
        notes?: string;
    }): Promise<{
        id: string;
        message: string;
    }>;
}
